Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornComputing_199310.adf » 93_10s » 8/Huff2
8/Huff2
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 » Recent acquisitions » Acorn ADFS disks » adfs_AcornComputing_199310.adf » 93_10s |
Filename: | 8/Huff2 |
Read OK: | ✔ |
File size: | 1698 bytes |
Load address: | 0000 |
Exec address: | 0000 |
Duplicates
There is 1 duplicate copy of this file in the archive:
- Recent acquisitions » Acorn ADFS disks » adfs_AcornComputing_199310.adf » 93_10s » 8/Huff2
- AEW website » mu » mu_5_25_discs_Micro_User_11_08_D-MU11_08.ssd » Huff2
File contents
10REM Huffman Screen Decoder 20REM by Andrew Bennett 30REM (c) Acorn Computing 40: 50DIM os% 200 60IF PAGE<&3000 PROCreloc(&3000) 70: 80PROCsetup 90PROCmakedecompact 100END 110: 120DEF PROCsetup 130zp%=&70:dest%=&1900 140ident%=&FADE 150: 160osargs=&FFDA:osasci=&FFE3 170osfind=&FFCE:osbget=&FFD7 180osbput=&FFD4:osbyte=&FFF4 190: 200fn2=zp%:fn1=fn2+2 210f2_add=fn1+2:txt=f2_add+2 220ENDPROC 230: 240DEF PROCmakedecompact 250command$="HUFFSC" 260: 270FOR opt%=0 TO 2 STEP 2 280P%=dest% 290[OPT opt% 300.decompact 310JSR getnames 320BCS dc_exit 330JSR open1 340BCS dc_exit 350JSR checkfile 360BCS dc_close1 370JSR getlengths 380JSR maketree 390JSR open2 400JSR decompress 410.dc_close1 420JSR close1 430.dc_exit 440RTS 450: 460.checkfile 470JSR get1 480BCS nothuff 490CMP #ident% MOD 256 500BNE nothuff 510JSR get1 520BCS nothuff 530CMP #ident% DIV 256 540BNE nothuff 550CLC 560RTS 570: 580.nothuff 590LDX #nhuf_txt MOD 256 600LDY #nhuf_txt DIV 256 610JMP mess 620: 630.nhuf_txt 640OPT FNequs("Not a compressed file") 650OPT FNequb(13) 660: 670.getlengths 680LDX #0 690.gl_loop1 700JSR get1 710STA total,X 720INX 730CPX #3 740BNE gl_loop1 750LDX #0 760.gl_loop2 770JSR get1 780STA bits,X 790INX 800BNE gl_loop2 810RTS 820: 830.maketree 840LDY #&FF 850LDX #0 860STX mt_next 870.mt_loop1 880LDA #&FF 890STA nodes,X 900STA tree,X 910LDA bits,X 920BNE mt_skip1 930DEY 940.mt_skip1 950INX 960BNE mt_loop1 970STY mt_objects 980.mt_loop2 990LDY #0 1000STY mt_sm1 1010LDX #1 1020STX mt_sm2 1030LDA bits 1040CMP bits+1 1050BCS mt_noswap 1060STX mt_sm1 1070STY mt_sm2 1080.mt_noswap 1090INX 1100.mt_loop3 1110LDY mt_sm2 1120LDA bits,Y 1130CMP bits,X 1140BCS mt_next1 1150STX mt_sm2 1160LDY mt_sm1 1170LDA bits,Y 1180CMP bits,X 1190BCS mt_next1 1200STX mt_sm1 1210STY mt_sm2 1220.mt_next1 1230INX 1240BNE mt_loop3 1250LDX mt_sm1 1260DEC bits,X 1270LDY #0 1280JSR mt_trace 1290LDX mt_sm2 1300LDA #0 1310STA bits,X 1320LDY #1 1330JSR mt_trace 1340INC mt_next 1350DEC mt_objects 1360BNE mt_loop2 1370RTS 1380: 1390.mt_trace 1400LDA nodes,X 1410CMP #&FF 1420BNE mtt_loop1 1430LDA mt_next 1440STA nodes,X 1450LDA #0 1460BEQ mtt_cont 1470.mtt_loop1 1480TAX 1490LDA tree,X 1500CMP #&FF 1510BNE mtt_loop1 1520LDA mt_next 1530STA tree,X 1540LDA #1 1550.mtt_cont 1560CPY #1 1570LDY mt_next 1580BCS mtt_right 1590STA treelt,Y 1600TXA 1610STA treel,Y 1620RTS 1630.mtt_right 1640STA treert,Y 1650TXA 1660STA treer,Y 1670RTS 1680: 1690.decompress 1700LDA #1 1710STA dcm_bits 1720DEC root 1730.dcm_loop1 1740JSR dcm_dobyte 1750JSR put2 1760LDA total 1770BNE dcm_nodec1 1780LDA total+1 1790BNE dcm_nodec2 1800DEC total+2 1810.dcm_nodec2 1820DEC total+1 1830.dcm_nodec1 1840DEC total 1850LDA total 1860ORA total+1 1870ORA total+2 1880BNE dcm_loop1 1890RTS 1900: 1910.dcm_dobyte 1920LDY root 1930.dcmd_loop1 1940TYA 1950TAX 1960JSR dcm_dobit 1970CMP #0 1980BNE dcmd_right 1990LDA treel,X 2000TAY 2010LDA treelt,X 2020BNE dcmd_loop1 2030BEQ dcmd_done 2040.dcmd_right 2050LDA treer,X 2060TAY 2070LDA treert,X 2080BNE dcmd_loop1 2090.dcmd_done 2100TYA 2110RTS 2120: 2130.dcm_dobit 2140DEC dcm_bits 2150BNE dcm_next 2160JSR get1 2170STA dcm_data 2180LDA #8 2190STA dcm_bits 2200.dcm_next 2210ASL dcm_data 2220LDA #0 2230ROL A 2240RTS 2250] 2260PROCfilehandling(command$) 2270PROCmessage 2280[OPT opt% 2290.codeend 2300: 2310.dcm_bits 2320.mt_objects OPT FNequb(0) 2330.dcm_data 2340.mt_sm1 OPT FNequb(0) 2350.mt_sm2 OPT FNequb(0) 2360.root 2370.mt_next OPT FNequb(0) 2380: 2390.total OPT FNequw(0):OPT FNequb(0) 2400: 2410.tree OPT FNds(256) 2420.nodes OPT FNds(256) 2430: 2440.treel OPT FNds(255) 2450.treelt OPT FNds(255) 2460.treer OPT FNds(255) 2470.treert OPT FNds(255) 2480: 2490.bits OPT FNds(256) 2500] 2510NEXT 2520PROCoscli("SAVE "+command$+" "+STR$~decompact+" +"+STR$~(codeend-decompact)+" "+STR$~(decompact OR &FFFF0000)+" "+STR$~(decompact OR &FFFF0000)) 2530ENDPROC 2540: 2550DEF PROCfilehandling(comm$) 2560[OPT opt% 2570.getnames 2580LDA #1 2590LDY #0 2600LDX #fn2 2610JSR osargs 2620LDY #0 2630JSR skipspace 2640CMP #13 2650BEQ syntax 2660CLC 2670TYA 2680ADC fn2 2690STA fn1 2700LDA fn2+1 2710ADC #0 2720STA fn1+1 2730JSR findspace 2740CMP #13 2750BEQ gn_exit 2760LDA #13 2770STA (fn2),Y 2780INY 2790JSR skipspace 2800CMP #13 2810BNE syntax 2820.gn_exit 2830CLC 2840RTS 2850: 2860.syntax 2870LDX #syn_txt MOD 256 2880LDY #syn_txt DIV 256 2890JMP mess 2900: 2910.syn_txt 2920OPT FNequs("Syntax: "+comm$+" <src>") 2930OPT FNequb(13) 2940: 2950.ss_loop1 2960INY 2970.skipspace 2980LDA (fn2),Y 2990CMP #32 3000BEQ ss_loop1 3010RTS 3020: 3030.fs_loop1 3040INY 3050.findspace 3060LDA (fn2),Y 3070CMP #13 3080BEQ fs_exit 3090CMP #32 3100BNE fs_loop1 3110.fs_exit 3120RTS 3130: 3140.open1 3150LDA #64 3160LDX fn1 3170LDY fn1+1 3180JSR osfind 3190STA han1 3200CMP #0 3210BEQ cant_op1 3220CLC 3230RTS 3240: 3250.cant_op1 3260LDX #op_txt MOD 256 3270LDY #op_txt DIV 256 3280JSR mess 3290LDX fn1 3300LDY fn1+1 3310JMP mess 3320: 3330.op_txt 3340OPT FNequs("Can't open ") 3350OPT FNequb(0) 3360: 3370.close1 3380LDA #0 3390LDY han1 3400JMP osfind 3410: 3420.get1 3430LDY han1 3440JMP osbget 3450: 3460.open2 3470LDA #132 3480JSR osbyte 3490STX f2_add 3500STY f2_add+1 3510RTS 3520: 3530.put2 3540LDY #0 3550STA (f2_add),Y 3560INC f2_add 3570BNE p2_ninc1 3580INC f2_add+1 3590.p2_ninc1 3600RTS 3610: 3620.han1 OPT FNequb(0) 3630] 3640ENDPROC 3650: 3660DEF PROCmessage 3670[OPT opt% 3680.mess 3690STX txt 3700STY txt+1 3710LDY #0 3720.ms_loop1 3730LDA (txt),Y 3740BEQ ms_exit 3750JSR osasci 3760INY 3770CMP #13 3780BNE ms_loop1 3790.ms_exit 3800SEC 3810RTS 3820: 3830.phex 3840PHA 3850LSR A 3860LSR A 3870LSR A 3880LSR A 3890JSR pdig 3900PLA 3910AND #15 3920.pdig 3930CMP #10 3940BCC pd_nn 3950ADC #6 3960.pd_nn 3970ADC #48 3980JMP osasci 3990] 4000ENDPROC 4010: 4020DEF FNds(n%) 4030LOCAL i% 4040FOR i%=1 TO n% 4050[OPT opt% 4060OPT FNequb(0) 4070] 4080NEXT 4090=opt% 4100: 4110DEF FNequb(a%) 4120?P%=a%:P%=P%+1 4130=opt% 4140: 4150DEF FNequw(a%) 4160!P%=a%:P%=P%+2 4170=opt% 4180: 4190DEF FNequd(a%) 4200!P%=a%:P%=P%+4 4210=opt% 4220: 4230DEF FNequs(a$) 4240$P%=a$:P%=P%+LENa$ 4250=opt% 4260: 4270DEF PROCoscli($os%) 4280X%=os%:Y%=os% DIV 256 4290CALL &FFF7 4300ENDPROC 4310: 4320DEF PROCreloc(a%) 4330PROCoscli("KEY0FOR I%="+STR$(TOP-PAGE)+" TO 0 STEP -1:I%?&"+STR$~a%+"=I%?&"+STR$~PAGE+":N.|MPAGE=&"+STR$~a%+"|MO.|MRUN|M") 4340*FX138,0,128 4350END
� Huffman Screen Decoder � by Andrew Bennett � (c) Acorn Computing (: 2 � os% 200 <� �<&3000 �reloc(&3000) F: P �setup Z�makedecompact d� n: x� �setup �zp%=&70:dest%=&1900 �ident%=&FADE �: �osargs=&FFDA:osasci=&FFE3 �osfind=&FFCE:osbget=&FFD7 �osbput=&FFD4:osbyte=&FFF4 �: �fn2=zp%:fn1=fn2+2 �f2_add=fn1+2:txt=f2_add+2 �� �: �� �makedecompact �command$="HUFFSC" : � opt%=0 � 2 � 2 P%=dest% " [OPT opt% ,.decompact 6JSR getnames @BCS dc_exit J JSR open1 TBCS dc_exit ^JSR checkfile hBCS dc_close1 rJSR getlengths |JSR maketree � JSR open2 �JSR decompress �.dc_close1 �JSR close1 �.dc_exit �RTS �: �.checkfile �JSR get1 �BCS nothuff �CMP #ident% � 256 �BNE nothuff �JSR get1 BCS nothuff CMP #ident% � 256 BNE nothuff &CLC 0RTS :: D.nothuff NLDX #nhuf_txt � 256 XLDY #nhuf_txt � 256 bJMP mess l: v .nhuf_txt �&OPT �equs("Not a compressed file") �OPT �equb(13) �: �.getlengths � LDX #0 � .gl_loop1 �JSR get1 �STA total,X �INX � CPX #3 �BNE gl_loop1 � LDX #0 � .gl_loop2 JSR get1 STA bits,X INX BNE gl_loop2 *RTS 4: > .maketree HLDY #&FF R LDX #0 \STX mt_next f .mt_loop1 pLDA #&FF zSTA nodes,X �STA tree,X �LDA bits,X �BNE mt_skip1 �DEY � .mt_skip1 �INX �BNE mt_loop1 �STY mt_objects � .mt_loop2 � LDY #0 �STY mt_sm1 � LDX #1 �STX mt_sm2 LDA bits CMP bits+1 BCS mt_noswap $STX mt_sm1 .STY mt_sm2 8.mt_noswap BINX L .mt_loop3 VLDY mt_sm2 `LDA bits,Y jCMP bits,X tBCS mt_next1 ~STX mt_sm2 �LDY mt_sm1 �LDA bits,Y �CMP bits,X �BCS mt_next1 �STX mt_sm1 �STY mt_sm2 � .mt_next1 �INX �BNE mt_loop3 �LDX mt_sm1 �DEC bits,X � LDY #0 JSR mt_trace LDX mt_sm2 LDA #0 STA bits,X ( LDY #1 2JSR mt_trace <INC mt_next FDEC mt_objects PBNE mt_loop2 ZRTS d: n .mt_trace xLDA nodes,X �CMP #&FF �BNE mtt_loop1 �LDA mt_next �STA nodes,X � LDA #0 �BEQ mtt_cont �.mtt_loop1 �TAX �LDA tree,X �CMP #&FF �BNE mtt_loop1 �LDA mt_next �STA tree,X LDA #1 .mtt_cont CPY #1 "LDY mt_next ,BCS mtt_right 6STA treelt,Y @TXA JSTA treel,Y TRTS ^.mtt_right hSTA treert,Y rTXA |STA treer,Y �RTS �: �.decompress � LDA #1 �STA dcm_bits �DEC root �.dcm_loop1 �JSR dcm_dobyte �JSR put2 � LDA total �BNE dcm_nodec1 �LDA total+1 �BNE dcm_nodec2 DEC total+2 .dcm_nodec2 DEC total+1 &.dcm_nodec1 0 DEC total : LDA total D�A total+1 N�A total+2 XBNE dcm_loop1 bRTS l: v.dcm_dobyte �LDY root �.dcmd_loop1 �TYA �TAX �JSR dcm_dobit � CMP #0 �BNE dcmd_right �LDA treel,X �TAY �LDA treelt,X �BNE dcmd_loop1 �BEQ dcmd_done �.dcmd_right LDA treer,X TAY LDA treert,X BNE dcmd_loop1 *.dcmd_done 4TYA >RTS H: R.dcm_dobit \DEC dcm_bits fBNE dcm_next pJSR get1 zSTA dcm_data � LDA #8 �STA dcm_bits � .dcm_next �ASL dcm_data � LDA #0 � ROL A �RTS �] ��filehandling(command$) ��message � [OPT opt% �.codeend �: .dcm_bits .mt_objects OPT �equb(0) .dcm_data $.mt_sm1 OPT �equb(0) ..mt_sm2 OPT �equb(0) 8 .root B.mt_next OPT �equb(0) L: V$.total OPT �equw(0):OPT �equb(0) `: j.tree OPT �ds(256) t.nodes OPT �ds(256) ~: �.treel OPT �ds(255) �.treelt OPT �ds(255) �.treer OPT �ds(255) �.treert OPT �ds(255) �: �.bits OPT �ds(256) �] �� �oscli("SAVE "+command$+" "+�~decompact+" +"+�~(codeend-decompact)+" "+�~(decompact � &FFFF0000)+" "+�~(decompact � &FFFF0000)) �� �: �� �filehandling(comm$) [OPT opt% .getnames LDA #1 LDY #0 (LDX #fn2 2JSR osargs < LDY #0 FJSR skipspace PCMP #13 ZBEQ syntax dCLC nTYA xADC fn2 �STA fn1 � LDA fn2+1 � ADC #0 � STA fn1+1 �JSR findspace �CMP #13 �BEQ gn_exit �LDA #13 �STA (fn2),Y �INY �JSR skipspace �CMP #13 �BNE syntax .gn_exit CLC RTS ": ,.syntax 6LDX #syn_txt � 256 @LDY #syn_txt � 256 JJMP mess T: ^.syn_txt h(OPT �equs("Syntax: "+comm$+" <src>") rOPT �equb(13) |: � .ss_loop1 �INY �.skipspace �LDA (fn2),Y �CMP #32 �BEQ ss_loop1 �RTS �: � .fs_loop1 �INY �.findspace �LDA (fn2),Y �CMP #13 BEQ fs_exit CMP #32 BNE fs_loop1 &.fs_exit 0RTS :: D .open1 NLDA #64 XLDX fn1 b LDY fn1+1 lJSR osfind vSTA han1 � CMP #0 �BEQ cant_op1 �CLC �RTS �: � .cant_op1 �LDX #op_txt � 256 �LDY #op_txt � 256 �JSR mess �LDX fn1 � LDY fn1+1 �JMP mess �: .op_txt OPT �equs("Can't open ") OPT �equb(0) : *.close1 4 LDA #0 >LDY han1 HJMP osfind R: \ .get1 fLDY han1 pJMP osbget z: � .open2 �LDA #132 �JSR osbyte �STX f2_add �STY f2_add+1 �RTS �: � .put2 � LDY #0 �STA (f2_add),Y �INC f2_add �BNE p2_ninc1 �INC f2_add+1 .p2_ninc1 RTS : $.han1 OPT �equb(0) .] 8� B: L� �message V [OPT opt% ` .mess jSTX txt t STY txt+1 ~ LDY #0 � .ms_loop1 �LDA (txt),Y �BEQ ms_exit �JSR osasci �INY �CMP #13 �BNE ms_loop1 �.ms_exit �SEC �RTS �: � .phex PHA LSR A LSR A LSR A ( LSR A 2JSR pdig <PLA F � #15 P .pdig ZCMP #10 d BCC pd_nn n ADC #6 x .pd_nn �ADC #48 �JMP osasci �] �� �: � � �ds(n%) �� i% �� i%=1 � n% � [OPT opt% �OPT �equb(0) �] �� � =opt% : � �equb(a%) ?P%=a%:P%=P%+1 " =opt% ,: 6� �equw(a%) @!P%=a%:P%=P%+2 J =opt% T: ^� �equd(a%) h!P%=a%:P%=P%+4 r =opt% |: �� �equs(a$) �$P%=a$:P%=P%+�a$ � =opt% �: �� �oscli($os%) �X%=os%:Y%=os% � 256 �� &FFF7 �� �: �� �reloc(a%) �h�oscli("KEY0FOR I%="+�(�P-�)+" TO 0 STEP -1:I%?&"+�~a%+"=I%?&"+�~�+":N.|MPAGE=&"+�~a%+"|MO.|MRUN|M") �*FX138,0,128 �� �
00000000 0d 00 0a 1c f4 20 48 75 66 66 6d 61 6e 20 53 63 |..... Huffman Sc| 00000010 72 65 65 6e 20 44 65 63 6f 64 65 72 0d 00 14 17 |reen Decoder....| 00000020 f4 20 62 79 20 41 6e 64 72 65 77 20 42 65 6e 6e |. by Andrew Benn| 00000030 65 74 74 0d 00 1e 19 f4 20 28 63 29 20 41 63 6f |ett..... (c) Aco| 00000040 72 6e 20 43 6f 6d 70 75 74 69 6e 67 0d 00 28 05 |rn Computing..(.| 00000050 3a 0d 00 32 0d de 20 6f 73 25 20 32 30 30 0d 00 |:..2.. os% 200..| 00000060 3c 1b e7 20 90 3c 26 33 30 30 30 20 f2 72 65 6c |<.. .<&3000 .rel| 00000070 6f 63 28 26 33 30 30 30 29 0d 00 46 05 3a 0d 00 |oc(&3000)..F.:..| 00000080 50 0a f2 73 65 74 75 70 0d 00 5a 12 f2 6d 61 6b |P..setup..Z..mak| 00000090 65 64 65 63 6f 6d 70 61 63 74 0d 00 64 05 e0 0d |edecompact..d...| 000000a0 00 6e 05 3a 0d 00 78 0c dd 20 f2 73 65 74 75 70 |.n.:..x.. .setup| 000000b0 0d 00 82 17 7a 70 25 3d 26 37 30 3a 64 65 73 74 |....zp%=&70:dest| 000000c0 25 3d 26 31 39 30 30 0d 00 8c 10 69 64 65 6e 74 |%=&1900....ident| 000000d0 25 3d 26 46 41 44 45 0d 00 96 05 3a 0d 00 a0 1d |%=&FADE....:....| 000000e0 6f 73 61 72 67 73 3d 26 46 46 44 41 3a 6f 73 61 |osargs=&FFDA:osa| 000000f0 73 63 69 3d 26 46 46 45 33 0d 00 aa 1d 6f 73 66 |sci=&FFE3....osf| 00000100 69 6e 64 3d 26 46 46 43 45 3a 6f 73 62 67 65 74 |ind=&FFCE:osbget| 00000110 3d 26 46 46 44 37 0d 00 b4 1d 6f 73 62 70 75 74 |=&FFD7....osbput| 00000120 3d 26 46 46 44 34 3a 6f 73 62 79 74 65 3d 26 46 |=&FFD4:osbyte=&F| 00000130 46 46 34 0d 00 be 05 3a 0d 00 c8 15 66 6e 32 3d |FF4....:....fn2=| 00000140 7a 70 25 3a 66 6e 31 3d 66 6e 32 2b 32 0d 00 d2 |zp%:fn1=fn2+2...| 00000150 1d 66 32 5f 61 64 64 3d 66 6e 31 2b 32 3a 74 78 |.f2_add=fn1+2:tx| 00000160 74 3d 66 32 5f 61 64 64 2b 32 0d 00 dc 05 e1 0d |t=f2_add+2......| 00000170 00 e6 05 3a 0d 00 f0 14 dd 20 f2 6d 61 6b 65 64 |...:..... .maked| 00000180 65 63 6f 6d 70 61 63 74 0d 00 fa 15 63 6f 6d 6d |ecompact....comm| 00000190 61 6e 64 24 3d 22 48 55 46 46 53 43 22 0d 01 04 |and$="HUFFSC"...| 000001a0 05 3a 0d 01 0e 14 e3 20 6f 70 74 25 3d 30 20 b8 |.:..... opt%=0 .| 000001b0 20 32 20 88 20 32 0d 01 18 0c 50 25 3d 64 65 73 | 2 . 2....P%=des| 000001c0 74 25 0d 01 22 0d 5b 4f 50 54 20 6f 70 74 25 0d |t%..".[OPT opt%.| 000001d0 01 2c 0e 2e 64 65 63 6f 6d 70 61 63 74 0d 01 36 |.,..decompact..6| 000001e0 10 4a 53 52 20 67 65 74 6e 61 6d 65 73 0d 01 40 |.JSR getnames..@| 000001f0 0f 42 43 53 20 64 63 5f 65 78 69 74 0d 01 4a 0d |.BCS dc_exit..J.| 00000200 4a 53 52 20 6f 70 65 6e 31 0d 01 54 0f 42 43 53 |JSR open1..T.BCS| 00000210 20 64 63 5f 65 78 69 74 0d 01 5e 11 4a 53 52 20 | dc_exit..^.JSR | 00000220 63 68 65 63 6b 66 69 6c 65 0d 01 68 11 42 43 53 |checkfile..h.BCS| 00000230 20 64 63 5f 63 6c 6f 73 65 31 0d 01 72 12 4a 53 | dc_close1..r.JS| 00000240 52 20 67 65 74 6c 65 6e 67 74 68 73 0d 01 7c 10 |R getlengths..|.| 00000250 4a 53 52 20 6d 61 6b 65 74 72 65 65 0d 01 86 0d |JSR maketree....| 00000260 4a 53 52 20 6f 70 65 6e 32 0d 01 90 12 4a 53 52 |JSR open2....JSR| 00000270 20 64 65 63 6f 6d 70 72 65 73 73 0d 01 9a 0e 2e | decompress.....| 00000280 64 63 5f 63 6c 6f 73 65 31 0d 01 a4 0e 4a 53 52 |dc_close1....JSR| 00000290 20 63 6c 6f 73 65 31 0d 01 ae 0c 2e 64 63 5f 65 | close1.....dc_e| 000002a0 78 69 74 0d 01 b8 07 52 54 53 0d 01 c2 05 3a 0d |xit....RTS....:.| 000002b0 01 cc 0e 2e 63 68 65 63 6b 66 69 6c 65 0d 01 d6 |....checkfile...| 000002c0 0c 4a 53 52 20 67 65 74 31 0d 01 e0 0f 42 43 53 |.JSR get1....BCS| 000002d0 20 6e 6f 74 68 75 66 66 0d 01 ea 15 43 4d 50 20 | nothuff....CMP | 000002e0 23 69 64 65 6e 74 25 20 83 20 32 35 36 0d 01 f4 |#ident% . 256...| 000002f0 0f 42 4e 45 20 6e 6f 74 68 75 66 66 0d 01 fe 0c |.BNE nothuff....| 00000300 4a 53 52 20 67 65 74 31 0d 02 08 0f 42 43 53 20 |JSR get1....BCS | 00000310 6e 6f 74 68 75 66 66 0d 02 12 15 43 4d 50 20 23 |nothuff....CMP #| 00000320 69 64 65 6e 74 25 20 81 20 32 35 36 0d 02 1c 0f |ident% . 256....| 00000330 42 4e 45 20 6e 6f 74 68 75 66 66 0d 02 26 07 43 |BNE nothuff..&.C| 00000340 4c 43 0d 02 30 07 52 54 53 0d 02 3a 05 3a 0d 02 |LC..0.RTS..:.:..| 00000350 44 0c 2e 6e 6f 74 68 75 66 66 0d 02 4e 17 4c 44 |D..nothuff..N.LD| 00000360 58 20 23 6e 68 75 66 5f 74 78 74 20 83 20 32 35 |X #nhuf_txt . 25| 00000370 36 0d 02 58 17 4c 44 59 20 23 6e 68 75 66 5f 74 |6..X.LDY #nhuf_t| 00000380 78 74 20 81 20 32 35 36 0d 02 62 0c 4a 4d 50 20 |xt . 256..b.JMP | 00000390 6d 65 73 73 0d 02 6c 05 3a 0d 02 76 0d 2e 6e 68 |mess..l.:..v..nh| 000003a0 75 66 5f 74 78 74 0d 02 80 26 4f 50 54 20 a4 65 |uf_txt...&OPT .e| 000003b0 71 75 73 28 22 4e 6f 74 20 61 20 63 6f 6d 70 72 |qus("Not a compr| 000003c0 65 73 73 65 64 20 66 69 6c 65 22 29 0d 02 8a 11 |essed file")....| 000003d0 4f 50 54 20 a4 65 71 75 62 28 31 33 29 0d 02 94 |OPT .equb(13)...| 000003e0 05 3a 0d 02 9e 0f 2e 67 65 74 6c 65 6e 67 74 68 |.:.....getlength| 000003f0 73 0d 02 a8 0a 4c 44 58 20 23 30 0d 02 b2 0d 2e |s....LDX #0.....| 00000400 67 6c 5f 6c 6f 6f 70 31 0d 02 bc 0c 4a 53 52 20 |gl_loop1....JSR | 00000410 67 65 74 31 0d 02 c6 0f 53 54 41 20 74 6f 74 61 |get1....STA tota| 00000420 6c 2c 58 0d 02 d0 07 49 4e 58 0d 02 da 0a 43 50 |l,X....INX....CP| 00000430 58 20 23 33 0d 02 e4 10 42 4e 45 20 67 6c 5f 6c |X #3....BNE gl_l| 00000440 6f 6f 70 31 0d 02 ee 0a 4c 44 58 20 23 30 0d 02 |oop1....LDX #0..| 00000450 f8 0d 2e 67 6c 5f 6c 6f 6f 70 32 0d 03 02 0c 4a |...gl_loop2....J| 00000460 53 52 20 67 65 74 31 0d 03 0c 0e 53 54 41 20 62 |SR get1....STA b| 00000470 69 74 73 2c 58 0d 03 16 07 49 4e 58 0d 03 20 10 |its,X....INX.. .| 00000480 42 4e 45 20 67 6c 5f 6c 6f 6f 70 32 0d 03 2a 07 |BNE gl_loop2..*.| 00000490 52 54 53 0d 03 34 05 3a 0d 03 3e 0d 2e 6d 61 6b |RTS..4.:..>..mak| 000004a0 65 74 72 65 65 0d 03 48 0c 4c 44 59 20 23 26 46 |etree..H.LDY #&F| 000004b0 46 0d 03 52 0a 4c 44 58 20 23 30 0d 03 5c 0f 53 |F..R.LDX #0..\.S| 000004c0 54 58 20 6d 74 5f 6e 65 78 74 0d 03 66 0d 2e 6d |TX mt_next..f..m| 000004d0 74 5f 6c 6f 6f 70 31 0d 03 70 0c 4c 44 41 20 23 |t_loop1..p.LDA #| 000004e0 26 46 46 0d 03 7a 0f 53 54 41 20 6e 6f 64 65 73 |&FF..z.STA nodes| 000004f0 2c 58 0d 03 84 0e 53 54 41 20 74 72 65 65 2c 58 |,X....STA tree,X| 00000500 0d 03 8e 0e 4c 44 41 20 62 69 74 73 2c 58 0d 03 |....LDA bits,X..| 00000510 98 10 42 4e 45 20 6d 74 5f 73 6b 69 70 31 0d 03 |..BNE mt_skip1..| 00000520 a2 07 44 45 59 0d 03 ac 0d 2e 6d 74 5f 73 6b 69 |..DEY.....mt_ski| 00000530 70 31 0d 03 b6 07 49 4e 58 0d 03 c0 10 42 4e 45 |p1....INX....BNE| 00000540 20 6d 74 5f 6c 6f 6f 70 31 0d 03 ca 12 53 54 59 | mt_loop1....STY| 00000550 20 6d 74 5f 6f 62 6a 65 63 74 73 0d 03 d4 0d 2e | mt_objects.....| 00000560 6d 74 5f 6c 6f 6f 70 32 0d 03 de 0a 4c 44 59 20 |mt_loop2....LDY | 00000570 23 30 0d 03 e8 0e 53 54 59 20 6d 74 5f 73 6d 31 |#0....STY mt_sm1| 00000580 0d 03 f2 0a 4c 44 58 20 23 31 0d 03 fc 0e 53 54 |....LDX #1....ST| 00000590 58 20 6d 74 5f 73 6d 32 0d 04 06 0c 4c 44 41 20 |X mt_sm2....LDA | 000005a0 62 69 74 73 0d 04 10 0e 43 4d 50 20 62 69 74 73 |bits....CMP bits| 000005b0 2b 31 0d 04 1a 11 42 43 53 20 6d 74 5f 6e 6f 73 |+1....BCS mt_nos| 000005c0 77 61 70 0d 04 24 0e 53 54 58 20 6d 74 5f 73 6d |wap..$.STX mt_sm| 000005d0 31 0d 04 2e 0e 53 54 59 20 6d 74 5f 73 6d 32 0d |1....STY mt_sm2.| 000005e0 04 38 0e 2e 6d 74 5f 6e 6f 73 77 61 70 0d 04 42 |.8..mt_noswap..B| 000005f0 07 49 4e 58 0d 04 4c 0d 2e 6d 74 5f 6c 6f 6f 70 |.INX..L..mt_loop| 00000600 33 0d 04 56 0e 4c 44 59 20 6d 74 5f 73 6d 32 0d |3..V.LDY mt_sm2.| 00000610 04 60 0e 4c 44 41 20 62 69 74 73 2c 59 0d 04 6a |.`.LDA bits,Y..j| 00000620 0e 43 4d 50 20 62 69 74 73 2c 58 0d 04 74 10 42 |.CMP bits,X..t.B| 00000630 43 53 20 6d 74 5f 6e 65 78 74 31 0d 04 7e 0e 53 |CS mt_next1..~.S| 00000640 54 58 20 6d 74 5f 73 6d 32 0d 04 88 0e 4c 44 59 |TX mt_sm2....LDY| 00000650 20 6d 74 5f 73 6d 31 0d 04 92 0e 4c 44 41 20 62 | mt_sm1....LDA b| 00000660 69 74 73 2c 59 0d 04 9c 0e 43 4d 50 20 62 69 74 |its,Y....CMP bit| 00000670 73 2c 58 0d 04 a6 10 42 43 53 20 6d 74 5f 6e 65 |s,X....BCS mt_ne| 00000680 78 74 31 0d 04 b0 0e 53 54 58 20 6d 74 5f 73 6d |xt1....STX mt_sm| 00000690 31 0d 04 ba 0e 53 54 59 20 6d 74 5f 73 6d 32 0d |1....STY mt_sm2.| 000006a0 04 c4 0d 2e 6d 74 5f 6e 65 78 74 31 0d 04 ce 07 |....mt_next1....| 000006b0 49 4e 58 0d 04 d8 10 42 4e 45 20 6d 74 5f 6c 6f |INX....BNE mt_lo| 000006c0 6f 70 33 0d 04 e2 0e 4c 44 58 20 6d 74 5f 73 6d |op3....LDX mt_sm| 000006d0 31 0d 04 ec 0e 44 45 43 20 62 69 74 73 2c 58 0d |1....DEC bits,X.| 000006e0 04 f6 0a 4c 44 59 20 23 30 0d 05 00 10 4a 53 52 |...LDY #0....JSR| 000006f0 20 6d 74 5f 74 72 61 63 65 0d 05 0a 0e 4c 44 58 | mt_trace....LDX| 00000700 20 6d 74 5f 73 6d 32 0d 05 14 0a 4c 44 41 20 23 | mt_sm2....LDA #| 00000710 30 0d 05 1e 0e 53 54 41 20 62 69 74 73 2c 58 0d |0....STA bits,X.| 00000720 05 28 0a 4c 44 59 20 23 31 0d 05 32 10 4a 53 52 |.(.LDY #1..2.JSR| 00000730 20 6d 74 5f 74 72 61 63 65 0d 05 3c 0f 49 4e 43 | mt_trace..<.INC| 00000740 20 6d 74 5f 6e 65 78 74 0d 05 46 12 44 45 43 20 | mt_next..F.DEC | 00000750 6d 74 5f 6f 62 6a 65 63 74 73 0d 05 50 10 42 4e |mt_objects..P.BN| 00000760 45 20 6d 74 5f 6c 6f 6f 70 32 0d 05 5a 07 52 54 |E mt_loop2..Z.RT| 00000770 53 0d 05 64 05 3a 0d 05 6e 0d 2e 6d 74 5f 74 72 |S..d.:..n..mt_tr| 00000780 61 63 65 0d 05 78 0f 4c 44 41 20 6e 6f 64 65 73 |ace..x.LDA nodes| 00000790 2c 58 0d 05 82 0c 43 4d 50 20 23 26 46 46 0d 05 |,X....CMP #&FF..| 000007a0 8c 11 42 4e 45 20 6d 74 74 5f 6c 6f 6f 70 31 0d |..BNE mtt_loop1.| 000007b0 05 96 0f 4c 44 41 20 6d 74 5f 6e 65 78 74 0d 05 |...LDA mt_next..| 000007c0 a0 0f 53 54 41 20 6e 6f 64 65 73 2c 58 0d 05 aa |..STA nodes,X...| 000007d0 0a 4c 44 41 20 23 30 0d 05 b4 10 42 45 51 20 6d |.LDA #0....BEQ m| 000007e0 74 74 5f 63 6f 6e 74 0d 05 be 0e 2e 6d 74 74 5f |tt_cont.....mtt_| 000007f0 6c 6f 6f 70 31 0d 05 c8 07 54 41 58 0d 05 d2 0e |loop1....TAX....| 00000800 4c 44 41 20 74 72 65 65 2c 58 0d 05 dc 0c 43 4d |LDA tree,X....CM| 00000810 50 20 23 26 46 46 0d 05 e6 11 42 4e 45 20 6d 74 |P #&FF....BNE mt| 00000820 74 5f 6c 6f 6f 70 31 0d 05 f0 0f 4c 44 41 20 6d |t_loop1....LDA m| 00000830 74 5f 6e 65 78 74 0d 05 fa 0e 53 54 41 20 74 72 |t_next....STA tr| 00000840 65 65 2c 58 0d 06 04 0a 4c 44 41 20 23 31 0d 06 |ee,X....LDA #1..| 00000850 0e 0d 2e 6d 74 74 5f 63 6f 6e 74 0d 06 18 0a 43 |...mtt_cont....C| 00000860 50 59 20 23 31 0d 06 22 0f 4c 44 59 20 6d 74 5f |PY #1..".LDY mt_| 00000870 6e 65 78 74 0d 06 2c 11 42 43 53 20 6d 74 74 5f |next..,.BCS mtt_| 00000880 72 69 67 68 74 0d 06 36 10 53 54 41 20 74 72 65 |right..6.STA tre| 00000890 65 6c 74 2c 59 0d 06 40 07 54 58 41 0d 06 4a 0f |elt,Y..@.TXA..J.| 000008a0 53 54 41 20 74 72 65 65 6c 2c 59 0d 06 54 07 52 |STA treel,Y..T.R| 000008b0 54 53 0d 06 5e 0e 2e 6d 74 74 5f 72 69 67 68 74 |TS..^..mtt_right| 000008c0 0d 06 68 10 53 54 41 20 74 72 65 65 72 74 2c 59 |..h.STA treert,Y| 000008d0 0d 06 72 07 54 58 41 0d 06 7c 0f 53 54 41 20 74 |..r.TXA..|.STA t| 000008e0 72 65 65 72 2c 59 0d 06 86 07 52 54 53 0d 06 90 |reer,Y....RTS...| 000008f0 05 3a 0d 06 9a 0f 2e 64 65 63 6f 6d 70 72 65 73 |.:.....decompres| 00000900 73 0d 06 a4 0a 4c 44 41 20 23 31 0d 06 ae 10 53 |s....LDA #1....S| 00000910 54 41 20 64 63 6d 5f 62 69 74 73 0d 06 b8 0c 44 |TA dcm_bits....D| 00000920 45 43 20 72 6f 6f 74 0d 06 c2 0e 2e 64 63 6d 5f |EC root.....dcm_| 00000930 6c 6f 6f 70 31 0d 06 cc 12 4a 53 52 20 64 63 6d |loop1....JSR dcm| 00000940 5f 64 6f 62 79 74 65 0d 06 d6 0c 4a 53 52 20 70 |_dobyte....JSR p| 00000950 75 74 32 0d 06 e0 0d 4c 44 41 20 74 6f 74 61 6c |ut2....LDA total| 00000960 0d 06 ea 12 42 4e 45 20 64 63 6d 5f 6e 6f 64 65 |....BNE dcm_node| 00000970 63 31 0d 06 f4 0f 4c 44 41 20 74 6f 74 61 6c 2b |c1....LDA total+| 00000980 31 0d 06 fe 12 42 4e 45 20 64 63 6d 5f 6e 6f 64 |1....BNE dcm_nod| 00000990 65 63 32 0d 07 08 0f 44 45 43 20 74 6f 74 61 6c |ec2....DEC total| 000009a0 2b 32 0d 07 12 0f 2e 64 63 6d 5f 6e 6f 64 65 63 |+2.....dcm_nodec| 000009b0 32 0d 07 1c 0f 44 45 43 20 74 6f 74 61 6c 2b 31 |2....DEC total+1| 000009c0 0d 07 26 0f 2e 64 63 6d 5f 6e 6f 64 65 63 31 0d |..&..dcm_nodec1.| 000009d0 07 30 0d 44 45 43 20 74 6f 74 61 6c 0d 07 3a 0d |.0.DEC total..:.| 000009e0 4c 44 41 20 74 6f 74 61 6c 0d 07 44 0e 84 41 20 |LDA total..D..A | 000009f0 74 6f 74 61 6c 2b 31 0d 07 4e 0e 84 41 20 74 6f |total+1..N..A to| 00000a00 74 61 6c 2b 32 0d 07 58 11 42 4e 45 20 64 63 6d |tal+2..X.BNE dcm| 00000a10 5f 6c 6f 6f 70 31 0d 07 62 07 52 54 53 0d 07 6c |_loop1..b.RTS..l| 00000a20 05 3a 0d 07 76 0f 2e 64 63 6d 5f 64 6f 62 79 74 |.:..v..dcm_dobyt| 00000a30 65 0d 07 80 0c 4c 44 59 20 72 6f 6f 74 0d 07 8a |e....LDY root...| 00000a40 0f 2e 64 63 6d 64 5f 6c 6f 6f 70 31 0d 07 94 07 |..dcmd_loop1....| 00000a50 54 59 41 0d 07 9e 07 54 41 58 0d 07 a8 11 4a 53 |TYA....TAX....JS| 00000a60 52 20 64 63 6d 5f 64 6f 62 69 74 0d 07 b2 0a 43 |R dcm_dobit....C| 00000a70 4d 50 20 23 30 0d 07 bc 12 42 4e 45 20 64 63 6d |MP #0....BNE dcm| 00000a80 64 5f 72 69 67 68 74 0d 07 c6 0f 4c 44 41 20 74 |d_right....LDA t| 00000a90 72 65 65 6c 2c 58 0d 07 d0 07 54 41 59 0d 07 da |reel,X....TAY...| 00000aa0 10 4c 44 41 20 74 72 65 65 6c 74 2c 58 0d 07 e4 |.LDA treelt,X...| 00000ab0 12 42 4e 45 20 64 63 6d 64 5f 6c 6f 6f 70 31 0d |.BNE dcmd_loop1.| 00000ac0 07 ee 11 42 45 51 20 64 63 6d 64 5f 64 6f 6e 65 |...BEQ dcmd_done| 00000ad0 0d 07 f8 0f 2e 64 63 6d 64 5f 72 69 67 68 74 0d |.....dcmd_right.| 00000ae0 08 02 0f 4c 44 41 20 74 72 65 65 72 2c 58 0d 08 |...LDA treer,X..| 00000af0 0c 07 54 41 59 0d 08 16 10 4c 44 41 20 74 72 65 |..TAY....LDA tre| 00000b00 65 72 74 2c 58 0d 08 20 12 42 4e 45 20 64 63 6d |ert,X.. .BNE dcm| 00000b10 64 5f 6c 6f 6f 70 31 0d 08 2a 0e 2e 64 63 6d 64 |d_loop1..*..dcmd| 00000b20 5f 64 6f 6e 65 0d 08 34 07 54 59 41 0d 08 3e 07 |_done..4.TYA..>.| 00000b30 52 54 53 0d 08 48 05 3a 0d 08 52 0e 2e 64 63 6d |RTS..H.:..R..dcm| 00000b40 5f 64 6f 62 69 74 0d 08 5c 10 44 45 43 20 64 63 |_dobit..\.DEC dc| 00000b50 6d 5f 62 69 74 73 0d 08 66 10 42 4e 45 20 64 63 |m_bits..f.BNE dc| 00000b60 6d 5f 6e 65 78 74 0d 08 70 0c 4a 53 52 20 67 65 |m_next..p.JSR ge| 00000b70 74 31 0d 08 7a 10 53 54 41 20 64 63 6d 5f 64 61 |t1..z.STA dcm_da| 00000b80 74 61 0d 08 84 0a 4c 44 41 20 23 38 0d 08 8e 10 |ta....LDA #8....| 00000b90 53 54 41 20 64 63 6d 5f 62 69 74 73 0d 08 98 0d |STA dcm_bits....| 00000ba0 2e 64 63 6d 5f 6e 65 78 74 0d 08 a2 10 41 53 4c |.dcm_next....ASL| 00000bb0 20 64 63 6d 5f 64 61 74 61 0d 08 ac 0a 4c 44 41 | dcm_data....LDA| 00000bc0 20 23 30 0d 08 b6 09 52 4f 4c 20 41 0d 08 c0 07 | #0....ROL A....| 00000bd0 52 54 53 0d 08 ca 05 5d 0d 08 d4 1b f2 66 69 6c |RTS....].....fil| 00000be0 65 68 61 6e 64 6c 69 6e 67 28 63 6f 6d 6d 61 6e |ehandling(comman| 00000bf0 64 24 29 0d 08 de 0c f2 6d 65 73 73 61 67 65 0d |d$).....message.| 00000c00 08 e8 0d 5b 4f 50 54 20 6f 70 74 25 0d 08 f2 0c |...[OPT opt%....| 00000c10 2e 63 6f 64 65 65 6e 64 0d 08 fc 05 3a 0d 09 06 |.codeend....:...| 00000c20 0d 2e 64 63 6d 5f 62 69 74 73 0d 09 10 1c 2e 6d |..dcm_bits.....m| 00000c30 74 5f 6f 62 6a 65 63 74 73 20 4f 50 54 20 a4 65 |t_objects OPT .e| 00000c40 71 75 62 28 30 29 0d 09 1a 0d 2e 64 63 6d 5f 64 |qub(0).....dcm_d| 00000c50 61 74 61 0d 09 24 18 2e 6d 74 5f 73 6d 31 20 4f |ata..$..mt_sm1 O| 00000c60 50 54 20 a4 65 71 75 62 28 30 29 0d 09 2e 18 2e |PT .equb(0).....| 00000c70 6d 74 5f 73 6d 32 20 4f 50 54 20 a4 65 71 75 62 |mt_sm2 OPT .equb| 00000c80 28 30 29 0d 09 38 09 2e 72 6f 6f 74 0d 09 42 19 |(0)..8..root..B.| 00000c90 2e 6d 74 5f 6e 65 78 74 20 4f 50 54 20 a4 65 71 |.mt_next OPT .eq| 00000ca0 75 62 28 30 29 0d 09 4c 05 3a 0d 09 56 24 2e 74 |ub(0)..L.:..V$.t| 00000cb0 6f 74 61 6c 20 4f 50 54 20 a4 65 71 75 77 28 30 |otal OPT .equw(0| 00000cc0 29 3a 4f 50 54 20 a4 65 71 75 62 28 30 29 0d 09 |):OPT .equb(0)..| 00000cd0 60 05 3a 0d 09 6a 16 2e 74 72 65 65 20 4f 50 54 |`.:..j..tree OPT| 00000ce0 20 a4 64 73 28 32 35 36 29 0d 09 74 17 2e 6e 6f | .ds(256)..t..no| 00000cf0 64 65 73 20 4f 50 54 20 a4 64 73 28 32 35 36 29 |des OPT .ds(256)| 00000d00 0d 09 7e 05 3a 0d 09 88 17 2e 74 72 65 65 6c 20 |..~.:.....treel | 00000d10 4f 50 54 20 a4 64 73 28 32 35 35 29 0d 09 92 18 |OPT .ds(255)....| 00000d20 2e 74 72 65 65 6c 74 20 4f 50 54 20 a4 64 73 28 |.treelt OPT .ds(| 00000d30 32 35 35 29 0d 09 9c 17 2e 74 72 65 65 72 20 4f |255).....treer O| 00000d40 50 54 20 a4 64 73 28 32 35 35 29 0d 09 a6 18 2e |PT .ds(255).....| 00000d50 74 72 65 65 72 74 20 4f 50 54 20 a4 64 73 28 32 |treert OPT .ds(2| 00000d60 35 35 29 0d 09 b0 05 3a 0d 09 ba 16 2e 62 69 74 |55)....:.....bit| 00000d70 73 20 4f 50 54 20 a4 64 73 28 32 35 36 29 0d 09 |s OPT .ds(256)..| 00000d80 c4 05 5d 0d 09 ce 05 ed 0d 09 d8 83 f2 6f 73 63 |..]..........osc| 00000d90 6c 69 28 22 53 41 56 45 20 22 2b 63 6f 6d 6d 61 |li("SAVE "+comma| 00000da0 6e 64 24 2b 22 20 22 2b c3 7e 64 65 63 6f 6d 70 |nd$+" "+.~decomp| 00000db0 61 63 74 2b 22 20 2b 22 2b c3 7e 28 63 6f 64 65 |act+" +"+.~(code| 00000dc0 65 6e 64 2d 64 65 63 6f 6d 70 61 63 74 29 2b 22 |end-decompact)+"| 00000dd0 20 22 2b c3 7e 28 64 65 63 6f 6d 70 61 63 74 20 | "+.~(decompact | 00000de0 84 20 26 46 46 46 46 30 30 30 30 29 2b 22 20 22 |. &FFFF0000)+" "| 00000df0 2b c3 7e 28 64 65 63 6f 6d 70 61 63 74 20 84 20 |+.~(decompact . | 00000e00 26 46 46 46 46 30 30 30 30 29 29 0d 09 e2 05 e1 |&FFFF0000)).....| 00000e10 0d 09 ec 05 3a 0d 09 f6 1a dd 20 f2 66 69 6c 65 |....:..... .file| 00000e20 68 61 6e 64 6c 69 6e 67 28 63 6f 6d 6d 24 29 0d |handling(comm$).| 00000e30 0a 00 0d 5b 4f 50 54 20 6f 70 74 25 0d 0a 0a 0d |...[OPT opt%....| 00000e40 2e 67 65 74 6e 61 6d 65 73 0d 0a 14 0a 4c 44 41 |.getnames....LDA| 00000e50 20 23 31 0d 0a 1e 0a 4c 44 59 20 23 30 0d 0a 28 | #1....LDY #0..(| 00000e60 0c 4c 44 58 20 23 66 6e 32 0d 0a 32 0e 4a 53 52 |.LDX #fn2..2.JSR| 00000e70 20 6f 73 61 72 67 73 0d 0a 3c 0a 4c 44 59 20 23 | osargs..<.LDY #| 00000e80 30 0d 0a 46 11 4a 53 52 20 73 6b 69 70 73 70 61 |0..F.JSR skipspa| 00000e90 63 65 0d 0a 50 0b 43 4d 50 20 23 31 33 0d 0a 5a |ce..P.CMP #13..Z| 00000ea0 0e 42 45 51 20 73 79 6e 74 61 78 0d 0a 64 07 43 |.BEQ syntax..d.C| 00000eb0 4c 43 0d 0a 6e 07 54 59 41 0d 0a 78 0b 41 44 43 |LC..n.TYA..x.ADC| 00000ec0 20 66 6e 32 0d 0a 82 0b 53 54 41 20 66 6e 31 0d | fn2....STA fn1.| 00000ed0 0a 8c 0d 4c 44 41 20 66 6e 32 2b 31 0d 0a 96 0a |...LDA fn2+1....| 00000ee0 41 44 43 20 23 30 0d 0a a0 0d 53 54 41 20 66 6e |ADC #0....STA fn| 00000ef0 31 2b 31 0d 0a aa 11 4a 53 52 20 66 69 6e 64 73 |1+1....JSR finds| 00000f00 70 61 63 65 0d 0a b4 0b 43 4d 50 20 23 31 33 0d |pace....CMP #13.| 00000f10 0a be 0f 42 45 51 20 67 6e 5f 65 78 69 74 0d 0a |...BEQ gn_exit..| 00000f20 c8 0b 4c 44 41 20 23 31 33 0d 0a d2 0f 53 54 41 |..LDA #13....STA| 00000f30 20 28 66 6e 32 29 2c 59 0d 0a dc 07 49 4e 59 0d | (fn2),Y....INY.| 00000f40 0a e6 11 4a 53 52 20 73 6b 69 70 73 70 61 63 65 |...JSR skipspace| 00000f50 0d 0a f0 0b 43 4d 50 20 23 31 33 0d 0a fa 0e 42 |....CMP #13....B| 00000f60 4e 45 20 73 79 6e 74 61 78 0d 0b 04 0c 2e 67 6e |NE syntax.....gn| 00000f70 5f 65 78 69 74 0d 0b 0e 07 43 4c 43 0d 0b 18 07 |_exit....CLC....| 00000f80 52 54 53 0d 0b 22 05 3a 0d 0b 2c 0b 2e 73 79 6e |RTS..".:..,..syn| 00000f90 74 61 78 0d 0b 36 16 4c 44 58 20 23 73 79 6e 5f |tax..6.LDX #syn_| 00000fa0 74 78 74 20 83 20 32 35 36 0d 0b 40 16 4c 44 59 |txt . 256..@.LDY| 00000fb0 20 23 73 79 6e 5f 74 78 74 20 81 20 32 35 36 0d | #syn_txt . 256.| 00000fc0 0b 4a 0c 4a 4d 50 20 6d 65 73 73 0d 0b 54 05 3a |.J.JMP mess..T.:| 00000fd0 0d 0b 5e 0c 2e 73 79 6e 5f 74 78 74 0d 0b 68 28 |..^..syn_txt..h(| 00000fe0 4f 50 54 20 a4 65 71 75 73 28 22 53 79 6e 74 61 |OPT .equs("Synta| 00000ff0 78 3a 20 22 2b 63 6f 6d 6d 24 2b 22 20 3c 73 72 |x: "+comm$+" <sr| 00001000 63 3e 22 29 0d 0b 72 11 4f 50 54 20 a4 65 71 75 |c>")..r.OPT .equ| 00001010 62 28 31 33 29 0d 0b 7c 05 3a 0d 0b 86 0d 2e 73 |b(13)..|.:.....s| 00001020 73 5f 6c 6f 6f 70 31 0d 0b 90 07 49 4e 59 0d 0b |s_loop1....INY..| 00001030 9a 0e 2e 73 6b 69 70 73 70 61 63 65 0d 0b a4 0f |...skipspace....| 00001040 4c 44 41 20 28 66 6e 32 29 2c 59 0d 0b ae 0b 43 |LDA (fn2),Y....C| 00001050 4d 50 20 23 33 32 0d 0b b8 10 42 45 51 20 73 73 |MP #32....BEQ ss| 00001060 5f 6c 6f 6f 70 31 0d 0b c2 07 52 54 53 0d 0b cc |_loop1....RTS...| 00001070 05 3a 0d 0b d6 0d 2e 66 73 5f 6c 6f 6f 70 31 0d |.:.....fs_loop1.| 00001080 0b e0 07 49 4e 59 0d 0b ea 0e 2e 66 69 6e 64 73 |...INY.....finds| 00001090 70 61 63 65 0d 0b f4 0f 4c 44 41 20 28 66 6e 32 |pace....LDA (fn2| 000010a0 29 2c 59 0d 0b fe 0b 43 4d 50 20 23 31 33 0d 0c |),Y....CMP #13..| 000010b0 08 0f 42 45 51 20 66 73 5f 65 78 69 74 0d 0c 12 |..BEQ fs_exit...| 000010c0 0b 43 4d 50 20 23 33 32 0d 0c 1c 10 42 4e 45 20 |.CMP #32....BNE | 000010d0 66 73 5f 6c 6f 6f 70 31 0d 0c 26 0c 2e 66 73 5f |fs_loop1..&..fs_| 000010e0 65 78 69 74 0d 0c 30 07 52 54 53 0d 0c 3a 05 3a |exit..0.RTS..:.:| 000010f0 0d 0c 44 0a 2e 6f 70 65 6e 31 0d 0c 4e 0b 4c 44 |..D..open1..N.LD| 00001100 41 20 23 36 34 0d 0c 58 0b 4c 44 58 20 66 6e 31 |A #64..X.LDX fn1| 00001110 0d 0c 62 0d 4c 44 59 20 66 6e 31 2b 31 0d 0c 6c |..b.LDY fn1+1..l| 00001120 0e 4a 53 52 20 6f 73 66 69 6e 64 0d 0c 76 0c 53 |.JSR osfind..v.S| 00001130 54 41 20 68 61 6e 31 0d 0c 80 0a 43 4d 50 20 23 |TA han1....CMP #| 00001140 30 0d 0c 8a 10 42 45 51 20 63 61 6e 74 5f 6f 70 |0....BEQ cant_op| 00001150 31 0d 0c 94 07 43 4c 43 0d 0c 9e 07 52 54 53 0d |1....CLC....RTS.| 00001160 0c a8 05 3a 0d 0c b2 0d 2e 63 61 6e 74 5f 6f 70 |...:.....cant_op| 00001170 31 0d 0c bc 15 4c 44 58 20 23 6f 70 5f 74 78 74 |1....LDX #op_txt| 00001180 20 83 20 32 35 36 0d 0c c6 15 4c 44 59 20 23 6f | . 256....LDY #o| 00001190 70 5f 74 78 74 20 81 20 32 35 36 0d 0c d0 0c 4a |p_txt . 256....J| 000011a0 53 52 20 6d 65 73 73 0d 0c da 0b 4c 44 58 20 66 |SR mess....LDX f| 000011b0 6e 31 0d 0c e4 0d 4c 44 59 20 66 6e 31 2b 31 0d |n1....LDY fn1+1.| 000011c0 0c ee 0c 4a 4d 50 20 6d 65 73 73 0d 0c f8 05 3a |...JMP mess....:| 000011d0 0d 0d 02 0b 2e 6f 70 5f 74 78 74 0d 0d 0c 1c 4f |.....op_txt....O| 000011e0 50 54 20 a4 65 71 75 73 28 22 43 61 6e 27 74 20 |PT .equs("Can't | 000011f0 6f 70 65 6e 20 22 29 0d 0d 16 10 4f 50 54 20 a4 |open ")....OPT .| 00001200 65 71 75 62 28 30 29 0d 0d 20 05 3a 0d 0d 2a 0b |equb(0).. .:..*.| 00001210 2e 63 6c 6f 73 65 31 0d 0d 34 0a 4c 44 41 20 23 |.close1..4.LDA #| 00001220 30 0d 0d 3e 0c 4c 44 59 20 68 61 6e 31 0d 0d 48 |0..>.LDY han1..H| 00001230 0e 4a 4d 50 20 6f 73 66 69 6e 64 0d 0d 52 05 3a |.JMP osfind..R.:| 00001240 0d 0d 5c 09 2e 67 65 74 31 0d 0d 66 0c 4c 44 59 |..\..get1..f.LDY| 00001250 20 68 61 6e 31 0d 0d 70 0e 4a 4d 50 20 6f 73 62 | han1..p.JMP osb| 00001260 67 65 74 0d 0d 7a 05 3a 0d 0d 84 0a 2e 6f 70 65 |get..z.:.....ope| 00001270 6e 32 0d 0d 8e 0c 4c 44 41 20 23 31 33 32 0d 0d |n2....LDA #132..| 00001280 98 0e 4a 53 52 20 6f 73 62 79 74 65 0d 0d a2 0e |..JSR osbyte....| 00001290 53 54 58 20 66 32 5f 61 64 64 0d 0d ac 10 53 54 |STX f2_add....ST| 000012a0 59 20 66 32 5f 61 64 64 2b 31 0d 0d b6 07 52 54 |Y f2_add+1....RT| 000012b0 53 0d 0d c0 05 3a 0d 0d ca 09 2e 70 75 74 32 0d |S....:.....put2.| 000012c0 0d d4 0a 4c 44 59 20 23 30 0d 0d de 12 53 54 41 |...LDY #0....STA| 000012d0 20 28 66 32 5f 61 64 64 29 2c 59 0d 0d e8 0e 49 | (f2_add),Y....I| 000012e0 4e 43 20 66 32 5f 61 64 64 0d 0d f2 10 42 4e 45 |NC f2_add....BNE| 000012f0 20 70 32 5f 6e 69 6e 63 31 0d 0d fc 10 49 4e 43 | p2_ninc1....INC| 00001300 20 66 32 5f 61 64 64 2b 31 0d 0e 06 0d 2e 70 32 | f2_add+1.....p2| 00001310 5f 6e 69 6e 63 31 0d 0e 10 07 52 54 53 0d 0e 1a |_ninc1....RTS...| 00001320 05 3a 0d 0e 24 16 2e 68 61 6e 31 20 4f 50 54 20 |.:..$..han1 OPT | 00001330 a4 65 71 75 62 28 30 29 0d 0e 2e 05 5d 0d 0e 38 |.equb(0)....]..8| 00001340 05 e1 0d 0e 42 05 3a 0d 0e 4c 0e dd 20 f2 6d 65 |....B.:..L.. .me| 00001350 73 73 61 67 65 0d 0e 56 0d 5b 4f 50 54 20 6f 70 |ssage..V.[OPT op| 00001360 74 25 0d 0e 60 09 2e 6d 65 73 73 0d 0e 6a 0b 53 |t%..`..mess..j.S| 00001370 54 58 20 74 78 74 0d 0e 74 0d 53 54 59 20 74 78 |TX txt..t.STY tx| 00001380 74 2b 31 0d 0e 7e 0a 4c 44 59 20 23 30 0d 0e 88 |t+1..~.LDY #0...| 00001390 0d 2e 6d 73 5f 6c 6f 6f 70 31 0d 0e 92 0f 4c 44 |..ms_loop1....LD| 000013a0 41 20 28 74 78 74 29 2c 59 0d 0e 9c 0f 42 45 51 |A (txt),Y....BEQ| 000013b0 20 6d 73 5f 65 78 69 74 0d 0e a6 0e 4a 53 52 20 | ms_exit....JSR | 000013c0 6f 73 61 73 63 69 0d 0e b0 07 49 4e 59 0d 0e ba |osasci....INY...| 000013d0 0b 43 4d 50 20 23 31 33 0d 0e c4 10 42 4e 45 20 |.CMP #13....BNE | 000013e0 6d 73 5f 6c 6f 6f 70 31 0d 0e ce 0c 2e 6d 73 5f |ms_loop1.....ms_| 000013f0 65 78 69 74 0d 0e d8 07 53 45 43 0d 0e e2 07 52 |exit....SEC....R| 00001400 54 53 0d 0e ec 05 3a 0d 0e f6 09 2e 70 68 65 78 |TS....:.....phex| 00001410 0d 0f 00 07 50 48 41 0d 0f 0a 09 4c 53 52 20 41 |....PHA....LSR A| 00001420 0d 0f 14 09 4c 53 52 20 41 0d 0f 1e 09 4c 53 52 |....LSR A....LSR| 00001430 20 41 0d 0f 28 09 4c 53 52 20 41 0d 0f 32 0c 4a | A..(.LSR A..2.J| 00001440 53 52 20 70 64 69 67 0d 0f 3c 07 50 4c 41 0d 0f |SR pdig..<.PLA..| 00001450 46 09 80 20 23 31 35 0d 0f 50 09 2e 70 64 69 67 |F.. #15..P..pdig| 00001460 0d 0f 5a 0b 43 4d 50 20 23 31 30 0d 0f 64 0d 42 |..Z.CMP #10..d.B| 00001470 43 43 20 70 64 5f 6e 6e 0d 0f 6e 0a 41 44 43 20 |CC pd_nn..n.ADC | 00001480 23 36 0d 0f 78 0a 2e 70 64 5f 6e 6e 0d 0f 82 0b |#6..x..pd_nn....| 00001490 41 44 43 20 23 34 38 0d 0f 8c 0e 4a 4d 50 20 6f |ADC #48....JMP o| 000014a0 73 61 73 63 69 0d 0f 96 05 5d 0d 0f a0 05 e1 0d |sasci....]......| 000014b0 0f aa 05 3a 0d 0f b4 0d dd 20 a4 64 73 28 6e 25 |...:..... .ds(n%| 000014c0 29 0d 0f be 08 ea 20 69 25 0d 0f c8 0f e3 20 69 |)..... i%..... i| 000014d0 25 3d 31 20 b8 20 6e 25 0d 0f d2 0d 5b 4f 50 54 |%=1 . n%....[OPT| 000014e0 20 6f 70 74 25 0d 0f dc 10 4f 50 54 20 a4 65 71 | opt%....OPT .eq| 000014f0 75 62 28 30 29 0d 0f e6 05 5d 0d 0f f0 05 ed 0d |ub(0)....]......| 00001500 0f fa 09 3d 6f 70 74 25 0d 10 04 05 3a 0d 10 0e |...=opt%....:...| 00001510 0f dd 20 a4 65 71 75 62 28 61 25 29 0d 10 18 12 |.. .equb(a%)....| 00001520 3f 50 25 3d 61 25 3a 50 25 3d 50 25 2b 31 0d 10 |?P%=a%:P%=P%+1..| 00001530 22 09 3d 6f 70 74 25 0d 10 2c 05 3a 0d 10 36 0f |".=opt%..,.:..6.| 00001540 dd 20 a4 65 71 75 77 28 61 25 29 0d 10 40 12 21 |. .equw(a%)..@.!| 00001550 50 25 3d 61 25 3a 50 25 3d 50 25 2b 32 0d 10 4a |P%=a%:P%=P%+2..J| 00001560 09 3d 6f 70 74 25 0d 10 54 05 3a 0d 10 5e 0f dd |.=opt%..T.:..^..| 00001570 20 a4 65 71 75 64 28 61 25 29 0d 10 68 12 21 50 | .equd(a%)..h.!P| 00001580 25 3d 61 25 3a 50 25 3d 50 25 2b 34 0d 10 72 09 |%=a%:P%=P%+4..r.| 00001590 3d 6f 70 74 25 0d 10 7c 05 3a 0d 10 86 0f dd 20 |=opt%..|.:..... | 000015a0 a4 65 71 75 73 28 61 24 29 0d 10 90 14 24 50 25 |.equs(a$)....$P%| 000015b0 3d 61 24 3a 50 25 3d 50 25 2b a9 61 24 0d 10 9a |=a$:P%=P%+.a$...| 000015c0 09 3d 6f 70 74 25 0d 10 a4 05 3a 0d 10 ae 12 dd |.=opt%....:.....| 000015d0 20 f2 6f 73 63 6c 69 28 24 6f 73 25 29 0d 10 b8 | .oscli($os%)...| 000015e0 17 58 25 3d 6f 73 25 3a 59 25 3d 6f 73 25 20 81 |.X%=os%:Y%=os% .| 000015f0 20 32 35 36 0d 10 c2 0b d6 20 26 46 46 46 37 0d | 256..... &FFF7.| 00001600 10 cc 05 e1 0d 10 d6 05 3a 0d 10 e0 10 dd 20 f2 |........:..... .| 00001610 72 65 6c 6f 63 28 61 25 29 0d 10 ea 68 f2 6f 73 |reloc(a%)...h.os| 00001620 63 6c 69 28 22 4b 45 59 30 46 4f 52 20 49 25 3d |cli("KEY0FOR I%=| 00001630 22 2b c3 28 b8 50 2d 90 29 2b 22 20 54 4f 20 30 |"+.(.P-.)+" TO 0| 00001640 20 53 54 45 50 20 2d 31 3a 49 25 3f 26 22 2b c3 | STEP -1:I%?&"+.| 00001650 7e 61 25 2b 22 3d 49 25 3f 26 22 2b c3 7e 90 2b |~a%+"=I%?&"+.~.+| 00001660 22 3a 4e 2e 7c 4d 50 41 47 45 3d 26 22 2b c3 7e |":N.|MPAGE=&"+.~| 00001670 61 25 2b 22 7c 4d 4f 2e 7c 4d 52 55 4e 7c 4d 22 |a%+"|MO.|MRUN|M"| 00001680 29 0d 10 f4 10 2a 46 58 31 33 38 2c 30 2c 31 32 |)....*FX138,0,12| 00001690 38 0d 10 fe 05 e0 0d ff |8.......| 00001698