Home » Personal collection » Acorn ADFS disks » Electron » Utilities_2.ADF » Ceemags

Ceemags

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 » Personal collection » Acorn ADFS disks » Electron » Utilities_2.ADF
Filename: Ceemags
Read OK:
File size: 2D2A bytes
Load address: FFFF0E00
Exec address: FFFF8023
Duplicates

There are 3 duplicate copies of this file in the archive:

File contents
   10REM CEEMAGS
   20REM By John Geraghty
   30:
   40:
   50MODE6
   60ONERROR PROCreport
   70PROCinit:LOMEM=HIMEM-1100
   80:
   90REM constants
  100esc%=FALSE:buf1%=&700:buf2%=&C30
  110str1%=buf2%:str2%=buf2%+&14:str3%=buf2%+&30
  120:
  130PRINT''STRING$(39,CHR$129)TAB(10,2)CHR$128"Magazine Database"CHR$128
  140:
  150fil$="":mag$="":dat$="":top%=TOP+2
  160:
  170DEF PROCmenu1
  180!P%=&1550
  190REPEAT
  200ON ERROR PROCerr(0)
  210PROCcls(11)
  220opt%=FNmenu(11,11,5+3*(fil$=""),1)
  230ON ERROR PROCerr(1)
  240IF opt%=0 PROCnew
  250IF opt%=1 PROCold
  260IF opt%=2 PROCsave
  270IF opt%=3 PROCname
  280IF opt%=4 PROCmenu2
  290UNTIL esc%
  300:
  310DEF PROCnew
  320PRINTTAB(0,1)"New file"
  330PROCname
  340top%=TOP+2
  350PROCmenu2
  360:
  370DEF PROCold
  380PRINTTAB(0,1)"Old file"
  390PROCname
  400top%=TOP+2
  410VDU28,0,24,39,11,12
  420OSCLI"LOAD"+CHR$32+fil$+CHR$32+STR$~TOP
  430top%=TOP+(!TOP AND &FFFF)
  440PROCmenu2
  450:
  460DEF PROCsave
  470PROCcls(11)
  480len%=top%-TOP
  490?TOP=len%:?(TOP+1)=len% DIV&100
  500?T%=FNcfs
  510OSCLI"SAVE"+CHR$32+fil$+CHR$32+STR$~TOP+CHR$32+STR$~top%
  520?T%=0
  530IF FNcfs VDU28,0,24,39,11,12:PRINT"Rewind, Press Play to Verify":OSCLI"LOAD"+CHR$32+fil$+CHR$32+"8000"
  540ENDPROC
  550:
  560DEF PROCname
  570REPEAT
  580PROCcls(11)
  590fil$=FNinput("Filename:",10,11,33,126,7-3*FNcfs)
  600UNTIL fil$>""
  610PRINTTAB(29,1)SPC10;TAB(29,1)fil$
  620ENDPROC
  630:
  640DEF PROCmenu2
  650found%=FALSE
  660ON ERROR PROCerr(1)
  670REPEAT
  680PROCcls(3)
  690!P%=&1114
  700opt%=FNmenu(11,11,3,2)
  710ON ERROR PROCerr(2)
  720IF opt%=0 PROCentry
  730IF opt%=1 PROCprefix
  740IF opt%=2 PROCsearch
  750UNTIL esc%
  760:
  770DEF PROCentry
  780!P%=&1150
  790ent%=top%
  800REPEAT
  810top%=ent%
  820PRINTTAB(0,3)"New entry"TAB(29,3)"Free:"+STR$(LOMEM-top%)SPC1
  830PROCcls(11)
  840PROCheads(4)
  850PRINTTAB(0,24)"(Press Escape when finished)";
  860RESTORE 3540
  870FOR vpos%=11 TO 19 STEP2
  880$buf2%=""
  890IF vpos%=11 $buf2%=mag$
  900IF vpos%=13 $buf2%=dat$
  910PROCstore
  920NEXT
  930UNTIL esc%
  940:
  950DEF PROCheads(N%)
  960PRINTTAB(0,10)
  970RESTORE 3530
  980FOR I%=0 TO N%
  990READ h$:PRINT h$'
 1000NEXT
 1010ENDPROC
 1020:
 1030DEF PROCstore
 1040READ len%
 1050IF $buf2%="" $buf2%=FNinput("",10,vpos%,32,126,len%) ELSE PRINTTAB(10,vpos%)$buf2%
 1060PROCpack(buf2%,buf1%,1)
 1070ent_len%=?&77+?&78
 1080IF (ent%+ent_len%)>LOMEM PROCno_room:*FX125
 1090ent%=ent%+ent_len%
 1100PROCmove(buf1%+ent_len%-1,ent%-1,buf1%,-1)
 1110ENDPROC
 1120:
 1130DEF PROCprefix
 1140PROCcls(3):PRINT"Prefix"
 1150PROCheads(1)
 1160mag$=FNinput("",10,11,32,126,15)
 1170dat$=FNinput("",10,13,32,126,8)
 1180*FX125
 1190:
 1200DEF PROCsearch
 1210PROCcls(3)
 1220!P%=&1510
 1230PRINT"Search"
 1240PRINTTAB(0,11)"Printout?(Y/N)";
 1250print%=(GET OR 32)=ASC"y"
 1260PROCcls(11)
 1270IF print% PROCprinter
 1280$str1%=FNinput("Item One:",10,11,32,126,17)
 1290PRINTTAB(6,3)"...."+CHR$34+$str1%+CHR$34
 1300$str2%=FNinput("Item Two:",10,13,32,126,17)
 1310:
 1320PROCcls(11)
 1330PRINTTAB(10,5)CHR$34+$str2%+CHR$34
 1340PROCcase(str1%,str1%)
 1350PROCcase(str2%,str2%)
 1360bot%=TOP+2
 1370R%=0
 1380VDU23,1,0;0;0;0;
 1390amend%=FALSE
 1400REPEAT
 1410IF bot%=top% PROCout
 1420PRINTTAB(29,3)"Record:";R%:R%=R%+1
 1430old_bot%=bot%
 1440IF FNinstr OR amend% amend%=FALSE:PROCrecord:found%=TRUE
 1450UNTIL esc%
 1460:
 1470DEF PROCprinter
 1480PRINTTAB(29,3);
 1490*FX15,0
 1500*FX3,8
 1510A%=ADVAL(-4)
 1520PRINT"Printout";
 1530TIME=0:REPEAT UNTIL TIME>100
 1540IF ADVAL(-4)<>A% print%=0:PRINTTAB(29,3)STRING$(8,"?")
 1550*FX3,0
 1560*FX15,0
 1570ENDPROC
 1580:
 1590DEF FNinstr
 1600LOCAL found%
 1610FOR I%=0 TO 4
 1620PROCpack(bot%,str3%,0)
 1630PROCcase(str3%,str3%)
 1640IF INSTR($str3%,$str1%) found%=found% OR 1
 1650IF INSTR($str3%,$str2%) found%=found% OR 2
 1660bot%=bot%+?&77+?&78
 1670NEXT
 1680=found%=3
 1690:
 1700DEF PROCrecord
 1710*FX21,0
 1720PROCcls(11)
 1730IF print%:*FX3,8
 1740RESTORE 3530
 1750field%=old_bot%
 1760FOR I%=0 TO 4
 1770PROCpack(field%,buf1%,0)
 1780READ h$:PRINTh$;SPC1;$buf1%'
 1790field%=field%+?&77+?&78
 1800NEXT
 1810*FX3,0
 1820PRINTTAB(0,24)"(Ret:Next  Copy:Amend  CTRL+Del:Delete)";
 1830:
 1840REPEAT
 1850G%=GET
 1860IF INKEY-2 AND G%=127 G%=255:PROCwipe
 1870IF G%=135 PROCamend
 1880UNTIL G%=13 OR G%=135 OR G%=255
 1890PROCret
 1900ENDPROC
 1910:
 1920DEF PROCwipe
 1930!P%=&1154
 1940REPEAT UNTIL NOT (INKEY-2 OR INKEY-90)
 1950RESTORE 3540
 1960FOR vpos%=11 TO 19 STEP2
 1970READ len%
 1980PRINTTAB(10,vpos%)STRING$(len%,CHR$130)
 1990NEXT
 2000PROCmove(bot%,old_bot%,top%,0)
 2010top%=top%-bot%+old_bot%
 2020bot%=old_bot%
 2030!P%=&1510
 2040ENDPROC
 2050:
 2060DEF PROCout
 2070PRINTTAB(39,24)STRING$(39,CHR$127);
 2080IF found% PRINT "No more...";ELSE PRINT "No match...";
 2090PRINT"Press Escape";
 2100REPEAT UNTIL esc%
 2110:
 2120DEF PROCamend
 2130amend%=TRUE
 2140bot%=old_bot%
 2150field%=old_bot%
 2160PROCcls(23)
 2170PRINTTAB(0,9)"Amending..."
 2180opt%=FNmenu(0,11,5,3)
 2190RESTORE 3540
 2200FOR I%=0 TO opt%
 2210READ len%
 2220PROCpack(field%,buf1%,0)
 2230old_len%=?&77+?&78
 2240IF I%<opt% field%=field%+old_len%
 2250NEXT
 2260$str3%=FNinput("",10,11+opt%*2,32,126,len%)
 2270VDU23,1,0;0;0;0;
 2280:
 2290PROCpack(str3%,buf1%,1)
 2300new_len%=?&77+?&78
 2310:
 2320dlen%=new_len%-old_len%
 2330IF (top%+dlen%)>=LOMEM PROCno_room:ENDPROC
 2340IF dlen%>0 PROCmove(top%,top%+dlen%,field%,-1)
 2350IF dlen%<0 PROCmove(field%+old_len%,field%+new_len%,top%,0)
 2360PROCmove(buf1%+new_len%-1,field%+new_len%-1,buf1%,-1)
 2370top%=top%+dlen%
 2380R%=R%-1
 2390PRINTTAB(0,9)SPC11
 2400ENDPROC
 2410:
 2420DEF PROCno_room
 2430PROCcls(11)
 2440PRINT"No room...Press Return"
 2450REPEAT UNTIL GET=13:PROCret
 2460ENDPROC
 2470:
 2480DEF PROCmove(from%,to%,until%,up%)
 2490!&70=from%:!&72=to%:!&74=until%
 2500IF up% CALL U% ELSE CALL D%
 2510ENDPROC
 2520:
 2530DEF PROCpack(from%,to%,C%)
 2540!&70=from%:!&72=to%:CALL S%
 2550ENDPROC
 2560:
 2570DEF PROCcase(from%,to%)
 2580!&70=from%:!&72=to%:CALL K%
 2590ENDPROC
 2600:
 2610DEF FNmenu(pos%,vpos%,items%,set%)
 2620VDU23,1,0;0;0;0;
 2630PRINTTAB(2,24)"(Select with SPACEBAR, then RETURN)";
 2640PROCrestore
 2650FOR opt%=0 TO items%-2
 2660READ opt$
 2670PRINTTAB(pos%,vpos%+opt%*2)opt$
 2680NEXT
 2690READ opt$
 2700PROChilite
 2710REPEAT
 2720IF GET=32 PROChilite
 2730UNTIL INKEY-74
 2740PROCret
 2750VDU23,1,1;0;0;0;
 2760=opt%
 2770:
 2780DEF PROChilite
 2790PRINTTAB(pos%,vpos%+opt%*2)opt$
 2800opt%=(opt%+1)MODitems%
 2810IF opt%=0 PROCrestore
 2820COLOUR0:COLOUR129
 2830READ opt$
 2840PRINTTAB(pos%,vpos%+opt%*2)opt$
 2850COLOUR1:COLOUR128
 2860ENDPROC
 2870:
 2880DEF FNinput(prompt$,pos%,vpos%,asc_min%,asc_max%,len_max%)
 2890LOCAL len%
 2900PRINTTAB(pos%,vpos%)STRING$(len_max%,CHR$130);"]"TAB(pos%-LENprompt$-1,vpos%)prompt$+"[";
 2910REPEAT
 2920?(buf1%+len%)=13
 2930G%=GET
 2940IF G%=127 PROCdel
 2950IF G%=21 REPEAT PROCdel:UNTIL len%=0
 2960IF G%>=asc_min% AND G%<=asc_max% AND len%<len_max% THEN ?(buf1%+len%)=G%:len%=len%+1:VDUG%;
 2970UNTIL G%=13
 2980PROCret
 2990=$buf1%
 3000:
 3010DEF PROCdel
 3020IF len%>0 VDU8,130,8:len%=len%-1:?(buf1%+len%)=13
 3030ENDPROC
 3040:
 3050DEF PROCret
 3060REPEAT UNTIL NOT INKEY-74:*FX21,0
 3070ENDPROC
 3080:
 3090DEF PROCerr(level%)
 3100COLOUR1:COLOUR128
 3110?T%=0
 3120*FX3,0
 3130IF ERR<>17 PROCreport
 3140IF ERR=17 AND INKEY-2 PROCreport
 3150IF level%=1 PROCmenu1
 3160IF level%=2 PROCmenu2
 3170:
 3180PROCcls(3)
 3190PRINTTAB(10,11)"Are you sure?(Y/N)"
 3200IF (GET OR 32)<>ASC"y" PROCmenu1
 3210:
 3220DEF PROCreport
 3230ON ERROR OFF
 3240*FX4,0
 3250*FX13,5
 3260*FX225,1
 3270VDU22,6
 3280IF ERR=17 THEN LOMEM=TOP:END
 3290REPORT
 3300IF FNbasic2 PRINT":"':$&700="LIST"+STR$ERL:$&710=$&8AF6:!&718=&8B0B4C:CALL &710
 3310PRINT" at line ";ERL
 3320END
 3330:
 3340DEF FNbasic2
 3350=?&8015=ASC"2"
 3360:
 3370DEF FNcfs
 3380A%=0:Y%=0
 3390=(USR(&FFDA)AND&FF)=1
 3400:
 3410DEF PROCcls(t%)
 3420VDU28,0,24,39,t%,12,26,31,0,t%
 3430ENDPROC
 3440:
 3450DEF PROCrestore
 3460RESTORE 3530
 3470IF set%=1 RESTORE 3510
 3480IF set%=2 RESTORE 3520
 3490ENDPROC
 3500:
 3510DATA "Start New File...","Load Old File....","Save.............","Rename...........","Restart.........."
 3520DATA "Make New Entry...","Set Prefix.......","Search..........."
 3530DATA "Magazine:","Date....:","Page....:","Title...:","Text....:"
 3540DATA 15,8,4,29,149
 3550:
 3560DEF PROCinit
 3570IF FALSE [(Compatability with Supercharger)
 3580PROCassemble
 3590CALL start_event
 3600*FX4,1
 3610*FX225,0
 3620VDU23,128,24,60,60,126,126,0,126,60,0
 3630VDU23,129,255,0,255,0,255,0,255,0
 3640VDU23,130,0,84,0,84,0,84,0,0
 3650U%=move_up:D%=move_down:T%=tape:K%=case:P%=palette2:S%=pack
 3660REM extra line goes here
 3670ENDPROC
 3680:
 3690DEF PROCfast_save
 3700PROCassemble
 3710?tape=-1
 3720!palette1=&11101110
 3730CALL start_event
 3740OSCLI"SAVE"+CHR$32+"CEEMAGS"+CHR$32+STR$~PAGE+CHR$32+STR$~TOP
 3750*FX13,5
 3760ENDPROC
 3770:
 3780DEF PROCshorten
 3790RESTORE 3570
 3800add%=!&1C AND &FFFF
 3810!(add%-1)=&FF0DE105
 3820?&12=(add%+3)MOD&100
 3830?&13=(add%+3)DIV&100
 3840RUN
 3850:
 3860DEF PROCassemble
 3870*FX13,5
 3880from=&70
 3890to=&72
 3900until=&74
 3910ref_addr=&74
 3920char_index=&76
 3930nib_index=&77
 3940nib_posn=&78
 3950temp=&79
 3960osbyte=&FFF4
 3970osword=&FFF1
 3980code=&900
 3990:
 4000FOR pass=0 TO 2 STEP2
 4010P%=code
 4020[OPT pass
 4030.move_up
 4040LDY #0
 4050.loop
 4060LDA (from),Y
 4070STA (to),Y
 4080LDA from
 4090CMP until
 4100BNE more
 4110LDA from+1
 4120CMP until+1
 4130BEQ no_more
 4140.more
 4150DEC from
 4160LDX from
 4170CPX #&FF
 4180BNE over
 4190DEC from+1
 4200.over
 4210DEC to
 4220LDX to
 4230CPX #&FF
 4240BNE loop
 4250DEC to+1
 4260BNE loop
 4270.no_more
 4280RTS
 4290:
 4300.move_down
 4310LDY #0
 4320.loop2
 4330LDA (from),Y
 4340STA (to),Y
 4350LDA from
 4360CMP until
 4370BNE more2
 4380LDA from+1
 4390CMP until+1
 4400BEQ no_more2
 4410.more2
 4420INC from
 4430BNE over2
 4440INC from+1
 4450.over2
 4460INC to
 4470BNE loop2
 4480INC to+1
 4490BNE loop2
 4500.no_more2
 4510RTS
 4520:
 4530.case
 4540LDY #0
 4550.loop3
 4560LDA (from),Y
 4570CMP #ASC"A"
 4580BCC not_capital
 4590CMP #ASC"Z"+1
 4600BCS not_capital
 4610ORA #32
 4620.not_capital
 4630STA (to),Y
 4640INY
 4650CMP #&0D
 4660BNE loop3
 4670RTS
 4680:
 4690.event
 4700PHP:PHA
 4710TXA:PHA
 4720TYA:PHA
 4730:
 4740LDA tape
 4750BEQ not_cfs
 4760LDA #&B0
 4770LDX #&FF
 4780LDY #0
 4790JSR osbyte
 4800:
 4810.not_cfs
 4820INC col_index
 4830LDA col_index
 4840AND #1
 4850BNE col2
 4860LDA #&97
 4870LDX #8
 4880LDY palette1
 4890JSR osbyte
 4900LDX #9
 4910LDY palette1+1
 4920JSR osbyte
 4930JMP col1
 4940:
 4950.col2
 4960LDA #&97
 4970LDX #8
 4980LDY palette2
 4990JSR osbyte
 5000LDX #9
 5010LDY palette2+1
 5020JSR osbyte
 5030:
 5040.col1
 5050JSR set_time
 5060PLA:TAY
 5070PLA:TAX
 5080PLA:PLP
 5090RTS
 5100:
 5110.set_time
 5120LDX #time MOD&100
 5130LDY #time DIV&100
 5140LDA #4
 5150JMP osword
 5160:
 5170.start_event
 5180LDX #event MOD&100
 5190LDY #event DIV&100
 5200SEI
 5210STX &220
 5220STY &221
 5230CLI
 5240LDA #&13
 5250JSR osbyte
 5260JSR set_time
 5270LDA #&0E
 5280LDX #5
 5290JMP osbyte
 5300:
 5310.time
 5320EQUD &FFFFFFFF
 5330EQUB &FF
 5340.tape
 5350EQUB 0
 5360.col_index
 5370EQUB 0
 5380.palette1
 5390EQUW &1514
 5400.palette2
 5410EQUD &1150
 5420:
 5430.pack
 5440LDA #0
 5450STA nib_index
 5460STA nib_posn
 5470STA char_index
 5480BCS not_decompress
 5490JMP decompress
 5500:
 5510.not_decompress
 5520STA char_index
 5530TAY
 5540STA (to),Y
 5550:
 5560.compress
 5570LDY char_index
 5580LDA (from),Y
 5590PHA
 5600:
 5610LDX #ref DIV&100
 5620STX ref_addr+1
 5630LDX #ref MOD&100
 5640LDY #&0C
 5650JSR instr
 5660BPL char_found
 5670:
 5680LDX #ref2 DIV&100
 5690STX ref_addr+1
 5700LDX #ref2 MOD&100
 5710LDY #&3E
 5720JSR instr
 5730BPL char_found
 5740:
 5750LDX #ref3 DIV&100
 5760STX ref_addr+1
 5770LDX #ref3 MOD&100
 5780LDY #&16
 5790JSR instr
 5800:
 5810.char_found
 5820CPX #ref MOD&100
 5830BNE not_commonest
 5840TYA
 5850JSR store_nibble
 5860JMP end_chk
 5870:
 5880.not_commonest
 5890CPX #ref2 MOD&100
 5900BNE rare
 5910TYA
 5920PHA
 5930LSR A
 5940LSR A
 5950LSR A
 5960LSR A
 5970CLC
 5980ADC #&0C
 5990JSR store_nibble
 6000PLA
 6010AND #&0F
 6020JSR store_nibble
 6030JMP end_chk
 6040:
 6050.rare
 6060TYA
 6070PHA
 6080PHA
 6090LDA #&0F
 6100JSR store_nibble
 6110PLA
 6120LSR A
 6130LSR A
 6140LSR A
 6150LSR A
 6160CLC
 6170ADC #&0E
 6180JSR store_nibble
 6190PLA
 6200AND #&0F
 6210JSR store_nibble
 6220:
 6230.end_chk
 6240PLA
 6250INC char_index
 6260BEQ error
 6270CMP #&0D
 6280BNE compress
 6290RTS
 6300:
 6310.store_nibble
 6320LDY nib_index
 6330ORA (to),Y
 6340STA (to),Y
 6350LDA nib_posn
 6360EOR #1
 6370STA nib_posn
 6380BNE high_nibble
 6390INC nib_index
 6400BEQ error
 6410LDY nib_index
 6420LDA #0
 6430STA (to),Y
 6440RTS
 6450:
 6460.high_nibble
 6470LDA (to),Y
 6480ASL A
 6490ASL A
 6500ASL A
 6510ASL A
 6520STA (to),Y
 6530RTS
 6540:
 6550.instr
 6560STX ref_addr
 6570.loop
 6580DEY
 6590BMI out
 6600CMP (ref_addr),Y
 6610BNE loop
 6620.out
 6630RTS
 6640:
 6650.error
 6660BRK
 6670BRK
 6680EQUS "String"+CHR$7
 6690BRK
 6700:
 6710.decompress
 6720JSR read_nib
 6730CMP #&0C
 6740BCS read_another
 6750LDY #ref DIV&100
 6760LDX #ref MOD&100
 6770JSR store_byte
 6780JMP end_chk2
 6790:
 6800.read_another
 6810TAX
 6820JSR read_nib
 6830CMP #&0E
 6840BCC two_nib_char
 6850CPX #&0F
 6860BEQ three_nib_char
 6870:
 6880.two_nib_char
 6890STA temp
 6900TXA
 6910SEC
 6920SBC #&0C
 6930ASL A
 6940ASL A
 6950ASL A
 6960ASL A
 6970CLC
 6980ADC temp
 6990LDY #ref2 DIV&100
 7000LDX #ref2 MOD&100
 7010JSR store_byte
 7020JMP end_chk2
 7030:
 7040.three_nib_char 
 7050TAX
 7060JSR read_nib
 7070CPX #&0F
 7080BNE first_str
 7090CLC
 7100ADC #&10
 7110.first_str
 7120LDY #ref3 DIV&100
 7130LDX #ref3 MOD&100
 7140JSR store_byte
 7150:
 7160.end_chk2
 7170BEQ error
 7180CMP #&0D
 7190BNE decompress
 7200RTS
 7210:
 7220.store_byte
 7230STY ref_addr+1
 7240STX ref_addr
 7250TAY
 7260LDA (ref_addr),Y
 7270LDY char_index
 7280STA (to),Y
 7290INC char_index
 7300RTS
 7310:
 7320.read_nib
 7330LDY nib_index
 7340LDA (from),Y
 7350TAY
 7360LDA nib_posn
 7370EOR #1
 7380STA nib_posn
 7390BEQ lo_nib
 7400TYA
 7410LSR A
 7420LSR A
 7430LSR A
 7440LSR A
 7450RTS
 7460.lo_nib
 7470INC nib_index
 7480TYA
 7490AND #&0F
 7500RTS
 7510:
 7520.ref
 7530EQUS "etaoinshrdl"+CHR$32
 7540.ref2
 7550EQUS "ubcfgjkmpqvwxyzA"
 7560EQUS "BCDEFGHIJKLMNOPQ"
 7570EQUS "RSTUVWXYZ0123456"
 7580EQUS "789.,;:"+CHR$34+"'()+-"+CHR$13
 7590.ref3
 7600EQUS "$%&<>@["+CHR$93+"`^{}|~#!"
 7610EQUS "=/*?\_"
 7620]:NEXT:ENDPROC


� CEEMAGS
� By John Geraghty
:
(:
2�6
<� �report
F�init:�=�-1100
P:
Z� constants
d esc%=�:buf1%=&700:buf2%=&C30
n/str1%=buf2%:str2%=buf2%+&14:str3%=buf2%+&30
x:
�1�''�39,�129)�10,2)�128"Magazine Database"�128
�:
�%fil$="":mag$="":dat$="":top%=�P+2
�:
�� �menu1
�
!P%=&1550
��
�� � �err(0)
��cls(11)
�%opt%=�menu(11,11,5+3*(fil$=""),1)
�� � �err(1)
�� opt%=0 �new
�� opt%=1 �old
� opt%=2 �save
� opt%=3 �name
� opt%=4 �menu2
"
� esc%
,:
6
� �new
@�0,1)"New file"
J	�name
T
top%=�P+2
^
�menu2
h:
r
� �old
|�0,1)"Old file"
�	�name
�
top%=�P+2
��28,0,24,39,11,12
��"LOAD"+�32+fil$+�32+�~�P
�top%=�P+(!�P � &FFFF)
�
�menu2
�:
�� �save
��cls(11)
�len%=top%-�P
�?�P=len%:?(�P+1)=len% �&100
�?T%=�cfs
�(�"SAVE"+�32+fil$+�32+�~�P+�32+�~top%
	?T%=0
X� �cfs �28,0,24,39,11,12:�"Rewind, Press Play to Verify":�"LOAD"+�32+fil$+�32+"8000"
�
&:
0� �name
:�
D�cls(11)
N2fil$=�input("Filename:",10,11,33,126,7-3*�cfs)
X
� fil$>""
b�29,1)�10;�29,1)fil$
l�
v:
�� �menu2
�found%=�
�� � �err(1)
��
��cls(3)
�
!P%=&1114
�opt%=�menu(11,11,3,2)
�� � �err(2)
�� opt%=0 �entry
�� opt%=1 �prefix
�� opt%=2 �search
�
� esc%
�:
� �entry

