ô > xs/s v1.10 15-Feb-1990 ô Short Checksums ô (c) The Micro User ()ô v1.00 01-Feb 1988 by Steve Turnbull 2&ô v1.10 15-Feb 1990 by J.G.Harston <$ô Runable on either side of Tube Fô Pòinit:òassemble Z  LDX #&7F  OPT ¤warn  .clearlp & STA &480,X 0( DEX:BPL clearlp :\ Clear variables : LDA &00:STA &02 D! LDA &01:STA &03 :\ VARTOP=’ N RTS X.end b( EQUB 13:EQUB &FF :\ l .escape v- JSR wayout:BRK:EQUB 17:EQUS "Escape":BRK €.bad Š. JSR wayout:BRK:BRK:EQUS "Bad program":BRK ” OPT ¤warn ž..rdbyte LDX #0:LDY #255:JSR byte:TXA:€ #63 ¨ .ok RTS ².checkbasic ¼! LDA #187:JSR rdbyte:STA Lptr Æ( LDA #252:JSR rdbyte:CMP Lptr:BEQ ok Ð) BRK:EQUB 249:EQUS "Not in BASIC":BRK Ú&.doline LDA #0:STA Lcrc:STA Lcrc+1 ä STA qflg:TAY:LDA (Lptr),Y î& CMP #&0D:BNE bad:INY:LDA (Lptr),Y ø STA Lnum+1:INY:LDA (Lptr),Y  STA Lnum:INY:LDA (Lptr),Y  STA Lend:JSR prescan:CPY #5  BCC display:LDY #4  ".skipspc LDA (Lptr),Y:CMP #spc * BNE scan:INY:CPY LLen 4 BEQ display:BNE skipspc >!.scan LDA (Lptr),Y:JSR dobyte H INY:CPY LLen:BCC scan R .display:LDX Lnum:LDY Lnum+1 \ JSR pdec:LDA #spc:JSR wrch f LDA #—"=":JSR wrch:LDA #spc p! JSR wrch:LDX Lcrc:LDY Lcrc+1 z" JSR phex:LDA ocrc:JSR lastchk „" LDY LLen:CPY Lend:BEQ newline Ž LDA #—"*":JSR wrch ˜.newline JSR newl ¢!.update CLC:LDA Lptr:ADC Lend ¬$ STA Lptr:BCC unwhile:INC Lptr+1 ¶.unwhile JMP while À.prescan LDY Lend Ê%.psLoop DEY:LDA (Lptr),Y:CMP #spc Ô BEQ psLoop:INY:STY LLen:RTS Þ .dobyte STA savebyt:CMP #qts è" BNE notqe:PHA:LDA qflg:‚ #&FF ò STA qflg:PLA ü.notqe BIT qflg:BMI skpcode  BIT codeflg:BMI jcode  JSR basic:JMP skpcode .jcode JSR mcode $!.skpcode LDA savebyt:CPY LLen ." BEQ skipcrc:STY Ltmp:LDX Lcrc 8" LDY Lcrc+1:JSR docrc:STX Lcrc B# STY Lcrc+1:LDX ocrc:LDY ocrc+1 L" JSR docrc:STX ocrc:STY ocrc+1 V LDY Ltmp:.skipcrc RTS `.basic CMP #rem:BEQ skpline j" CMP #Lbrk:BNE xbasic:LDA #&FF t STA codeflg:RTS ~!.skpline LDY LLen:.xbasic RTS ˆ .mcode CMP #mcom:BEQ skipcom ’ CMP #rbrk:BNE xmcode:LDA #0 œ STA codeflg:.xmcode RTS ¦ .skipcom LDA qflg:PHA:LDA #0 ° STA qflg º&.skpLoop INY:LDA (Lptr),Y:CMP #qts Ä# BNE skpchk:PHA:LDA qflg:‚ #&FF Î STA qflg:PLA Ø .skpchk CPY LLen:BEQ skpexit â$ CMP #colon:BNE skpLoop:BIT qflg ì BMI skpLoop ö&.skpexit PLA:STA qflg:LDA (Lptr),Y  STA savebyt:RTS  ".docrc PHA:STX wcrc:STY wcrc+1  ‚ wcrc+1:STA wcrc+1:LDX #7 $.crclp BIT wcrc+1:CLC:BPL crcskp ( LDA wcrc:‚ #&10:STA wcrc 2! LDA wcrc+1:‚ #&08:STA wcrc+1 < SEC F#.crcskp ROL wcrc:ROL wcrc+1:DEX P" BPL crclp:LDX wcrc:LDY wcrc+1 Z PLA:RTS d".lastchk PHA:LDA #spc:JSR wrch n PLA:€ #&0F:TAX:LDA #&FF:PHA x TXA:JMP notz:.pdec LDA #10 ‚ BNE pnum:.phex LDA #16 Œ.pnum STX Lonum:STY hinum –" STA nmbase:LDA #4:STA fldsize   LDA #255:STA zflg ª.nbit PHA:LDA #0:STA Lowrk ´ STA hiwrk:LDX #16 ¾.next ASL Lonum:ROL hinum È& ROL Lowrk:ROL hiwrk:LDA Lowrk:SEC Ò$ SBC nmbase:TAY:LDA hiwrk:SBC #0 Ü! BCC done:INC Lonum:STY Lowrk æ! STA hiwrk:.done DEX:BNE next ð# LDA Lowrk:DEC fldsize:BNE nbit ú%.out TAX:BNE notz:PLA:PHA:PHP:TXA # PLP:BMI notz:BIT zflg:BPL notz  LDA #spc:BNE digout !.notz LDX #0:STX zflg:CMP #10 " BCC add:ADC #6:.add ADC #48 , .digout JSR wrch:PLA:BPL out 6 .exit RTS @ ]:í:á JZݤwarn:çL%€3:çP%>&47F:çP%<&500:ñ"**** Warning: code overwritten on exit":warn%=warn%+1 T=L% ÿ