Home » Archimedes archive » Micro User » MU 1990-06.adf » PrgList

PrgList

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Micro User » MU 1990-06.adf
Filename: PrgList
Read OK:
File size: 0D78 bytes
Load address: FFFFFB43
Exec address: 6D397138
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
   10REM > PROGLST
   20REM By Jon Harston
   30REM (C) The Micro User
   40OSARGS=&FFDA:OSFIND=&FFCE:OSBGET=&FFD7
   50OSASCI=&FFE3:OSBYTE=&FFF4
   60mcode%=&FFFF0900
   70FOR P=0 TO 1
   80P%=mcode%
   90[OPT P*3
  100.handle:BRK
  110.num:.line_num:BRK:BRK
  120.subnum:BRK:BRK
  130.flag:BRK
  140.r_flag:BRK
  150.quotes:BRK
  160\ Uses start of prog for vars
  170]
  180P%=mcode%
  190[OPT P*3
  200.start
  210LDX &24B:CPX #&FF:BNE basic_present
  220BRK:OPT FNs(CHR$254+"BASIC not present"):BRK
  230.basic_present
  240LDA &F4:PHA:STX &F4:STX &FE30:\ Page in BASIC
  250LDY #0:LDA #1:LDX #&A8:JSR OSARGS
  260LDX &A8:LDY &A9:LDA #&40:JSR OSFIND
  270CMP #0:BNE file_found
  280BRK:OPT FNs(CHR$214+"File not found"):BRK
  290.file_found
  300STA handle:TAY
  310JSR OSBGET:CMP #13:BEQ basic_file
  320LDA #0:JSR OSFIND
  330BRK:OPT FNs(CHR$254+"Not a BASIC file"):BRK
  340.addrs
  350OPT FNw(&806D):\ BASIC 1
  360OPT FNw(&8071):\ BASIC 2
  370OPT FNw(&0000):\ ?
  380OPT FNw(&8071):\ HIBASIC
  390OPT FNw(&8456):\ BASIC 4, Master
  400OPT FNw(&8257):\ BASIC 4, Z80
  410.basic_file
  420LDA #5:LDX &8006:STX r_flag
  430BMI set_up2:LDA &8008
  440.set_up2
  450ASL A:TAX:\ Find the address of the token table
  460LDA addrs,X:STA &AB
  470LDA addrs+1,X:STA &AC
  480.line_loop
  490LDA #0:STA quotes
  500JSR OSBGET:BCS end_of_file
  510STA line_num+1:JSR OSBGET:BCS end_of_file:\ Line number
  520STA line_num:LDA #32:STA flag
  530JSR pr_line
  540JSR OSBGET:BCS end_of_file:\ Line length
  550.pr_loop
  560BIT &FF:BMI escape
  570LDY handle:JSR OSBGET:BCS end_of_file
  580BIT quotes:BNE in_quotes
  590CMP #128:BCS do_token
  600.in_quotes
  610CMP #34:BNE not_a_quote
  620LDA #255:EOR quotes:STA quotes:LDA #34
  630.not_a_quote
  640JSR OSASCI
  650CMP #13:BNE pr_loop
  660BEQ line_loop
  670.escape
  680.end_of_file
  690LDA #0:JSR OSFIND
  700PLA:STA &F4:STA &FE30:RTS
  710.do_token:CMP #141:BEQ do_tok2
  720JSR pr_token
  730LDY handle:BNE pr_loop
  740.do_tok2
  750JSR OSBGET:BCS end_of_file:STA line_num+1
  760JSR OSBGET:BCS end_of_file:STA line_num
  770LDA line_num+1:ASL A:ASL A:PHA:AND #&C0:EOR line_num
  780STA line_num:PLA:ASL A:ASL A:STA line_num+1
  790JSR OSBGET:BCS end_of_file
  800EOR line_num+1:STA line_num+1
  810LDA #0:STA flag
  820JSR pr_line:JMP pr_loop
  830.pr_token:STA &A8
  840LDA &AB:STA &A9:LDA &AC:STA &AA
  850.loop1
  860LDY #255
  870.loop:INY
  880LDA (&A9),Y
  890BPL loop
  900CMP &A8:BEQ got_it
  910INY:INY:TYA:CLC:ADC &A9:STA &A9
  920LDA #0:ADC &AA:STA &AA:JMP loop1
  930.got_it
  940INY:BIT r_flag:BMI pr_t_loop
  950LDY #0:.pr_t_loop
  960LDA (&A9),Y:BMI pr_t_end
  970BEQ pr_t_end
  980JSR OSASCI:INY:BNE pr_t_loop
  990.pr_t_end:RTS
 1000.pr_line
 1010\ General purpose 16 bit decimal
 1020\ printout routine.
 1030\ num holds number. flag holds
 1040\ leading character, or zero
 1050\ eg 32 = leading spaces
 1060\ eg 48 = leading zeros
 1070\ eg 0 = no leading characters
 1080LDA #&27:STA subnum+1
 1090LDA #&10:STA subnum
 1100JSR do_subtracts:\  10000s
 1110LDA #&3:STA subnum+1
 1120LDA #&E8:STA subnum
 1130JSR do_subtracts:\ 1000s
 1140LDA #0:STA subnum+1
 1150LDA #&64:STA subnum
 1160JSR do_subtracts:\ 100s
 1170LDA #&0A:STA subnum
 1180JSR do_subtracts:\ 10s
 1190LDA num:ORA #48:JMP OSASCI:\ 1s
 1200.do_subtracts
 1210LDX #255
 1220.loop
 1230INX
 1240SEC
 1250LDA num:SBC subnum:STA num
 1260LDA num+1:SBC subnum+1:STA num+1
 1270BCS loop:CLC
 1280LDA num:ADC subnum:STA num
 1290LDA num+1:ADC subnum+1:STA num+1
 1300TXA:BEQ zero
 1310ORA #48:JSR OSASCI
 1320LDA #48:STA flag
 1330.zero_exit
 1340RTS
 1350.zero
 1360LDA flag:BEQ zero_exit
 1370JMP OSASCI
 1380]NEXT
 1390PRINT"*SAVE PrList ";~mcode%;" ";~P%
 1400END
 1410DEFFNs(A$):$P%=A$:P%=P%+LENA$:=P*3
 1420DEFFNw(A%):!P%=A%:P%=P%+2:=P*3

