Sideways ROM skeleton )oscli=&FFF7:OSWORD=&FFF1:OSBYTE=&FFF4 *OSWRCH=&FFEE:OSNEWL=&FFE4:OSASCI=&FFE3 (mcode%=P+&1800 2 P=0 1 <O%=mcode%:P%=&8000 F[OPT P*3+4 P JMP lang Z JMP serv d EQUB &C2 nEQUB copy-&8000 xBRK EQUS "Skeleton ROM" .copy &BRK:EQUS "(C)1987 J.G.Harston":BRK %\ Language part .lang LDX #&FF:TXS:CLD:CLI #LDA #err_handler 255:STA &202 #LDA #err_handler 256:STA &203 .lang_loop LDA #"*":JSR OSWRCH LDA #0:LDX #buff 255 LDY #(buff) 256 JSR OSWORD BCS escape LDX #0:LDY #4:JSR oscli JMP lang_loop " .escape ,LDA #124:JSR OSBYTE 6!BRK:EQUB 17:EQUS "Escape":BRK @ .buff J EQUW &400 TEQUB 255:EQUB 32:EQUB 255 ^.err_handler hJSR OSNEWL:JSR report rJMP lang_loop | .report  LDY #1  .errloop LDA (&FD),Y:CMP #0:BEQ err2 JSR OSWRCH:INY:JMP errloop  .err2 JMP OSNEWL $\ Service part  .serv ,PHA:LDA &DF0,X:CMP #255:BEQ disabled:PLA !CMP #2:BEQ serv2:\ Private WS CMP #4:BEQ serv4:\ *comms CMP #6:\BEQ serv6:\Errors CMP #9:BEQ serv9:\ *HELP &CMP #&22:BEQ serv22:\ Master PV WS RTS .disabled:PLA:RTS & .serv2 0/TYA:PHA:LDA #&81:LDX #0:LDY #255:JSR OSBYTE :CPY #0:BNE serv2go D.CPX #253:BEQ serv2end:CPX #245:BNE serv2go N .serv2end:PLA:TAY:LDA #2:RTS X&.serv2go:PLA:STA &DF0,X:LDA #2:RTS b .serv22 lTYA:STA &DF0,X:LDA #22:RTS v .serv4 JMP serv4run  .serv3 TYA:PHA:LDA #122:JSR OSBYTE TXA:BMI init_rom  CMP #51:BEQ init_rom:\ R key PLA:TAY:LDX &F4:LDA #3:RTS !.init_rom:LDA #120:JSR OSBYTE #PLA:\JSR rom_init:\Init the ROM !\ If A=0, boot up at rom_init LDX &F4:LDA #0:RTS .run_help_end LDA #9:LDY &AF:LDX &F4:RTS  .serv9  STY &AF  %\ Next few lines check HELP text: &LDA (&F2),Y:CMP #".":BEQ do_help1  & #&DF:CMP #"F":BNE not_file_help *MINY:LDA (&F2),Y:CMP #".":BEQ do_help1: #&DF:CMP #"I":BNE not_file_help 4MINY:LDA (&F2),Y:CMP #".":BEQ do_help1: #&DF:CMP #"L":BNE not_file_help >MINY:LDA (&F2),Y:CMP #".":BEQ do_help1: #&DF:CMP #"E":BNE not_file_help H .do_help1 R9JSR pr_text:EQUB 13:EQUS "Skeleton Filer":EQUB 13:BRK \$LDA #os_comm1_text 255:STA &AC f$LDA #os_comm1_text 256:STA &AD pLDA #os_comm1 255:STA &A9 zLDA #os_comm1 256:STA &AA JSR do_help:LDY &AF -LDA (&F2),Y:CMP #".":BNE run_help_finish JMP do_help2 #.run_help_end2:JMP run_help_end .not_file_help 2LDA (&F2),Y: #&DF:CMP #"M":BNE run_help_end2 MINY:LDA (&F2),Y:CMP #".":BEQ do_help2: #&DF:CMP #"O":BNE run_help_end2 MINY:LDA (&F2),Y:CMP #".":BEQ do_help2: #&DF:CMP #"S":BNE run_help_end2  .do_help2 ":BRK  .os_comm2 #EQUS "CHECK":BRK:EQUW 0:\ check  EQUB 255 .os_comm2_text EQUS "more ":BRK & \ Routines 0\ Misc. routines : .pr_hex DPHA:LSR A:LSR A:LSR A:LSR A N JSR first XPLA b .first l #&0F:CMP #10 v BCC over  ADC #6  .over ADC #48:JMP OSWRCH \  .pr_text  STA &AE +PLA:STA &AC:PLA:STA &AD:TXA:PHA:TYA:PHA LDY #0:.pr_main_loop INC &AC:BNE continue INC &AD:.continue LDA (&AC),Y BEQ end_of_string JSR OSASCI:JMP pr_main_loop .end_of_string  INC &AC:BNE pr_exit_end INC &AD:.pr_exit_end  %PLA:TAY:PLA:TAX:LDA &AE:JMP (&AC) *\ 4 .errors >PLA:STA &AC:PLA:STA &AD HLDY #0:LDX #0 R.error_main_loop \"INX:INY:LDA (&AC),Y:STA &100,X fBNE error_main_loop pLDA #0:STA &100:JMP &100 z\ .Bad_Command JSR errors #EQUB 254:EQUS "Bad command":BRK .Bad_Number JSR errors "EQUB 200:EQUS "Bad Number":BRK .get_hex_addr LDX #&A8:LDA #0 STA 0,X:STA 1,X:STA 2,X .next_char #LDA (&F2),Y:JSR ascii_to_binary BCS get_hex_error ASL A:ASL A:ASL A:ASL A STY 2,X:LDY #4 .get_hex_again ASL A:ROL 0,X:ROL 1,X $DEY:BNE get_hex_again .LDY 2,X:INY:BNE next_char 8.get_hex_error BLDA 2,X:RTS L.ascii_to_binary VCMP #48:BCC illegal `CMP #58:BCC zero_nine jSBC #7:BCC illegal t CMP #64:BCS ascii_return ~.zero_nine #&0F .ascii_return RTS .illegal SEC:RTS .find_ws 9PHA:LDX &F4:LDA &DF0,X:STA &A9:LDA #0:STA &A8:PLA:RTS \ ]  P 5"SAVE ROM "+~(mcode%)+" "+~(O%+1)+" 8000 8000"