!P%=&1150

ent%=top%
 �
*
top%=ent%
4.�0,3)"New entry"�29,3)"Free:"+�(�-top%)�1
>�cls(11)
H
�heads(4)
R*�0,24)"(Press Escape when finished)";
\
� �dTM
f� vpos%=11 � 19 �2
p
$buf2%=""
z� vpos%=11 $buf2%=mag$
�� vpos%=13 $buf2%=dat$
�
�store
��
�
� esc%
�:
�� �heads(N%)
��0,10)
�
� �dJM
�� I%=0 � N%
�� h$:� h$'
��
��
�:
� �store

� len%
J� $buf2%="" $buf2%=�input("",10,vpos%,32,126,len%) � �10,vpos%)$buf2%
$�pack(buf2%,buf1%,1)
.ent_len%=?&77+?&78
8'� (ent%+ent_len%)>� �no_room:*FX125
Bent%=ent%+ent_len%
L+�move(buf1%+ent_len%-1,ent%-1,buf1%,-1)
V�
`:
j
� �prefix
t�cls(3):�"Prefix"
~
�heads(1)
�#mag$=�input("",10,11,32,126,15)
�"dat$=�input("",10,13,32,126,8)
�
*FX125
�:
�
� �search
��cls(3)
�
!P%=&1510
�
�"Search"
��0,11)"Printout?(Y/N)";
�print%=(� � 32)=�"y"
��cls(11)
�� print% �printer
.$str1%=�input("Item One:",10,11,32,126,17)

�6,3)"...."+�34+$str1%+�34
.$str2%=�input("Item Two:",10,13,32,126,17)
:
(�cls(11)
2�10,5)�34+$str2%+�34
<�case(str1%,str1%)
F�case(str2%,str2%)
P
bot%=�P+2
ZR%=0
d�23,1,0;0;0;0;
namend%=�
x�
�� bot%=top% �out
��29,3)"Record:";R%:R%=R%+1
�old_bot%=bot%
�/� �instr � amend% amend%=�:�record:found%=�
�
� esc%
�:
�� �printer
��29,3);
�*FX15,0
�
*FX3,8
�A%=�(-4)
��"Printout";
��=0:� � �>100
'� �(-4)<>A% print%=0:�29,3)�8,"?")

*FX3,0
*FX15,0
"�
,:
6� �instr
@� found%
J� I%=0 � 4
T�pack(bot%,str3%,0)
^�case(str3%,str3%)
h'� �$str3%,$str1%) found%=found% � 1
r'� �$str3%,$str2%) found%=found% � 2
|bot%=bot%+?&77+?&78
��
�
=found%=3
�:
�
� �record
�*FX21,0
��cls(11)
�� print%:*FX3,8
�
� �dJM
�field%=old_bot%
�� I%=0 � 4
��pack(field%,buf1%,0)
�� h$:�h$;�1;$buf1%'
�field%=field%+?&77+?&78
�

*FX3,0
5�0,24)"(Ret:Next  Copy:Amend  CTRL+Del:Delete)";
&:
0�
:G%=�
D� �-2 � G%=127 G%=255:�wipe
N� G%=135 �amend
X� G%=13 � G%=135 � G%=255
b�ret
l�
v:
�� �wipe
�
!P%=&1154
�� � � (�-2 � �-90)
�
� �dTM
�� vpos%=11 � 19 �2
�
� len%
��10,vpos%)�len%,�130)
��
��move(bot%,old_bot%,top%,0)
�top%=top%-bot%+old_bot%
�bot%=old_bot%
�
!P%=&1510
��
:

� �out
�39,24)�39,�127);
 .� found% � "No more...";� � "No match...";
*�"Press Escape";
4� � esc%
>:
H� �amend
Ramend%=�
\bot%=old_bot%
ffield%=old_bot%
p�cls(23)
z�0,9)"Amending..."
�opt%=�menu(0,11,5,3)
�
� �dTM
�� I%=0 � opt%
�
� len%
��pack(field%,buf1%,0)
�old_len%=?&77+?&78
�$� I%<opt% field%=field%+old_len%
��
�.$str3%=�input("",10,11+opt%*2,32,126,len%)
��23,1,0;0;0;0;
�:
��pack(str3%,buf1%,1)
�new_len%=?&77+?&78
	:
	dlen%=new_len%-old_len%
	 � (top%+dlen%)>=� �no_room:�
	$.� dlen%>0 �move(top%,top%+dlen%,field%,-1)
	.;� dlen%<0 �move(field%+old_len%,field%+new_len%,top%,0)
	86�move(buf1%+new_len%-1,field%+new_len%-1,buf1%,-1)
	Btop%=top%+dlen%
	LR%=R%-1
	V
�0,9)�11
	`�
	j:
	t� �no_room
	~�cls(11)
	��"No room...Press Return"
	�� � �=13:�ret
	��
	�:
	�!� �move(from%,to%,until%,up%)
	�#!&70=from%:!&72=to%:!&74=until%
	�� up% � U% � � D%
	��
	�:
	�� �pack(from%,to%,C%)
	�!&70=from%:!&72=to%:� S%
	��
:

� �case(from%,to%)
!&70=from%:!&72=to%:� K%
�
(:
2#� �menu(pos%,vpos%,items%,set%)
<�23,1,0;0;0;0;
F1�2,24)"(Select with SPACEBAR, then RETURN)";
P�restore
Z� opt%=0 � items%-2
d
� opt$
n�pos%,vpos%+opt%*2)opt$
x�
�
� opt$
��hilite
��
�� �=32 �hilite
�
� �-74
��ret
��23,1,1;0;0;0;
�	=opt%
�:
�
� �hilite
��pos%,vpos%+opt%*2)opt$
�opt%=(opt%+1)�items%
�� opt%=0 �restore
�0:�129

� opt$
�pos%,vpos%+opt%*2)opt$
"�1:�128
,�
6:
@;� �input(prompt$,pos%,vpos%,asc_min%,asc_max%,len_max%)
J
� len%
TG�pos%,vpos%)�len_max%,�130);"]"�pos%-�prompt$-1,vpos%)prompt$+"[";
^�
h?(buf1%+len%)=13
rG%=�
|� G%=127 �del
�� G%=21 � �del:� len%=0
�U� G%>=asc_min% � G%<=asc_max% � len%<len_max% � ?(buf1%+len%)=G%:len%=len%+1:�G%;
�� G%=13
��ret
�=$buf1%
�:
�
� �del
�2� len%>0 �8,130,8:len%=len%-1:?(buf1%+len%)=13
��
�:
�
� �ret
�� � � �-74:*FX21,0
��
:
� �err(level%)
�1:�128
&	?T%=0
0
*FX3,0
:� �<>17 �report
D� �=17 � �-2 �report
N� level%=1 �menu1
X� level%=2 �menu2
b:
l�cls(3)
v �10,11)"Are you sure?(Y/N)"
�� (� � 32)<>�"y" �menu1
�:
�
� �report
�	� � �
�
*FX4,0
�*FX13,5
�*FX225,1
�	�22,6
�� �=17 � �=�P:�
��
�E� �basic2 �":"':$&700="LIST"+Þ:$&710=$&8AF6:!&718=&8B0B4C:� &710
��" at line ";�
��

:


� �basic2

=?&8015=�"2"

 :

*
� �cfs

4
A%=0:Y%=0

>=(�(&FFDA)�&FF)=1

H:

R� �cls(t%)

\ �28,0,24,39,t%,12,26,31,0,t%

f�

p:

z� �restore

�
� �dJM

�� set%=1 � �tvM

�� set%=2 � �d@M

��

�:

�i� "Start New File...","Load Old File....","Save.............","Rename...........","Restart.........."

�A� "Make New Entry...","Set Prefix.......","Search..........."

�A� "Magazine:","Date....:","Page....:","Title...:","Text....:"

�� 15,8,4,29,149

�:

�� �init