� > PROGLST
� By Jon Harston
� (C) The Micro User
(*OSARGS=&FFDA:OSFIND=&FFCE:OSBGET=&FFD7
2OSASCI=&FFE3:OSBYTE=&FFF4
<mcode%=&FFFF0900
F
� P=0 � 1
P
P%=mcode%
Z[OPT P*3
d.handle:BRK
n.num:.line_num:BRK:BRK
x.subnum:BRK:BRK
�
.flag:BRK
�.r_flag:BRK
�.quotes:BRK
�!\ Uses start of prog for vars
�]
�
P%=mcode%
�[OPT P*3
�
.start
�'LDX &24B:CPX #&FF:BNE basic_present
�,BRK:OPT �s(�254+"BASIC not present"):BRK
�.basic_present
�1LDA &F4:PHA:STX &F4:STX &FE30:\ Page in BASIC
�%LDY #0:LDA #1:LDX #&A8:JSR OSARGS
'LDX &A8:LDY &A9:LDA #&40:JSR OSFIND
CMP #0:BNE file_found
)BRK:OPT �s(�214+"File not found"):BRK
".file_found
,STA handle:TAY
6%JSR OSBGET:CMP #13:BEQ basic_file
@LDA #0:JSR OSFIND
J+BRK:OPT �s(�254+"Not a BASIC file"):BRK
T
.addrs
^OPT �w(&806D):\ BASIC 1
hOPT �w(&8071):\ BASIC 2
rOPT �w(&0000):\ ?
|OPT �w(&8071):\ HIBASIC
�#OPT �w(&8456):\ BASIC 4, Master
� OPT �w(&8257):\ BASIC 4, Z80
�.basic_file
�LDA #5:LDX &8006:STX r_flag
�BMI set_up2:LDA &8008
�.set_up2
�3ASL A:TAX:\ Find the address of the token table
�LDA addrs,X:STA &AB
�LDA addrs+1,X:STA &AC
�.line_loop
�LDA #0:STA quotes
�JSR OSBGET:BCS end_of_file
�;STA line_num+1:JSR OSBGET:BCS end_of_file:\ Line number
!STA line_num:LDA #32:STA flag
JSR pr_line
,JSR OSBGET:BCS end_of_file:\ Line length
&.pr_loop
0BIT &FF:BMI escape
:)LDY handle:JSR OSBGET:BCS end_of_file
DBIT quotes:BNE in_quotes
NCMP #128:BCS do_token
X.in_quotes
bCMP #34:BNE not_a_quote
l(LDA #255:� quotes:STA quotes:LDA #34
v.not_a_quote
�JSR OSASCI
�CMP #13:BNE pr_loop
�BEQ line_loop
�.escape
�.end_of_file
�LDA #0:JSR OSFIND
�PLA:STA &F4:STA &FE30:RTS
�".do_token:CMP #141:BEQ do_tok2
�JSR pr_token
�LDY handle:BNE pr_loop
�.do_tok2
�-JSR OSBGET:BCS end_of_file:STA line_num+1
�+JSR OSBGET:BCS end_of_file:STA line_num
4LDA line_num+1:ASL A:ASL A:PHA:� #&C0:� line_num
/STA line_num:PLA:ASL A:ASL A:STA line_num+1
JSR OSBGET:BCS end_of_file
 � line_num+1:STA line_num+1
*LDA #0:STA flag
4JSR pr_line:JMP pr_loop
>.pr_token:STA &A8
H#LDA &AB:STA &A9:LDA &AC:STA &AA
R
.loop1
\LDY #255
f
.loop:INY
pLDA (&A9),Y
zBPL loop
�CMP &A8:BEQ got_it
�#INY:INY:TYA:CLC:ADC &A9:STA &A9
�$LDA #0:ADC &AA:STA &AA:JMP loop1
�.got_it
� INY:BIT r_flag:BMI pr_t_loop
�LDY #0:.pr_t_loop
�LDA (&A9),Y:BMI pr_t_end
�BEQ pr_t_end
� JSR OSASCI:INY:BNE pr_t_loop
�.pr_t_end:RTS
�.pr_line
�$\ General purpose 16 bit decimal
�\ printout routine.
"\ num holds number. flag holds
 \ leading character, or zero
\ eg 32 = leading spaces
$\ eg 48 = leading zeros
."\ eg 0 = no leading characters
8LDA #&27:STA subnum+1
BLDA #&10:STA subnum
LJSR do_subtracts:\  10000s
VLDA #&3:STA subnum+1
`LDA #&E8:STA subnum
jJSR do_subtracts:\ 1000s
tLDA #0:STA subnum+1
~LDA #&64:STA subnum
�JSR do_subtracts:\ 100s
�LDA #&0A:STA subnum
�JSR do_subtracts:\ 10s
�"LDA num:�A #48:JMP OSASCI:\ 1s
�.do_subtracts
�LDX #255
�	.loop
�INX
�SEC
�LDA num:SBC subnum:STA num
�$LDA num+1:SBC subnum+1:STA num+1
�BCS loop:CLC
LDA num:ADC subnum:STA num

$LDA num+1:ADC subnum+1:STA num+1
TXA:BEQ zero
�A #48:JSR OSASCI
(LDA #48:STA flag
2.zero_exit
<RTS
F	.zero
PLDA flag:BEQ zero_exit
ZJMP OSASCI
d]�
n$�"*SAVE PrList ";~mcode%;" ";~P%
x�
�!ݤs(A$):$P%=A$:P%=P%+�A$:=P*3
�ݤw(A%):!P%=A%:P%=P%+2:=P*3
�
00000000  0d 00 0a 0f f4 20 3e 20  50 52 4f 47 4c 53 54 0d  |..... > PROGLST.|
00000010  00 14 14 f4 20 42 79 20  4a 6f 6e 20 48 61 72 73  |.... By Jon Hars|
00000020  74 6f 6e 0d 00 1e 18 f4  20 28 43 29 20 54 68 65  |ton..... (C) The|
00000030  20 4d 69 63 72 6f 20 55  73 65 72 0d 00 28 2a 4f  | Micro User..(*O|
00000040  53 41 52 47 53 3d 26 46  46 44 41 3a 4f 53 46 49  |SARGS=&FFDA:OSFI|
00000050  4e 44 3d 26 46 46 43 45  3a 4f 53 42 47 45 54 3d  |ND=&FFCE:OSBGET=|
00000060  26 46 46 44 37 0d 00 32  1d 4f 53 41 53 43 49 3d  |&FFD7..2.OSASCI=|
00000070  26 46 46 45 33 3a 4f 53  42 59 54 45 3d 26 46 46  |&FFE3:OSBYTE=&FF|
00000080  46 34 0d 00 3c 14 6d 63  6f 64 65 25 3d 26 46 46  |F4..<.mcode%=&FF|
00000090  46 46 30 39 30 30 0d 00  46 0d e3 20 50 3d 30 20  |FF0900..F.. P=0 |
000000a0  b8 20 31 0d 00 50 0d 50  25 3d 6d 63 6f 64 65 25  |. 1..P.P%=mcode%|
000000b0  0d 00 5a 0c 5b 4f 50 54  20 50 2a 33 0d 00 64 0f  |..Z.[OPT P*3..d.|
000000c0  2e 68 61 6e 64 6c 65 3a  42 52 4b 0d 00 6e 1a 2e  |.handle:BRK..n..|
000000d0  6e 75 6d 3a 2e 6c 69 6e  65 5f 6e 75 6d 3a 42 52  |num:.line_num:BR|
000000e0  4b 3a 42 52 4b 0d 00 78  13 2e 73 75 62 6e 75 6d  |K:BRK..x..subnum|
000000f0  3a 42 52 4b 3a 42 52 4b  0d 00 82 0d 2e 66 6c 61  |:BRK:BRK.....fla|
00000100  67 3a 42 52 4b 0d 00 8c  0f 2e 72 5f 66 6c 61 67  |g:BRK.....r_flag|
00000110  3a 42 52 4b 0d 00 96 0f  2e 71 75 6f 74 65 73 3a  |:BRK.....quotes:|
00000120  42 52 4b 0d 00 a0 21 5c  20 55 73 65 73 20 73 74  |BRK...!\ Uses st|
00000130  61 72 74 20 6f 66 20 70  72 6f 67 20 66 6f 72 20  |art of prog for |
00000140  76 61 72 73 0d 00 aa 05  5d 0d 00 b4 0d 50 25 3d  |vars....]....P%=|
00000150  6d 63 6f 64 65 25 0d 00  be 0c 5b 4f 50 54 20 50  |mcode%....[OPT P|
00000160  2a 33 0d 00 c8 0a 2e 73  74 61 72 74 0d 00 d2 27  |*3.....start...'|
00000170  4c 44 58 20 26 32 34 42  3a 43 50 58 20 23 26 46  |LDX &24B:CPX #&F|
00000180  46 3a 42 4e 45 20 62 61  73 69 63 5f 70 72 65 73  |F:BNE basic_pres|
00000190  65 6e 74 0d 00 dc 2c 42  52 4b 3a 4f 50 54 20 a4  |ent...,BRK:OPT .|
000001a0  73 28 bd 32 35 34 2b 22  42 41 53 49 43 20 6e 6f  |s(.254+"BASIC no|
000001b0  74 20 70 72 65 73 65 6e  74 22 29 3a 42 52 4b 0d  |t present"):BRK.|
000001c0  00 e6 12 2e 62 61 73 69  63 5f 70 72 65 73 65 6e  |....basic_presen|
000001d0  74 0d 00 f0 31 4c 44 41  20 26 46 34 3a 50 48 41  |t...1LDA &F4:PHA|
000001e0  3a 53 54 58 20 26 46 34  3a 53 54 58 20 26 46 45  |:STX &F4:STX &FE|
000001f0  33 30 3a 5c 20 50 61 67  65 20 69 6e 20 42 41 53  |30:\ Page in BAS|
00000200  49 43 0d 00 fa 25 4c 44  59 20 23 30 3a 4c 44 41  |IC...%LDY #0:LDA|
00000210  20 23 31 3a 4c 44 58 20  23 26 41 38 3a 4a 53 52  | #1:LDX #&A8:JSR|
00000220  20 4f 53 41 52 47 53 0d  01 04 27 4c 44 58 20 26  | OSARGS...'LDX &|
00000230  41 38 3a 4c 44 59 20 26  41 39 3a 4c 44 41 20 23  |A8:LDY &A9:LDA #|
00000240  26 34 30 3a 4a 53 52 20  4f 53 46 49 4e 44 0d 01  |&40:JSR OSFIND..|
00000250  0e 19 43 4d 50 20 23 30  3a 42 4e 45 20 66 69 6c  |..CMP #0:BNE fil|
00000260  65 5f 66 6f 75 6e 64 0d  01 18 29 42 52 4b 3a 4f  |e_found...)BRK:O|
00000270  50 54 20 a4 73 28 bd 32  31 34 2b 22 46 69 6c 65  |PT .s(.214+"File|
00000280  20 6e 6f 74 20 66 6f 75  6e 64 22 29 3a 42 52 4b  | not found"):BRK|
00000290  0d 01 22 0f 2e 66 69 6c  65 5f 66 6f 75 6e 64 0d  |.."..file_found.|
000002a0  01 2c 12 53 54 41 20 68  61 6e 64 6c 65 3a 54 41  |.,.STA handle:TA|
000002b0  59 0d 01 36 25 4a 53 52  20 4f 53 42 47 45 54 3a  |Y..6%JSR OSBGET:|
000002c0  43 4d 50 20 23 31 33 3a  42 45 51 20 62 61 73 69  |CMP #13:BEQ basi|
000002d0  63 5f 66 69 6c 65 0d 01  40 15 4c 44 41 20 23 30  |c_file..@.LDA #0|
000002e0  3a 4a 53 52 20 4f 53 46  49 4e 44 0d 01 4a 2b 42  |:JSR OSFIND..J+B|
000002f0  52 4b 3a 4f 50 54 20 a4  73 28 bd 32 35 34 2b 22  |RK:OPT .s(.254+"|
00000300  4e 6f 74 20 61 20 42 41  53 49 43 20 66 69 6c 65  |Not a BASIC file|
00000310  22 29 3a 42 52 4b 0d 01  54 0a 2e 61 64 64 72 73  |"):BRK..T..addrs|
00000320  0d 01 5e 1b 4f 50 54 20  a4 77 28 26 38 30 36 44  |..^.OPT .w(&806D|
00000330  29 3a 5c 20 42 41 53 49  43 20 31 0d 01 68 1b 4f  |):\ BASIC 1..h.O|
00000340  50 54 20 a4 77 28 26 38  30 37 31 29 3a 5c 20 42  |PT .w(&8071):\ B|
00000350  41 53 49 43 20 32 0d 01  72 15 4f 50 54 20 a4 77  |ASIC 2..r.OPT .w|
00000360  28 26 30 30 30 30 29 3a  5c 20 3f 0d 01 7c 1b 4f  |(&0000):\ ?..|.O|
00000370  50 54 20 a4 77 28 26 38  30 37 31 29 3a 5c 20 48  |PT .w(&8071):\ H|
00000380  49 42 41 53 49 43 0d 01  86 23 4f 50 54 20 a4 77  |IBASIC...#OPT .w|
00000390  28 26 38 34 35 36 29 3a  5c 20 42 41 53 49 43 20  |(&8456):\ BASIC |
000003a0  34 2c 20 4d 61 73 74 65  72 0d 01 90 20 4f 50 54  |4, Master... OPT|
000003b0  20 a4 77 28 26 38 32 35  37 29 3a 5c 20 42 41 53  | .w(&8257):\ BAS|
000003c0  49 43 20 34 2c 20 5a 38  30 0d 01 9a 0f 2e 62 61  |IC 4, Z80.....ba|
000003d0  73 69 63 5f 66 69 6c 65  0d 01 a4 1f 4c 44 41 20  |sic_file....LDA |
000003e0  23 35 3a 4c 44 58 20 26  38 30 30 36 3a 53 54 58  |#5:LDX &8006:STX|
000003f0  20 72 5f 66 6c 61 67 0d  01 ae 19 42 4d 49 20 73  | r_flag....BMI s|
00000400  65 74 5f 75 70 32 3a 4c  44 41 20 26 38 30 30 38  |et_up2:LDA &8008|
00000410  0d 01 b8 0c 2e 73 65 74  5f 75 70 32 0d 01 c2 33  |.....set_up2...3|
00000420  41 53 4c 20 41 3a 54 41  58 3a 5c 20 46 69 6e 64  |ASL A:TAX:\ Find|
00000430  20 74 68 65 20 61 64 64  72 65 73 73 20 6f 66 20  | the address of |
00000440  74 68 65 20 74 6f 6b 65  6e 20 74 61 62 6c 65 0d  |the token table.|
00000450  01 cc 17 4c 44 41 20 61  64 64 72 73 2c 58 3a 53  |...LDA addrs,X:S|
00000460  54 41 20 26 41 42 0d 01  d6 19 4c 44 41 20 61 64  |TA &AB....LDA ad|
00000470  64 72 73 2b 31 2c 58 3a  53 54 41 20 26 41 43 0d  |drs+1,X:STA &AC.|
00000480  01 e0 0e 2e 6c 69 6e 65  5f 6c 6f 6f 70 0d 01 ea  |....line_loop...|
00000490  15 4c 44 41 20 23 30 3a  53 54 41 20 71 75 6f 74  |.LDA #0:STA quot|
000004a0  65 73 0d 01 f4 1e 4a 53  52 20 4f 53 42 47 45 54  |es....JSR OSBGET|
000004b0  3a 42 43 53 20 65 6e 64  5f 6f 66 5f 66 69 6c 65  |:BCS end_of_file|
000004c0  0d 01 fe 3b 53 54 41 20  6c 69 6e 65 5f 6e 75 6d  |...;STA line_num|
000004d0  2b 31 3a 4a 53 52 20 4f  53 42 47 45 54 3a 42 43  |+1:JSR OSBGET:BC|
000004e0  53 20 65 6e 64 5f 6f 66  5f 66 69 6c 65 3a 5c 20  |S end_of_file:\ |
000004f0  4c 69 6e 65 20 6e 75 6d  62 65 72 0d 02 08 21 53  |Line number...!S|
00000500  54 41 20 6c 69 6e 65 5f  6e 75 6d 3a 4c 44 41 20  |TA line_num:LDA |
00000510  23 33 32 3a 53 54 41 20  66 6c 61 67 0d 02 12 0f  |#32:STA flag....|
00000520  4a 53 52 20 70 72 5f 6c  69 6e 65 0d 02 1c 2c 4a  |JSR pr_line...,J|
00000530  53 52 20 4f 53 42 47 45  54 3a 42 43 53 20 65 6e  |SR OSBGET:BCS en|
00000540  64 5f 6f 66 5f 66 69 6c  65 3a 5c 20 4c 69 6e 65  |d_of_file:\ Line|
00000550  20 6c 65 6e 67 74 68 0d  02 26 0c 2e 70 72 5f 6c  | length..&..pr_l|
00000560  6f 6f 70 0d 02 30 16 42  49 54 20 26 46 46 3a 42  |oop..0.BIT &FF:B|
00000570  4d 49 20 65 73 63 61 70  65 0d 02 3a 29 4c 44 59  |MI escape..:)LDY|
00000580  20 68 61 6e 64 6c 65 3a  4a 53 52 20 4f 53 42 47  | handle:JSR OSBG|
00000590  45 54 3a 42 43 53 20 65  6e 64 5f 6f 66 5f 66 69  |ET:BCS end_of_fi|
000005a0  6c 65 0d 02 44 1c 42 49  54 20 71 75 6f 74 65 73  |le..D.BIT quotes|
000005b0  3a 42 4e 45 20 69 6e 5f  71 75 6f 74 65 73 0d 02  |:BNE in_quotes..|
000005c0  4e 19 43 4d 50 20 23 31  32 38 3a 42 43 53 20 64  |N.CMP #128:BCS d|
000005d0  6f 5f 74 6f 6b 65 6e 0d  02 58 0e 2e 69 6e 5f 71  |o_token..X..in_q|
000005e0  75 6f 74 65 73 0d 02 62  1b 43 4d 50 20 23 33 34  |uotes..b.CMP #34|
000005f0  3a 42 4e 45 20 6e 6f 74  5f 61 5f 71 75 6f 74 65  |:BNE not_a_quote|
00000600  0d 02 6c 28 4c 44 41 20  23 32 35 35 3a 82 20 71  |..l(LDA #255:. q|
00000610  75 6f 74 65 73 3a 53 54  41 20 71 75 6f 74 65 73  |uotes:STA quotes|
00000620  3a 4c 44 41 20 23 33 34  0d 02 76 10 2e 6e 6f 74  |:LDA #34..v..not|
00000630  5f 61 5f 71 75 6f 74 65  0d 02 80 0e 4a 53 52 20  |_a_quote....JSR |
00000640  4f 53 41 53 43 49 0d 02  8a 17 43 4d 50 20 23 31  |OSASCI....CMP #1|
00000650  33 3a 42 4e 45 20 70 72  5f 6c 6f 6f 70 0d 02 94  |3:BNE pr_loop...|
00000660  11 42 45 51 20 6c 69 6e  65 5f 6c 6f 6f 70 0d 02  |.BEQ line_loop..|
00000670  9e 0b 2e 65 73 63 61 70  65 0d 02 a8 10 2e 65 6e  |...escape.....en|
00000680  64 5f 6f 66 5f 66 69 6c  65 0d 02 b2 15 4c 44 41  |d_of_file....LDA|
00000690  20 23 30 3a 4a 53 52 20  4f 53 46 49 4e 44 0d 02  | #0:JSR OSFIND..|
000006a0  bc 1d 50 4c 41 3a 53 54  41 20 26 46 34 3a 53 54  |..PLA:STA &F4:ST|
000006b0  41 20 26 46 45 33 30 3a  52 54 53 0d 02 c6 22 2e  |A &FE30:RTS...".|
000006c0  64 6f 5f 74 6f 6b 65 6e  3a 43 4d 50 20 23 31 34  |do_token:CMP #14|
000006d0  31 3a 42 45 51 20 64 6f  5f 74 6f 6b 32 0d 02 d0  |1:BEQ do_tok2...|
000006e0  10 4a 53 52 20 70 72 5f  74 6f 6b 65 6e 0d 02 da  |.JSR pr_token...|
000006f0  1a 4c 44 59 20 68 61 6e  64 6c 65 3a 42 4e 45 20  |.LDY handle:BNE |
00000700  70 72 5f 6c 6f 6f 70 0d  02 e4 0c 2e 64 6f 5f 74  |pr_loop.....do_t|
00000710  6f 6b 32 0d 02 ee 2d 4a  53 52 20 4f 53 42 47 45  |ok2...-JSR OSBGE|
00000720  54 3a 42 43 53 20 65 6e  64 5f 6f 66 5f 66 69 6c  |T:BCS end_of_fil|
00000730  65 3a 53 54 41 20 6c 69  6e 65 5f 6e 75 6d 2b 31  |e:STA line_num+1|
00000740  0d 02 f8 2b 4a 53 52 20  4f 53 42 47 45 54 3a 42  |...+JSR OSBGET:B|
00000750  43 53 20 65 6e 64 5f 6f  66 5f 66 69 6c 65 3a 53  |CS end_of_file:S|
00000760  54 41 20 6c 69 6e 65 5f  6e 75 6d 0d 03 02 34 4c  |TA line_num...4L|
00000770  44 41 20 6c 69 6e 65 5f  6e 75 6d 2b 31 3a 41 53  |DA line_num+1:AS|
00000780  4c 20 41 3a 41 53 4c 20  41 3a 50 48 41 3a 80 20  |L A:ASL A:PHA:. |
00000790  23 26 43 30 3a 82 20 6c  69 6e 65 5f 6e 75 6d 0d  |#&C0:. line_num.|
000007a0  03 0c 2f 53 54 41 20 6c  69 6e 65 5f 6e 75 6d 3a  |../STA line_num:|
000007b0  50 4c 41 3a 41 53 4c 20  41 3a 41 53 4c 20 41 3a  |PLA:ASL A:ASL A:|
000007c0  53 54 41 20 6c 69 6e 65  5f 6e 75 6d 2b 31 0d 03  |STA line_num+1..|
000007d0  16 1e 4a 53 52 20 4f 53  42 47 45 54 3a 42 43 53  |..JSR OSBGET:BCS|
000007e0  20 65 6e 64 5f 6f 66 5f  66 69 6c 65 0d 03 20 1f  | end_of_file.. .|
000007f0  82 20 6c 69 6e 65 5f 6e  75 6d 2b 31 3a 53 54 41  |. line_num+1:STA|
00000800  20 6c 69 6e 65 5f 6e 75  6d 2b 31 0d 03 2a 13 4c  | line_num+1..*.L|
00000810  44 41 20 23 30 3a 53 54  41 20 66 6c 61 67 0d 03  |DA #0:STA flag..|
00000820  34 1b 4a 53 52 20 70 72  5f 6c 69 6e 65 3a 4a 4d  |4.JSR pr_line:JM|
00000830  50 20 70 72 5f 6c 6f 6f  70 0d 03 3e 15 2e 70 72  |P pr_loop..>..pr|
00000840  5f 74 6f 6b 65 6e 3a 53  54 41 20 26 41 38 0d 03  |_token:STA &A8..|
00000850  48 23 4c 44 41 20 26 41  42 3a 53 54 41 20 26 41  |H#LDA &AB:STA &A|
00000860  39 3a 4c 44 41 20 26 41  43 3a 53 54 41 20 26 41  |9:LDA &AC:STA &A|
00000870  41 0d 03 52 0a 2e 6c 6f  6f 70 31 0d 03 5c 0c 4c  |A..R..loop1..\.L|
00000880  44 59 20 23 32 35 35 0d  03 66 0d 2e 6c 6f 6f 70  |DY #255..f..loop|
00000890  3a 49 4e 59 0d 03 70 0f  4c 44 41 20 28 26 41 39  |:INY..p.LDA (&A9|
000008a0  29 2c 59 0d 03 7a 0c 42  50 4c 20 6c 6f 6f 70 0d  |),Y..z.BPL loop.|
000008b0  03 84 16 43 4d 50 20 26  41 38 3a 42 45 51 20 67  |...CMP &A8:BEQ g|
000008c0  6f 74 5f 69 74 0d 03 8e  23 49 4e 59 3a 49 4e 59  |ot_it...#INY:INY|
000008d0  3a 54 59 41 3a 43 4c 43  3a 41 44 43 20 26 41 39  |:TYA:CLC:ADC &A9|
000008e0  3a 53 54 41 20 26 41 39  0d 03 98 24 4c 44 41 20  |:STA &A9...$LDA |
000008f0  23 30 3a 41 44 43 20 26  41 41 3a 53 54 41 20 26  |#0:ADC &AA:STA &|
00000900  41 41 3a 4a 4d 50 20 6c  6f 6f 70 31 0d 03 a2 0b  |AA:JMP loop1....|
00000910  2e 67 6f 74 5f 69 74 0d  03 ac 20 49 4e 59 3a 42  |.got_it... INY:B|
00000920  49 54 20 72 5f 66 6c 61  67 3a 42 4d 49 20 70 72  |IT r_flag:BMI pr|
00000930  5f 74 5f 6c 6f 6f 70 0d  03 b6 15 4c 44 59 20 23  |_t_loop....LDY #|
00000940  30 3a 2e 70 72 5f 74 5f  6c 6f 6f 70 0d 03 c0 1c  |0:.pr_t_loop....|
00000950  4c 44 41 20 28 26 41 39  29 2c 59 3a 42 4d 49 20  |LDA (&A9),Y:BMI |
00000960  70 72 5f 74 5f 65 6e 64  0d 03 ca 10 42 45 51 20  |pr_t_end....BEQ |
00000970  70 72 5f 74 5f 65 6e 64  0d 03 d4 20 4a 53 52 20  |pr_t_end... JSR |
00000980  4f 53 41 53 43 49 3a 49  4e 59 3a 42 4e 45 20 70  |OSASCI:INY:BNE p|
00000990  72 5f 74 5f 6c 6f 6f 70  0d 03 de 11 2e 70 72 5f  |r_t_loop.....pr_|
000009a0  74 5f 65 6e 64 3a 52 54  53 0d 03 e8 0c 2e 70 72  |t_end:RTS.....pr|
000009b0  5f 6c 69 6e 65 0d 03 f2  24 5c 20 47 65 6e 65 72  |_line...$\ Gener|
000009c0  61 6c 20 70 75 72 70 6f  73 65 20 31 36 20 62 69  |al purpose 16 bi|
000009d0  74 20 64 65 63 69 6d 61  6c 0d 03 fc 17 5c 20 70  |t decimal....\ p|
000009e0  72 69 6e 74 6f 75 74 20  72 6f 75 74 69 6e 65 2e  |rintout routine.|
000009f0  0d 04 06 22 5c 20 6e 75  6d 20 68 6f 6c 64 73 20  |..."\ num holds |
00000a00  6e 75 6d 62 65 72 2e 20  66 6c 61 67 20 68 6f 6c  |number. flag hol|
00000a10  64 73 0d 04 10 20 5c 20  6c 65 61 64 69 6e 67 20  |ds... \ leading |
00000a20  63 68 61 72 61 63 74 65  72 2c 20 6f 72 20 7a 65  |character, or ze|
00000a30  72 6f 0d 04 1a 1c 5c 20  65 67 20 33 32 20 3d 20  |ro....\ eg 32 = |
00000a40  6c 65 61 64 69 6e 67 20  73 70 61 63 65 73 0d 04  |leading spaces..|
00000a50  24 1b 5c 20 65 67 20 34  38 20 3d 20 6c 65 61 64  |$.\ eg 48 = lead|
00000a60  69 6e 67 20 7a 65 72 6f  73 0d 04 2e 22 5c 20 65  |ing zeros..."\ e|
00000a70  67 20 30 20 3d 20 6e 6f  20 6c 65 61 64 69 6e 67  |g 0 = no leading|
00000a80  20 63 68 61 72 61 63 74  65 72 73 0d 04 38 19 4c  | characters..8.L|
00000a90  44 41 20 23 26 32 37 3a  53 54 41 20 73 75 62 6e  |DA #&27:STA subn|
00000aa0  75 6d 2b 31 0d 04 42 17  4c 44 41 20 23 26 31 30  |um+1..B.LDA #&10|
00000ab0  3a 53 54 41 20 73 75 62  6e 75 6d 0d 04 4c 1e 4a  |:STA subnum..L.J|
00000ac0  53 52 20 64 6f 5f 73 75  62 74 72 61 63 74 73 3a  |SR do_subtracts:|
00000ad0  5c 20 20 31 30 30 30 30  73 0d 04 56 18 4c 44 41  |\  10000s..V.LDA|
00000ae0  20 23 26 33 3a 53 54 41  20 73 75 62 6e 75 6d 2b  | #&3:STA subnum+|
00000af0  31 0d 04 60 17 4c 44 41  20 23 26 45 38 3a 53 54  |1..`.LDA #&E8:ST|
00000b00  41 20 73 75 62 6e 75 6d  0d 04 6a 1c 4a 53 52 20  |A subnum..j.JSR |
00000b10  64 6f 5f 73 75 62 74 72  61 63 74 73 3a 5c 20 31  |do_subtracts:\ 1|
00000b20  30 30 30 73 0d 04 74 17  4c 44 41 20 23 30 3a 53  |000s..t.LDA #0:S|
00000b30  54 41 20 73 75 62 6e 75  6d 2b 31 0d 04 7e 17 4c  |TA subnum+1..~.L|
00000b40  44 41 20 23 26 36 34 3a  53 54 41 20 73 75 62 6e  |DA #&64:STA subn|
00000b50  75 6d 0d 04 88 1b 4a 53  52 20 64 6f 5f 73 75 62  |um....JSR do_sub|
00000b60  74 72 61 63 74 73 3a 5c  20 31 30 30 73 0d 04 92  |tracts:\ 100s...|
00000b70  17 4c 44 41 20 23 26 30  41 3a 53 54 41 20 73 75  |.LDA #&0A:STA su|
00000b80  62 6e 75 6d 0d 04 9c 1a  4a 53 52 20 64 6f 5f 73  |bnum....JSR do_s|
00000b90  75 62 74 72 61 63 74 73  3a 5c 20 31 30 73 0d 04  |ubtracts:\ 10s..|
00000ba0  a6 22 4c 44 41 20 6e 75  6d 3a 84 41 20 23 34 38  |."LDA num:.A #48|
00000bb0  3a 4a 4d 50 20 4f 53 41  53 43 49 3a 5c 20 31 73  |:JMP OSASCI:\ 1s|
00000bc0  0d 04 b0 11 2e 64 6f 5f  73 75 62 74 72 61 63 74  |.....do_subtract|
00000bd0  73 0d 04 ba 0c 4c 44 58  20 23 32 35 35 0d 04 c4  |s....LDX #255...|
00000be0  09 2e 6c 6f 6f 70 0d 04  ce 07 49 4e 58 0d 04 d8  |..loop....INX...|
00000bf0  07 53 45 43 0d 04 e2 1e  4c 44 41 20 6e 75 6d 3a  |.SEC....LDA num:|
00000c00  53 42 43 20 73 75 62 6e  75 6d 3a 53 54 41 20 6e  |SBC subnum:STA n|
00000c10  75 6d 0d 04 ec 24 4c 44  41 20 6e 75 6d 2b 31 3a  |um...$LDA num+1:|
00000c20  53 42 43 20 73 75 62 6e  75 6d 2b 31 3a 53 54 41  |SBC subnum+1:STA|
00000c30  20 6e 75 6d 2b 31 0d 04  f6 10 42 43 53 20 6c 6f  | num+1....BCS lo|
00000c40  6f 70 3a 43 4c 43 0d 05  00 1e 4c 44 41 20 6e 75  |op:CLC....LDA nu|
00000c50  6d 3a 41 44 43 20 73 75  62 6e 75 6d 3a 53 54 41  |m:ADC subnum:STA|
00000c60  20 6e 75 6d 0d 05 0a 24  4c 44 41 20 6e 75 6d 2b  | num...$LDA num+|
00000c70  31 3a 41 44 43 20 73 75  62 6e 75 6d 2b 31 3a 53  |1:ADC subnum+1:S|
00000c80  54 41 20 6e 75 6d 2b 31  0d 05 14 10 54 58 41 3a  |TA num+1....TXA:|
00000c90  42 45 51 20 7a 65 72 6f  0d 05 1e 15 84 41 20 23  |BEQ zero.....A #|
00000ca0  34 38 3a 4a 53 52 20 4f  53 41 53 43 49 0d 05 28  |48:JSR OSASCI..(|
00000cb0  14 4c 44 41 20 23 34 38  3a 53 54 41 20 66 6c 61  |.LDA #48:STA fla|
00000cc0  67 0d 05 32 0e 2e 7a 65  72 6f 5f 65 78 69 74 0d  |g..2..zero_exit.|
00000cd0  05 3c 07 52 54 53 0d 05  46 09 2e 7a 65 72 6f 0d  |.<.RTS..F..zero.|
00000ce0  05 50 1a 4c 44 41 20 66  6c 61 67 3a 42 45 51 20  |.P.LDA flag:BEQ |
00000cf0  7a 65 72 6f 5f 65 78 69  74 0d 05 5a 0e 4a 4d 50  |zero_exit..Z.JMP|
00000d00  20 4f 53 41 53 43 49 0d  05 64 06 5d ed 0d 05 6e  | OSASCI..d.]...n|
00000d10  24 f1 22 2a 53 41 56 45  20 50 72 4c 69 73 74 20  |$."*SAVE PrList |
00000d20  22 3b 7e 6d 63 6f 64 65  25 3b 22 20 22 3b 7e 50  |";~mcode%;" ";~P|
00000d30  25 0d 05 78 05 e0 0d 05  82 21 dd a4 73 28 41 24  |%..x.....!..s(A$|
00000d40  29 3a 24 50 25 3d 41 24  3a 50 25 3d 50 25 2b a9  |):$P%=A$:P%=P%+.|
00000d50  41 24 3a 3d 50 2a 33 0d  05 8c 1f dd a4 77 28 41  |A$:=P*3......w(A|
00000d60  25 29 3a 21 50 25 3d 41  25 3a 50 25 3d 50 25 2b  |%):!P%=A%:P%=P%+|
00000d70  32 3a 3d 50 2a 33 0d ff                           |2:=P*3..|
00000d78