"ô Skeleton for 1 oscli handler )oscli=&FFF7:OSWORD=&FFF1:OSBYTE=&FFF4 *OSWRCH=&FFEE:OSNEWL=&FFE4:OSASCI=&FFE3 (mcode%=¸P+&1800:Ó=mcode% 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 x EQUB 10 ‚9EQUS "1 Comm. Skeleton ROM":BRK:EQUS "Version string" Œ .copy –&BRK:EQUS "(C)1987 J.G.Harston":BRK  %\ Language part ª .lang ´LDX #&FF:TXS:CLD:CLI ¾LDA #err € 255:STA &202 ÈLDA #err 256:STA &203 Ò.lang_loop ÜLDA #—"*":JSR OSWRCH æLDA #0:LDX #buff € 255 ðLDY #buff 256 úJSR OSWORD BCS escape LDX #0:LDY #7:JSR oscli JMP lang_loop " .escape ,LDA #124:JSR OSBYTE 6!BRK:EQUB 17:EQUS "Escape":BRK @ .buff J EQUW &700 TEQUB 255:EQUB 32:EQUB 255 ^.err hJSR OSNEWL:JSR report rJSR OSNEWL:JMP lang_loop | .report † LDY #1  .errloop šLDA (&FD),Y:CMP #0:BEQ err2 ¤JSR OSWRCH:INY:JMP errloop ® .err2 ¸RTS Â$\ Service part Ì .serv Ö"CMP #7:BEQ serv7:\ OSBYTE call à*PHA:LDA &DF0,X:€ #128:BEQ disabled:PLA êCMP #9:BEQ serv9:\ *HELP ô CMP #4:BEQ serv4:\ *commands þRTS .disabled:PLA:RTS  .serv7 4LDA &EF:CMP #91:BNE serv7not:\ *FX to enable ROM &4LDA &DF0,X:STA &F0:„A #128:STA &DF0,X:LDA #0:RTS 0.serv7not:LDA #7:RTS :.serv4:JMP serv4run D.serv9:\ *HELP handler NJSR pr_text X-EQUB 13:EQUS "Skeleton 1 ROM 1.00":EQUB13 bBRK:STY &AA l9LDA (&F2),Y:CMP #—".":BEQ help_print:€ #&DF:CMP #—"S" vJBNE help_not:INY:LDA (&F2),Y:CMP #—".":BEQ help_print:€ #&DF:CMP #—"K" €JBNE help_not:INY:LDA (&F2),Y:CMP #—".":BEQ help_print:€ #&DF:CMP #—"E" ŠJBNE help_not:INY:LDA (&F2),Y:CMP #—".":BEQ help_print:€ #&DF:CMP #—"L" ”BNE help_not ž&.help_print:\ *HELP command lister ¨"LDA #(help_mess) € &FF:STA &A8 ²"LDA #(help_mess) 256:STA &A9 ¼LDX #0:LDY #0 Æ.help_mess_loop Ð!LDA #32:JSR OSWRCH:JSR OSWRCH Ú.help_mess_loop2 ä!LDA osc_table,X:BEQ help_word î*JSR OSWRCH:INX:CLC:BCC help_mess_loop2 ø.help_word LDA #32:JSR OSWRCH  .help_mess_loop3 !LDA (&A8),Y:BEQ help_text_end  *JSR OSWRCH:INY:CLC:BCC help_mess_loop3 *.help_text_end 4JSR OSNEWL >?INY:INX:INX:INX:LDA osc_table,X:CMP #&FF:BNE help_mess_loop H .help_not R0\ Optionally print out word responds to. Eg: \-\JSR pr_text:\EQUS " SKEL":\EQUB 13:\BRK f .help_end p5LDY &AA:LDX &F4:LDA (&F2),Y:CMP #13:BEQ help_end1 z&CMP #—".":BEQ help_end1:LDA #0:RTS „.help_end1 ŽLDA #9:RTS ˜ .serv4run ¢JSR serv4look ¬CMP #0:BEQ serv4look_ok ¶KLDA (&F2),Y:€ #&DF:CMP #—"H":BNE serv4look2:\ check if H prefix present À*INY:JSR serv4look:DEY:JMP serv4look_ok Ê$.serv4look2:LDA #4:.serv4look_ok ÔRTS Þ.serv4look èTXA:PHA:STY &AF ò LDX #0 ü.serv4_main_loop  LDY &AF .serv4_loop !LDA (&F2),Y:CMP #—".":BEQ dot $!CMP osc_table,X:BNE not_equal . .equal 8)INX:INY:LDA osc_table,X:BEQ zero_byte BBNE serv4_loop L.dot VJSR fnd_zero1 `INY j.zero_byte tINX:LDA osc_table,X:STA &A8 ~INX:LDA osc_table,X:STA &A9 ˆ.no_spaces ’(LDA (&F2),Y:CMP #32:BNE jump_to_code œINY:CLC:BCC no_spaces ¦.jump_to_code °PLA:TAX:JSR jump ºLDA #0:RTS Ä .jump Î JMP (&A8) Ø .fnd_zero âINX ì.fnd_zero1 ö LDA osc_table,X:BNE fnd_zero RTS  .not_equal #‚ #32:CMP osc_table,X:BEQ equal JSR fnd_zero ((INX:INX:INX:LDA osc_table,X:CMP #&FF 2BNE serv4_main_loop <PLA:TAX:LDY &AF:LDA #4:RTS F"\ Tables P.osc_table Z&EQUS "NOSKEL":BRK:EQUW disable_ROM d EQUB 255 n.help_mess xEQUS "":BRK ‚ \ Routines Œ .pr_hex –PHA:LSR A:LSR A:LSR A:LSR A   JSR first ªPLA ´ .first ¾€ #&0F:CMP #10 È BCC over Ò ADC #6 Ü .over æADC #48:JMP OSWRCH ð .pr_text ú STA &AA 2PLA:STA &A8:PLA:STA &A9:TXA:PHA:TYA:PHA:LDY #0 .pr_main_loop  INC &A8:BNE continue:INC &A9 " .continue ,!LDA (&A8),Y:BEQ end_of_string 6JSR OSASCI:JMP pr_main_loop @.end_of_string J#INC &A8:BNE pr_text_end:INC &A9 T .pr_text_end:PLA:TAY:PLA:TAX ^LDA &AA:JMP (&A8) h .errors rPLA:STA &A8:PLA:STA &A9 |LDY #&FF:LDX #0 †.error_main_loop "INY:LDA (&A8),Y:STA &100,X:INX šBNE error_main_loop ¤LDA #0:STA &100:JMP &100 ®.Bad_Command ¸JSR errors Â#EQUB 254:EQUS "Bad command":BRK Ì.Bad_Number ÖJSR errors à"EQUB 200:EQUS "Bad Number":BRK ê.disable_ROM ô LDA &DF0,X:€ #127:STA &DF0,X þ+JSR pr_text:EQUS "Press CTRL-BREAK":BRK  .dis_ROMloop:JMP dis_ROMloop ] í P &9ñ"SAVE ROM "+Ã~(mcode%)+" "+Ã~(O%+1)+" FE524F4D 8000" ÿ