�*� � [(Compatability with Supercharger)

�
�assemble
� start_event

*FX4,1
*FX225,0
$'�23,128,24,60,60,126,126,0,126,60,0
.#�23,129,255,0,255,0,255,0,255,0
8�23,130,0,84,0,84,0,84,0,0
B?U%=move_up:D%=move_down:T%=tape:K%=case:P%=palette2:S%=pack
L� extra line goes here
V�
`:
j� �fast_save
t
�assemble
~?tape=-1
�!palette1=&11101110
�� start_event
�*�"SAVE"+�32+"CEEMAGS"+�32+�~�+�32+�~�P
�*FX13,5
��
�:
�� �shorten
�
� �drM
�add%=!&1C � &FFFF
�!(add%-1)=&FF0DE105
�?&12=(add%+3)�&100
�?&13=(add%+3)�&100
�

:
� �assemble
*FX13,5
(from=&70
2
to=&72
<
until=&74
Fref_addr=&74
Pchar_index=&76
Znib_index=&77
dnib_posn=&78
ntemp=&79
xosbyte=&FFF4
�osword=&FFF1
�
code=&900
�:
�� pass=0 � 2 �2
�P%=code
�
[OPT pass
�.move_up
�
LDY #0
�	.loop
�LDA (from),Y
�STA (to),Y
�LDA from
�
CMP until
BNE more
LDA from+1
CMP until+1
"BEQ no_more
,	.more
6DEC from
@LDX from
JCPX #&FF
TBNE over
^DEC from+1
h	.over
r
DEC to
|
LDX to
�CPX #&FF
�BNE loop
�DEC to+1
�BNE loop
�.no_more
�RTS
�:
�.move_down
�
LDY #0
�
.loop2
�LDA (from),Y
�STA (to),Y
�LDA from

CMP until

BNE more2
LDA from+1
&CMP until+1
0BEQ no_more2
:
.more2
DINC from
N
BNE over2
XINC from+1
b
.over2
l
INC to
v
BNE loop2
�INC to+1
�
BNE loop2
�
.no_more2
�RTS
�:
�	.case
�
LDY #0
�
.loop3
�LDA (from),Y
�
CMP #�"A"
�BCC not_capital
�CMP #�"Z"+1
�BCS not_capital

�A #32
.not_capital
STA (to),Y
 INY
*CMP #&0D
4
BNE loop3
>RTS
H:
R
.event
\PHP:PHA
fTXA:PHA
pTYA:PHA
z:
�LDA tape
�BEQ not_cfs
�LDA #&B0
�LDX #&FF
�
LDY #0
�JSR osbyte
�:
�.not_cfs
�INC col_index
�LDA col_index
�� #1
�BNE col2
�LDA #&97

LDX #8
LDY palette1
JSR osbyte
$
LDX #9
.LDY palette1+1
8JSR osbyte
BJMP col1
L:
V	.col2
`LDA #&97
j
LDX #8
tLDY palette2
~JSR osbyte
�
LDX #9
�LDY palette2+1
�JSR osbyte
�:
�	.col1
�JSR set_time
�PLA:TAY
�PLA:TAX
�PLA:PLP
�RTS
�:
�
.set_time
LDX #time �&100

LDY #time �&100

LDA #4
JMP osword
(:
2.start_event
<LDX #event �&100
FLDY #event �&100
PSEI
ZSTX &220
dSTY &221
nCLI
xLDA #&13
�JSR osbyte
�JSR set_time
�LDA #&0E
�
LDX #5
�JMP osbyte
�:
�	.time
�EQUD &FFFFFFFF
�EQUB &FF
�	.tape
�
EQUB 0
�.col_index
�
EQUB 0

.palette1
EQUW &1514

.palette2
"EQUD &1150
,:
6	.pack
@
LDA #0
JSTA nib_index
TSTA nib_posn
^STA char_index
hBCS not_decompress
rJMP decompress
|:
�.not_decompress
�STA char_index
�TAY
�STA (to),Y
�:
�
.compress
�LDY char_index
�LDA (from),Y
�PHA
�:
�LDX #ref �&100
�STX ref_addr+1
�LDX #ref �&100
LDY #&0C

JSR instr
BPL char_found
&:
0LDX #ref2 �&100
:STX ref_addr+1
DLDX #ref2 �&100
NLDY #&3E
X
JSR instr
bBPL char_found
l:
vLDX #ref3 �&100
�STX ref_addr+1
�LDX #ref3 �&100
�LDY #&16
�
JSR instr
�:
�.char_found
�CPX #ref �&100
�BNE not_commonest
�TYA
�JSR store_nibble
�JMP end_chk
�:
�.not_commonest
CPX #ref2 �&100
BNE rare
TYA
 PHA
*	LSR A
4	LSR A
>	LSR A
H	LSR A
RCLC
\ADC #&0C
fJSR store_nibble
pPLA
z
� #&0F
�JSR store_nibble
�JMP end_chk
�:
�	.rare
�TYA
�PHA
�PHA
�LDA #&0F
�JSR store_nibble
�PLA
�	LSR A
�	LSR A
�	LSR A
	LSR A
CLC
ADC #&0E
$JSR store_nibble
.PLA
8
� #&0F
BJSR store_nibble
L:
V.end_chk
`PLA
jINC char_index
t
BEQ error
~CMP #&0D
�BNE compress
�RTS
�:
�.store_nibble
�LDY nib_index
�
�A (to),Y
�STA (to),Y
�LDA nib_posn
�� #1
�STA nib_posn
�BNE high_nibble
�INC nib_index

BEQ error

LDY nib_index

LDA #0
STA (to),Y
(RTS
2:
<.high_nibble
FLDA (to),Y
P	ASL A
Z	ASL A
d	ASL A
n	ASL A
xSTA (to),Y
�RTS
�:
�
.instr
�STX ref_addr
�	.loop
�DEY
�BMI out
�CMP (ref_addr),Y
�BNE loop
�.out
�RTS
�:
�
.error
BRK
BRK
EQUS "String"+�7
"BRK
,:
6.decompress
@JSR read_nib
JCMP #&0C
TBCS read_another
^LDY #ref �&100
hLDX #ref �&100
rJSR store_byte
|JMP end_chk2
�:
�.read_another
�TAX
�JSR read_nib
�CMP #&0E
�BCC two_nib_char
�CPX #&0F
�BEQ three_nib_char
�:
�.two_nib_char
�STA temp
�TXA
�SEC
SBC #&0C
	ASL A
	ASL A
&	ASL A
0	ASL A
:CLC
DADC temp
NLDY #ref2 �&100
XLDX #ref2 �&100
bJSR store_byte
lJMP end_chk2
v:
�.three_nib_char 
�TAX
�JSR read_nib
�CPX #&0F
�BNE first_str
�CLC
�ADC #&10
�.first_str
�LDY #ref3 �&100
�LDX #ref3 �&100
�JSR store_byte
�:
�
.end_chk2

BEQ error
CMP #&0D
BNE decompress
 RTS
*:
4.store_byte
>STY ref_addr+1
HSTX ref_addr
RTAY
\LDA (ref_addr),Y
fLDY char_index
pSTA (to),Y
zINC char_index
�RTS
�:
�
.read_nib
�LDY nib_index
�LDA (from),Y
�TAY
�LDA nib_posn
�� #1
�STA nib_posn
�BEQ lo_nib
�TYA
�	LSR A
�	LSR A
	LSR A
	LSR A
RTS
$.lo_nib
.INC nib_index
8TYA
B
� #&0F
LRTS
V:
`.ref
jEQUS "etaoinshrdl"+�32
t	.ref2
~EQUS "ubcfgjkmpqvwxyzA"
�EQUS "BCDEFGHIJKLMNOPQ"
�EQUS "RSTUVWXYZ0123456"
�"EQUS "789.,;:"+�34+"'()+-"+�13
�	.ref3
�!EQUS "$%&<>@["+�93+"`^{}|~#!"
�EQUS "=/*?\_"
�	]:�:�
�
00000000  0d 00 0a 0d f4 20 43 45  45 4d 41 47 53 0d 00 14  |..... CEEMAGS...|
00000010  16 f4 20 42 79 20 4a 6f  68 6e 20 47 65 72 61 67  |.. By John Gerag|
00000020  68 74 79 0d 00 1e 05 3a  0d 00 28 05 3a 0d 00 32  |hty....:..(.:..2|
00000030  06 eb 36 0d 00 3c 0e ee  85 20 f2 72 65 70 6f 72  |..6..<... .repor|
00000040  74 0d 00 46 12 f2 69 6e  69 74 3a d2 3d 93 2d 31  |t..F..init:.=.-1|
00000050  31 30 30 0d 00 50 05 3a  0d 00 5a 0f f4 20 63 6f  |100..P.:..Z.. co|
00000060  6e 73 74 61 6e 74 73 0d  00 64 20 65 73 63 25 3d  |nstants..d esc%=|
00000070  a3 3a 62 75 66 31 25 3d  26 37 30 30 3a 62 75 66  |.:buf1%=&700:buf|
00000080  32 25 3d 26 43 33 30 0d  00 6e 2f 73 74 72 31 25  |2%=&C30..n/str1%|
00000090  3d 62 75 66 32 25 3a 73  74 72 32 25 3d 62 75 66  |=buf2%:str2%=buf|
000000a0  32 25 2b 26 31 34 3a 73  74 72 33 25 3d 62 75 66  |2%+&14:str3%=buf|
000000b0  32 25 2b 26 33 30 0d 00  78 05 3a 0d 00 82 31 f1  |2%+&30..x.:...1.|
000000c0  27 27 c4 33 39 2c bd 31  32 39 29 8a 31 30 2c 32  |''.39,.129).10,2|
000000d0  29 bd 31 32 38 22 4d 61  67 61 7a 69 6e 65 20 44  |).128"Magazine D|
000000e0  61 74 61 62 61 73 65 22  bd 31 32 38 0d 00 8c 05  |atabase".128....|
000000f0  3a 0d 00 96 25 66 69 6c  24 3d 22 22 3a 6d 61 67  |:...%fil$="":mag|
00000100  24 3d 22 22 3a 64 61 74  24 3d 22 22 3a 74 6f 70  |$="":dat$="":top|
00000110  25 3d b8 50 2b 32 0d 00  a0 05 3a 0d 00 aa 0c dd  |%=.P+2....:.....|
00000120  20 f2 6d 65 6e 75 31 0d  00 b4 0d 21 50 25 3d 26  | .menu1....!P%=&|
00000130  31 35 35 30 0d 00 be 05  f5 0d 00 c8 0f ee 20 85  |1550.......... .|
00000140  20 f2 65 72 72 28 30 29  0d 00 d2 0c f2 63 6c 73  | .err(0).....cls|
00000150  28 31 31 29 0d 00 dc 25  6f 70 74 25 3d a4 6d 65  |(11)...%opt%=.me|
00000160  6e 75 28 31 31 2c 31 31  2c 35 2b 33 2a 28 66 69  |nu(11,11,5+3*(fi|
00000170  6c 24 3d 22 22 29 2c 31  29 0d 00 e6 0f ee 20 85  |l$=""),1)..... .|
00000180  20 f2 65 72 72 28 31 29  0d 00 f0 11 e7 20 6f 70  | .err(1)..... op|
00000190  74 25 3d 30 20 f2 6e 65  77 0d 00 fa 11 e7 20 6f  |t%=0 .new..... o|
000001a0  70 74 25 3d 31 20 f2 6f  6c 64 0d 01 04 12 e7 20  |pt%=1 .old..... |
000001b0  6f 70 74 25 3d 32 20 f2  73 61 76 65 0d 01 0e 12  |opt%=2 .save....|
000001c0  e7 20 6f 70 74 25 3d 33  20 f2 6e 61 6d 65 0d 01  |. opt%=3 .name..|
000001d0  18 13 e7 20 6f 70 74 25  3d 34 20 f2 6d 65 6e 75  |... opt%=4 .menu|
000001e0  32 0d 01 22 0a fd 20 65  73 63 25 0d 01 2c 05 3a  |2..".. esc%..,.:|
000001f0  0d 01 36 0a dd 20 f2 6e  65 77 0d 01 40 14 f1 8a  |..6.. .new..@...|
00000200  30 2c 31 29 22 4e 65 77  20 66 69 6c 65 22 0d 01  |0,1)"New file"..|
00000210  4a 09 f2 6e 61 6d 65 0d  01 54 0d 74 6f 70 25 3d  |J..name..T.top%=|
00000220  b8 50 2b 32 0d 01 5e 0a  f2 6d 65 6e 75 32 0d 01  |.P+2..^..menu2..|
00000230  68 05 3a 0d 01 72 0a dd  20 f2 6f 6c 64 0d 01 7c  |h.:..r.. .old..||
00000240  14 f1 8a 30 2c 31 29 22  4f 6c 64 20 66 69 6c 65  |...0,1)"Old file|
00000250  22 0d 01 86 09 f2 6e 61  6d 65 0d 01 90 0d 74 6f  |".....name....to|
00000260  70 25 3d b8 50 2b 32 0d  01 9a 15 ef 32 38 2c 30  |p%=.P+2.....28,0|
00000270  2c 32 34 2c 33 39 2c 31  31 2c 31 32 0d 01 a4 1d  |,24,39,11,12....|
00000280  ff 22 4c 4f 41 44 22 2b  bd 33 32 2b 66 69 6c 24  |."LOAD"+.32+fil$|
00000290  2b bd 33 32 2b c3 7e b8  50 0d 01 ae 19 74 6f 70  |+.32+.~.P....top|
000002a0  25 3d b8 50 2b 28 21 b8  50 20 80 20 26 46 46 46  |%=.P+(!.P . &FFF|
000002b0  46 29 0d 01 b8 0a f2 6d  65 6e 75 32 0d 01 c2 05  |F).....menu2....|
000002c0  3a 0d 01 cc 0b dd 20 f2  73 61 76 65 0d 01 d6 0c  |:..... .save....|
000002d0  f2 63 6c 73 28 31 31 29  0d 01 e0 10 6c 65 6e 25  |.cls(11)....len%|
000002e0  3d 74 6f 70 25 2d b8 50  0d 01 ea 1f 3f b8 50 3d  |=top%-.P....?.P=|
000002f0  6c 65 6e 25 3a 3f 28 b8  50 2b 31 29 3d 6c 65 6e  |len%:?(.P+1)=len|
00000300  25 20 81 26 31 30 30 0d  01 f4 0c 3f 54 25 3d a4  |% .&100....?T%=.|
00000310  63 66 73 0d 01 fe 28 ff  22 53 41 56 45 22 2b bd  |cfs...(."SAVE"+.|
00000320  33 32 2b 66 69 6c 24 2b  bd 33 32 2b c3 7e b8 50  |32+fil$+.32+.~.P|
00000330  2b bd 33 32 2b c3 7e 74  6f 70 25 0d 02 08 09 3f  |+.32+.~top%....?|
00000340  54 25 3d 30 0d 02 12 58  e7 20 a4 63 66 73 20 ef  |T%=0...X. .cfs .|
00000350  32 38 2c 30 2c 32 34 2c  33 39 2c 31 31 2c 31 32  |28,0,24,39,11,12|
00000360  3a f1 22 52 65 77 69 6e  64 2c 20 50 72 65 73 73  |:."Rewind, Press|
00000370  20 50 6c 61 79 20 74 6f  20 56 65 72 69 66 79 22  | Play to Verify"|
00000380  3a ff 22 4c 4f 41 44 22  2b bd 33 32 2b 66 69 6c  |:."LOAD"+.32+fil|
00000390  24 2b bd 33 32 2b 22 38  30 30 30 22 0d 02 1c 05  |$+.32+"8000"....|
000003a0  e1 0d 02 26 05 3a 0d 02  30 0b dd 20 f2 6e 61 6d  |...&.:..0.. .nam|
000003b0  65 0d 02 3a 05 f5 0d 02  44 0c f2 63 6c 73 28 31  |e..:....D..cls(1|
000003c0  31 29 0d 02 4e 32 66 69  6c 24 3d a4 69 6e 70 75  |1)..N2fil$=.inpu|
000003d0  74 28 22 46 69 6c 65 6e  61 6d 65 3a 22 2c 31 30  |t("Filename:",10|
000003e0  2c 31 31 2c 33 33 2c 31  32 36 2c 37 2d 33 2a a4  |,11,33,126,7-3*.|
000003f0  63 66 73 29 0d 02 58 0d  fd 20 66 69 6c 24 3e 22  |cfs)..X.. fil$>"|
00000400  22 0d 02 62 19 f1 8a 32  39 2c 31 29 89 31 30 3b  |"..b...29,1).10;|
00000410  8a 32 39 2c 31 29 66 69  6c 24 0d 02 6c 05 e1 0d  |.29,1)fil$..l...|
00000420  02 76 05 3a 0d 02 80 0c  dd 20 f2 6d 65 6e 75 32  |.v.:..... .menu2|
00000430  0d 02 8a 0c 66 6f 75 6e  64 25 3d a3 0d 02 94 0f  |....found%=.....|
00000440  ee 20 85 20 f2 65 72 72  28 31 29 0d 02 9e 05 f5  |. . .err(1).....|
00000450  0d 02 a8 0b f2 63 6c 73  28 33 29 0d 02 b2 0d 21  |.....cls(3)....!|
00000460  50 25 3d 26 31 31 31 34  0d 02 bc 19 6f 70 74 25  |P%=&1114....opt%|
00000470  3d a4 6d 65 6e 75 28 31  31 2c 31 31 2c 33 2c 32  |=.menu(11,11,3,2|
00000480  29 0d 02 c6 0f ee 20 85  20 f2 65 72 72 28 32 29  |)..... . .err(2)|
00000490  0d 02 d0 13 e7 20 6f 70  74 25 3d 30 20 f2 65 6e  |..... opt%=0 .en|
000004a0  74 72 79 0d 02 da 14 e7  20 6f 70 74 25 3d 31 20  |try..... opt%=1 |
000004b0  f2 70 72 65 66 69 78 0d  02 e4 14 e7 20 6f 70 74  |.prefix..... opt|
000004c0  25 3d 32 20 f2 73 65 61  72 63 68 0d 02 ee 0a fd  |%=2 .search.....|
000004d0  20 65 73 63 25 0d 02 f8  05 3a 0d 03 02 0c dd 20  | esc%....:..... |
000004e0  f2 65 6e 74 72 79 0d 03  0c 0d 21 50 25 3d 26 31  |.entry....!P%=&1|
000004f0  31 35 30 0d 03 16 0d 65  6e 74 25 3d 74 6f 70 25  |150....ent%=top%|
00000500  0d 03 20 05 f5 0d 03 2a  0d 74 6f 70 25 3d 65 6e  |.. ....*.top%=en|
00000510  74 25 0d 03 34 2e f1 8a  30 2c 33 29 22 4e 65 77  |t%..4...0,3)"New|
00000520  20 65 6e 74 72 79 22 8a  32 39 2c 33 29 22 46 72  | entry".29,3)"Fr|
00000530  65 65 3a 22 2b c3 28 92  2d 74 6f 70 25 29 89 31  |ee:"+.(.-top%).1|
00000540  0d 03 3e 0c f2 63 6c 73  28 31 31 29 0d 03 48 0d  |..>..cls(11)..H.|
00000550  f2 68 65 61 64 73 28 34  29 0d 03 52 2a f1 8a 30  |.heads(4)..R*..0|
00000560  2c 32 34 29 22 28 50 72  65 73 73 20 45 73 63 61  |,24)"(Press Esca|
00000570  70 65 20 77 68 65 6e 20  66 69 6e 69 73 68 65 64  |pe when finished|
00000580  29 22 3b 0d 03 5c 0a f7  20 8d 64 54 4d 0d 03 66  |)";..\.. .dTM..f|
00000590  16 e3 20 76 70 6f 73 25  3d 31 31 20 b8 20 31 39  |.. vpos%=11 . 19|
000005a0  20 88 32 0d 03 70 0d 24  62 75 66 32 25 3d 22 22  | .2..p.$buf2%=""|
000005b0  0d 03 7a 1a e7 20 76 70  6f 73 25 3d 31 31 20 24  |..z.. vpos%=11 $|
000005c0  62 75 66 32 25 3d 6d 61  67 24 0d 03 84 1a e7 20  |buf2%=mag$..... |
000005d0  76 70 6f 73 25 3d 31 33  20 24 62 75 66 32 25 3d  |vpos%=13 $buf2%=|
000005e0  64 61 74 24 0d 03 8e 0a  f2 73 74 6f 72 65 0d 03  |dat$.....store..|
000005f0  98 05 ed 0d 03 a2 0a fd  20 65 73 63 25 0d 03 ac  |........ esc%...|
00000600  05 3a 0d 03 b6 10 dd 20  f2 68 65 61 64 73 28 4e  |.:..... .heads(N|
00000610  25 29 0d 03 c0 0b f1 8a  30 2c 31 30 29 0d 03 ca  |%)......0,10)...|
00000620  0a f7 20 8d 64 4a 4d 0d  03 d4 0f e3 20 49 25 3d  |.. .dJM..... I%=|
00000630  30 20 b8 20 4e 25 0d 03  de 0e f3 20 68 24 3a f1  |0 . N%..... h$:.|
00000640  20 68 24 27 0d 03 e8 05  ed 0d 03 f2 05 e1 0d 03  | h$'............|
00000650  fc 05 3a 0d 04 06 0c dd  20 f2 73 74 6f 72 65 0d  |..:..... .store.|
00000660  04 10 0a f3 20 6c 65 6e  25 0d 04 1a 4a e7 20 24  |.... len%...J. $|
00000670  62 75 66 32 25 3d 22 22  20 24 62 75 66 32 25 3d  |buf2%="" $buf2%=|
00000680  a4 69 6e 70 75 74 28 22  22 2c 31 30 2c 76 70 6f  |.input("",10,vpo|
00000690  73 25 2c 33 32 2c 31 32  36 2c 6c 65 6e 25 29 20  |s%,32,126,len%) |
000006a0  8b 20 f1 8a 31 30 2c 76  70 6f 73 25 29 24 62 75  |. ..10,vpos%)$bu|
000006b0  66 32 25 0d 04 24 18 f2  70 61 63 6b 28 62 75 66  |f2%..$..pack(buf|
000006c0  32 25 2c 62 75 66 31 25  2c 31 29 0d 04 2e 16 65  |2%,buf1%,1)....e|
000006d0  6e 74 5f 6c 65 6e 25 3d  3f 26 37 37 2b 3f 26 37  |nt_len%=?&77+?&7|
000006e0  38 0d 04 38 27 e7 20 28  65 6e 74 25 2b 65 6e 74  |8..8'. (ent%+ent|
000006f0  5f 6c 65 6e 25 29 3e 92  20 f2 6e 6f 5f 72 6f 6f  |_len%)>. .no_roo|
00000700  6d 3a 2a 46 58 31 32 35  0d 04 42 16 65 6e 74 25  |m:*FX125..B.ent%|
00000710  3d 65 6e 74 25 2b 65 6e  74 5f 6c 65 6e 25 0d 04  |=ent%+ent_len%..|
00000720  4c 2b f2 6d 6f 76 65 28  62 75 66 31 25 2b 65 6e  |L+.move(buf1%+en|
00000730  74 5f 6c 65 6e 25 2d 31  2c 65 6e 74 25 2d 31 2c  |t_len%-1,ent%-1,|
00000740  62 75 66 31 25 2c 2d 31  29 0d 04 56 05 e1 0d 04  |buf1%,-1)..V....|
00000750  60 05 3a 0d 04 6a 0d dd  20 f2 70 72 65 66 69 78  |`.:..j.. .prefix|
00000760  0d 04 74 15 f2 63 6c 73  28 33 29 3a f1 22 50 72  |..t..cls(3):."Pr|
00000770  65 66 69 78 22 0d 04 7e  0d f2 68 65 61 64 73 28  |efix"..~..heads(|
00000780  31 29 0d 04 88 23 6d 61  67 24 3d a4 69 6e 70 75  |1)...#mag$=.inpu|
00000790  74 28 22 22 2c 31 30 2c  31 31 2c 33 32 2c 31 32  |t("",10,11,32,12|
000007a0  36 2c 31 35 29 0d 04 92  22 64 61 74 24 3d a4 69  |6,15)..."dat$=.i|
000007b0  6e 70 75 74 28 22 22 2c  31 30 2c 31 33 2c 33 32  |nput("",10,13,32|
000007c0  2c 31 32 36 2c 38 29 0d  04 9c 0a 2a 46 58 31 32  |,126,8)....*FX12|
000007d0  35 0d 04 a6 05 3a 0d 04  b0 0d dd 20 f2 73 65 61  |5....:..... .sea|
000007e0  72 63 68 0d 04 ba 0b f2  63 6c 73 28 33 29 0d 04  |rch.....cls(3)..|
000007f0  c4 0d 21 50 25 3d 26 31  35 31 30 0d 04 ce 0d f1  |..!P%=&1510.....|
00000800  22 53 65 61 72 63 68 22  0d 04 d8 1c f1 8a 30 2c  |"Search"......0,|
00000810  31 31 29 22 50 72 69 6e  74 6f 75 74 3f 28 59 2f  |11)"Printout?(Y/|
00000820  4e 29 22 3b 0d 04 e2 18  70 72 69 6e 74 25 3d 28  |N)";....print%=(|
00000830  a5 20 84 20 33 32 29 3d  97 22 79 22 0d 04 ec 0c  |. . 32)=."y"....|
00000840  f2 63 6c 73 28 31 31 29  0d 04 f6 15 e7 20 70 72  |.cls(11)..... pr|
00000850  69 6e 74 25 20 f2 70 72  69 6e 74 65 72 0d 05 00  |int% .printer...|
00000860  2e 24 73 74 72 31 25 3d  a4 69 6e 70 75 74 28 22  |.$str1%=.input("|
00000870  49 74 65 6d 20 4f 6e 65  3a 22 2c 31 30 2c 31 31  |Item One:",10,11|
00000880  2c 33 32 2c 31 32 36 2c  31 37 29 0d 05 0a 1f f1  |,32,126,17).....|
00000890  8a 36 2c 33 29 22 2e 2e  2e 2e 22 2b bd 33 34 2b  |.6,3)"...."+.34+|
000008a0  24 73 74 72 31 25 2b bd  33 34 0d 05 14 2e 24 73  |$str1%+.34....$s|
000008b0  74 72 32 25 3d a4 69 6e  70 75 74 28 22 49 74 65  |tr2%=.input("Ite|
000008c0  6d 20 54 77 6f 3a 22 2c  31 30 2c 31 33 2c 33 32  |m Two:",10,13,32|
000008d0  2c 31 32 36 2c 31 37 29  0d 05 1e 05 3a 0d 05 28  |,126,17)....:..(|
000008e0  0c f2 63 6c 73 28 31 31  29 0d 05 32 19 f1 8a 31  |..cls(11)..2...1|
000008f0  30 2c 35 29 bd 33 34 2b  24 73 74 72 32 25 2b bd  |0,5).34+$str2%+.|
00000900  33 34 0d 05 3c 16 f2 63  61 73 65 28 73 74 72 31  |34..<..case(str1|
00000910  25 2c 73 74 72 31 25 29  0d 05 46 16 f2 63 61 73  |%,str1%)..F..cas|
00000920  65 28 73 74 72 32 25 2c  73 74 72 32 25 29 0d 05  |e(str2%,str2%)..|
00000930  50 0d 62 6f 74 25 3d b8  50 2b 32 0d 05 5a 08 52  |P.bot%=.P+2..Z.R|
00000940  25 3d 30 0d 05 64 12 ef  32 33 2c 31 2c 30 3b 30  |%=0..d..23,1,0;0|
00000950  3b 30 3b 30 3b 0d 05 6e  0c 61 6d 65 6e 64 25 3d  |;0;0;..n.amend%=|
00000960  a3 0d 05 78 05 f5 0d 05  82 14 e7 20 62 6f 74 25  |...x....... bot%|
00000970  3d 74 6f 70 25 20 f2 6f  75 74 0d 05 8c 1f f1 8a  |=top% .out......|
00000980  32 39 2c 33 29 22 52 65  63 6f 72 64 3a 22 3b 52  |29,3)"Record:";R|
00000990  25 3a 52 25 3d 52 25 2b  31 0d 05 96 11 6f 6c 64  |%:R%=R%+1....old|
000009a0  5f 62 6f 74 25 3d 62 6f  74 25 0d 05 a0 2f e7 20  |_bot%=bot%.../. |
000009b0  a4 69 6e 73 74 72 20 84  20 61 6d 65 6e 64 25 20  |.instr . amend% |
000009c0  61 6d 65 6e 64 25 3d a3  3a f2 72 65 63 6f 72 64  |amend%=.:.record|
000009d0  3a 66 6f 75 6e 64 25 3d  b9 0d 05 aa 0a fd 20 65  |:found%=...... e|
000009e0  73 63 25 0d 05 b4 05 3a  0d 05 be 0e dd 20 f2 70  |sc%....:..... .p|
000009f0  72 69 6e 74 65 72 0d 05  c8 0c f1 8a 32 39 2c 33  |rinter......29,3|
00000a00  29 3b 0d 05 d2 0b 2a 46  58 31 35 2c 30 0d 05 dc  |);....*FX15,0...|
00000a10  0a 2a 46 58 33 2c 38 0d  05 e6 0c 41 25 3d 96 28  |.*FX3,8....A%=.(|
00000a20  2d 34 29 0d 05 f0 10 f1  22 50 72 69 6e 74 6f 75  |-4)....."Printou|
00000a30  74 22 3b 0d 05 fa 11 d1  3d 30 3a f5 20 fd 20 91  |t";.....=0:. . .|
00000a40  3e 31 30 30 0d 06 04 27  e7 20 96 28 2d 34 29 3c  |>100...'. .(-4)<|
00000a50  3e 41 25 20 70 72 69 6e  74 25 3d 30 3a f1 8a 32  |>A% print%=0:..2|
00000a60  39 2c 33 29 c4 38 2c 22  3f 22 29 0d 06 0e 0a 2a  |9,3).8,"?")....*|
00000a70  46 58 33 2c 30 0d 06 18  0b 2a 46 58 31 35 2c 30  |FX3,0....*FX15,0|
00000a80  0d 06 22 05 e1 0d 06 2c  05 3a 0d 06 36 0c dd 20  |.."....,.:..6.. |
00000a90  a4 69 6e 73 74 72 0d 06  40 0c ea 20 66 6f 75 6e  |.instr..@.. foun|
00000aa0  64 25 0d 06 4a 0e e3 20  49 25 3d 30 20 b8 20 34  |d%..J.. I%=0 . 4|
00000ab0  0d 06 54 17 f2 70 61 63  6b 28 62 6f 74 25 2c 73  |..T..pack(bot%,s|
00000ac0  74 72 33 25 2c 30 29 0d  06 5e 16 f2 63 61 73 65  |tr3%,0)..^..case|
00000ad0  28 73 74 72 33 25 2c 73  74 72 33 25 29 0d 06 68  |(str3%,str3%)..h|
00000ae0  27 e7 20 a7 24 73 74 72  33 25 2c 24 73 74 72 31  |'. .$str3%,$str1|
00000af0  25 29 20 66 6f 75 6e 64  25 3d 66 6f 75 6e 64 25  |%) found%=found%|
00000b00  20 84 20 31 0d 06 72 27  e7 20 a7 24 73 74 72 33  | . 1..r'. .$str3|
00000b10  25 2c 24 73 74 72 32 25  29 20 66 6f 75 6e 64 25  |%,$str2%) found%|
00000b20  3d 66 6f 75 6e 64 25 20  84 20 32 0d 06 7c 17 62  |=found% . 2..|.b|
00000b30  6f 74 25 3d 62 6f 74 25  2b 3f 26 37 37 2b 3f 26  |ot%=bot%+?&77+?&|
00000b40  37 38 0d 06 86 05 ed 0d  06 90 0d 3d 66 6f 75 6e  |78.........=foun|
00000b50  64 25 3d 33 0d 06 9a 05  3a 0d 06 a4 0d dd 20 f2  |d%=3....:..... .|
00000b60  72 65 63 6f 72 64 0d 06  ae 0b 2a 46 58 32 31 2c  |record....*FX21,|
00000b70  30 0d 06 b8 0c f2 63 6c  73 28 31 31 29 0d 06 c2  |0.....cls(11)...|
00000b80  13 e7 20 70 72 69 6e 74  25 3a 2a 46 58 33 2c 38  |.. print%:*FX3,8|
00000b90  0d 06 cc 0a f7 20 8d 64  4a 4d 0d 06 d6 13 66 69  |..... .dJM....fi|
00000ba0  65 6c 64 25 3d 6f 6c 64  5f 62 6f 74 25 0d 06 e0  |eld%=old_bot%...|
00000bb0  0e e3 20 49 25 3d 30 20  b8 20 34 0d 06 ea 19 f2  |.. I%=0 . 4.....|
00000bc0  70 61 63 6b 28 66 69 65  6c 64 25 2c 62 75 66 31  |pack(field%,buf1|
00000bd0  25 2c 30 29 0d 06 f4 17  f3 20 68 24 3a f1 68 24  |%,0)..... h$:.h$|
00000be0  3b 89 31 3b 24 62 75 66  31 25 27 0d 06 fe 1b 66  |;.1;$buf1%'....f|
00000bf0  69 65 6c 64 25 3d 66 69  65 6c 64 25 2b 3f 26 37  |ield%=field%+?&7|
00000c00  37 2b 3f 26 37 38 0d 07  08 05 ed 0d 07 12 0a 2a  |7+?&78.........*|
00000c10  46 58 33 2c 30 0d 07 1c  35 f1 8a 30 2c 32 34 29  |FX3,0...5..0,24)|
00000c20  22 28 52 65 74 3a 4e 65  78 74 20 20 43 6f 70 79  |"(Ret:Next  Copy|
00000c30  3a 41 6d 65 6e 64 20 20  43 54 52 4c 2b 44 65 6c  |:Amend  CTRL+Del|
00000c40  3a 44 65 6c 65 74 65 29  22 3b 0d 07 26 05 3a 0d  |:Delete)";..&.:.|
00000c50  07 30 05 f5 0d 07 3a 08  47 25 3d a5 0d 07 44 1f  |.0....:.G%=...D.|
00000c60  e7 20 a6 2d 32 20 80 20  47 25 3d 31 32 37 20 47  |. .-2 . G%=127 G|
00000c70  25 3d 32 35 35 3a f2 77  69 70 65 0d 07 4e 13 e7  |%=255:.wipe..N..|
00000c80  20 47 25 3d 31 33 35 20  f2 61 6d 65 6e 64 0d 07  | G%=135 .amend..|
00000c90  58 1d fd 20 47 25 3d 31  33 20 84 20 47 25 3d 31  |X.. G%=13 . G%=1|
00000ca0  33 35 20 84 20 47 25 3d  32 35 35 0d 07 62 08 f2  |35 . G%=255..b..|
00000cb0  72 65 74 0d 07 6c 05 e1  0d 07 76 05 3a 0d 07 80  |ret..l....v.:...|
00000cc0  0b dd 20 f2 77 69 70 65  0d 07 8a 0d 21 50 25 3d  |.. .wipe....!P%=|
00000cd0  26 31 31 35 34 0d 07 94  16 f5 20 fd 20 ac 20 28  |&1154..... . . (|
00000ce0  a6 2d 32 20 84 20 a6 2d  39 30 29 0d 07 9e 0a f7  |.-2 . .-90).....|
00000cf0  20 8d 64 54 4d 0d 07 a8  16 e3 20 76 70 6f 73 25  | .dTM..... vpos%|
00000d00  3d 31 31 20 b8 20 31 39  20 88 32 0d 07 b2 0a f3  |=11 . 19 .2.....|
00000d10  20 6c 65 6e 25 0d 07 bc  1a f1 8a 31 30 2c 76 70  | len%......10,vp|
00000d20  6f 73 25 29 c4 6c 65 6e  25 2c bd 31 33 30 29 0d  |os%).len%,.130).|
00000d30  07 c6 05 ed 0d 07 d0 1f  f2 6d 6f 76 65 28 62 6f  |.........move(bo|
00000d40  74 25 2c 6f 6c 64 5f 62  6f 74 25 2c 74 6f 70 25  |t%,old_bot%,top%|
00000d50  2c 30 29 0d 07 da 1b 74  6f 70 25 3d 74 6f 70 25  |,0)....top%=top%|
00000d60  2d 62 6f 74 25 2b 6f 6c  64 5f 62 6f 74 25 0d 07  |-bot%+old_bot%..|
00000d70  e4 11 62 6f 74 25 3d 6f  6c 64 5f 62 6f 74 25 0d  |..bot%=old_bot%.|
00000d80  07 ee 0d 21 50 25 3d 26  31 35 31 30 0d 07 f8 05  |...!P%=&1510....|
00000d90  e1 0d 08 02 05 3a 0d 08  0c 0a dd 20 f2 6f 75 74  |.....:..... .out|
00000da0  0d 08 16 16 f1 8a 33 39  2c 32 34 29 c4 33 39 2c  |......39,24).39,|
00000db0  bd 31 32 37 29 3b 0d 08  20 2e e7 20 66 6f 75 6e  |.127);.. .. foun|
00000dc0  64 25 20 f1 20 22 4e 6f  20 6d 6f 72 65 2e 2e 2e  |d% . "No more...|
00000dd0  22 3b 8b 20 f1 20 22 4e  6f 20 6d 61 74 63 68 2e  |";. . "No match.|
00000de0  2e 2e 22 3b 0d 08 2a 14  f1 22 50 72 65 73 73 20  |..";..*.."Press |
00000df0  45 73 63 61 70 65 22 3b  0d 08 34 0c f5 20 fd 20  |Escape";..4.. . |
00000e00  65 73 63 25 0d 08 3e 05  3a 0d 08 48 0c dd 20 f2  |esc%..>.:..H.. .|
00000e10  61 6d 65 6e 64 0d 08 52  0c 61 6d 65 6e 64 25 3d  |amend..R.amend%=|
00000e20  b9 0d 08 5c 11 62 6f 74  25 3d 6f 6c 64 5f 62 6f  |...\.bot%=old_bo|
00000e30  74 25 0d 08 66 13 66 69  65 6c 64 25 3d 6f 6c 64  |t%..f.field%=old|
00000e40  5f 62 6f 74 25 0d 08 70  0c f2 63 6c 73 28 32 33  |_bot%..p..cls(23|
00000e50  29 0d 08 7a 17 f1 8a 30  2c 39 29 22 41 6d 65 6e  |)..z...0,9)"Amen|
00000e60  64 69 6e 67 2e 2e 2e 22  0d 08 84 18 6f 70 74 25  |ding..."....opt%|
00000e70  3d a4 6d 65 6e 75 28 30  2c 31 31 2c 35 2c 33 29  |=.menu(0,11,5,3)|
00000e80  0d 08 8e 0a f7 20 8d 64  54 4d 0d 08 98 11 e3 20  |..... .dTM..... |
00000e90  49 25 3d 30 20 b8 20 6f  70 74 25 0d 08 a2 0a f3  |I%=0 . opt%.....|
00000ea0  20 6c 65 6e 25 0d 08 ac  19 f2 70 61 63 6b 28 66  | len%.....pack(f|
00000eb0  69 65 6c 64 25 2c 62 75  66 31 25 2c 30 29 0d 08  |ield%,buf1%,0)..|
00000ec0  b6 16 6f 6c 64 5f 6c 65  6e 25 3d 3f 26 37 37 2b  |..old_len%=?&77+|
00000ed0  3f 26 37 38 0d 08 c0 24  e7 20 49 25 3c 6f 70 74  |?&78...$. I%<opt|
00000ee0  25 20 66 69 65 6c 64 25  3d 66 69 65 6c 64 25 2b  |% field%=field%+|
00000ef0  6f 6c 64 5f 6c 65 6e 25  0d 08 ca 05 ed 0d 08 d4  |old_len%........|
00000f00  2e 24 73 74 72 33 25 3d  a4 69 6e 70 75 74 28 22  |.$str3%=.input("|
00000f10  22 2c 31 30 2c 31 31 2b  6f 70 74 25 2a 32 2c 33  |",10,11+opt%*2,3|
00000f20  32 2c 31 32 36 2c 6c 65  6e 25 29 0d 08 de 12 ef  |2,126,len%).....|
00000f30  32 33 2c 31 2c 30 3b 30  3b 30 3b 30 3b 0d 08 e8  |23,1,0;0;0;0;...|
00000f40  05 3a 0d 08 f2 18 f2 70  61 63 6b 28 73 74 72 33  |.:.....pack(str3|
00000f50  25 2c 62 75 66 31 25 2c  31 29 0d 08 fc 16 6e 65  |%,buf1%,1)....ne|
00000f60  77 5f 6c 65 6e 25 3d 3f  26 37 37 2b 3f 26 37 38  |w_len%=?&77+?&78|
00000f70  0d 09 06 05 3a 0d 09 10  1b 64 6c 65 6e 25 3d 6e  |....:....dlen%=n|
00000f80  65 77 5f 6c 65 6e 25 2d  6f 6c 64 5f 6c 65 6e 25  |ew_len%-old_len%|
00000f90  0d 09 1a 20 e7 20 28 74  6f 70 25 2b 64 6c 65 6e  |... . (top%+dlen|
00000fa0  25 29 3e 3d 92 20 f2 6e  6f 5f 72 6f 6f 6d 3a e1  |%)>=. .no_room:.|
00000fb0  0d 09 24 2e e7 20 64 6c  65 6e 25 3e 30 20 f2 6d  |..$.. dlen%>0 .m|
00000fc0  6f 76 65 28 74 6f 70 25  2c 74 6f 70 25 2b 64 6c  |ove(top%,top%+dl|
00000fd0  65 6e 25 2c 66 69 65 6c  64 25 2c 2d 31 29 0d 09  |en%,field%,-1)..|
00000fe0  2e 3b e7 20 64 6c 65 6e  25 3c 30 20 f2 6d 6f 76  |.;. dlen%<0 .mov|
00000ff0  65 28 66 69 65 6c 64 25  2b 6f 6c 64 5f 6c 65 6e  |e(field%+old_len|
00001000  25 2c 66 69 65 6c 64 25  2b 6e 65 77 5f 6c 65 6e  |%,field%+new_len|
00001010  25 2c 74 6f 70 25 2c 30  29 0d 09 38 36 f2 6d 6f  |%,top%,0)..86.mo|
00001020  76 65 28 62 75 66 31 25  2b 6e 65 77 5f 6c 65 6e  |ve(buf1%+new_len|
00001030  25 2d 31 2c 66 69 65 6c  64 25 2b 6e 65 77 5f 6c  |%-1,field%+new_l|
00001040  65 6e 25 2d 31 2c 62 75  66 31 25 2c 2d 31 29 0d  |en%-1,buf1%,-1).|
00001050  09 42 13 74 6f 70 25 3d  74 6f 70 25 2b 64 6c 65  |.B.top%=top%+dle|
00001060  6e 25 0d 09 4c 0b 52 25  3d 52 25 2d 31 0d 09 56  |n%..L.R%=R%-1..V|
00001070  0d f1 8a 30 2c 39 29 89  31 31 0d 09 60 05 e1 0d  |...0,9).11..`...|
00001080  09 6a 05 3a 0d 09 74 0e  dd 20 f2 6e 6f 5f 72 6f  |.j.:..t.. .no_ro|
00001090  6f 6d 0d 09 7e 0c f2 63  6c 73 28 31 31 29 0d 09  |om..~..cls(11)..|
000010a0  88 1d f1 22 4e 6f 20 72  6f 6f 6d 2e 2e 2e 50 72  |..."No room...Pr|
000010b0  65 73 73 20 52 65 74 75  72 6e 22 0d 09 92 11 f5  |ess Return".....|
000010c0  20 fd 20 a5 3d 31 33 3a  f2 72 65 74 0d 09 9c 05  | . .=13:.ret....|
000010d0  e1 0d 09 a6 05 3a 0d 09  b0 21 dd 20 f2 6d 6f 76  |.....:...!. .mov|
000010e0  65 28 66 72 6f 6d 25 2c  74 6f 25 2c 75 6e 74 69  |e(from%,to%,unti|
000010f0  6c 25 2c 75 70 25 29 0d  09 ba 23 21 26 37 30 3d  |l%,up%)...#!&70=|
00001100  66 72 6f 6d 25 3a 21 26  37 32 3d 74 6f 25 3a 21  |from%:!&72=to%:!|
00001110  26 37 34 3d 75 6e 74 69  6c 25 0d 09 c4 15 e7 20  |&74=until%..... |
00001120  75 70 25 20 d6 20 55 25  20 8b 20 d6 20 44 25 0d  |up% . U% . . D%.|
00001130  09 ce 05 e1 0d 09 d8 05  3a 0d 09 e2 19 dd 20 f2  |........:..... .|
00001140  70 61 63 6b 28 66 72 6f  6d 25 2c 74 6f 25 2c 43  |pack(from%,to%,C|
00001150  25 29 0d 09 ec 1c 21 26  37 30 3d 66 72 6f 6d 25  |%)....!&70=from%|
00001160  3a 21 26 37 32 3d 74 6f  25 3a d6 20 53 25 0d 09  |:!&72=to%:. S%..|
00001170  f6 05 e1 0d 0a 00 05 3a  0d 0a 0a 16 dd 20 f2 63  |.......:..... .c|
00001180  61 73 65 28 66 72 6f 6d  25 2c 74 6f 25 29 0d 0a  |ase(from%,to%)..|
00001190  14 1c 21 26 37 30 3d 66  72 6f 6d 25 3a 21 26 37  |..!&70=from%:!&7|
000011a0  32 3d 74 6f 25 3a d6 20  4b 25 0d 0a 1e 05 e1 0d  |2=to%:. K%......|
000011b0  0a 28 05 3a 0d 0a 32 23  dd 20 a4 6d 65 6e 75 28  |.(.:..2#. .menu(|
000011c0  70 6f 73 25 2c 76 70 6f  73 25 2c 69 74 65 6d 73  |pos%,vpos%,items|
000011d0  25 2c 73 65 74 25 29 0d  0a 3c 12 ef 32 33 2c 31  |%,set%)..<..23,1|
000011e0  2c 30 3b 30 3b 30 3b 30  3b 0d 0a 46 31 f1 8a 32  |,0;0;0;0;..F1..2|
000011f0  2c 32 34 29 22 28 53 65  6c 65 63 74 20 77 69 74  |,24)"(Select wit|
00001200  68 20 53 50 41 43 45 42  41 52 2c 20 74 68 65 6e  |h SPACEBAR, then|
00001210  20 52 45 54 55 52 4e 29  22 3b 0d 0a 50 0c f2 72  | RETURN)";..P..r|
00001220  65 73 74 6f 72 65 0d 0a  5a 17 e3 20 6f 70 74 25  |estore..Z.. opt%|
00001230  3d 30 20 b8 20 69 74 65  6d 73 25 2d 32 0d 0a 64  |=0 . items%-2..d|
00001240  0a f3 20 6f 70 74 24 0d  0a 6e 1c f1 8a 70 6f 73  |.. opt$..n...pos|
00001250  25 2c 76 70 6f 73 25 2b  6f 70 74 25 2a 32 29 6f  |%,vpos%+opt%*2)o|
00001260  70 74 24 0d 0a 78 05 ed  0d 0a 82 0a f3 20 6f 70  |pt$..x....... op|
00001270  74 24 0d 0a 8c 0b f2 68  69 6c 69 74 65 0d 0a 96  |t$.....hilite...|
00001280  05 f5 0d 0a a0 12 e7 20  a5 3d 33 32 20 f2 68 69  |....... .=32 .hi|
00001290  6c 69 74 65 0d 0a aa 0a  fd 20 a6 2d 37 34 0d 0a  |lite..... .-74..|
000012a0  b4 08 f2 72 65 74 0d 0a  be 12 ef 32 33 2c 31 2c  |...ret.....23,1,|
000012b0  31 3b 30 3b 30 3b 30 3b  0d 0a c8 09 3d 6f 70 74  |1;0;0;0;....=opt|
000012c0  25 0d 0a d2 05 3a 0d 0a  dc 0d dd 20 f2 68 69 6c  |%....:..... .hil|
000012d0  69 74 65 0d 0a e6 1c f1  8a 70 6f 73 25 2c 76 70  |ite......pos%,vp|
000012e0  6f 73 25 2b 6f 70 74 25  2a 32 29 6f 70 74 24 0d  |os%+opt%*2)opt$.|
000012f0  0a f0 18 6f 70 74 25 3d  28 6f 70 74 25 2b 31 29  |...opt%=(opt%+1)|
00001300  83 69 74 65 6d 73 25 0d  0a fa 15 e7 20 6f 70 74  |.items%..... opt|
00001310  25 3d 30 20 f2 72 65 73  74 6f 72 65 0d 0b 04 0b  |%=0 .restore....|
00001320  fb 30 3a fb 31 32 39 0d  0b 0e 0a f3 20 6f 70 74  |.0:.129..... opt|
00001330  24 0d 0b 18 1c f1 8a 70  6f 73 25 2c 76 70 6f 73  |$......pos%,vpos|
00001340  25 2b 6f 70 74 25 2a 32  29 6f 70 74 24 0d 0b 22  |%+opt%*2)opt$.."|
00001350  0b fb 31 3a fb 31 32 38  0d 0b 2c 05 e1 0d 0b 36  |..1:.128..,....6|
00001360  05 3a 0d 0b 40 3b dd 20  a4 69 6e 70 75 74 28 70  |.:..@;. .input(p|
00001370  72 6f 6d 70 74 24 2c 70  6f 73 25 2c 76 70 6f 73  |rompt$,pos%,vpos|
00001380  25 2c 61 73 63 5f 6d 69  6e 25 2c 61 73 63 5f 6d  |%,asc_min%,asc_m|
00001390  61 78 25 2c 6c 65 6e 5f  6d 61 78 25 29 0d 0b 4a  |ax%,len_max%)..J|
000013a0  0a ea 20 6c 65 6e 25 0d  0b 54 47 f1 8a 70 6f 73  |.. len%..TG..pos|
000013b0  25 2c 76 70 6f 73 25 29  c4 6c 65 6e 5f 6d 61 78  |%,vpos%).len_max|
000013c0  25 2c bd 31 33 30 29 3b  22 5d 22 8a 70 6f 73 25  |%,.130);"]".pos%|
000013d0  2d a9 70 72 6f 6d 70 74  24 2d 31 2c 76 70 6f 73  |-.prompt$-1,vpos|
000013e0  25 29 70 72 6f 6d 70 74  24 2b 22 5b 22 3b 0d 0b  |%)prompt$+"[";..|
000013f0  5e 05 f5 0d 0b 68 14 3f  28 62 75 66 31 25 2b 6c  |^....h.?(buf1%+l|
00001400  65 6e 25 29 3d 31 33 0d  0b 72 08 47 25 3d a5 0d  |en%)=13..r.G%=..|
00001410  0b 7c 11 e7 20 47 25 3d  31 32 37 20 f2 64 65 6c  |.|.. G%=127 .del|
00001420  0d 0b 86 1b e7 20 47 25  3d 32 31 20 f5 20 f2 64  |..... G%=21 . .d|
00001430  65 6c 3a fd 20 6c 65 6e  25 3d 30 0d 0b 90 55 e7  |el:. len%=0...U.|
00001440  20 47 25 3e 3d 61 73 63  5f 6d 69 6e 25 20 80 20  | G%>=asc_min% . |
00001450  47 25 3c 3d 61 73 63 5f  6d 61 78 25 20 80 20 6c  |G%<=asc_max% . l|
00001460  65 6e 25 3c 6c 65 6e 5f  6d 61 78 25 20 8c 20 3f  |en%<len_max% . ?|
00001470  28 62 75 66 31 25 2b 6c  65 6e 25 29 3d 47 25 3a  |(buf1%+len%)=G%:|
00001480  6c 65 6e 25 3d 6c 65 6e  25 2b 31 3a ef 47 25 3b  |len%=len%+1:.G%;|
00001490  0d 0b 9a 0b fd 20 47 25  3d 31 33 0d 0b a4 08 f2  |..... G%=13.....|
000014a0  72 65 74 0d 0b ae 0b 3d  24 62 75 66 31 25 0d 0b  |ret....=$buf1%..|
000014b0  b8 05 3a 0d 0b c2 0a dd  20 f2 64 65 6c 0d 0b cc  |..:..... .del...|
000014c0  32 e7 20 6c 65 6e 25 3e  30 20 ef 38 2c 31 33 30  |2. len%>0 .8,130|
000014d0  2c 38 3a 6c 65 6e 25 3d  6c 65 6e 25 2d 31 3a 3f  |,8:len%=len%-1:?|
000014e0  28 62 75 66 31 25 2b 6c  65 6e 25 29 3d 31 33 0d  |(buf1%+len%)=13.|
000014f0  0b d6 05 e1 0d 0b e0 05  3a 0d 0b ea 0a dd 20 f2  |........:..... .|
00001500  72 65 74 0d 0b f4 16 f5  20 fd 20 ac 20 a6 2d 37  |ret..... . . .-7|
00001510  34 3a 2a 46 58 32 31 2c  30 0d 0b fe 05 e1 0d 0c  |4:*FX21,0.......|
00001520  08 05 3a 0d 0c 12 12 dd  20 f2 65 72 72 28 6c 65  |..:..... .err(le|
00001530  76 65 6c 25 29 0d 0c 1c  0b fb 31 3a fb 31 32 38  |vel%).....1:.128|
00001540  0d 0c 26 09 3f 54 25 3d  30 0d 0c 30 0a 2a 46 58  |..&.?T%=0..0.*FX|
00001550  33 2c 30 0d 0c 3a 13 e7  20 9f 3c 3e 31 37 20 f2  |3,0..:.. .<>17 .|
00001560  72 65 70 6f 72 74 0d 0c  44 18 e7 20 9f 3d 31 37  |report..D.. .=17|
00001570  20 80 20 a6 2d 32 20 f2  72 65 70 6f 72 74 0d 0c  | . .-2 .report..|
00001580  4e 15 e7 20 6c 65 76 65  6c 25 3d 31 20 f2 6d 65  |N.. level%=1 .me|
00001590  6e 75 31 0d 0c 58 15 e7  20 6c 65 76 65 6c 25 3d  |nu1..X.. level%=|
000015a0  32 20 f2 6d 65 6e 75 32  0d 0c 62 05 3a 0d 0c 6c  |2 .menu2..b.:..l|
000015b0  0b f2 63 6c 73 28 33 29  0d 0c 76 20 f1 8a 31 30  |..cls(3)..v ..10|
000015c0  2c 31 31 29 22 41 72 65  20 79 6f 75 20 73 75 72  |,11)"Are you sur|
000015d0  65 3f 28 59 2f 4e 29 22  0d 0c 80 1b e7 20 28 a5  |e?(Y/N)"..... (.|
000015e0  20 84 20 33 32 29 3c 3e  97 22 79 22 20 f2 6d 65  | . 32)<>."y" .me|
000015f0  6e 75 31 0d 0c 8a 05 3a  0d 0c 94 0d dd 20 f2 72  |nu1....:..... .r|
00001600  65 70 6f 72 74 0d 0c 9e  09 ee 20 85 20 87 0d 0c  |eport..... . ...|
00001610  a8 0a 2a 46 58 34 2c 30  0d 0c b2 0b 2a 46 58 31  |..*FX4,0....*FX1|
00001620  33 2c 35 0d 0c bc 0c 2a  46 58 32 32 35 2c 31 0d  |3,5....*FX225,1.|
00001630  0c c6 09 ef 32 32 2c 36  0d 0c d0 13 e7 20 9f 3d  |....22,6..... .=|
00001640  31 37 20 8c 20 d2 3d b8  50 3a e0 0d 0c da 05 f6  |17 . .=.P:......|
00001650  0d 0c e4 45 e7 20 a4 62  61 73 69 63 32 20 f1 22  |...E. .basic2 ."|
00001660  3a 22 27 3a 24 26 37 30  30 3d 22 4c 49 53 54 22  |:"':$&700="LIST"|
00001670  2b c3 9e 3a 24 26 37 31  30 3d 24 26 38 41 46 36  |+..:$&710=$&8AF6|
00001680  3a 21 26 37 31 38 3d 26  38 42 30 42 34 43 3a d6  |:!&718=&8B0B4C:.|
00001690  20 26 37 31 30 0d 0c ee  12 f1 22 20 61 74 20 6c  | &710....." at l|
000016a0  69 6e 65 20 22 3b 9e 0d  0c f8 05 e0 0d 0d 02 05  |ine ";..........|
000016b0  3a 0d 0d 0c 0d dd 20 a4  62 61 73 69 63 32 0d 0d  |:..... .basic2..|
000016c0  16 10 3d 3f 26 38 30 31  35 3d 97 22 32 22 0d 0d  |..=?&8015=."2"..|
000016d0  20 05 3a 0d 0d 2a 0a dd  20 a4 63 66 73 0d 0d 34  | .:..*.. .cfs..4|
000016e0  0d 41 25 3d 30 3a 59 25  3d 30 0d 0d 3e 15 3d 28  |.A%=0:Y%=0..>.=(|
000016f0  ba 28 26 46 46 44 41 29  80 26 46 46 29 3d 31 0d  |.(&FFDA).&FF)=1.|
00001700  0d 48 05 3a 0d 0d 52 0e  dd 20 f2 63 6c 73 28 74  |.H.:..R.. .cls(t|
00001710  25 29 0d 0d 5c 20 ef 32  38 2c 30 2c 32 34 2c 33  |%)..\ .28,0,24,3|
00001720  39 2c 74 25 2c 31 32 2c  32 36 2c 33 31 2c 30 2c  |9,t%,12,26,31,0,|
00001730  74 25 0d 0d 66 05 e1 0d  0d 70 05 3a 0d 0d 7a 0e  |t%..f....p.:..z.|
00001740  dd 20 f2 72 65 73 74 6f  72 65 0d 0d 84 0a f7 20  |. .restore..... |
00001750  8d 64 4a 4d 0d 0d 8e 13  e7 20 73 65 74 25 3d 31  |.dJM..... set%=1|
00001760  20 f7 20 8d 74 76 4d 0d  0d 98 13 e7 20 73 65 74  | . .tvM..... set|
00001770  25 3d 32 20 f7 20 8d 64  40 4d 0d 0d a2 05 e1 0d  |%=2 . .d@M......|
00001780  0d ac 05 3a 0d 0d b6 69  dc 20 22 53 74 61 72 74  |...:...i. "Start|
00001790  20 4e 65 77 20 46 69 6c  65 2e 2e 2e 22 2c 22 4c  | New File...","L|
000017a0  6f 61 64 20 4f 6c 64 20  46 69 6c 65 2e 2e 2e 2e  |oad Old File....|
000017b0  22 2c 22 53 61 76 65 2e  2e 2e 2e 2e 2e 2e 2e 2e  |","Save.........|
000017c0  2e 2e 2e 2e 22 2c 22 52  65 6e 61 6d 65 2e 2e 2e  |....","Rename...|
000017d0  2e 2e 2e 2e 2e 2e 2e 2e  22 2c 22 52 65 73 74 61  |........","Resta|
000017e0  72 74 2e 2e 2e 2e 2e 2e  2e 2e 2e 2e 22 0d 0d c0  |rt.........."...|
000017f0  41 dc 20 22 4d 61 6b 65  20 4e 65 77 20 45 6e 74  |A. "Make New Ent|
00001800  72 79 2e 2e 2e 22 2c 22  53 65 74 20 50 72 65 66  |ry...","Set Pref|
00001810  69 78 2e 2e 2e 2e 2e 2e  2e 22 2c 22 53 65 61 72  |ix.......","Sear|
00001820  63 68 2e 2e 2e 2e 2e 2e  2e 2e 2e 2e 2e 22 0d 0d  |ch..........."..|
00001830  ca 41 dc 20 22 4d 61 67  61 7a 69 6e 65 3a 22 2c  |.A. "Magazine:",|
00001840  22 44 61 74 65 2e 2e 2e  2e 3a 22 2c 22 50 61 67  |"Date....:","Pag|
00001850  65 2e 2e 2e 2e 3a 22 2c  22 54 69 74 6c 65 2e 2e  |e....:","Title..|
00001860  2e 3a 22 2c 22 54 65 78  74 2e 2e 2e 2e 3a 22 0d  |.:","Text....:".|
00001870  0d d4 13 dc 20 31 35 2c  38 2c 34 2c 32 39 2c 31  |.... 15,8,4,29,1|
00001880  34 39 0d 0d de 05 3a 0d  0d e8 0b dd 20 f2 69 6e  |49....:..... .in|
00001890  69 74 0d 0d f2 2a e7 20  a3 20 5b 28 43 6f 6d 70  |it...*. . [(Comp|
000018a0  61 74 61 62 69 6c 69 74  79 20 77 69 74 68 20 53  |atability with S|
000018b0  75 70 65 72 63 68 61 72  67 65 72 29 0d 0d fc 0d  |upercharger)....|
000018c0  f2 61 73 73 65 6d 62 6c  65 0d 0e 06 11 d6 20 73  |.assemble..... s|
000018d0  74 61 72 74 5f 65 76 65  6e 74 0d 0e 10 0a 2a 46  |tart_event....*F|
000018e0  58 34 2c 31 0d 0e 1a 0c  2a 46 58 32 32 35 2c 30  |X4,1....*FX225,0|
000018f0  0d 0e 24 27 ef 32 33 2c  31 32 38 2c 32 34 2c 36  |..$'.23,128,24,6|
00001900  30 2c 36 30 2c 31 32 36  2c 31 32 36 2c 30 2c 31  |0,60,126,126,0,1|
00001910  32 36 2c 36 30 2c 30 0d  0e 2e 23 ef 32 33 2c 31  |26,60,0...#.23,1|
00001920  32 39 2c 32 35 35 2c 30  2c 32 35 35 2c 30 2c 32  |29,255,0,255,0,2|
00001930  35 35 2c 30 2c 32 35 35  2c 30 0d 0e 38 1e ef 32  |55,0,255,0..8..2|
00001940  33 2c 31 33 30 2c 30 2c  38 34 2c 30 2c 38 34 2c  |3,130,0,84,0,84,|
00001950  30 2c 38 34 2c 30 2c 30  0d 0e 42 3f 55 25 3d 6d  |0,84,0,0..B?U%=m|
00001960  6f 76 65 5f 75 70 3a 44  25 3d 6d 6f 76 65 5f 64  |ove_up:D%=move_d|
00001970  6f 77 6e 3a 54 25 3d 74  61 70 65 3a 4b 25 3d 63  |own:T%=tape:K%=c|
00001980  61 73 65 3a 50 25 3d 70  61 6c 65 74 74 65 32 3a  |ase:P%=palette2:|
00001990  53 25 3d 70 61 63 6b 0d  0e 4c 1a f4 20 65 78 74  |S%=pack..L.. ext|
000019a0  72 61 20 6c 69 6e 65 20  67 6f 65 73 20 68 65 72  |ra line goes her|
000019b0  65 0d 0e 56 05 e1 0d 0e  60 05 3a 0d 0e 6a 10 dd  |e..V....`.:..j..|
000019c0  20 f2 66 61 73 74 5f 73  61 76 65 0d 0e 74 0d f2  | .fast_save..t..|
000019d0  61 73 73 65 6d 62 6c 65  0d 0e 7e 0c 3f 74 61 70  |assemble..~.?tap|
000019e0  65 3d 2d 31 0d 0e 88 17  21 70 61 6c 65 74 74 65  |e=-1....!palette|
000019f0  31 3d 26 31 31 31 30 31  31 31 30 0d 0e 92 11 d6  |1=&11101110.....|
00001a00  20 73 74 61 72 74 5f 65  76 65 6e 74 0d 0e 9c 2a  | start_event...*|
00001a10  ff 22 53 41 56 45 22 2b  bd 33 32 2b 22 43 45 45  |."SAVE"+.32+"CEE|
00001a20  4d 41 47 53 22 2b bd 33  32 2b c3 7e 90 2b bd 33  |MAGS"+.32+.~.+.3|
00001a30  32 2b c3 7e b8 50 0d 0e  a6 0b 2a 46 58 31 33 2c  |2+.~.P....*FX13,|
00001a40  35 0d 0e b0 05 e1 0d 0e  ba 05 3a 0d 0e c4 0e dd  |5.........:.....|
00001a50  20 f2 73 68 6f 72 74 65  6e 0d 0e ce 0a f7 20 8d  | .shorten..... .|
00001a60  64 72 4d 0d 0e d8 15 61  64 64 25 3d 21 26 31 43  |drM....add%=!&1C|
00001a70  20 80 20 26 46 46 46 46  0d 0e e2 17 21 28 61 64  | . &FFFF....!(ad|
00001a80  64 25 2d 31 29 3d 26 46  46 30 44 45 31 30 35 0d  |d%-1)=&FF0DE105.|
00001a90  0e ec 16 3f 26 31 32 3d  28 61 64 64 25 2b 33 29  |...?&12=(add%+3)|
00001aa0  83 26 31 30 30 0d 0e f6  16 3f 26 31 33 3d 28 61  |.&100....?&13=(a|
00001ab0  64 64 25 2b 33 29 81 26  31 30 30 0d 0f 00 05 f9  |dd%+3).&100.....|
00001ac0  0d 0f 0a 05 3a 0d 0f 14  0f dd 20 f2 61 73 73 65  |....:..... .asse|
00001ad0  6d 62 6c 65 0d 0f 1e 0b  2a 46 58 31 33 2c 35 0d  |mble....*FX13,5.|
00001ae0  0f 28 0c 66 72 6f 6d 3d  26 37 30 0d 0f 32 0a 74  |.(.from=&70..2.t|
00001af0  6f 3d 26 37 32 0d 0f 3c  0d 75 6e 74 69 6c 3d 26  |o=&72..<.until=&|
00001b00  37 34 0d 0f 46 10 72 65  66 5f 61 64 64 72 3d 26  |74..F.ref_addr=&|
00001b10  37 34 0d 0f 50 12 63 68  61 72 5f 69 6e 64 65 78  |74..P.char_index|
00001b20  3d 26 37 36 0d 0f 5a 11  6e 69 62 5f 69 6e 64 65  |=&76..Z.nib_inde|
00001b30  78 3d 26 37 37 0d 0f 64  10 6e 69 62 5f 70 6f 73  |x=&77..d.nib_pos|
00001b40  6e 3d 26 37 38 0d 0f 6e  0c 74 65 6d 70 3d 26 37  |n=&78..n.temp=&7|
00001b50  39 0d 0f 78 10 6f 73 62  79 74 65 3d 26 46 46 46  |9..x.osbyte=&FFF|
00001b60  34 0d 0f 82 10 6f 73 77  6f 72 64 3d 26 46 46 46  |4....osword=&FFF|
00001b70  31 0d 0f 8c 0d 63 6f 64  65 3d 26 39 30 30 0d 0f  |1....code=&900..|
00001b80  96 05 3a 0d 0f a0 13 e3  20 70 61 73 73 3d 30 20  |..:..... pass=0 |
00001b90  b8 20 32 20 88 32 0d 0f  aa 0b 50 25 3d 63 6f 64  |. 2 .2....P%=cod|
00001ba0  65 0d 0f b4 0d 5b 4f 50  54 20 70 61 73 73 0d 0f  |e....[OPT pass..|
00001bb0  be 0c 2e 6d 6f 76 65 5f  75 70 0d 0f c8 0a 4c 44  |...move_up....LD|
00001bc0  59 20 23 30 0d 0f d2 09  2e 6c 6f 6f 70 0d 0f dc  |Y #0.....loop...|
00001bd0  10 4c 44 41 20 28 66 72  6f 6d 29 2c 59 0d 0f e6  |.LDA (from),Y...|
00001be0  0e 53 54 41 20 28 74 6f  29 2c 59 0d 0f f0 0c 4c  |.STA (to),Y....L|
00001bf0  44 41 20 66 72 6f 6d 0d  0f fa 0d 43 4d 50 20 75  |DA from....CMP u|
00001c00  6e 74 69 6c 0d 10 04 0c  42 4e 45 20 6d 6f 72 65  |ntil....BNE more|
00001c10  0d 10 0e 0e 4c 44 41 20  66 72 6f 6d 2b 31 0d 10  |....LDA from+1..|
00001c20  18 0f 43 4d 50 20 75 6e  74 69 6c 2b 31 0d 10 22  |..CMP until+1.."|
00001c30  0f 42 45 51 20 6e 6f 5f  6d 6f 72 65 0d 10 2c 09  |.BEQ no_more..,.|
00001c40  2e 6d 6f 72 65 0d 10 36  0c 44 45 43 20 66 72 6f  |.more..6.DEC fro|
00001c50  6d 0d 10 40 0c 4c 44 58  20 66 72 6f 6d 0d 10 4a  |m..@.LDX from..J|
00001c60  0c 43 50 58 20 23 26 46  46 0d 10 54 0c 42 4e 45  |.CPX #&FF..T.BNE|
00001c70  20 6f 76 65 72 0d 10 5e  0e 44 45 43 20 66 72 6f  | over..^.DEC fro|
00001c80  6d 2b 31 0d 10 68 09 2e  6f 76 65 72 0d 10 72 0a  |m+1..h..over..r.|
00001c90  44 45 43 20 74 6f 0d 10  7c 0a 4c 44 58 20 74 6f  |DEC to..|.LDX to|
00001ca0  0d 10 86 0c 43 50 58 20  23 26 46 46 0d 10 90 0c  |....CPX #&FF....|
00001cb0  42 4e 45 20 6c 6f 6f 70  0d 10 9a 0c 44 45 43 20  |BNE loop....DEC |
00001cc0  74 6f 2b 31 0d 10 a4 0c  42 4e 45 20 6c 6f 6f 70  |to+1....BNE loop|
00001cd0  0d 10 ae 0c 2e 6e 6f 5f  6d 6f 72 65 0d 10 b8 07  |.....no_more....|
00001ce0  52 54 53 0d 10 c2 05 3a  0d 10 cc 0e 2e 6d 6f 76  |RTS....:.....mov|
00001cf0  65 5f 64 6f 77 6e 0d 10  d6 0a 4c 44 59 20 23 30  |e_down....LDY #0|
00001d00  0d 10 e0 0a 2e 6c 6f 6f  70 32 0d 10 ea 10 4c 44  |.....loop2....LD|
00001d10  41 20 28 66 72 6f 6d 29  2c 59 0d 10 f4 0e 53 54  |A (from),Y....ST|
00001d20  41 20 28 74 6f 29 2c 59  0d 10 fe 0c 4c 44 41 20  |A (to),Y....LDA |
00001d30  66 72 6f 6d 0d 11 08 0d  43 4d 50 20 75 6e 74 69  |from....CMP unti|
00001d40  6c 0d 11 12 0d 42 4e 45  20 6d 6f 72 65 32 0d 11  |l....BNE more2..|
00001d50  1c 0e 4c 44 41 20 66 72  6f 6d 2b 31 0d 11 26 0f  |..LDA from+1..&.|
00001d60  43 4d 50 20 75 6e 74 69  6c 2b 31 0d 11 30 10 42  |CMP until+1..0.B|
00001d70  45 51 20 6e 6f 5f 6d 6f  72 65 32 0d 11 3a 0a 2e  |EQ no_more2..:..|
00001d80  6d 6f 72 65 32 0d 11 44  0c 49 4e 43 20 66 72 6f  |more2..D.INC fro|
00001d90  6d 0d 11 4e 0d 42 4e 45  20 6f 76 65 72 32 0d 11  |m..N.BNE over2..|
00001da0  58 0e 49 4e 43 20 66 72  6f 6d 2b 31 0d 11 62 0a  |X.INC from+1..b.|
00001db0  2e 6f 76 65 72 32 0d 11  6c 0a 49 4e 43 20 74 6f  |.over2..l.INC to|
00001dc0  0d 11 76 0d 42 4e 45 20  6c 6f 6f 70 32 0d 11 80  |..v.BNE loop2...|
00001dd0  0c 49 4e 43 20 74 6f 2b  31 0d 11 8a 0d 42 4e 45  |.INC to+1....BNE|
00001de0  20 6c 6f 6f 70 32 0d 11  94 0d 2e 6e 6f 5f 6d 6f  | loop2.....no_mo|
00001df0  72 65 32 0d 11 9e 07 52  54 53 0d 11 a8 05 3a 0d  |re2....RTS....:.|
00001e00  11 b2 09 2e 63 61 73 65  0d 11 bc 0a 4c 44 59 20  |....case....LDY |
00001e10  23 30 0d 11 c6 0a 2e 6c  6f 6f 70 33 0d 11 d0 10  |#0.....loop3....|
00001e20  4c 44 41 20 28 66 72 6f  6d 29 2c 59 0d 11 da 0d  |LDA (from),Y....|
00001e30  43 4d 50 20 23 97 22 41  22 0d 11 e4 13 42 43 43  |CMP #."A"....BCC|
00001e40  20 6e 6f 74 5f 63 61 70  69 74 61 6c 0d 11 ee 0f  | not_capital....|
00001e50  43 4d 50 20 23 97 22 5a  22 2b 31 0d 11 f8 13 42  |CMP #."Z"+1....B|
00001e60  43 53 20 6e 6f 74 5f 63  61 70 69 74 61 6c 0d 12  |CS not_capital..|
00001e70  02 0a 84 41 20 23 33 32  0d 12 0c 10 2e 6e 6f 74  |...A #32.....not|
00001e80  5f 63 61 70 69 74 61 6c  0d 12 16 0e 53 54 41 20  |_capital....STA |
00001e90  28 74 6f 29 2c 59 0d 12  20 07 49 4e 59 0d 12 2a  |(to),Y.. .INY..*|
00001ea0  0c 43 4d 50 20 23 26 30  44 0d 12 34 0d 42 4e 45  |.CMP #&0D..4.BNE|
00001eb0  20 6c 6f 6f 70 33 0d 12  3e 07 52 54 53 0d 12 48  | loop3..>.RTS..H|
00001ec0  05 3a 0d 12 52 0a 2e 65  76 65 6e 74 0d 12 5c 0b  |.:..R..event..\.|
00001ed0  50 48 50 3a 50 48 41 0d  12 66 0b 54 58 41 3a 50  |PHP:PHA..f.TXA:P|
00001ee0  48 41 0d 12 70 0b 54 59  41 3a 50 48 41 0d 12 7a  |HA..p.TYA:PHA..z|
00001ef0  05 3a 0d 12 84 0c 4c 44  41 20 74 61 70 65 0d 12  |.:....LDA tape..|
00001f00  8e 0f 42 45 51 20 6e 6f  74 5f 63 66 73 0d 12 98  |..BEQ not_cfs...|
00001f10  0c 4c 44 41 20 23 26 42  30 0d 12 a2 0c 4c 44 58  |.LDA #&B0....LDX|
00001f20  20 23 26 46 46 0d 12 ac  0a 4c 44 59 20 23 30 0d  | #&FF....LDY #0.|
00001f30  12 b6 0e 4a 53 52 20 6f  73 62 79 74 65 0d 12 c0  |...JSR osbyte...|
00001f40  05 3a 0d 12 ca 0c 2e 6e  6f 74 5f 63 66 73 0d 12  |.:.....not_cfs..|
00001f50  d4 11 49 4e 43 20 63 6f  6c 5f 69 6e 64 65 78 0d  |..INC col_index.|
00001f60  12 de 11 4c 44 41 20 63  6f 6c 5f 69 6e 64 65 78  |...LDA col_index|
00001f70  0d 12 e8 08 80 20 23 31  0d 12 f2 0c 42 4e 45 20  |..... #1....BNE |
00001f80  63 6f 6c 32 0d 12 fc 0c  4c 44 41 20 23 26 39 37  |col2....LDA #&97|
00001f90  0d 13 06 0a 4c 44 58 20  23 38 0d 13 10 10 4c 44  |....LDX #8....LD|
00001fa0  59 20 70 61 6c 65 74 74  65 31 0d 13 1a 0e 4a 53  |Y palette1....JS|
00001fb0  52 20 6f 73 62 79 74 65  0d 13 24 0a 4c 44 58 20  |R osbyte..$.LDX |
00001fc0  23 39 0d 13 2e 12 4c 44  59 20 70 61 6c 65 74 74  |#9....LDY palett|
00001fd0  65 31 2b 31 0d 13 38 0e  4a 53 52 20 6f 73 62 79  |e1+1..8.JSR osby|
00001fe0  74 65 0d 13 42 0c 4a 4d  50 20 63 6f 6c 31 0d 13  |te..B.JMP col1..|
00001ff0  4c 05 3a 0d 13 56 09 2e  63 6f 6c 32 0d 13 60 0c  |L.:..V..col2..`.|
00002000  4c 44 41 20 23 26 39 37  0d 13 6a 0a 4c 44 58 20  |LDA #&97..j.LDX |
00002010  23 38 0d 13 74 10 4c 44  59 20 70 61 6c 65 74 74  |#8..t.LDY palett|
00002020  65 32 0d 13 7e 0e 4a 53  52 20 6f 73 62 79 74 65  |e2..~.JSR osbyte|
00002030  0d 13 88 0a 4c 44 58 20  23 39 0d 13 92 12 4c 44  |....LDX #9....LD|
00002040  59 20 70 61 6c 65 74 74  65 32 2b 31 0d 13 9c 0e  |Y palette2+1....|
00002050  4a 53 52 20 6f 73 62 79  74 65 0d 13 a6 05 3a 0d  |JSR osbyte....:.|
00002060  13 b0 09 2e 63 6f 6c 31  0d 13 ba 10 4a 53 52 20  |....col1....JSR |
00002070  73 65 74 5f 74 69 6d 65  0d 13 c4 0b 50 4c 41 3a  |set_time....PLA:|
00002080  54 41 59 0d 13 ce 0b 50  4c 41 3a 54 41 58 0d 13  |TAY....PLA:TAX..|
00002090  d8 0b 50 4c 41 3a 50 4c  50 0d 13 e2 07 52 54 53  |..PLA:PLP....RTS|
000020a0  0d 13 ec 05 3a 0d 13 f6  0d 2e 73 65 74 5f 74 69  |....:.....set_ti|
000020b0  6d 65 0d 14 00 13 4c 44  58 20 23 74 69 6d 65 20  |me....LDX #time |
000020c0  83 26 31 30 30 0d 14 0a  13 4c 44 59 20 23 74 69  |.&100....LDY #ti|
000020d0  6d 65 20 81 26 31 30 30  0d 14 14 0a 4c 44 41 20  |me .&100....LDA |
000020e0  23 34 0d 14 1e 0e 4a 4d  50 20 6f 73 77 6f 72 64  |#4....JMP osword|
000020f0  0d 14 28 05 3a 0d 14 32  10 2e 73 74 61 72 74 5f  |..(.:..2..start_|
00002100  65 76 65 6e 74 0d 14 3c  14 4c 44 58 20 23 65 76  |event..<.LDX #ev|
00002110  65 6e 74 20 83 26 31 30  30 0d 14 46 14 4c 44 59  |ent .&100..F.LDY|
00002120  20 23 65 76 65 6e 74 20  81 26 31 30 30 0d 14 50  | #event .&100..P|
00002130  07 53 45 49 0d 14 5a 0c  53 54 58 20 26 32 32 30  |.SEI..Z.STX &220|
00002140  0d 14 64 0c 53 54 59 20  26 32 32 31 0d 14 6e 07  |..d.STY &221..n.|
00002150  43 4c 49 0d 14 78 0c 4c  44 41 20 23 26 31 33 0d  |CLI..x.LDA #&13.|
00002160  14 82 0e 4a 53 52 20 6f  73 62 79 74 65 0d 14 8c  |...JSR osbyte...|
00002170  10 4a 53 52 20 73 65 74  5f 74 69 6d 65 0d 14 96  |.JSR set_time...|
00002180  0c 4c 44 41 20 23 26 30  45 0d 14 a0 0a 4c 44 58  |.LDA #&0E....LDX|
00002190  20 23 35 0d 14 aa 0e 4a  4d 50 20 6f 73 62 79 74  | #5....JMP osbyt|
000021a0  65 0d 14 b4 05 3a 0d 14  be 09 2e 74 69 6d 65 0d  |e....:.....time.|
000021b0  14 c8 12 45 51 55 44 20  26 46 46 46 46 46 46 46  |...EQUD &FFFFFFF|
000021c0  46 0d 14 d2 0c 45 51 55  42 20 26 46 46 0d 14 dc  |F....EQUB &FF...|
000021d0  09 2e 74 61 70 65 0d 14  e6 0a 45 51 55 42 20 30  |..tape....EQUB 0|
000021e0  0d 14 f0 0e 2e 63 6f 6c  5f 69 6e 64 65 78 0d 14  |.....col_index..|
000021f0  fa 0a 45 51 55 42 20 30  0d 15 04 0d 2e 70 61 6c  |..EQUB 0.....pal|
00002200  65 74 74 65 31 0d 15 0e  0e 45 51 55 57 20 26 31  |ette1....EQUW &1|
00002210  35 31 34 0d 15 18 0d 2e  70 61 6c 65 74 74 65 32  |514.....palette2|
00002220  0d 15 22 0e 45 51 55 44  20 26 31 31 35 30 0d 15  |..".EQUD &1150..|
00002230  2c 05 3a 0d 15 36 09 2e  70 61 63 6b 0d 15 40 0a  |,.:..6..pack..@.|
00002240  4c 44 41 20 23 30 0d 15  4a 11 53 54 41 20 6e 69  |LDA #0..J.STA ni|
00002250  62 5f 69 6e 64 65 78 0d  15 54 10 53 54 41 20 6e  |b_index..T.STA n|
00002260  69 62 5f 70 6f 73 6e 0d  15 5e 12 53 54 41 20 63  |ib_posn..^.STA c|
00002270  68 61 72 5f 69 6e 64 65  78 0d 15 68 16 42 43 53  |har_index..h.BCS|
00002280  20 6e 6f 74 5f 64 65 63  6f 6d 70 72 65 73 73 0d  | not_decompress.|
00002290  15 72 12 4a 4d 50 20 64  65 63 6f 6d 70 72 65 73  |.r.JMP decompres|
000022a0  73 0d 15 7c 05 3a 0d 15  86 13 2e 6e 6f 74 5f 64  |s..|.:.....not_d|
000022b0  65 63 6f 6d 70 72 65 73  73 0d 15 90 12 53 54 41  |ecompress....STA|
000022c0  20 63 68 61 72 5f 69 6e  64 65 78 0d 15 9a 07 54  | char_index....T|
000022d0  41 59 0d 15 a4 0e 53 54  41 20 28 74 6f 29 2c 59  |AY....STA (to),Y|
000022e0  0d 15 ae 05 3a 0d 15 b8  0d 2e 63 6f 6d 70 72 65  |....:.....compre|
000022f0  73 73 0d 15 c2 12 4c 44  59 20 63 68 61 72 5f 69  |ss....LDY char_i|
00002300  6e 64 65 78 0d 15 cc 10  4c 44 41 20 28 66 72 6f  |ndex....LDA (fro|
00002310  6d 29 2c 59 0d 15 d6 07  50 48 41 0d 15 e0 05 3a  |m),Y....PHA....:|
00002320  0d 15 ea 12 4c 44 58 20  23 72 65 66 20 81 26 31  |....LDX #ref .&1|
00002330  30 30 0d 15 f4 12 53 54  58 20 72 65 66 5f 61 64  |00....STX ref_ad|
00002340  64 72 2b 31 0d 15 fe 12  4c 44 58 20 23 72 65 66  |dr+1....LDX #ref|
00002350  20 83 26 31 30 30 0d 16  08 0c 4c 44 59 20 23 26  | .&100....LDY #&|
00002360  30 43 0d 16 12 0d 4a 53  52 20 69 6e 73 74 72 0d  |0C....JSR instr.|
00002370  16 1c 12 42 50 4c 20 63  68 61 72 5f 66 6f 75 6e  |...BPL char_foun|
00002380  64 0d 16 26 05 3a 0d 16  30 13 4c 44 58 20 23 72  |d..&.:..0.LDX #r|
00002390  65 66 32 20 81 26 31 30  30 0d 16 3a 12 53 54 58  |ef2 .&100..:.STX|
000023a0  20 72 65 66 5f 61 64 64  72 2b 31 0d 16 44 13 4c  | ref_addr+1..D.L|
000023b0  44 58 20 23 72 65 66 32  20 83 26 31 30 30 0d 16  |DX #ref2 .&100..|
000023c0  4e 0c 4c 44 59 20 23 26  33 45 0d 16 58 0d 4a 53  |N.LDY #&3E..X.JS|
000023d0  52 20 69 6e 73 74 72 0d  16 62 12 42 50 4c 20 63  |R instr..b.BPL c|
000023e0  68 61 72 5f 66 6f 75 6e  64 0d 16 6c 05 3a 0d 16  |har_found..l.:..|
000023f0  76 13 4c 44 58 20 23 72  65 66 33 20 81 26 31 30  |v.LDX #ref3 .&10|
00002400  30 0d 16 80 12 53 54 58  20 72 65 66 5f 61 64 64  |0....STX ref_add|
00002410  72 2b 31 0d 16 8a 13 4c  44 58 20 23 72 65 66 33  |r+1....LDX #ref3|
00002420  20 83 26 31 30 30 0d 16  94 0c 4c 44 59 20 23 26  | .&100....LDY #&|
00002430  31 36 0d 16 9e 0d 4a 53  52 20 69 6e 73 74 72 0d  |16....JSR instr.|
00002440  16 a8 05 3a 0d 16 b2 0f  2e 63 68 61 72 5f 66 6f  |...:.....char_fo|
00002450  75 6e 64 0d 16 bc 12 43  50 58 20 23 72 65 66 20  |und....CPX #ref |
00002460  83 26 31 30 30 0d 16 c6  15 42 4e 45 20 6e 6f 74  |.&100....BNE not|
00002470  5f 63 6f 6d 6d 6f 6e 65  73 74 0d 16 d0 07 54 59  |_commonest....TY|
00002480  41 0d 16 da 14 4a 53 52  20 73 74 6f 72 65 5f 6e  |A....JSR store_n|
00002490  69 62 62 6c 65 0d 16 e4  0f 4a 4d 50 20 65 6e 64  |ibble....JMP end|
000024a0  5f 63 68 6b 0d 16 ee 05  3a 0d 16 f8 12 2e 6e 6f  |_chk....:.....no|
000024b0  74 5f 63 6f 6d 6d 6f 6e  65 73 74 0d 17 02 13 43  |t_commonest....C|
000024c0  50 58 20 23 72 65 66 32  20 83 26 31 30 30 0d 17  |PX #ref2 .&100..|
000024d0  0c 0c 42 4e 45 20 72 61  72 65 0d 17 16 07 54 59  |..BNE rare....TY|
000024e0  41 0d 17 20 07 50 48 41  0d 17 2a 09 4c 53 52 20  |A.. .PHA..*.LSR |
000024f0  41 0d 17 34 09 4c 53 52  20 41 0d 17 3e 09 4c 53  |A..4.LSR A..>.LS|
00002500  52 20 41 0d 17 48 09 4c  53 52 20 41 0d 17 52 07  |R A..H.LSR A..R.|
00002510  43 4c 43 0d 17 5c 0c 41  44 43 20 23 26 30 43 0d  |CLC..\.ADC #&0C.|
00002520  17 66 14 4a 53 52 20 73  74 6f 72 65 5f 6e 69 62  |.f.JSR store_nib|
00002530  62 6c 65 0d 17 70 07 50  4c 41 0d 17 7a 0a 80 20  |ble..p.PLA..z.. |
00002540  23 26 30 46 0d 17 84 14  4a 53 52 20 73 74 6f 72  |#&0F....JSR stor|
00002550  65 5f 6e 69 62 62 6c 65  0d 17 8e 0f 4a 4d 50 20  |e_nibble....JMP |
00002560  65 6e 64 5f 63 68 6b 0d  17 98 05 3a 0d 17 a2 09  |end_chk....:....|
00002570  2e 72 61 72 65 0d 17 ac  07 54 59 41 0d 17 b6 07  |.rare....TYA....|
00002580  50 48 41 0d 17 c0 07 50  48 41 0d 17 ca 0c 4c 44  |PHA....PHA....LD|
00002590  41 20 23 26 30 46 0d 17  d4 14 4a 53 52 20 73 74  |A #&0F....JSR st|
000025a0  6f 72 65 5f 6e 69 62 62  6c 65 0d 17 de 07 50 4c  |ore_nibble....PL|
000025b0  41 0d 17 e8 09 4c 53 52  20 41 0d 17 f2 09 4c 53  |A....LSR A....LS|
000025c0  52 20 41 0d 17 fc 09 4c  53 52 20 41 0d 18 06 09  |R A....LSR A....|
000025d0  4c 53 52 20 41 0d 18 10  07 43 4c 43 0d 18 1a 0c  |LSR A....CLC....|
000025e0  41 44 43 20 23 26 30 45  0d 18 24 14 4a 53 52 20  |ADC #&0E..$.JSR |
000025f0  73 74 6f 72 65 5f 6e 69  62 62 6c 65 0d 18 2e 07  |store_nibble....|
00002600  50 4c 41 0d 18 38 0a 80  20 23 26 30 46 0d 18 42  |PLA..8.. #&0F..B|
00002610  14 4a 53 52 20 73 74 6f  72 65 5f 6e 69 62 62 6c  |.JSR store_nibbl|
00002620  65 0d 18 4c 05 3a 0d 18  56 0c 2e 65 6e 64 5f 63  |e..L.:..V..end_c|
00002630  68 6b 0d 18 60 07 50 4c  41 0d 18 6a 12 49 4e 43  |hk..`.PLA..j.INC|
00002640  20 63 68 61 72 5f 69 6e  64 65 78 0d 18 74 0d 42  | char_index..t.B|
00002650  45 51 20 65 72 72 6f 72  0d 18 7e 0c 43 4d 50 20  |EQ error..~.CMP |
00002660  23 26 30 44 0d 18 88 10  42 4e 45 20 63 6f 6d 70  |#&0D....BNE comp|
00002670  72 65 73 73 0d 18 92 07  52 54 53 0d 18 9c 05 3a  |ress....RTS....:|
00002680  0d 18 a6 11 2e 73 74 6f  72 65 5f 6e 69 62 62 6c  |.....store_nibbl|
00002690  65 0d 18 b0 11 4c 44 59  20 6e 69 62 5f 69 6e 64  |e....LDY nib_ind|
000026a0  65 78 0d 18 ba 0d 84 41  20 28 74 6f 29 2c 59 0d  |ex.....A (to),Y.|
000026b0  18 c4 0e 53 54 41 20 28  74 6f 29 2c 59 0d 18 ce  |...STA (to),Y...|
000026c0  10 4c 44 41 20 6e 69 62  5f 70 6f 73 6e 0d 18 d8  |.LDA nib_posn...|
000026d0  08 82 20 23 31 0d 18 e2  10 53 54 41 20 6e 69 62  |.. #1....STA nib|
000026e0  5f 70 6f 73 6e 0d 18 ec  13 42 4e 45 20 68 69 67  |_posn....BNE hig|
000026f0  68 5f 6e 69 62 62 6c 65  0d 18 f6 11 49 4e 43 20  |h_nibble....INC |
00002700  6e 69 62 5f 69 6e 64 65  78 0d 19 00 0d 42 45 51  |nib_index....BEQ|
00002710  20 65 72 72 6f 72 0d 19  0a 11 4c 44 59 20 6e 69  | error....LDY ni|
00002720  62 5f 69 6e 64 65 78 0d  19 14 0a 4c 44 41 20 23  |b_index....LDA #|
00002730  30 0d 19 1e 0e 53 54 41  20 28 74 6f 29 2c 59 0d  |0....STA (to),Y.|
00002740  19 28 07 52 54 53 0d 19  32 05 3a 0d 19 3c 10 2e  |.(.RTS..2.:..<..|
00002750  68 69 67 68 5f 6e 69 62  62 6c 65 0d 19 46 0e 4c  |high_nibble..F.L|
00002760  44 41 20 28 74 6f 29 2c  59 0d 19 50 09 41 53 4c  |DA (to),Y..P.ASL|
00002770  20 41 0d 19 5a 09 41 53  4c 20 41 0d 19 64 09 41  | A..Z.ASL A..d.A|
00002780  53 4c 20 41 0d 19 6e 09  41 53 4c 20 41 0d 19 78  |SL A..n.ASL A..x|
00002790  0e 53 54 41 20 28 74 6f  29 2c 59 0d 19 82 07 52  |.STA (to),Y....R|
000027a0  54 53 0d 19 8c 05 3a 0d  19 96 0a 2e 69 6e 73 74  |TS....:.....inst|
000027b0  72 0d 19 a0 10 53 54 58  20 72 65 66 5f 61 64 64  |r....STX ref_add|
000027c0  72 0d 19 aa 09 2e 6c 6f  6f 70 0d 19 b4 07 44 45  |r.....loop....DE|
000027d0  59 0d 19 be 0b 42 4d 49  20 6f 75 74 0d 19 c8 14  |Y....BMI out....|
000027e0  43 4d 50 20 28 72 65 66  5f 61 64 64 72 29 2c 59  |CMP (ref_addr),Y|
000027f0  0d 19 d2 0c 42 4e 45 20  6c 6f 6f 70 0d 19 dc 08  |....BNE loop....|
00002800  2e 6f 75 74 0d 19 e6 07  52 54 53 0d 19 f0 05 3a  |.out....RTS....:|
00002810  0d 19 fa 0a 2e 65 72 72  6f 72 0d 1a 04 07 42 52  |.....error....BR|
00002820  4b 0d 1a 0e 07 42 52 4b  0d 1a 18 14 45 51 55 53  |K....BRK....EQUS|
00002830  20 22 53 74 72 69 6e 67  22 2b bd 37 0d 1a 22 07  | "String"+.7..".|
00002840  42 52 4b 0d 1a 2c 05 3a  0d 1a 36 0f 2e 64 65 63  |BRK..,.:..6..dec|
00002850  6f 6d 70 72 65 73 73 0d  1a 40 10 4a 53 52 20 72  |ompress..@.JSR r|
00002860  65 61 64 5f 6e 69 62 0d  1a 4a 0c 43 4d 50 20 23  |ead_nib..J.CMP #|
00002870  26 30 43 0d 1a 54 14 42  43 53 20 72 65 61 64 5f  |&0C..T.BCS read_|
00002880  61 6e 6f 74 68 65 72 0d  1a 5e 12 4c 44 59 20 23  |another..^.LDY #|
00002890  72 65 66 20 81 26 31 30  30 0d 1a 68 12 4c 44 58  |ref .&100..h.LDX|
000028a0  20 23 72 65 66 20 83 26  31 30 30 0d 1a 72 12 4a  | #ref .&100..r.J|
000028b0  53 52 20 73 74 6f 72 65  5f 62 79 74 65 0d 1a 7c  |SR store_byte..||
000028c0  10 4a 4d 50 20 65 6e 64  5f 63 68 6b 32 0d 1a 86  |.JMP end_chk2...|
000028d0  05 3a 0d 1a 90 11 2e 72  65 61 64 5f 61 6e 6f 74  |.:.....read_anot|
000028e0  68 65 72 0d 1a 9a 07 54  41 58 0d 1a a4 10 4a 53  |her....TAX....JS|
000028f0  52 20 72 65 61 64 5f 6e  69 62 0d 1a ae 0c 43 4d  |R read_nib....CM|
00002900  50 20 23 26 30 45 0d 1a  b8 14 42 43 43 20 74 77  |P #&0E....BCC tw|
00002910  6f 5f 6e 69 62 5f 63 68  61 72 0d 1a c2 0c 43 50  |o_nib_char....CP|
00002920  58 20 23 26 30 46 0d 1a  cc 16 42 45 51 20 74 68  |X #&0F....BEQ th|
00002930  72 65 65 5f 6e 69 62 5f  63 68 61 72 0d 1a d6 05  |ree_nib_char....|
00002940  3a 0d 1a e0 11 2e 74 77  6f 5f 6e 69 62 5f 63 68  |:.....two_nib_ch|
00002950  61 72 0d 1a ea 0c 53 54  41 20 74 65 6d 70 0d 1a  |ar....STA temp..|
00002960  f4 07 54 58 41 0d 1a fe  07 53 45 43 0d 1b 08 0c  |..TXA....SEC....|
00002970  53 42 43 20 23 26 30 43  0d 1b 12 09 41 53 4c 20  |SBC #&0C....ASL |
00002980  41 0d 1b 1c 09 41 53 4c  20 41 0d 1b 26 09 41 53  |A....ASL A..&.AS|
00002990  4c 20 41 0d 1b 30 09 41  53 4c 20 41 0d 1b 3a 07  |L A..0.ASL A..:.|
000029a0  43 4c 43 0d 1b 44 0c 41  44 43 20 74 65 6d 70 0d  |CLC..D.ADC temp.|
000029b0  1b 4e 13 4c 44 59 20 23  72 65 66 32 20 81 26 31  |.N.LDY #ref2 .&1|
000029c0  30 30 0d 1b 58 13 4c 44  58 20 23 72 65 66 32 20  |00..X.LDX #ref2 |
000029d0  83 26 31 30 30 0d 1b 62  12 4a 53 52 20 73 74 6f  |.&100..b.JSR sto|
000029e0  72 65 5f 62 79 74 65 0d  1b 6c 10 4a 4d 50 20 65  |re_byte..l.JMP e|
000029f0  6e 64 5f 63 68 6b 32 0d  1b 76 05 3a 0d 1b 80 14  |nd_chk2..v.:....|
00002a00  2e 74 68 72 65 65 5f 6e  69 62 5f 63 68 61 72 20  |.three_nib_char |
00002a10  0d 1b 8a 07 54 41 58 0d  1b 94 10 4a 53 52 20 72  |....TAX....JSR r|
00002a20  65 61 64 5f 6e 69 62 0d  1b 9e 0c 43 50 58 20 23  |ead_nib....CPX #|
00002a30  26 30 46 0d 1b a8 11 42  4e 45 20 66 69 72 73 74  |&0F....BNE first|
00002a40  5f 73 74 72 0d 1b b2 07  43 4c 43 0d 1b bc 0c 41  |_str....CLC....A|
00002a50  44 43 20 23 26 31 30 0d  1b c6 0e 2e 66 69 72 73  |DC #&10.....firs|
00002a60  74 5f 73 74 72 0d 1b d0  13 4c 44 59 20 23 72 65  |t_str....LDY #re|
00002a70  66 33 20 81 26 31 30 30  0d 1b da 13 4c 44 58 20  |f3 .&100....LDX |
00002a80  23 72 65 66 33 20 83 26  31 30 30 0d 1b e4 12 4a  |#ref3 .&100....J|
00002a90  53 52 20 73 74 6f 72 65  5f 62 79 74 65 0d 1b ee  |SR store_byte...|
00002aa0  05 3a 0d 1b f8 0d 2e 65  6e 64 5f 63 68 6b 32 0d  |.:.....end_chk2.|
00002ab0  1c 02 0d 42 45 51 20 65  72 72 6f 72 0d 1c 0c 0c  |...BEQ error....|
00002ac0  43 4d 50 20 23 26 30 44  0d 1c 16 12 42 4e 45 20  |CMP #&0D....BNE |
00002ad0  64 65 63 6f 6d 70 72 65  73 73 0d 1c 20 07 52 54  |decompress.. .RT|
00002ae0  53 0d 1c 2a 05 3a 0d 1c  34 0f 2e 73 74 6f 72 65  |S..*.:..4..store|
00002af0  5f 62 79 74 65 0d 1c 3e  12 53 54 59 20 72 65 66  |_byte..>.STY ref|
00002b00  5f 61 64 64 72 2b 31 0d  1c 48 10 53 54 58 20 72  |_addr+1..H.STX r|
00002b10  65 66 5f 61 64 64 72 0d  1c 52 07 54 41 59 0d 1c  |ef_addr..R.TAY..|
00002b20  5c 14 4c 44 41 20 28 72  65 66 5f 61 64 64 72 29  |\.LDA (ref_addr)|
00002b30  2c 59 0d 1c 66 12 4c 44  59 20 63 68 61 72 5f 69  |,Y..f.LDY char_i|
00002b40  6e 64 65 78 0d 1c 70 0e  53 54 41 20 28 74 6f 29  |ndex..p.STA (to)|
00002b50  2c 59 0d 1c 7a 12 49 4e  43 20 63 68 61 72 5f 69  |,Y..z.INC char_i|
00002b60  6e 64 65 78 0d 1c 84 07  52 54 53 0d 1c 8e 05 3a  |ndex....RTS....:|
00002b70  0d 1c 98 0d 2e 72 65 61  64 5f 6e 69 62 0d 1c a2  |.....read_nib...|
00002b80  11 4c 44 59 20 6e 69 62  5f 69 6e 64 65 78 0d 1c  |.LDY nib_index..|
00002b90  ac 10 4c 44 41 20 28 66  72 6f 6d 29 2c 59 0d 1c  |..LDA (from),Y..|
00002ba0  b6 07 54 41 59 0d 1c c0  10 4c 44 41 20 6e 69 62  |..TAY....LDA nib|
00002bb0  5f 70 6f 73 6e 0d 1c ca  08 82 20 23 31 0d 1c d4  |_posn..... #1...|
00002bc0  10 53 54 41 20 6e 69 62  5f 70 6f 73 6e 0d 1c de  |.STA nib_posn...|
00002bd0  0e 42 45 51 20 6c 6f 5f  6e 69 62 0d 1c e8 07 54  |.BEQ lo_nib....T|
00002be0  59 41 0d 1c f2 09 4c 53  52 20 41 0d 1c fc 09 4c  |YA....LSR A....L|
00002bf0  53 52 20 41 0d 1d 06 09  4c 53 52 20 41 0d 1d 10  |SR A....LSR A...|
00002c00  09 4c 53 52 20 41 0d 1d  1a 07 52 54 53 0d 1d 24  |.LSR A....RTS..$|
00002c10  0b 2e 6c 6f 5f 6e 69 62  0d 1d 2e 11 49 4e 43 20  |..lo_nib....INC |
00002c20  6e 69 62 5f 69 6e 64 65  78 0d 1d 38 07 54 59 41  |nib_index..8.TYA|
00002c30  0d 1d 42 0a 80 20 23 26  30 46 0d 1d 4c 07 52 54  |..B.. #&0F..L.RT|
00002c40  53 0d 1d 56 05 3a 0d 1d  60 08 2e 72 65 66 0d 1d  |S..V.:..`..ref..|
00002c50  6a 1a 45 51 55 53 20 22  65 74 61 6f 69 6e 73 68  |j.EQUS "etaoinsh|
00002c60  72 64 6c 22 2b bd 33 32  0d 1d 74 09 2e 72 65 66  |rdl"+.32..t..ref|
00002c70  32 0d 1d 7e 1b 45 51 55  53 20 22 75 62 63 66 67  |2..~.EQUS "ubcfg|
00002c80  6a 6b 6d 70 71 76 77 78  79 7a 41 22 0d 1d 88 1b  |jkmpqvwxyzA"....|
00002c90  45 51 55 53 20 22 42 43  44 45 46 47 48 49 4a 4b  |EQUS "BCDEFGHIJK|
00002ca0  4c 4d 4e 4f 50 51 22 0d  1d 92 1b 45 51 55 53 20  |LMNOPQ"....EQUS |
00002cb0  22 52 53 54 55 56 57 58  59 5a 30 31 32 33 34 35  |"RSTUVWXYZ012345|
00002cc0  36 22 0d 1d 9c 22 45 51  55 53 20 22 37 38 39 2e  |6"..."EQUS "789.|
00002cd0  2c 3b 3a 22 2b bd 33 34  2b 22 27 28 29 2b 2d 22  |,;:"+.34+"'()+-"|
00002ce0  2b bd 31 33 0d 1d a6 09  2e 72 65 66 33 0d 1d b0  |+.13.....ref3...|
00002cf0  21 45 51 55 53 20 22 24  25 26 3c 3e 40 5b 22 2b  |!EQUS "$%&<>@["+|
00002d00  bd 39 33 2b 22 60 5e 7b  7d 7c 7e 23 21 22 0d 1d  |.93+"`^{}|~#!"..|
00002d10  ba 11 45 51 55 53 20 22  3d 2f 2a 3f 5c 5f 22 0d  |..EQUS "=/*?\_".|
00002d20  1d c4 09 5d 3a ed 3a e1  0d ff                    |...]:.:...|
00002d2a
Ceemags.m0
Ceemags.m1
Ceemags.m2
Ceemags.m4
Ceemags.m5