> PrList13/s  By Jonathan Harston * v0.10 1986 - Original version (3 v1.00 -Jun-1990 - Version in The Micro User 2. v1.10 09-Nov-1991 - '+' to colour tokens <; v1.20 15-Sep-1992 - Added Compact BASIC token address FA v1.30 16-May-1993 - '-' omits line numbers, LFs not Spooled P: Z" Syntax: *PrList (+)(-) d: n*OSARGS=&FFDA:OSFIND=&FFCE:OSBGET=&FFD7 xOSWRCH=&FFEE:OSBYTE=&FFF4 : 9lptr=&A8:tptr=&A8:tok=&AA:flag=&AB:num=&AC:subnum=&AE : ! mcode% &300:load%=&FFFF08C0 P=0 1 P%=load%:O%=mcode% [OPT P*3+4 .handle:BRK .tbase:BRK:BRK .r_flag:BRK .quotes:BRK '.col_flg:BRK :\ Coloured tokens? ).line_flg:BRK :\ Show line numbers? !\ Uses start of prog for vars ] P%=load%:O%=mcode% "[OPT P*3+4 ,.basic_not_present 6$BRK:EQUB 254:EQUS "No BASIC":BRK @ .FnotF J%BRK:EQUB 214:EQUS "Not found":BRK T .start ^+LDX &24B:CPX #&FF:BEQ basic_not_present h1LDA &F4:PHA:STX &F4:STX &FE30:\ Page in BASIC r?LDY #0:STY col_flg:STY line_flg:LDA #1:LDX #lptr:JSR OSARGS |'LDA (lptr),Y:CMP #"-":BNE try_plus -ROR line_flg:INC lptr:BNE P%+4:INC lptr+1  .try_plus (LDA (lptr),Y:CMP #"+":BNE open_file ,ROR col_flg:INC lptr:BNE P%+4:INC lptr+1 .open_file +LDX lptr:LDY lptr+1:LDA #&40:JSR OSFIND TAY:BEQ FnotF:STY handle %JSR OSBGET:CMP #13:BEQ basic_file LDA #0:JSR OSFIND ,BRK:EQUB 254:EQUS "Not a BASIC file":BRK  .addrs EQUW &806D :\ BASIC 1 EQUW &8071 :\ BASIC 2 EQUW &0000 EQUW &8071 :\ HIBASIC !EQUW &8456 :\ BASIC 4, Master &"EQUW &842F :\ BASIC 4, Compact 0EQUW &8257 :\ BASIC 4, Z80 :.basic_file D-LDA #6*2:LDX &8006:STX r_flag:BMI set_up2 N(LDA &8008:ASL A:BPL set_up2:LDA #5*2 X .set_up2 b-TAX:\ Find the address of the token table lLDA addrs+0,X:STA tbase+0 vLDA addrs+1,X:STA tbase+1 .line_loop  LDA #0:STA quotes:LDY handle 8JSR OSBGET:BCS end_of_file:STA num+1 :\ Line number (JSR OSBGET:BCS end_of_file:STA num+0 LDA #32:STA flag %BIT line_flg:BMI P%+5:JSR pr_line =LDY handle:JSR OSBGET:BCS end_of_file :\ Skip line length  .pr_loop !LDY handle:BIT &FF:BMI escape JSR OSBGET:BCS end_of_file BIT quotes:BNE in_quotes CMP #128:BCS do_token .in_quotes CMP #34:BNE not_a_quote  (LDA #255: quotes:STA quotes:LDA #34 .not_a_quote  "JSR OSWRCH:CMP #13:BNE pr_loop *=LDX #0:JSR Osbyte3:TXA:PHA :\ Read current output status 42A #16:TAX:JSR Osbyte3 :\ Turn "Spool" off >5LDA #10:JSR OSWRCH :\ Output a line feed H9PLA:TAX:JSR Osbyte3 :\ Restore "Spool" status RJMP line_loop \: f .escape p.end_of_file zLDA #0:JSR OSFIND PLA:STA &F4:STA &FE30:RTS ".do_token:CMP #141:BEQ do_tok2 JSR pr_token:JMP pr_loop :  .do_tok2 (JSR OSBGET:BCS end_of_file:STA num+1 (JSR OSBGET:BCS end_of_file:STA num+0 *LDA num+1:ASL A:ASL A:PHA: #&C0: num %STA num:PLA:ASL A:ASL A:STA num+1 JSR OSBGET:BCS end_of_file  num+1:STA num+1 LDA #0:STA flag JSR pr_line:JMP pr_loop : .pr_token:STA tok 1LDA tbase+0:STA tptr+0:LDA tbase+1:STA tptr+1 $ .loop1 . LDY #255 8 .loop:INY BLDA (tptr),Y:BPL loop LCMP tok:BEQ got_it V%INY:INY:TYA:CLC:ADC tptr:STA tptr `*LDA #0:ADC tptr+1:STA tptr+1:JMP loop1 j .got_it t INY:BIT r_flag:BMI pr_t_loop ~$LDY #0:BIT col_flg:BPL pr_t_loop LDA #17:JSR OSWRCH LDA #1:JSR OSWRCH .pr_t_loop LDA (tptr),Y:BMI pr_t_end BEQ pr_t_end  JSR OSWRCH:INY:BNE pr_t_loop  .pr_t_end BIT col_flg:BPL pr_t_end2 LDA #17:JSR OSWRCH LDA #7:JSR OSWRCH .pr_t_end2 RTS :  .pr_line $\ General purpose 16 bit decimal \ printout routine. ("\ num holds number. flag holds 2 \ leading character, or zero <\ eg 32 = leading spaces F\ eg 48 = leading zeros P"\ eg 0 = no leading characters Z+LDY #&27:LDX #&10:JSR do_subs:\ 10000s d*LDY #&03:LDX #&E8:JSR do_subs:\ 1000s n)LDY #&00:LDX #&64:JSR do_subs:\ 100s x(LDY #&00:LDX #&0A:JSR do_subs:\ 10s &LDA num:A #48:JMP OSWRCH :\ 1s :  .do_subs &STX subnum+0:STY subnum+1:LDX #255  .loop  INX:SEC $LDA num+0:SBC subnum+0:STA num+0 $LDA num+1:SBC subnum+1:STA num+1  BCS loop $LDA num+0:ADC subnum+0:STA num+0 $LDA num+1:ADC subnum+1:STA num+1 TXA:BEQ zero A #48:JSR OSWRCH LDA #48:STA flag .zero_exit RTS " .zero ,LDA flag:BEQ zero_exit 6JMP OSWRCH @: J .Osbyte3 TLDA #3:JMP OSBYTE ^EQUS "1.13" h] rE"*SAVE PrList ";~mcode%;" ";~O%;" ";~start &FFFF0000;" ";~load%