Home » CEEFAX disks » telesoftware14.adl » 18-03-89/Editor

18-03-89/Editor

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 » CEEFAX disks » telesoftware14.adl
Filename: 18-03-89/Editor
Read OK:
File size: 33AD bytes
Load address: FFFF1900
Exec address: FFFF8023
Duplicates

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

File contents
   10REM Printer Character Font Designer
   20REM (C) Allan Kelly 13/5/87
   30 
   40DIM mc 550
   50DIM fonts 800
   60DIM edit(8)
   70PROCassemble(mc)
   80REPEAT
   90REPEAT
  100MODE7
  110PRINTTAB(10,0);CHR$(141);"Printer Fonts"
  120PRINTTAB(10,1);CHR$(141);"Printer Fonts"
  130PRINTSPC(7);"(C) Allan Kelly 1987"
  140PRINT'SPC(5);"C - Compile Fonts for Use"
  150PRINT'SPC(5);"S - Save Fonts"
  160PRINT'SPC(5);"L - Load Fonts"
  170PRINT'SPC(5);"E - Edit Fonts"
  180PRINT'SPC(5);"V - View Fonts"
  190PRINT'SPC(5);"T - Test Print Character"
  200PRINT'SPC(5);"U - Give settings for UDG"
  210PRINT'SPC(5);"D - Set all characters to default"
  220PRINT'SPC(5);"Q - Quit"
  230*FX21
  240REPEAT x$=GET$
  250UNTIL INSTR("CSLEVTUDQ*",x$) OR INSTR("cslevtudq*",x$)
  260x$=CHR$(ASC(x$)AND&DF)
  270 
  280IF x$="C" PROCcompile
  290IF x$="S" PROCsave
  300IF x$="L" PROCload
  310IF x$="E" MODE4:PROCedit:MODE7
  320IF x$="V" MODE4:PROCview:MODE7
  330IF x$="T" PROCtest_print
  340IF x$="U" PROCgive_udg
  350IF x$="D" PROCall_default
  360IF ASC(x$)=10 PROCos
  370 
  380UNTIL x$="Q"
  390UNTIL FNtest("Have the current fonts been saved?")
  400END
  410 
  420DEFPROCsave
  430LOCAL file,loop,loop2
  440PRINT"Save"
  450REPEAT
  460file=OPENOUT(FNfilename)
  470IF file=0 PRINT"File not Available"
  480UNTIL file<>0
  490PRINT"Saving please wait"
  500FOR loop=32 TO 126
  510FOR loop2=0 TO 7
  520BPUT#file,FNrow_peek(loop,loop2)
  530NEXT
  540NEXT
  550CLOSE#0
  560ENDPROC
  570 
  580DEFPROCload
  590LOCAL file,loop,loop2
  600PRINT"Load"
  610REPEAT
  620file=OPENIN(FNfilename)
  630IF file=0 PRINT"File not found"
  640UNTIL file<>0
  650PRINT"Loading please wait"
  660FOR loop=32 TO 126
  670FOR loop2=0 TO 7
  680PROCrow_poke(loop,loop2,BGET#file)
  690NEXT
  700NEXT
  710CLOSE#0
  720ENDPROC
  730 
  740DEFPROCedit
  750LOCAL x,y,char,key
  760char=FNchoose_character
  770MOVE 500,500
  780FOR x=500 TO 900 STEP 50
  790MOVE 500,x
  800DRAW 900,x
  810MOVE x,500
  820DRAW x,900
  830NEXT
  840PROCset_up_grid
  850GCOL0,1
  860MOVE 450,450
  870DRAW 450,900
  880MOVE 450,450
  890DRAW 950,450
  900*FX4,1
  910*FX225,144
  920*FX226,154
  930x=4
  940y=4
  950PRINTTAB(0,20);"Position cross with cursor keys"'"Use RETURN key to toggle status of box"
  960PRINTTAB(0,3);"Character:";CHR$(char)
  970PRINTTAB(0,4);"ASCII:";char
  980REPEAT
  990PROCcross(x,y)
 1000PRINTTAB(0,5);"X:";x
 1010PRINTTAB(0,6);"Y:";y
 1020A%=char
 1030CALL set_up_udg
 1040PRINTTAB(0,8);"Current:";CHR$(130)
 1050REPEAT *FX21,0
 1060key=GET
 1070UNTIL key=13 OR (key>135 AND key<140) OR key>&8F
 1080IF key=13 PROCtoggle(x,y)
 1090IF key>135 AND key<140 PROCmove
 1100IF key=&90 PROCclear_grid
 1110IF key=&91 PROCfill_grid
 1120IF key=&92 PROCfill_vert(255)
 1130IF key=&93 PROCfill_hori(1)
 1140IF key=&94 PROCset_default(char)
 1150IF key=&95 PROCcopy_to
 1160IF key=&96 PROCcopy_from
 1170IF key=&97 PROCinverse_vert
 1180IF key=&98 PROCinverse_hori
 1190IF key=&9A PROCinverse_grid
 1200IF key=&9B PROCchange_char
 1210IF key=&9C PROCfill_vert(0)
 1220IF key=&9D PROCfill_hori(0)
 1230IF key=&9E PROCset_default(FNchoose_character)
 1240IF key=&9F PROCswap
 1250IF key=&A0 PROCprinter
 1260IF key=&A1 PROCreverse_vert
 1270IF key=&A2 PROCreverse_hori
 1280IF key=&A3 PROCflip
 1290UNTIL key=&99
 1300*FX4,0
 1310*FX225,1
 1320ENDPROC
 1330 
 1340DEFPROCtest_print
 1350LOCAL x,y,char
 1360char=FNchoose_character
 1370FOR x=0 TO 10
 1380VDU2,1,27,1,75,1,8,1,0
 1390FOR y=0 TO 7
 1400VDU 1,FNrow_peek(char,y)
 1410NEXT
 1420VDU 1,32
 1430NEXT
 1440VDU3
 1450ENDPROC
 1460 
 1470DEFPROCgive_udg
 1480LOCAL x,char
 1490char=FNchoose_character
 1500PRINT''"VDU23,x,";
 1510FOR x=0 TO 7
 1520A%=char
 1530CALL set_up_udg
 1540PRINT;?(udg+2+x);
 1550IF x<>7 PRINT;",";
 1560NEXT
 1570VDU GET
 1580ENDPROC
 1590 
 1600DEFPROCview
 1610LOCAL char,key
 1620PRINT''"View Fonts"
 1630PRINT"Press RETURN to advance to next font.   Press SPACE to return to menu"
 1640char=32
 1650REPEAT
 1660 
 1670A%=char
 1680CALL set_up_udg
 1690PRINT'"Character:";CHR$(char);"  (";char;")  Definition:";CHR$(130)
 1700*FX21,0
 1710REPEAT key=GET
 1720UNTIL key=32 OR key=13
 1730char=char+1
 1740UNTIL char>126 OR key=32
 1750ENDPROC
 1760 
 1770DEFPROCall_default
 1780LOCAL char,z
 1790PRINT"Please Wait"
 1800FOR char=32 TO 126
 1810A%=char
 1820CALL get_default
 1830FOR z=0 TO 7
 1840PROCrow_poke(char,z,?(block2+z))
 1850NEXT
 1860NEXT
 1870ENDPROC
 1880 
 1890DEFPROCos
 1900LOCAL os$,key
 1910REPEAT
 1920INPUT'"*"os$
 1930OSCLI(os$)
 1940*FX21,0
 1950key=GET
 1960UNTIL key<>42
 1970ENDPROC
 1980 
 1990DEFPROCfill_box(A%,X%,Y%)
 2000CALLfill_box
 2010ENDPROC
 2020 
 2030DEFPROCcross(x,y)
 2040GCOL4,0
 2050MOVE 525+(x*50),450
 2060PLOT1,0,500
 2070MOVE 450,525+(y*50)
 2080PLOT1,500,0
 2090ENDPROC
 2100 
 2110DEFPROCtoggle(x,y)
 2120PROCcross(x,y)
 2130PROCpoke(char,x,y,2)
 2140PROCfill_box(FNpeek(char,x,y),x,y)
 2150ENDPROC
 2160 
 2170DEFPROCmove
 2180IF INKEY(-1) PROCmove_grid(char) ELSE PROCmove_cross
 2190ENDPROC
 2200 
 2210DEFPROCmove_cross
 2220PROCcross(x,y)
 2230IF key=136 AND x>0 x=x-1
 2240IF key=137 AND x<7 x=x+1
 2250IF key=138 AND y>0 y=y-1
 2260IF key=139 AND y<7 y=y+1
 2270ENDPROC
 2280 
 2290DEFPROCset_up_grid
 2300LOCAL x,y
 2310FOR x=0 TO 7
 2320FOR y=0 TO 7
 2330PROCfill_box(FNpeek(char,x,y),x,y)
 2340NEXT
 2350NEXT
 2360ENDPROC
 2370 
 2380DEFPROCclear_grid
 2390LOCAL z
 2400PROCcross(x,y)
 2410FOR z=0 TO 7
 2420PROCrow_poke(char,z,0)
 2430NEXT
 2440PROCset_up_grid
 2450ENDPROC
 2460 
 2470DEFPROCfill_grid
 2480LOCAL z
 2490PROCcross(x,y)
 2500FOR z=0 TO 7
 2510PROCrow_poke(char,z,255)
 2520NEXT
 2530PROCset_up_grid
 2540ENDPROC
 2550 
 2560DEFPROCfill_vert(v)
 2570PROCcross(x,y)
 2580PROCrow_poke(char,x,v)
 2590PROCset_up_grid
 2600ENDPROC
 2610 
 2620DEFPROCfill_hori(v)
 2630LOCAL z
 2640PROCcross(x,y)
 2650FOR z=0 TO 7
 2660PROCpoke(char,z,y,v)
 2670NEXT
 2680PROCset_up_grid
 2690ENDPROC
 2700 
 2710DEFPROCinverse_vert
 2720LOCAL z
 2730PROCcross(x,y)
 2740FOR z=0 TO 7
 2750PROCpoke(char,x,z,2)
 2760NEXT
 2770PROCset_up_grid
 2780ENDPROC
 2790 
 2800DEFPROCinverse_hori
 2810LOCAL z
 2820PROCcross(x,y)
 2830FOR z=0 TO 7
 2840PROCpoke(char,z,y,2)
 2850NEXT
 2860PROCset_up_grid
 2870ENDPROC
 2880 
 2890DEFPROCset_default(get)
 2900LOCAL z
 2910PROCcross(x,y)
 2920A%=get
 2930CALL get_default
 2940FOR z=0 TO 7
 2950PROCrow_poke(char,z,?(block2+z))
 2960NEXT
 2970PROCset_up_grid
 2980ENDPROC
 2990 
 3000DEFPROCcopy_to
 3010LOCAL to,z
 3020PROCcross(x,y)
 3030PRINTTAB(0,23);
 3040to=FNchoose_character
 3050FOR z=0 TO 7
 3060PROCrow_poke(to,z,FNrow_peek(char,z))
 3070NEXT
 3080ENDPROC
 3090 
 3100DEFPROCcopy_from
 3110LOCAL from,z
 3120PROCcross(x,y)
 3130PRINTTAB(0,23);
 3140from=FNchoose_character
 3150FOR z=0 TO 7
 3160PROCrow_poke(char,z,FNrow_peek(from,z))
 3170NEXT
 3180PROCset_up_grid
 3190ENDPROC
 3200 
 3210DEFPROCmove_grid(A%)
 3220PROCcross(x,y)
 3230IF key=136 CALL grid_left
 3240IF key=137 CALL grid_right
 3250IF key=138 CALL grid_down
 3260IF key=139 CALL grid_up
 3270PROCset_up_grid
 3280ENDPROC
 3290 
 3300DEFPROCinverse_grid
 3310LOCAL z
 3320PROCcross(x,y)
 3330FOR z=0 TO 7
 3340PROCrow_poke(char,z,FNrow_peek(char,z) EOR&FF)
 3350NEXT
 3360PROCset_up_grid
 3370ENDPROC
 3380 
 3390DEFPROCchange_char
 3400PROCcross(x,y)
 3410char=FNchoose_character
 3420PROCset_up_grid
 3430PRINTTAB(0,3);"Character:";CHR$(char)
 3440PRINTTAB(0,4);"ASCII:";char
 3450ENDPROC
 3460 
 3470DEFPROCvertical_reverse(v)
 3480LOCAL byte,byte2
 3490byte=FNrow_peek(char,v)
 3500IF byte=255 OR byte=0 ENDPROC
 3510byte2=0
 3520IF byte AND 1 byte2=128
 3530IF byte AND 2 byte2=byte2 OR 64
 3540IF byte AND 4 byte2=byte2 OR 32
 3550IF byte AND 8 byte2=byte2 OR 16
 3560IF byte AND 16 byte2=byte2 OR 8
 3570IF byte AND 32 byte2=byte2 OR 4
 3580IF byte AND 64 byte2=byte2 OR 2
 3590IF byte AND 128 byte2=byte2 OR 1
 3600PROCrow_poke(char,v,byte2)
 3610ENDPROC
 3620 
 3630DEFPROCreverse_hori
 3640LOCAL byte,byte2,z
 3650PROCcross(x,y)
 3660FOR z=0 TO 3
 3670byte=FNpeek(char,z,y)
 3680byte2=FNpeek(char,7-z,y)
 3690PROCpoke(char,7-z,y,byte)
 3700PROCpoke(char,z,y,byte2)
 3710NEXT
 3720PROCset_up_grid
 3730ENDPROC
 3740 
 3750DEFPROCreverse_vert
 3760PROCcross(x,y)
 3770PROCvertical_reverse(x)
 3780PROCset_up_grid
 3790ENDPROC
 3800 
 3810DEFPROCflip
 3820LOCAL z
 3830PROCcross(x,y)
 3840FOR z=0 TO 7
 3850PROCvertical_reverse(z)
 3860NEXT
 3870PROCset_up_grid
 3880ENDPROC
 3890 
 3900DEFPROCswap
 3910LOCAL swap,z,byte
 3920PROCcross(x,y)
 3930swap=FNchoose_character
 3940FOR z=0 TO 7
 3950byte=FNrow_peek(swap,z)
 3960PROCrow_poke(swap,z,FNrow_peek(char,z))
 3970PROCrow_poke(char,z,byte)
 3980NEXT
 3990PROCset_up_grid
 4000ENDPROC
 4010 
 4020DEFPROCcompile
 4030LOCAL file$,x$,mem,loc,char,z,save$
 4040PRINT'"Compile"
 4050file$=FNfilename
 4060REPEAT INPUT "Run time memory location for trap code  (in hex): "x$
 4070mem=EVAL("&"+x$)
 4080UNTIL mem>0 AND mem<&FFFF
 4090PRINT"Please Wait"
 4100loc=FNassemble_trap(mem)
 4110FOR char=32 TO 126
 4120FOR z=0 TO 7
 4130?loc=FNrow_peek(char,z)
 4140loc=loc+1
 4150NEXT
 4160NEXT
 4170save$="*SAVE "+file$+" 6000 +4FF "+x$+" "+x$
 4180PRINTsave$
 4190OSCLI(save$)
 4200ENDPROC
 4210 
 4220DEFFNassemble_trap(mem)
 4230osbyte=&FFF4
 4240FOR pass=4 TO 6 STEP 2
 4250P%=mem
 4260O%=&6000
 4270[
 4280OPT pass
 4290.enter LDA&20E \ Take control of WRCHV
 4300STA old_wrchv
 4310LDA&20F
 4320STA old_wrchv+1
 4330SEI
 4340LDA#new_wrchv MOD 256
 4350STA&20E
 4360LDA#new_wrchv DIV 256
 4370STA&20F
 4380CLI
 4390RTS
 4400.set_fx LDA#3
 4410LDX#64
 4420LDY#0
 4430JMP osbyte
 4440.clear_fx LDA#3
 4450LDX#0
 4460LDY#0
 4470JMP osbyte
 4480.new_line LDA#1
 4490JSR psudeo_jump
 4500LDA#&D
 4510.psudeo_jump JMP(old_wrchv)
 4520.new_wrchv JSR psudeo_jump
 4530CMP#2
 4540BEQ set_fx
 4550CMP#3
 4560BEQ clear_fx
 4570CMP#13
 4580BEQ new_line
 4590CMP#32
 4600BMI quit
 4610CMP#127
 4620BPL quit
 4630STA sa
 4640STY sy
 4650STX sx
 4660 
 4670LDA#&75
 4680JSR osbyte
 4690TXA
 4700AND#1
 4710BNE printer_on
 4720LDA sa
 4730LDX sx
 4740LDY sy
 4750.quit RTS
 4760 
 4770.old_wrchv EQUW 0
 4780.sa BRK
 4790.sx BRK
 4800.sy BRK
 4810.control EQUB 1 \ Epson Control Sequence for
 4820EQUB 27 \ 8 bits of graphic data
 4830EQUB 1 \ Equivalent to VDU1,27,1,75,1,8,1,0
 4840EQUB 75 \ For Double Density bit image change 75 to 76
 4850EQUB1:EQUB8
 4860EQUB1:EQUB0
 4870 
 4880.printer_on \ Send Control Sequence
 4890LDY#0
 4900.sback LDA control,Y
 4910JSR psudeo_jump
 4920INY
 4930CPY#8
 4940BNE sback
 4950LDA sa
 4960JSR locate_char
 4970LDY#0
 4980.sback2 LDA#1
 4990JSR psudeo_jump
 5000.char_addr LDA&8000,Y
 5010JSR psudeo_jump
 5020INY
 5030CPY#8
 5040BNE sback2
 5050LDA sa
 5060LDX sx
 5070LDY sy
 5080RTS
 5090.locate_char STA char_addr+1 \ A=char Finds location of chars 8 bytes
 5100CMP#64
 5110BCS lcok
 5120SEC
 5130SBC#32
 5140STA char_addr+1
 5150.lcok LDA#0
 5160STA char_addr+2
 5170ASL char_addr+1
 5180ADC#0
 5190ASL char_addr+1
 5200ADC#0
 5210ASL char_addr+1
 5220ADC#0
 5230STA char_addr+2
 5240LDA#fonts_table MOD 256
 5250CLC
 5260ADC char_addr+1
 5270STA char_addr+1
 5280LDA#fonts_table DIV 256
 5290ADC char_addr+2
 5300STA char_addr+2
 5310RTS
 5320.fonts_table \ Fonts loaded here
 5330]
 5340NEXT
 5350:=fonts_table
 5360 
 5370DEFFNtest(x$)
 5380LOCAL x
 5390PRINT'x$
 5400x$=GET$
 5410IF x$="Y" OR x$="y" x=TRUE
 5420IF x$="N" OR x$="n" x=FALSE
 5430:=x
 5440 
 5450DEFPROCpoke(char,x,y,value)
 5460LOCAL byte
 5470byte=fonts+x+((char-32)*8)
 5480IF value=0 ?byte=?byte AND (255-2^y)
 5490IF value=1 ?byte=?byte OR 2^y
 5500IF value=2 ?byte=?byte EOR 2^y
 5510ENDPROC
 5520 
 5530DEFFNpeek(char,x,y)
 5540LOCAL byte
 5550byte=fonts+x+((char-32)*8)
 5560IF ?byte AND 2^y :=1 ELSE :=0
 5570 
 5580DEFPROCrow_poke(char,x,value)
 5590?(fonts+x+((char-32)*8))=value
 5600ENDPROC
 5610 
 5620DEFFNrow_peek(char,x)
 5630:=?(fonts+x+((char-32)*8))
 5640 
 5650DEFFNfilename
 5660LOCAL x$
 5670IF FNtest("Catalogue?") THEN *CAT
 5680REPEAT INPUT"Filename:"x$
 5690UNTIL x$<>""
 5700:=x$
 5710 
 5720DEFFNchoose_character
 5730LOCAL x$,y$,x
 5740REPEAT
 5750PRINTTAB(0,23);
 5760INPUT "Font Character: "x$
 5770IF x$="" REPEAT INPUT "Font number: "y$:UNTIL y$<>""
 5780IF x$="" x=EVAL(y$) ELSE x=ASC(x$)
 5790IF x<32 OR x>127 PRINT"Illegal Character Font"
 5800UNTIL x>31 AND x<128
 5810PRINTTAB(0,23);SPC(35);TAB(0,24);SPC(35);TAB(0,25);SPC(35);
 5820:=x
 5830 
 5840DEFPROCassemble(mc)
 5850LOCAL pass,oswrch,back,back1,back2,back3,back4
 5860LOCAL exit
 5870LOCAL osword
 5880oswrch=&FFEE
 5890osasci=&FFE3
 5900osword=&FFF1
 5910FOR pass=0 TO 2 STEP 2
 5920P%=mc
 5930[
 5940OPT pass
 5950.fill_box \ X and Y contain x and y cords for box fill A=GCOL
 5960STA gcol
 5970LDA#1
 5980STA sx2
 5990STA sy2
 6000LDA#&F9
 6010STA sy
 6020STA sx
 6030 
 6040LDA sx
 6050CLC
 6060ADC times50l,X
 6070STA sx
 6080LDA sx2
 6090ADC times50h,X
 6100STA sx2
 6110 
 6120LDA sy
 6130CLC
 6140ADC times50l,Y
 6150STA sy
 6160LDA sy2
 6170ADCtimes50h,Y
 6180STA sy2
 6190 
 6200LDA sx
 6210STA pixel
 6220LDA sx2
 6230STA pixel+1
 6240LDA sy
 6250STA pixel+2
 6260LDA sy2
 6270STA pixel+3
 6280LDA#9
 6290LDX#pixel MOD 256
 6300LDY#pixel DIV 256
 6310JSR osword
 6320LDA pixel+4
 6330CMP gcol
 6340BEQ exit
 6350 
 6360LDY#0
 6370.back3 LDA move,Y \ MOVE x,y
 6380JSR oswrch
 6390INY
 6400CPY#6
 6410BNE back3
 6420 
 6430LDA#18 \ GCOL0,a
 6440JSR oswrch
 6450LDA#0
 6460JSR oswrch
 6470LDA gcol
 6480JSR oswrch
 6490 
 6500LDX#0 \ PLOT1,42,0;PLOT0,-42,2; 20 times
 6510.back5 LDY#0
 6520.back4 LDA plot,Y
 6530JSR oswrch
 6540INY
 6550CPY#&C
 6560BNE back4
 6570INX
 6580CPX#20
 6590BNE back5
 6600.exit RTS
 6610.gcol BRK
 6620.move EQUB 25
 6630EQUB 4
 6640.sx BRK
 6650.sx2 BRK
 6660.sy BRK
 6670.sy2 BRK
 6680.plot EQUB 25
 6690EQUB1
 6700EQUW 42
 6710EQUW 0
 6720EQUB 25
 6730EQUB 0
 6740EQUW -42
 6750EQUW 2
 6760.pixel EQUD 0
 6770BRK
 6780.times50l EQUB0:EQUB50 \ Multiplication look up table
 6790EQUB100:EQUB150 \ To speed up graphics
 6800EQUB200:EQUB250 \ Helps with multipication by 50
 6810EQUB&2C:EQUB&5E
 6820.times50h EQUB0:EQUB0
 6830EQUB0:EQUB0
 6840EQUB0:EQUB0
 6850EQUB1:EQUB1
 6860.get_default STA block \ A=char to get
 6870LDA#&A
 6880LDX#block MOD 256
 6890LDY#block DIV 256
 6900JSR osword
 6910LDX#0
 6920LDA#0
 6930.gback1 STA block2,X
 6940INX
 6950CPX#8
 6960BNE gback1
 6970LDY#0
 6980.gback2 LDX#0
 6990.gback3 LDA block+1,X
 7000AND mask,Y
 7010CMP#0
 7020BEQ gfor1
 7030LDA block2,Y:ORA mask,X
 7040LDA block2,Y
 7050ORA mask,X
 7060STA block2,Y
 7070.gfor1 INX
 7080CPX#8
 7090BNE gback3
 7100INY
 7110CPY#8
 7120BNE gback2
 7130RTS
 7140.mask EQUD&10204080
 7150EQUD&01020408
 7160.block BRK
 7170EQUD 0
 7180EQUD 0
 7190.block2 BRK
 7200EQUD 0
 7210EQUD 0
 7220 
 7230.set_up_udg STA char
 7240.vback0 LDX#0
 7250LDA#0
 7260.vback1 STA udg+2,X
 7270INX
 7280CPX#8
 7290BNE vback1
 7300 
 7310LDA char
 7320JSR locate_char
 7330 
 7340LDX#0
 7350.vback3 LDY#0
 7360.vback2 LDA(&70),Y
 7370AND vmask,X
 7380CMP#0
 7390BEQ vfor
 7400LDA udg+2,X
 7410ORA vmask,Y
 7420STA udg+2,X
 7430.vfor INY
 7440CPY#8
 7450BNE vback2
 7460INX
 7470CPX#8
 7480BNE vback3
 7490 
 7500LDX#0
 7510.vback4 LDA udg,X
 7520JSR oswrch
 7530INX
 7540CPX#10
 7550BNE vback4
 7560RTS
 7570 
 7580.udg EQUB 23
 7590EQUB 130
 7600EQUD 0
 7610EQUD 0
 7620.char BRK
 7630.vmask EQUD&10204080
 7640EQUD&01020408
 7650 
 7660.grid_left \ A=char
 7670JSR locate_char
 7680LDY#0
 7690LDA(&70),Y
 7700PHA
 7710LDY#1
 7720LDA(&70),Y
 7730DEY
 7740STA(&70),Y
 7750LDY#2
 7760LDA(&70),Y
 7770DEY
 7780STA(&70),Y
 7790LDY#3
 7800LDA(&70),Y
 7810DEY
 7820STA(&70),Y
 7830LDY#4
 7840LDA(&70),Y
 7850DEY
 7860STA(&70),Y
 7870LDY#5
 7880LDA(&70),Y
 7890DEY
 7900STA(&70),Y
 7910LDY#6
 7920LDA(&70),Y
 7930DEY
 7940STA(&70),Y
 7950LDY#7
 7960LDA(&70),Y
 7970DEY
 7980STA(&70),Y
 7990LDY#7
 8000PLA
 8010STA(&70),Y
 8020RTS
 8030 
 8040.grid_right STA char
 8050LDX#0
 8060.grba LDA char
 8070JSR grid_left
 8080INX
 8090CPX#7
 8100BNE grba
 8110RTS
 8120 
 8130.grid_up JSR locate_char
 8140LDY#0
 8150.guba LDA(&70),Y
 8160ROL A
 8170ADC#0
 8180STA(&70),Y
 8190INY
 8200CPY#8
 8210BNE guba
 8220RTS
 8230 
 8240.grid_down JSR locate_char
 8250LDY#0
 8260.gdba LDA(&70),Y
 8270ROR A
 8280BCC gdfo
 8290CLC
 8300ADC#128
 8310.gdfo STA(&70),Y
 8320INY
 8330CPY#8
 8340BNE gdba
 8350RTS
 8360 
 8370.locate_char STA&70 \ A=char Finds location of chars 8 bytes
 8380CMP#64
 8390BCS lok
 8400SEC
 8410SBC#32
 8420STA&70
 8430.lok LDA#0
 8440STA&71
 8450ASL&70
 8460ADC#0
 8470ASL&70
 8480ADC#0
 8490ASL&70
 8500ADC#0
 8510STA&71
 8520LDA#fonts MOD 256
 8530CLC
 8540ADC&70
 8550STA&70
 8560LDA#fonts DIV 256
 8570ADC&71
 8580STA&71
 8590RTS
 8600]
 8610NEXT
 8620ENDPROC
 8630 
 8640DEFPROCprinter
 8650REM Insert your Own Printer Dump Program here
 8660ENDPROC

%� Printer Character Font Designer
� (C) Allan Kelly 13/5/87
 
(� mc 550
2� fonts 800
<
� edit(8)
F�assemble(mc)
P�
Z�
d�7
n"�10,0);�(141);"Printer Fonts"
x"�10,1);�(141);"Printer Fonts"
� �(7);"(C) Allan Kelly 1987"
�&�'�(5);"C - Compile Fonts for Use"
��'�(5);"S - Save Fonts"
��'�(5);"L - Load Fonts"
��'�(5);"E - Edit Fonts"
��'�(5);"V - View Fonts"
�%�'�(5);"T - Test Print Character"
�&�'�(5);"U - Give settings for UDG"
�.�'�(5);"D - Set all characters to default"
��'�(5);"Q - Quit"
�	*FX21
�
� x$=�
�+� �"CSLEVTUDQ*",x$) � �"cslevtudq*",x$)
x$=�(�(x$)�&DF)
 
� x$="C" �compile
"� x$="S" �save
,� x$="L" �load
6� x$="E" �4:�edit:�7
@� x$="V" �4:�view:�7
J� x$="T" �test_print
T� x$="U" �give_udg
^� x$="D" �all_default
h� �(x$)=10 �os
r 
|� x$="Q"
�1� �test("Have the current fonts been saved?")
��
� 
�
��save
�� file,loop,loop2
��"Save"
��
�file=�(�filename)
�"� file=0 �"File not Available"
�
� file<>0
��"Saving please wait"
�� loop=32 � 126
�� loop2=0 � 7
 �#file,�row_peek(loop,loop2)
�
�
&�#0
0�
: 
D
��load
N� file,loop,loop2
X�"Load"
b�
lfile=�(�filename)
v� file=0 �"File not found"
�
� file<>0
��"Loading please wait"
�� loop=32 � 126
�� loop2=0 � 7
� �row_poke(loop,loop2,�#file)
��
��
��#0
��
� 
�
��edit
�� x,y,char,key
�char=�choose_character

� 500,500
� x=500 � 900 � 50
� 500,x
 � 900,x
*� x,500
4� x,900
>�
H�set_up_grid
R�0,1
\
� 450,450
f
� 450,900
p
� 450,450
z
� 950,450
�
*FX4,1
�*FX225,144
�*FX226,154
�x=4
�y=4
�V�0,20);"Position cross with cursor keys"'"Use RETURN key to toggle status of box"
��0,3);"Character:";�(char)
��0,4);"ASCII:";char
��
��cross(x,y)
��0,5);"X:";x
��0,6);"Y:";y
�A%=char
� set_up_udg
�0,8);"Current:";�(130)

� *FX21,0
$	key=�
.,� key=13 � (key>135 � key<140) � key>&8F
8� key=13 �toggle(x,y)
B� key>135 � key<140 �move
L� key=&90 �clear_grid
V� key=&91 �fill_grid
`� key=&92 �fill_vert(255)
j� key=&93 �fill_hori(1)
t � key=&94 �set_default(char)
~� key=&95 �copy_to
�� key=&96 �copy_from
�� key=&97 �inverse_vert
�� key=&98 �inverse_hori
�� key=&9A �inverse_grid
�� key=&9B �change_char
�� key=&9C �fill_vert(0)
�� key=&9D �fill_hori(0)
�-� key=&9E �set_default(�choose_character)
�� key=&9F �swap
�� key=&A0 �printer
�� key=&A1 �reverse_vert
�� key=&A2 �reverse_hori
� key=&A3 �flip


� key=&99

*FX4,0
*FX225,1
(�
2 
<��test_print
F� x,y,char
Pchar=�choose_character
Z� x=0 � 10
d�2,1,27,1,75,1,8,1,0
n
� y=0 � 7
x� 1,�row_peek(char,y)
��
�
� 1,32
��
��3
��
� 
���give_udg
�� x,char
�char=�choose_character
��''"VDU23,x,";
�
� x=0 � 7
�A%=char
�� set_up_udg
�;?(udg+2+x);
� x<>7 �;",";
�
"� �
,�
6 
@
��view
J� char,key
T�''"View Fonts"
^L�"Press RETURN to advance to next font.   Press SPACE to return to menu"
hchar=32
r�
| 
�A%=char
�� set_up_udg
�=�'"Character:";�(char);"  (";char;")  Definition:";�(130)
�*FX21,0
�� key=�
�� key=32 � key=13
�char=char+1
�� char>126 � key=32
��
� 
���all_default
�� char,z
��"Please Wait"
� char=32 � 126
A%=char
� get_default
&
� z=0 � 7
0!�row_poke(char,z,?(block2+z))
:�
D�
N�
X 
b��os
l
� os$,key
v�
��'"*"os$
�
�(os$)
�*FX21,0
�	key=�
�
� key<>42
��
� 
���fill_box(A%,X%,Y%)
�
�fill_box
��
� 
���cross(x,y)
��4,0
� 525+(x*50),450
�1,0,500
� 450,525+(y*50)
 �1,500,0
*�
4 
>��toggle(x,y)
H�cross(x,y)
R�poke(char,x,y,2)
\"�fill_box(�peek(char,x,y),x,y)
f�
p 
z
��move
�*� �(-1) �move_grid(char) � �move_cross
��
� 
���move_cross
��cross(x,y)
�� key=136 � x>0 x=x-1
�� key=137 � x<7 x=x+1
�� key=138 � y>0 y=y-1
�� key=139 � y<7 y=y+1
��
� 
���set_up_grid
�	� x,y
	
� x=0 � 7
	
� y=0 � 7
	"�fill_box(�peek(char,x,y),x,y)
	$�
	.�
	8�
	B 
	L��clear_grid
	V� z
	`�cross(x,y)
	j
� z=0 � 7
	t�row_poke(char,z,0)
	~�
	��set_up_grid
	��
	� 
	���fill_grid
	�� z
	��cross(x,y)
	�
� z=0 � 7
	��row_poke(char,z,255)
	��
	��set_up_grid
	��
	� 
��fill_vert(v)

�cross(x,y)
�row_poke(char,x,v)
�set_up_grid
(�
2 
<��fill_hori(v)
F� z
P�cross(x,y)
Z
� z=0 � 7
d�poke(char,z,y,v)
n�
x�set_up_grid
��
� 
���inverse_vert
�� z
��cross(x,y)
�
� z=0 � 7
��poke(char,x,z,2)
��
��set_up_grid
��
� 
���inverse_hori
�� z
�cross(x,y)

� z=0 � 7
�poke(char,z,y,2)
"�
,�set_up_grid
6�
@ 
J��set_default(get)
T� z
^�cross(x,y)
h
A%=get
r� get_default
|
� z=0 � 7
�!�row_poke(char,z,?(block2+z))
��
��set_up_grid
��
� 
�
��copy_to
�
� to,z
��cross(x,y)
��0,23);
�to=�choose_character
�
� z=0 � 7
�%�row_poke(to,z,�row_peek(char,z))
��
�
 
��copy_from
&� from,z
0�cross(x,y)
:�0,23);
Dfrom=�choose_character
N
� z=0 � 7
X'�row_poke(char,z,�row_peek(from,z))
b�
l�set_up_grid
v�
� 
���move_grid(A%)
��cross(x,y)
�� key=136 � grid_left
�� key=137 � grid_right
�� key=138 � grid_down
�� key=139 � grid_up
��set_up_grid
��
� 
���inverse_grid
�� z
��cross(x,y)


� z=0 � 7

,�row_poke(char,z,�row_peek(char,z) �&FF)

�

 �set_up_grid

*�

4 

>��change_char

H�cross(x,y)

Rchar=�choose_character

\�set_up_grid

f�0,3);"Character:";�(char)

p�0,4);"ASCII:";char

z�

� 

���vertical_reverse(v)

�� byte,byte2

�byte=�row_peek(char,v)

�� byte=255 � byte=0 �

�byte2=0

�� byte � 1 byte2=128

�� byte � 2 byte2=byte2 � 64

�� byte � 4 byte2=byte2 � 32

�� byte � 8 byte2=byte2 � 16

�� byte � 16 byte2=byte2 � 8

�� byte � 32 byte2=byte2 � 4

�� byte � 64 byte2=byte2 � 2
 � byte � 128 byte2=byte2 � 1
�row_poke(char,v,byte2)
�
$ 
.��reverse_hori
8� byte,byte2,z
B�cross(x,y)
L
� z=0 � 3
Vbyte=�peek(char,z,y)
`byte2=�peek(char,7-z,y)
j�poke(char,7-z,y,byte)
t�poke(char,z,y,byte2)
~�
��set_up_grid
��
� 
���reverse_vert
��cross(x,y)
��vertical_reverse(x)
��set_up_grid
��
� 
�
��flip
�� z
��cross(x,y)

� z=0 � 7

�vertical_reverse(z)
�
�set_up_grid
(�
2 
<
��swap
F� swap,z,byte
P�cross(x,y)
Zswap=�choose_character
d
� z=0 � 7
nbyte=�row_peek(swap,z)
x'�row_poke(swap,z,�row_peek(char,z))
��row_poke(char,z,byte)
��
��set_up_grid
��
� 
�
��compile
�#� file$,x$,mem,loc,char,z,save$
��'"Compile"
�file$=�filename
�>� � "Run time memory location for trap code  (in hex): "x$
�mem=�("&"+x$)
�� mem>0 � mem<&FFFF
��"Please Wait"
loc=�assemble_trap(mem)
� char=32 � 126

� z=0 � 7
"?loc=�row_peek(char,z)
,
loc=loc+1
6�
@�
J0save$="*SAVE "+file$+" 6000 +4FF "+x$+" "+x$
T
�save$
^�(save$)
h�
r 
|ݤassemble_trap(mem)
�osbyte=&FFF4
�� pass=4 � 6 � 2
�
P%=mem
�O%=&6000
�[
�OPT pass
�*.enter LDA&20E \ Take control of WRCHV
�STA old_wrchv
�LDA&20F
�STA old_wrchv+1
�SEI
�LDA#new_wrchv � 256
�STA&20E
LDA#new_wrchv � 256
STA&20F
CLI
&RTS
0.set_fx LDA#3
:
LDX#64
D	LDY#0
NJMP osbyte
X.clear_fx LDA#3
b	LDX#0
l	LDY#0
vJMP osbyte
�.new_line LDA#1
�JSR psudeo_jump
�
LDA#&D
�.psudeo_jump JMP(old_wrchv)
�.new_wrchv JSR psudeo_jump
�	CMP#2
�BEQ set_fx
�	CMP#3
�BEQ clear_fx
�
CMP#13
�BEQ new_line
�
CMP#32
�BMI quit
CMP#127
BPL quit

STA sa
 
STY sy
*
STX sx
4 
>LDA#&75
HJSR osbyte
RTXA
\�#1
fBNE printer_on
p
LDA sa
z
LDX sx
�
LDY sy
�
.quit RTS
� 
�.old_wrchv EQUW 0
�.sa BRK
�.sx BRK
�.sy BRK
�0.control EQUB 1 \ Epson Control Sequence for
�$EQUB 27 \ 8 bits of graphic data
�-EQUB 1 \ Equivalent to �1,27,1,75,1,8,1,0
�:EQUB 75 \ For Double Density bit image change 75 to 76
�EQUB1:EQUB8
�EQUB1:EQUB0
 
'.printer_on \ Send Control Sequence
	LDY#0
$.sback LDA control,Y
.JSR psudeo_jump
8INY
B	CPY#8
L
BNE sback
V
LDA sa
`JSR locate_char
j	LDY#0
t.sback2 LDA#1
~JSR psudeo_jump
�.char_addr LDA&8000,Y
�JSR psudeo_jump
�INY
�	CPY#8
�BNE sback2
�
LDA sa
�
LDX sx
�
LDY sy
�RTS
�I.locate_char STA char_addr+1 \ A=char Finds location of chars 8 bytes
�
CMP#64
�BCS lcok
SEC


SBC#32
STA char_addr+1
.lcok LDA#0
(STA char_addr+2
2ASL char_addr+1
<	ADC#0
FASL char_addr+1
P	ADC#0
ZASL char_addr+1
d	ADC#0
nSTA char_addr+2
xLDA#fonts_table � 256
�CLC
�ADC char_addr+1
�STA char_addr+1
�LDA#fonts_table � 256
�ADC char_addr+2
�STA char_addr+2
�RTS
�$.fonts_table \ Fonts loaded here
�]
��
�:=fonts_table
� 
�ݤtest(x$)
� x
�'x$
x$=�
"� x$="Y" � x$="y" x=�
,� x$="N" � x$="n" x=�
6:=x
@ 
J��poke(char,x,y,value)
T
� byte
^byte=fonts+x+((char-32)*8)
h%� value=0 ?byte=?byte � (255-2^y)
r� value=1 ?byte=?byte � 2^y
|� value=2 ?byte=?byte � 2^y
��
� 
�ݤpeek(char,x,y)
�
� byte
�byte=fonts+x+((char-32)*8)
�� ?byte � 2^y :=1 � :=0
� 
���row_poke(char,x,value)
�"?(fonts+x+((char-32)*8))=value
��
� 
�ݤrow_peek(char,x)
�:=?(fonts+x+((char-32)*8))
 
ݤfilename
� x$
& � �test("Catalogue?") � *CAT
0� �"Filename:"x$
:� x$<>""
D:=x$
N 
Xݤchoose_character
b
� x$,y$,x
l�
v�0,23);
�� "Font Character: "x$
�*� x$="" � � "Font number: "y$:� y$<>""
�� x$="" x=�(y$) � x=�(x$)
�,� x<32 � x>127 �"Illegal Character Font"
�� x>31 � x<128
�,�0,23);�(35);�0,24);�(35);�0,25);�(35);
�:=x
� 
���assemble(mc)
�.� pass,oswrch,back,back1,back2,back3,back4
�
� exit
�� osword
�oswrch=&FFEE
osasci=&FFE3
osword=&FFF1
� pass=0 � 2 � 2
 	P%=mc
*[
4OPT pass
>>.fill_box \ X and Y contain x and y cords for box fill A=�
HSTA gcol
R	LDA#1
\STA sx2
fSTA sy2
pLDA#&F9
z
STA sy
�
STA sx
� 
�
LDA sx
�CLC
�ADC times50l,X
�
STA sx
�LDA sx2
�ADC times50h,X
�STA sx2
� 
�
LDA sy
�CLC
�ADC times50l,Y

STA sy
LDA sy2
ADCtimes50h,Y
$STA sy2
. 
8
LDA sx
B
STA pixel
LLDA sx2
VSTA pixel+1
`
LDA sy
jSTA pixel+2
tLDA sy2
~STA pixel+3
�	LDA#9
�LDX#pixel � 256
�LDY#pixel � 256
�JSR osword
�LDA pixel+4
�CMP gcol
�BEQ exit
� 
�	LDY#0
�.back3 LDA move,Y \ � x,y
�JSR oswrch
�INY
	CPY#6


BNE back3
 
LDA#18 \ �0,a
(JSR oswrch
2	LDA#0
<JSR oswrch
FLDA gcol
PJSR oswrch
Z 
d&LDX#0 \ �1,42,0;�0,-42,2; 20 times
n.back5 LDY#0
x.back4 LDA plot,Y
�JSR oswrch
�INY
�
CPY#&C
�
BNE back4
�INX
�
CPX#20
�
BNE back5
�
.exit RTS
�
.gcol BRK
�.move EQUB 25
�
EQUB 4
�.sx BRK
�.sx2 BRK
.sy BRK
.sy2 BRK
.plot EQUB 25
"	EQUB1
,EQUW 42
6
EQUW 0
@EQUB 25
J
EQUB 0
TEQUW -42
^
EQUW 2
h.pixel EQUD 0
rBRK
|9.times50l EQUB0:EQUB50 \ Multiplication look up table
�*EQUB100:EQUB150 \ To speed up graphics
�4EQUB200:EQUB250 \ Helps with multipication by 50
�EQUB&2C:EQUB&5E
�.times50h EQUB0:EQUB0
�EQUB0:EQUB0
�EQUB0:EQUB0
�EQUB1:EQUB1
�*.get_default STA block \ A=char to get
�
LDA#&A
�LDX#block � 256
�LDY#block � 256
�JSR osword
�	LDX#0
	LDA#0
.gback1 STA block2,X
INX
&	CPX#8
0BNE gback1
:	LDY#0
D.gback2 LDX#0
N.gback3 LDA block+1,X
X� mask,Y
b	CMP#0
l
BEQ gfor1
vLDA block2,Y:�A mask,X
�LDA block2,Y
�
�A mask,X
�STA block2,Y
�.gfor1 INX
�	CPX#8
�BNE gback3
�INY
�	CPY#8
�BNE gback2
�RTS
�.mask EQUD&10204080
�EQUD&01020408
�.block BRK

EQUD 0

EQUD 0
.block2 BRK
 
EQUD 0
*
EQUD 0
4 
>.set_up_udg STA char
H.vback0 LDX#0
R	LDA#0
\.vback1 STA udg+2,X
fINX
p	CPX#8
zBNE vback1
� 
�LDA char
�JSR locate_char
� 
�	LDX#0
�.vback3 LDY#0
�.vback2 LDA(&70),Y
�
� vmask,X
�	CMP#0
�BEQ vfor
�LDA udg+2,X
��A vmask,Y
�STA udg+2,X

.vfor INY
	CPY#8
BNE vback2
$INX
.	CPX#8
8BNE vback3
B 
L	LDX#0
V.vback4 LDA udg,X
`JSR oswrch
jINX
t
CPX#10
~BNE vback4
�RTS
� 
�.udg EQUB 23
�EQUB 130
�
EQUD 0
�
EQUD 0
�
.char BRK
�.vmask EQUD&10204080
�EQUD&01020408
� 
�.grid_left \ A=char
�JSR locate_char
	LDY#0

LDA(&70),Y
PHA
	LDY#1
(LDA(&70),Y
2DEY
<STA(&70),Y
F	LDY#2
PLDA(&70),Y
ZDEY
dSTA(&70),Y
n	LDY#3
xLDA(&70),Y
�DEY
�STA(&70),Y
�	LDY#4
�LDA(&70),Y
�DEY
�STA(&70),Y
�	LDY#5
�LDA(&70),Y
�DEY
�STA(&70),Y
�	LDY#6
�LDA(&70),Y
�DEY
STA(&70),Y
	LDY#7
LDA(&70),Y
"DEY
,STA(&70),Y
6	LDY#7
@PLA
JSTA(&70),Y
TRTS
^ 
h.grid_right STA char
r	LDX#0
|.grba LDA char
�JSR grid_left
�INX
�	CPX#7
�BNE grba
�RTS
� 
�.grid_up JSR locate_char
�	LDY#0
�.guba LDA(&70),Y
�	ROL A
�	ADC#0
�STA(&70),Y
�INY
 	CPY#8
 BNE guba
 RTS
 & 
 0.grid_down JSR locate_char
 :	LDY#0
 D.gdba LDA(&70),Y
 N	ROR A
 XBCC gdfo
 bCLC
 lADC#128
 v.gdfo STA(&70),Y
 �INY
 �	CPY#8
 �BNE gdba
 �RTS
 � 
 �@.locate_char STA&70 \ A=char Finds location of chars 8 bytes
 �
CMP#64
 �BCS lok
 �SEC
 �
SBC#32
 �
STA&70
 �.lok LDA#0
 �
STA&71
!
ASL&70
!	ADC#0
!
ASL&70
! 	ADC#0
!*
ASL&70
!4	ADC#0
!>
STA&71
!HLDA#fonts � 256
!RCLC
!\
ADC&70
!f
STA&70
!pLDA#fonts � 256
!z
ADC&71
!�
STA&71
!�RTS
!�]
!��
!��
!� 
!�
��printer
!�/� Insert your Own Printer Dump Program here
!��
�
00000000  0d 00 0a 25 f4 20 50 72  69 6e 74 65 72 20 43 68  |...%. Printer Ch|
00000010  61 72 61 63 74 65 72 20  46 6f 6e 74 20 44 65 73  |aracter Font Des|
00000020  69 67 6e 65 72 0d 00 14  1d f4 20 28 43 29 20 41  |igner..... (C) A|
00000030  6c 6c 61 6e 20 4b 65 6c  6c 79 20 31 33 2f 35 2f  |llan Kelly 13/5/|
00000040  38 37 0d 00 1e 05 20 0d  00 28 0c de 20 6d 63 20  |87.... ..(.. mc |
00000050  35 35 30 0d 00 32 0f de  20 66 6f 6e 74 73 20 38  |550..2.. fonts 8|
00000060  30 30 0d 00 3c 0d de 20  65 64 69 74 28 38 29 0d  |00..<.. edit(8).|
00000070  00 46 11 f2 61 73 73 65  6d 62 6c 65 28 6d 63 29  |.F..assemble(mc)|
00000080  0d 00 50 05 f5 0d 00 5a  05 f5 0d 00 64 06 eb 37  |..P....Z....d..7|
00000090  0d 00 6e 22 f1 8a 31 30  2c 30 29 3b bd 28 31 34  |..n"..10,0);.(14|
000000a0  31 29 3b 22 50 72 69 6e  74 65 72 20 46 6f 6e 74  |1);"Printer Font|
000000b0  73 22 0d 00 78 22 f1 8a  31 30 2c 31 29 3b bd 28  |s"..x"..10,1);.(|
000000c0  31 34 31 29 3b 22 50 72  69 6e 74 65 72 20 46 6f  |141);"Printer Fo|
000000d0  6e 74 73 22 0d 00 82 20  f1 89 28 37 29 3b 22 28  |nts"... ..(7);"(|
000000e0  43 29 20 41 6c 6c 61 6e  20 4b 65 6c 6c 79 20 31  |C) Allan Kelly 1|
000000f0  39 38 37 22 0d 00 8c 26  f1 27 89 28 35 29 3b 22  |987"...&.'.(5);"|
00000100  43 20 2d 20 43 6f 6d 70  69 6c 65 20 46 6f 6e 74  |C - Compile Font|
00000110  73 20 66 6f 72 20 55 73  65 22 0d 00 96 1b f1 27  |s for Use".....'|
00000120  89 28 35 29 3b 22 53 20  2d 20 53 61 76 65 20 46  |.(5);"S - Save F|
00000130  6f 6e 74 73 22 0d 00 a0  1b f1 27 89 28 35 29 3b  |onts".....'.(5);|
00000140  22 4c 20 2d 20 4c 6f 61  64 20 46 6f 6e 74 73 22  |"L - Load Fonts"|
00000150  0d 00 aa 1b f1 27 89 28  35 29 3b 22 45 20 2d 20  |.....'.(5);"E - |
00000160  45 64 69 74 20 46 6f 6e  74 73 22 0d 00 b4 1b f1  |Edit Fonts".....|
00000170  27 89 28 35 29 3b 22 56  20 2d 20 56 69 65 77 20  |'.(5);"V - View |
00000180  46 6f 6e 74 73 22 0d 00  be 25 f1 27 89 28 35 29  |Fonts"...%.'.(5)|
00000190  3b 22 54 20 2d 20 54 65  73 74 20 50 72 69 6e 74  |;"T - Test Print|
000001a0  20 43 68 61 72 61 63 74  65 72 22 0d 00 c8 26 f1  | Character"...&.|
000001b0  27 89 28 35 29 3b 22 55  20 2d 20 47 69 76 65 20  |'.(5);"U - Give |
000001c0  73 65 74 74 69 6e 67 73  20 66 6f 72 20 55 44 47  |settings for UDG|
000001d0  22 0d 00 d2 2e f1 27 89  28 35 29 3b 22 44 20 2d  |".....'.(5);"D -|
000001e0  20 53 65 74 20 61 6c 6c  20 63 68 61 72 61 63 74  | Set all charact|
000001f0  65 72 73 20 74 6f 20 64  65 66 61 75 6c 74 22 0d  |ers to default".|
00000200  00 dc 15 f1 27 89 28 35  29 3b 22 51 20 2d 20 51  |....'.(5);"Q - Q|
00000210  75 69 74 22 0d 00 e6 09  2a 46 58 32 31 0d 00 f0  |uit"....*FX21...|
00000220  0a f5 20 78 24 3d be 0d  00 fa 2b fd 20 a7 22 43  |.. x$=....+. ."C|
00000230  53 4c 45 56 54 55 44 51  2a 22 2c 78 24 29 20 84  |SLEVTUDQ*",x$) .|
00000240  20 a7 22 63 73 6c 65 76  74 75 64 71 2a 22 2c 78  | ."cslevtudq*",x|
00000250  24 29 0d 01 04 13 78 24  3d bd 28 97 28 78 24 29  |$)....x$=.(.(x$)|
00000260  80 26 44 46 29 0d 01 0e  05 20 0d 01 18 15 e7 20  |.&DF).... ..... |
00000270  78 24 3d 22 43 22 20 f2  63 6f 6d 70 69 6c 65 0d  |x$="C" .compile.|
00000280  01 22 12 e7 20 78 24 3d  22 53 22 20 f2 73 61 76  |.".. x$="S" .sav|
00000290  65 0d 01 2c 12 e7 20 78  24 3d 22 4c 22 20 f2 6c  |e..,.. x$="L" .l|
000002a0  6f 61 64 0d 01 36 18 e7  20 78 24 3d 22 45 22 20  |oad..6.. x$="E" |
000002b0  eb 34 3a f2 65 64 69 74  3a eb 37 0d 01 40 18 e7  |.4:.edit:.7..@..|
000002c0  20 78 24 3d 22 56 22 20  eb 34 3a f2 76 69 65 77  | x$="V" .4:.view|
000002d0  3a eb 37 0d 01 4a 18 e7  20 78 24 3d 22 54 22 20  |:.7..J.. x$="T" |
000002e0  f2 74 65 73 74 5f 70 72  69 6e 74 0d 01 54 16 e7  |.test_print..T..|
000002f0  20 78 24 3d 22 55 22 20  f2 67 69 76 65 5f 75 64  | x$="U" .give_ud|
00000300  67 0d 01 5e 19 e7 20 78  24 3d 22 44 22 20 f2 61  |g..^.. x$="D" .a|
00000310  6c 6c 5f 64 65 66 61 75  6c 74 0d 01 68 12 e7 20  |ll_default..h.. |
00000320  97 28 78 24 29 3d 31 30  20 f2 6f 73 0d 01 72 05  |.(x$)=10 .os..r.|
00000330  20 0d 01 7c 0c fd 20 78  24 3d 22 51 22 0d 01 86  | ..|.. x$="Q"...|
00000340  31 fd 20 a4 74 65 73 74  28 22 48 61 76 65 20 74  |1. .test("Have t|
00000350  68 65 20 63 75 72 72 65  6e 74 20 66 6f 6e 74 73  |he current fonts|
00000360  20 62 65 65 6e 20 73 61  76 65 64 3f 22 29 0d 01  | been saved?")..|
00000370  90 05 e0 0d 01 9a 05 20  0d 01 a4 0a dd f2 73 61  |....... ......sa|
00000380  76 65 0d 01 ae 15 ea 20  66 69 6c 65 2c 6c 6f 6f  |ve..... file,loo|
00000390  70 2c 6c 6f 6f 70 32 0d  01 b8 0b f1 22 53 61 76  |p,loop2....."Sav|
000003a0  65 22 0d 01 c2 05 f5 0d  01 cc 15 66 69 6c 65 3d  |e".........file=|
000003b0  ae 28 a4 66 69 6c 65 6e  61 6d 65 29 0d 01 d6 22  |.(.filename)..."|
000003c0  e7 20 66 69 6c 65 3d 30  20 f1 22 46 69 6c 65 20  |. file=0 ."File |
000003d0  6e 6f 74 20 41 76 61 69  6c 61 62 6c 65 22 0d 01  |not Available"..|
000003e0  e0 0d fd 20 66 69 6c 65  3c 3e 30 0d 01 ea 19 f1  |... file<>0.....|
000003f0  22 53 61 76 69 6e 67 20  70 6c 65 61 73 65 20 77  |"Saving please w|
00000400  61 69 74 22 0d 01 f4 13  e3 20 6c 6f 6f 70 3d 33  |ait"..... loop=3|
00000410  32 20 b8 20 31 32 36 0d  01 fe 11 e3 20 6c 6f 6f  |2 . 126..... loo|
00000420  70 32 3d 30 20 b8 20 37  0d 02 08 20 d5 23 66 69  |p2=0 . 7... .#fi|
00000430  6c 65 2c a4 72 6f 77 5f  70 65 65 6b 28 6c 6f 6f  |le,.row_peek(loo|
00000440  70 2c 6c 6f 6f 70 32 29  0d 02 12 05 ed 0d 02 1c  |p,loop2)........|
00000450  05 ed 0d 02 26 07 d9 23  30 0d 02 30 05 e1 0d 02  |....&..#0..0....|
00000460  3a 05 20 0d 02 44 0a dd  f2 6c 6f 61 64 0d 02 4e  |:. ..D...load..N|
00000470  15 ea 20 66 69 6c 65 2c  6c 6f 6f 70 2c 6c 6f 6f  |.. file,loop,loo|
00000480  70 32 0d 02 58 0b f1 22  4c 6f 61 64 22 0d 02 62  |p2..X.."Load"..b|
00000490  05 f5 0d 02 6c 15 66 69  6c 65 3d 8e 28 a4 66 69  |....l.file=.(.fi|
000004a0  6c 65 6e 61 6d 65 29 0d  02 76 1e e7 20 66 69 6c  |lename)..v.. fil|
000004b0  65 3d 30 20 f1 22 46 69  6c 65 20 6e 6f 74 20 66  |e=0 ."File not f|
000004c0  6f 75 6e 64 22 0d 02 80  0d fd 20 66 69 6c 65 3c  |ound"..... file<|
000004d0  3e 30 0d 02 8a 1a f1 22  4c 6f 61 64 69 6e 67 20  |>0....."Loading |
000004e0  70 6c 65 61 73 65 20 77  61 69 74 22 0d 02 94 13  |please wait"....|
000004f0  e3 20 6c 6f 6f 70 3d 33  32 20 b8 20 31 32 36 0d  |. loop=32 . 126.|
00000500  02 9e 11 e3 20 6c 6f 6f  70 32 3d 30 20 b8 20 37  |.... loop2=0 . 7|
00000510  0d 02 a8 20 f2 72 6f 77  5f 70 6f 6b 65 28 6c 6f  |... .row_poke(lo|
00000520  6f 70 2c 6c 6f 6f 70 32  2c 9a 23 66 69 6c 65 29  |op,loop2,.#file)|
00000530  0d 02 b2 05 ed 0d 02 bc  05 ed 0d 02 c6 07 d9 23  |...............#|
00000540  30 0d 02 d0 05 e1 0d 02  da 05 20 0d 02 e4 0a dd  |0......... .....|
00000550  f2 65 64 69 74 0d 02 ee  12 ea 20 78 2c 79 2c 63  |.edit..... x,y,c|
00000560  68 61 72 2c 6b 65 79 0d  02 f8 1a 63 68 61 72 3d  |har,key....char=|
00000570  a4 63 68 6f 6f 73 65 5f  63 68 61 72 61 63 74 65  |.choose_characte|
00000580  72 0d 03 02 0d ec 20 35  30 30 2c 35 30 30 0d 03  |r..... 500,500..|
00000590  0c 16 e3 20 78 3d 35 30  30 20 b8 20 39 30 30 20  |... x=500 . 900 |
000005a0  88 20 35 30 0d 03 16 0b  ec 20 35 30 30 2c 78 0d  |. 50..... 500,x.|
000005b0  03 20 0b df 20 39 30 30  2c 78 0d 03 2a 0b ec 20  |. .. 900,x..*.. |
000005c0  78 2c 35 30 30 0d 03 34  0b df 20 78 2c 39 30 30  |x,500..4.. x,900|
000005d0  0d 03 3e 05 ed 0d 03 48  10 f2 73 65 74 5f 75 70  |..>....H..set_up|
000005e0  5f 67 72 69 64 0d 03 52  08 e6 30 2c 31 0d 03 5c  |_grid..R..0,1..\|
000005f0  0d ec 20 34 35 30 2c 34  35 30 0d 03 66 0d df 20  |.. 450,450..f.. |
00000600  34 35 30 2c 39 30 30 0d  03 70 0d ec 20 34 35 30  |450,900..p.. 450|
00000610  2c 34 35 30 0d 03 7a 0d  df 20 39 35 30 2c 34 35  |,450..z.. 950,45|
00000620  30 0d 03 84 0a 2a 46 58  34 2c 31 0d 03 8e 0e 2a  |0....*FX4,1....*|
00000630  46 58 32 32 35 2c 31 34  34 0d 03 98 0e 2a 46 58  |FX225,144....*FX|
00000640  32 32 36 2c 31 35 34 0d  03 a2 07 78 3d 34 0d 03  |226,154....x=4..|
00000650  ac 07 79 3d 34 0d 03 b6  56 f1 8a 30 2c 32 30 29  |..y=4...V..0,20)|
00000660  3b 22 50 6f 73 69 74 69  6f 6e 20 63 72 6f 73 73  |;"Position cross|
00000670  20 77 69 74 68 20 63 75  72 73 6f 72 20 6b 65 79  | with cursor key|
00000680  73 22 27 22 55 73 65 20  52 45 54 55 52 4e 20 6b  |s"'"Use RETURN k|
00000690  65 79 20 74 6f 20 74 6f  67 67 6c 65 20 73 74 61  |ey to toggle sta|
000006a0  74 75 73 20 6f 66 20 62  6f 78 22 0d 03 c0 1f f1  |tus of box".....|
000006b0  8a 30 2c 33 29 3b 22 43  68 61 72 61 63 74 65 72  |.0,3);"Character|
000006c0  3a 22 3b bd 28 63 68 61  72 29 0d 03 ca 18 f1 8a  |:";.(char)......|
000006d0  30 2c 34 29 3b 22 41 53  43 49 49 3a 22 3b 63 68  |0,4);"ASCII:";ch|
000006e0  61 72 0d 03 d4 05 f5 0d  03 de 0f f2 63 72 6f 73  |ar..........cros|
000006f0  73 28 78 2c 79 29 0d 03  e8 11 f1 8a 30 2c 35 29  |s(x,y)......0,5)|
00000700  3b 22 58 3a 22 3b 78 0d  03 f2 11 f1 8a 30 2c 36  |;"X:";x......0,6|
00000710  29 3b 22 59 3a 22 3b 79  0d 03 fc 0b 41 25 3d 63  |);"Y:";y....A%=c|
00000720  68 61 72 0d 04 06 10 d6  20 73 65 74 5f 75 70 5f  |har..... set_up_|
00000730  75 64 67 0d 04 10 1c f1  8a 30 2c 38 29 3b 22 43  |udg......0,8);"C|
00000740  75 72 72 65 6e 74 3a 22  3b bd 28 31 33 30 29 0d  |urrent:";.(130).|
00000750  04 1a 0d f5 20 2a 46 58  32 31 2c 30 0d 04 24 09  |.... *FX21,0..$.|
00000760  6b 65 79 3d a5 0d 04 2e  2c fd 20 6b 65 79 3d 31  |key=....,. key=1|
00000770  33 20 84 20 28 6b 65 79  3e 31 33 35 20 80 20 6b  |3 . (key>135 . k|
00000780  65 79 3c 31 34 30 29 20  84 20 6b 65 79 3e 26 38  |ey<140) . key>&8|
00000790  46 0d 04 38 19 e7 20 6b  65 79 3d 31 33 20 f2 74  |F..8.. key=13 .t|
000007a0  6f 67 67 6c 65 28 78 2c  79 29 0d 04 42 1d e7 20  |oggle(x,y)..B.. |
000007b0  6b 65 79 3e 31 33 35 20  80 20 6b 65 79 3c 31 34  |key>135 . key<14|
000007c0  30 20 f2 6d 6f 76 65 0d  04 4c 19 e7 20 6b 65 79  |0 .move..L.. key|
000007d0  3d 26 39 30 20 f2 63 6c  65 61 72 5f 67 72 69 64  |=&90 .clear_grid|
000007e0  0d 04 56 18 e7 20 6b 65  79 3d 26 39 31 20 f2 66  |..V.. key=&91 .f|
000007f0  69 6c 6c 5f 67 72 69 64  0d 04 60 1d e7 20 6b 65  |ill_grid..`.. ke|
00000800  79 3d 26 39 32 20 f2 66  69 6c 6c 5f 76 65 72 74  |y=&92 .fill_vert|
00000810  28 32 35 35 29 0d 04 6a  1b e7 20 6b 65 79 3d 26  |(255)..j.. key=&|
00000820  39 33 20 f2 66 69 6c 6c  5f 68 6f 72 69 28 31 29  |93 .fill_hori(1)|
00000830  0d 04 74 20 e7 20 6b 65  79 3d 26 39 34 20 f2 73  |..t . key=&94 .s|
00000840  65 74 5f 64 65 66 61 75  6c 74 28 63 68 61 72 29  |et_default(char)|
00000850  0d 04 7e 16 e7 20 6b 65  79 3d 26 39 35 20 f2 63  |..~.. key=&95 .c|
00000860  6f 70 79 5f 74 6f 0d 04  88 18 e7 20 6b 65 79 3d  |opy_to..... key=|
00000870  26 39 36 20 f2 63 6f 70  79 5f 66 72 6f 6d 0d 04  |&96 .copy_from..|
00000880  92 1b e7 20 6b 65 79 3d  26 39 37 20 f2 69 6e 76  |... key=&97 .inv|
00000890  65 72 73 65 5f 76 65 72  74 0d 04 9c 1b e7 20 6b  |erse_vert..... k|
000008a0  65 79 3d 26 39 38 20 f2  69 6e 76 65 72 73 65 5f  |ey=&98 .inverse_|
000008b0  68 6f 72 69 0d 04 a6 1b  e7 20 6b 65 79 3d 26 39  |hori..... key=&9|
000008c0  41 20 f2 69 6e 76 65 72  73 65 5f 67 72 69 64 0d  |A .inverse_grid.|
000008d0  04 b0 1a e7 20 6b 65 79  3d 26 39 42 20 f2 63 68  |.... key=&9B .ch|
000008e0  61 6e 67 65 5f 63 68 61  72 0d 04 ba 1b e7 20 6b  |ange_char..... k|
000008f0  65 79 3d 26 39 43 20 f2  66 69 6c 6c 5f 76 65 72  |ey=&9C .fill_ver|
00000900  74 28 30 29 0d 04 c4 1b  e7 20 6b 65 79 3d 26 39  |t(0)..... key=&9|
00000910  44 20 f2 66 69 6c 6c 5f  68 6f 72 69 28 30 29 0d  |D .fill_hori(0).|
00000920  04 ce 2d e7 20 6b 65 79  3d 26 39 45 20 f2 73 65  |..-. key=&9E .se|
00000930  74 5f 64 65 66 61 75 6c  74 28 a4 63 68 6f 6f 73  |t_default(.choos|
00000940  65 5f 63 68 61 72 61 63  74 65 72 29 0d 04 d8 13  |e_character)....|
00000950  e7 20 6b 65 79 3d 26 39  46 20 f2 73 77 61 70 0d  |. key=&9F .swap.|
00000960  04 e2 16 e7 20 6b 65 79  3d 26 41 30 20 f2 70 72  |.... key=&A0 .pr|
00000970  69 6e 74 65 72 0d 04 ec  1b e7 20 6b 65 79 3d 26  |inter..... key=&|
00000980  41 31 20 f2 72 65 76 65  72 73 65 5f 76 65 72 74  |A1 .reverse_vert|
00000990  0d 04 f6 1b e7 20 6b 65  79 3d 26 41 32 20 f2 72  |..... key=&A2 .r|
000009a0  65 76 65 72 73 65 5f 68  6f 72 69 0d 05 00 13 e7  |everse_hori.....|
000009b0  20 6b 65 79 3d 26 41 33  20 f2 66 6c 69 70 0d 05  | key=&A3 .flip..|
000009c0  0a 0d fd 20 6b 65 79 3d  26 39 39 0d 05 14 0a 2a  |... key=&99....*|
000009d0  46 58 34 2c 30 0d 05 1e  0c 2a 46 58 32 32 35 2c  |FX4,0....*FX225,|
000009e0  31 0d 05 28 05 e1 0d 05  32 05 20 0d 05 3c 10 dd  |1..(....2. ..<..|
000009f0  f2 74 65 73 74 5f 70 72  69 6e 74 0d 05 46 0e ea  |.test_print..F..|
00000a00  20 78 2c 79 2c 63 68 61  72 0d 05 50 1a 63 68 61  | x,y,char..P.cha|
00000a10  72 3d a4 63 68 6f 6f 73  65 5f 63 68 61 72 61 63  |r=.choose_charac|
00000a20  74 65 72 0d 05 5a 0e e3  20 78 3d 30 20 b8 20 31  |ter..Z.. x=0 . 1|
00000a30  30 0d 05 64 18 ef 32 2c  31 2c 32 37 2c 31 2c 37  |0..d..2,1,27,1,7|
00000a40  35 2c 31 2c 38 2c 31 2c  30 0d 05 6e 0d e3 20 79  |5,1,8,1,0..n.. y|
00000a50  3d 30 20 b8 20 37 0d 05  78 19 ef 20 31 2c a4 72  |=0 . 7..x.. 1,.r|
00000a60  6f 77 5f 70 65 65 6b 28  63 68 61 72 2c 79 29 0d  |ow_peek(char,y).|
00000a70  05 82 05 ed 0d 05 8c 0a  ef 20 31 2c 33 32 0d 05  |......... 1,32..|
00000a80  96 05 ed 0d 05 a0 06 ef  33 0d 05 aa 05 e1 0d 05  |........3.......|
00000a90  b4 05 20 0d 05 be 0e dd  f2 67 69 76 65 5f 75 64  |.. ......give_ud|
00000aa0  67 0d 05 c8 0c ea 20 78  2c 63 68 61 72 0d 05 d2  |g..... x,char...|
00000ab0  1a 63 68 61 72 3d a4 63  68 6f 6f 73 65 5f 63 68  |.char=.choose_ch|
00000ac0  61 72 61 63 74 65 72 0d  05 dc 12 f1 27 27 22 56  |aracter.....''"V|
00000ad0  44 55 32 33 2c 78 2c 22  3b 0d 05 e6 0d e3 20 78  |DU23,x,";..... x|
00000ae0  3d 30 20 b8 20 37 0d 05  f0 0b 41 25 3d 63 68 61  |=0 . 7....A%=cha|
00000af0  72 0d 05 fa 10 d6 20 73  65 74 5f 75 70 5f 75 64  |r..... set_up_ud|
00000b00  67 0d 06 04 11 f1 3b 3f  28 75 64 67 2b 32 2b 78  |g.....;?(udg+2+x|
00000b10  29 3b 0d 06 0e 11 e7 20  78 3c 3e 37 20 f1 3b 22  |);..... x<>7 .;"|
00000b20  2c 22 3b 0d 06 18 05 ed  0d 06 22 07 ef 20 a5 0d  |,";.......".. ..|
00000b30  06 2c 05 e1 0d 06 36 05  20 0d 06 40 0a dd f2 76  |.,....6. ..@...v|
00000b40  69 65 77 0d 06 4a 0e ea  20 63 68 61 72 2c 6b 65  |iew..J.. char,ke|
00000b50  79 0d 06 54 13 f1 27 27  22 56 69 65 77 20 46 6f  |y..T..''"View Fo|
00000b60  6e 74 73 22 0d 06 5e 4c  f1 22 50 72 65 73 73 20  |nts"..^L."Press |
00000b70  52 45 54 55 52 4e 20 74  6f 20 61 64 76 61 6e 63  |RETURN to advanc|
00000b80  65 20 74 6f 20 6e 65 78  74 20 66 6f 6e 74 2e 20  |e to next font. |
00000b90  20 20 50 72 65 73 73 20  53 50 41 43 45 20 74 6f  |  Press SPACE to|
00000ba0  20 72 65 74 75 72 6e 20  74 6f 20 6d 65 6e 75 22  | return to menu"|
00000bb0  0d 06 68 0b 63 68 61 72  3d 33 32 0d 06 72 05 f5  |..h.char=32..r..|
00000bc0  0d 06 7c 05 20 0d 06 86  0b 41 25 3d 63 68 61 72  |..|. ....A%=char|
00000bd0  0d 06 90 10 d6 20 73 65  74 5f 75 70 5f 75 64 67  |..... set_up_udg|
00000be0  0d 06 9a 3d f1 27 22 43  68 61 72 61 63 74 65 72  |...=.'"Character|
00000bf0  3a 22 3b bd 28 63 68 61  72 29 3b 22 20 20 28 22  |:";.(char);"  ("|
00000c00  3b 63 68 61 72 3b 22 29  20 20 44 65 66 69 6e 69  |;char;")  Defini|
00000c10  74 69 6f 6e 3a 22 3b bd  28 31 33 30 29 0d 06 a4  |tion:";.(130)...|
00000c20  0b 2a 46 58 32 31 2c 30  0d 06 ae 0b f5 20 6b 65  |.*FX21,0..... ke|
00000c30  79 3d a5 0d 06 b8 15 fd  20 6b 65 79 3d 33 32 20  |y=...... key=32 |
00000c40  84 20 6b 65 79 3d 31 33  0d 06 c2 0f 63 68 61 72  |. key=13....char|
00000c50  3d 63 68 61 72 2b 31 0d  06 cc 17 fd 20 63 68 61  |=char+1..... cha|
00000c60  72 3e 31 32 36 20 84 20  6b 65 79 3d 33 32 0d 06  |r>126 . key=32..|
00000c70  d6 05 e1 0d 06 e0 05 20  0d 06 ea 11 dd f2 61 6c  |....... ......al|
00000c80  6c 5f 64 65 66 61 75 6c  74 0d 06 f4 0c ea 20 63  |l_default..... c|
00000c90  68 61 72 2c 7a 0d 06 fe  12 f1 22 50 6c 65 61 73  |har,z....."Pleas|
00000ca0  65 20 57 61 69 74 22 0d  07 08 13 e3 20 63 68 61  |e Wait"..... cha|
00000cb0  72 3d 33 32 20 b8 20 31  32 36 0d 07 12 0b 41 25  |r=32 . 126....A%|
00000cc0  3d 63 68 61 72 0d 07 1c  11 d6 20 67 65 74 5f 64  |=char..... get_d|
00000cd0  65 66 61 75 6c 74 0d 07  26 0d e3 20 7a 3d 30 20  |efault..&.. z=0 |
00000ce0  b8 20 37 0d 07 30 21 f2  72 6f 77 5f 70 6f 6b 65  |. 7..0!.row_poke|
00000cf0  28 63 68 61 72 2c 7a 2c  3f 28 62 6c 6f 63 6b 32  |(char,z,?(block2|
00000d00  2b 7a 29 29 0d 07 3a 05  ed 0d 07 44 05 ed 0d 07  |+z))..:....D....|
00000d10  4e 05 e1 0d 07 58 05 20  0d 07 62 08 dd f2 6f 73  |N....X. ..b...os|
00000d20  0d 07 6c 0d ea 20 6f 73  24 2c 6b 65 79 0d 07 76  |..l.. os$,key..v|
00000d30  05 f5 0d 07 80 0c e8 27  22 2a 22 6f 73 24 0d 07  |.......'"*"os$..|
00000d40  8a 0a ff 28 6f 73 24 29  0d 07 94 0b 2a 46 58 32  |...(os$)....*FX2|
00000d50  31 2c 30 0d 07 9e 09 6b  65 79 3d a5 0d 07 a8 0d  |1,0....key=.....|
00000d60  fd 20 6b 65 79 3c 3e 34  32 0d 07 b2 05 e1 0d 07  |. key<>42.......|
00000d70  bc 05 20 0d 07 c6 18 dd  f2 66 69 6c 6c 5f 62 6f  |.. ......fill_bo|
00000d80  78 28 41 25 2c 58 25 2c  59 25 29 0d 07 d0 0d d6  |x(A%,X%,Y%).....|
00000d90  66 69 6c 6c 5f 62 6f 78  0d 07 da 05 e1 0d 07 e4  |fill_box........|
00000da0  05 20 0d 07 ee 10 dd f2  63 72 6f 73 73 28 78 2c  |. ......cross(x,|
00000db0  79 29 0d 07 f8 08 e6 34  2c 30 0d 08 02 14 ec 20  |y).....4,0..... |
00000dc0  35 32 35 2b 28 78 2a 35  30 29 2c 34 35 30 0d 08  |525+(x*50),450..|
00000dd0  0c 0c f0 31 2c 30 2c 35  30 30 0d 08 16 14 ec 20  |...1,0,500..... |
00000de0  34 35 30 2c 35 32 35 2b  28 79 2a 35 30 29 0d 08  |450,525+(y*50)..|
00000df0  20 0c f0 31 2c 35 30 30  2c 30 0d 08 2a 05 e1 0d  | ..1,500,0..*...|
00000e00  08 34 05 20 0d 08 3e 11  dd f2 74 6f 67 67 6c 65  |.4. ..>...toggle|
00000e10  28 78 2c 79 29 0d 08 48  0f f2 63 72 6f 73 73 28  |(x,y)..H..cross(|
00000e20  78 2c 79 29 0d 08 52 15  f2 70 6f 6b 65 28 63 68  |x,y)..R..poke(ch|
00000e30  61 72 2c 78 2c 79 2c 32  29 0d 08 5c 22 f2 66 69  |ar,x,y,2)..\".fi|
00000e40  6c 6c 5f 62 6f 78 28 a4  70 65 65 6b 28 63 68 61  |ll_box(.peek(cha|
00000e50  72 2c 78 2c 79 29 2c 78  2c 79 29 0d 08 66 05 e1  |r,x,y),x,y)..f..|
00000e60  0d 08 70 05 20 0d 08 7a  0a dd f2 6d 6f 76 65 0d  |..p. ..z...move.|
00000e70  08 84 2a e7 20 a6 28 2d  31 29 20 f2 6d 6f 76 65  |..*. .(-1) .move|
00000e80  5f 67 72 69 64 28 63 68  61 72 29 20 8b 20 f2 6d  |_grid(char) . .m|
00000e90  6f 76 65 5f 63 72 6f 73  73 0d 08 8e 05 e1 0d 08  |ove_cross.......|
00000ea0  98 05 20 0d 08 a2 10 dd  f2 6d 6f 76 65 5f 63 72  |.. ......move_cr|
00000eb0  6f 73 73 0d 08 ac 0f f2  63 72 6f 73 73 28 78 2c  |oss.....cross(x,|
00000ec0  79 29 0d 08 b6 19 e7 20  6b 65 79 3d 31 33 36 20  |y)..... key=136 |
00000ed0  80 20 78 3e 30 20 78 3d  78 2d 31 0d 08 c0 19 e7  |. x>0 x=x-1.....|
00000ee0  20 6b 65 79 3d 31 33 37  20 80 20 78 3c 37 20 78  | key=137 . x<7 x|
00000ef0  3d 78 2b 31 0d 08 ca 19  e7 20 6b 65 79 3d 31 33  |=x+1..... key=13|
00000f00  38 20 80 20 79 3e 30 20  79 3d 79 2d 31 0d 08 d4  |8 . y>0 y=y-1...|
00000f10  19 e7 20 6b 65 79 3d 31  33 39 20 80 20 79 3c 37  |.. key=139 . y<7|
00000f20  20 79 3d 79 2b 31 0d 08  de 05 e1 0d 08 e8 05 20  | y=y+1......... |
00000f30  0d 08 f2 11 dd f2 73 65  74 5f 75 70 5f 67 72 69  |......set_up_gri|
00000f40  64 0d 08 fc 09 ea 20 78  2c 79 0d 09 06 0d e3 20  |d..... x,y..... |
00000f50  78 3d 30 20 b8 20 37 0d  09 10 0d e3 20 79 3d 30  |x=0 . 7..... y=0|
00000f60  20 b8 20 37 0d 09 1a 22  f2 66 69 6c 6c 5f 62 6f  | . 7...".fill_bo|
00000f70  78 28 a4 70 65 65 6b 28  63 68 61 72 2c 78 2c 79  |x(.peek(char,x,y|
00000f80  29 2c 78 2c 79 29 0d 09  24 05 ed 0d 09 2e 05 ed  |),x,y)..$.......|
00000f90  0d 09 38 05 e1 0d 09 42  05 20 0d 09 4c 10 dd f2  |..8....B. ..L...|
00000fa0  63 6c 65 61 72 5f 67 72  69 64 0d 09 56 07 ea 20  |clear_grid..V.. |
00000fb0  7a 0d 09 60 0f f2 63 72  6f 73 73 28 78 2c 79 29  |z..`..cross(x,y)|
00000fc0  0d 09 6a 0d e3 20 7a 3d  30 20 b8 20 37 0d 09 74  |..j.. z=0 . 7..t|
00000fd0  17 f2 72 6f 77 5f 70 6f  6b 65 28 63 68 61 72 2c  |..row_poke(char,|
00000fe0  7a 2c 30 29 0d 09 7e 05  ed 0d 09 88 10 f2 73 65  |z,0)..~.......se|
00000ff0  74 5f 75 70 5f 67 72 69  64 0d 09 92 05 e1 0d 09  |t_up_grid.......|
00001000  9c 05 20 0d 09 a6 0f dd  f2 66 69 6c 6c 5f 67 72  |.. ......fill_gr|
00001010  69 64 0d 09 b0 07 ea 20  7a 0d 09 ba 0f f2 63 72  |id..... z.....cr|
00001020  6f 73 73 28 78 2c 79 29  0d 09 c4 0d e3 20 7a 3d  |oss(x,y)..... z=|
00001030  30 20 b8 20 37 0d 09 ce  19 f2 72 6f 77 5f 70 6f  |0 . 7.....row_po|
00001040  6b 65 28 63 68 61 72 2c  7a 2c 32 35 35 29 0d 09  |ke(char,z,255)..|
00001050  d8 05 ed 0d 09 e2 10 f2  73 65 74 5f 75 70 5f 67  |........set_up_g|
00001060  72 69 64 0d 09 ec 05 e1  0d 09 f6 05 20 0d 0a 00  |rid......... ...|
00001070  12 dd f2 66 69 6c 6c 5f  76 65 72 74 28 76 29 0d  |...fill_vert(v).|
00001080  0a 0a 0f f2 63 72 6f 73  73 28 78 2c 79 29 0d 0a  |....cross(x,y)..|
00001090  14 17 f2 72 6f 77 5f 70  6f 6b 65 28 63 68 61 72  |...row_poke(char|
000010a0  2c 78 2c 76 29 0d 0a 1e  10 f2 73 65 74 5f 75 70  |,x,v).....set_up|
000010b0  5f 67 72 69 64 0d 0a 28  05 e1 0d 0a 32 05 20 0d  |_grid..(....2. .|
000010c0  0a 3c 12 dd f2 66 69 6c  6c 5f 68 6f 72 69 28 76  |.<...fill_hori(v|
000010d0  29 0d 0a 46 07 ea 20 7a  0d 0a 50 0f f2 63 72 6f  |)..F.. z..P..cro|
000010e0  73 73 28 78 2c 79 29 0d  0a 5a 0d e3 20 7a 3d 30  |ss(x,y)..Z.. z=0|
000010f0  20 b8 20 37 0d 0a 64 15  f2 70 6f 6b 65 28 63 68  | . 7..d..poke(ch|
00001100  61 72 2c 7a 2c 79 2c 76  29 0d 0a 6e 05 ed 0d 0a  |ar,z,y,v)..n....|
00001110  78 10 f2 73 65 74 5f 75  70 5f 67 72 69 64 0d 0a  |x..set_up_grid..|
00001120  82 05 e1 0d 0a 8c 05 20  0d 0a 96 12 dd f2 69 6e  |....... ......in|
00001130  76 65 72 73 65 5f 76 65  72 74 0d 0a a0 07 ea 20  |verse_vert..... |
00001140  7a 0d 0a aa 0f f2 63 72  6f 73 73 28 78 2c 79 29  |z.....cross(x,y)|
00001150  0d 0a b4 0d e3 20 7a 3d  30 20 b8 20 37 0d 0a be  |..... z=0 . 7...|
00001160  15 f2 70 6f 6b 65 28 63  68 61 72 2c 78 2c 7a 2c  |..poke(char,x,z,|
00001170  32 29 0d 0a c8 05 ed 0d  0a d2 10 f2 73 65 74 5f  |2)..........set_|
00001180  75 70 5f 67 72 69 64 0d  0a dc 05 e1 0d 0a e6 05  |up_grid.........|
00001190  20 0d 0a f0 12 dd f2 69  6e 76 65 72 73 65 5f 68  | ......inverse_h|
000011a0  6f 72 69 0d 0a fa 07 ea  20 7a 0d 0b 04 0f f2 63  |ori..... z.....c|
000011b0  72 6f 73 73 28 78 2c 79  29 0d 0b 0e 0d e3 20 7a  |ross(x,y)..... z|
000011c0  3d 30 20 b8 20 37 0d 0b  18 15 f2 70 6f 6b 65 28  |=0 . 7.....poke(|
000011d0  63 68 61 72 2c 7a 2c 79  2c 32 29 0d 0b 22 05 ed  |char,z,y,2).."..|
000011e0  0d 0b 2c 10 f2 73 65 74  5f 75 70 5f 67 72 69 64  |..,..set_up_grid|
000011f0  0d 0b 36 05 e1 0d 0b 40  05 20 0d 0b 4a 16 dd f2  |..6....@. ..J...|
00001200  73 65 74 5f 64 65 66 61  75 6c 74 28 67 65 74 29  |set_default(get)|
00001210  0d 0b 54 07 ea 20 7a 0d  0b 5e 0f f2 63 72 6f 73  |..T.. z..^..cros|
00001220  73 28 78 2c 79 29 0d 0b  68 0a 41 25 3d 67 65 74  |s(x,y)..h.A%=get|
00001230  0d 0b 72 11 d6 20 67 65  74 5f 64 65 66 61 75 6c  |..r.. get_defaul|
00001240  74 0d 0b 7c 0d e3 20 7a  3d 30 20 b8 20 37 0d 0b  |t..|.. z=0 . 7..|
00001250  86 21 f2 72 6f 77 5f 70  6f 6b 65 28 63 68 61 72  |.!.row_poke(char|
00001260  2c 7a 2c 3f 28 62 6c 6f  63 6b 32 2b 7a 29 29 0d  |,z,?(block2+z)).|
00001270  0b 90 05 ed 0d 0b 9a 10  f2 73 65 74 5f 75 70 5f  |.........set_up_|
00001280  67 72 69 64 0d 0b a4 05  e1 0d 0b ae 05 20 0d 0b  |grid......... ..|
00001290  b8 0d dd f2 63 6f 70 79  5f 74 6f 0d 0b c2 0a ea  |....copy_to.....|
000012a0  20 74 6f 2c 7a 0d 0b cc  0f f2 63 72 6f 73 73 28  | to,z.....cross(|
000012b0  78 2c 79 29 0d 0b d6 0c  f1 8a 30 2c 32 33 29 3b  |x,y)......0,23);|
000012c0  0d 0b e0 18 74 6f 3d a4  63 68 6f 6f 73 65 5f 63  |....to=.choose_c|
000012d0  68 61 72 61 63 74 65 72  0d 0b ea 0d e3 20 7a 3d  |haracter..... z=|
000012e0  30 20 b8 20 37 0d 0b f4  25 f2 72 6f 77 5f 70 6f  |0 . 7...%.row_po|
000012f0  6b 65 28 74 6f 2c 7a 2c  a4 72 6f 77 5f 70 65 65  |ke(to,z,.row_pee|
00001300  6b 28 63 68 61 72 2c 7a  29 29 0d 0b fe 05 ed 0d  |k(char,z))......|
00001310  0c 08 05 e1 0d 0c 12 05  20 0d 0c 1c 0f dd f2 63  |........ ......c|
00001320  6f 70 79 5f 66 72 6f 6d  0d 0c 26 0c ea 20 66 72  |opy_from..&.. fr|
00001330  6f 6d 2c 7a 0d 0c 30 0f  f2 63 72 6f 73 73 28 78  |om,z..0..cross(x|
00001340  2c 79 29 0d 0c 3a 0c f1  8a 30 2c 32 33 29 3b 0d  |,y)..:...0,23);.|
00001350  0c 44 1a 66 72 6f 6d 3d  a4 63 68 6f 6f 73 65 5f  |.D.from=.choose_|
00001360  63 68 61 72 61 63 74 65  72 0d 0c 4e 0d e3 20 7a  |character..N.. z|
00001370  3d 30 20 b8 20 37 0d 0c  58 27 f2 72 6f 77 5f 70  |=0 . 7..X'.row_p|
00001380  6f 6b 65 28 63 68 61 72  2c 7a 2c a4 72 6f 77 5f  |oke(char,z,.row_|
00001390  70 65 65 6b 28 66 72 6f  6d 2c 7a 29 29 0d 0c 62  |peek(from,z))..b|
000013a0  05 ed 0d 0c 6c 10 f2 73  65 74 5f 75 70 5f 67 72  |....l..set_up_gr|
000013b0  69 64 0d 0c 76 05 e1 0d  0c 80 05 20 0d 0c 8a 13  |id..v...... ....|
000013c0  dd f2 6d 6f 76 65 5f 67  72 69 64 28 41 25 29 0d  |..move_grid(A%).|
000013d0  0c 94 0f f2 63 72 6f 73  73 28 78 2c 79 29 0d 0c  |....cross(x,y)..|
000013e0  9e 19 e7 20 6b 65 79 3d  31 33 36 20 d6 20 67 72  |... key=136 . gr|
000013f0  69 64 5f 6c 65 66 74 0d  0c a8 1a e7 20 6b 65 79  |id_left..... key|
00001400  3d 31 33 37 20 d6 20 67  72 69 64 5f 72 69 67 68  |=137 . grid_righ|
00001410  74 0d 0c b2 19 e7 20 6b  65 79 3d 31 33 38 20 d6  |t..... key=138 .|
00001420  20 67 72 69 64 5f 64 6f  77 6e 0d 0c bc 17 e7 20  | grid_down..... |
00001430  6b 65 79 3d 31 33 39 20  d6 20 67 72 69 64 5f 75  |key=139 . grid_u|
00001440  70 0d 0c c6 10 f2 73 65  74 5f 75 70 5f 67 72 69  |p.....set_up_gri|
00001450  64 0d 0c d0 05 e1 0d 0c  da 05 20 0d 0c e4 12 dd  |d......... .....|
00001460  f2 69 6e 76 65 72 73 65  5f 67 72 69 64 0d 0c ee  |.inverse_grid...|
00001470  07 ea 20 7a 0d 0c f8 0f  f2 63 72 6f 73 73 28 78  |.. z.....cross(x|
00001480  2c 79 29 0d 0d 02 0d e3  20 7a 3d 30 20 b8 20 37  |,y)..... z=0 . 7|
00001490  0d 0d 0c 2c f2 72 6f 77  5f 70 6f 6b 65 28 63 68  |...,.row_poke(ch|
000014a0  61 72 2c 7a 2c a4 72 6f  77 5f 70 65 65 6b 28 63  |ar,z,.row_peek(c|
000014b0  68 61 72 2c 7a 29 20 82  26 46 46 29 0d 0d 16 05  |har,z) .&FF)....|
000014c0  ed 0d 0d 20 10 f2 73 65  74 5f 75 70 5f 67 72 69  |... ..set_up_gri|
000014d0  64 0d 0d 2a 05 e1 0d 0d  34 05 20 0d 0d 3e 11 dd  |d..*....4. ..>..|
000014e0  f2 63 68 61 6e 67 65 5f  63 68 61 72 0d 0d 48 0f  |.change_char..H.|
000014f0  f2 63 72 6f 73 73 28 78  2c 79 29 0d 0d 52 1a 63  |.cross(x,y)..R.c|
00001500  68 61 72 3d a4 63 68 6f  6f 73 65 5f 63 68 61 72  |har=.choose_char|
00001510  61 63 74 65 72 0d 0d 5c  10 f2 73 65 74 5f 75 70  |acter..\..set_up|
00001520  5f 67 72 69 64 0d 0d 66  1f f1 8a 30 2c 33 29 3b  |_grid..f...0,3);|
00001530  22 43 68 61 72 61 63 74  65 72 3a 22 3b bd 28 63  |"Character:";.(c|
00001540  68 61 72 29 0d 0d 70 18  f1 8a 30 2c 34 29 3b 22  |har)..p...0,4);"|
00001550  41 53 43 49 49 3a 22 3b  63 68 61 72 0d 0d 7a 05  |ASCII:";char..z.|
00001560  e1 0d 0d 84 05 20 0d 0d  8e 19 dd f2 76 65 72 74  |..... ......vert|
00001570  69 63 61 6c 5f 72 65 76  65 72 73 65 28 76 29 0d  |ical_reverse(v).|
00001580  0d 98 10 ea 20 62 79 74  65 2c 62 79 74 65 32 0d  |.... byte,byte2.|
00001590  0d a2 1a 62 79 74 65 3d  a4 72 6f 77 5f 70 65 65  |...byte=.row_pee|
000015a0  6b 28 63 68 61 72 2c 76  29 0d 0d ac 19 e7 20 62  |k(char,v)..... b|
000015b0  79 74 65 3d 32 35 35 20  84 20 62 79 74 65 3d 30  |yte=255 . byte=0|
000015c0  20 e1 0d 0d b6 0b 62 79  74 65 32 3d 30 0d 0d c0  | .....byte2=0...|
000015d0  18 e7 20 62 79 74 65 20  80 20 31 20 62 79 74 65  |.. byte . 1 byte|
000015e0  32 3d 31 32 38 0d 0d ca  1f e7 20 62 79 74 65 20  |2=128..... byte |
000015f0  80 20 32 20 62 79 74 65  32 3d 62 79 74 65 32 20  |. 2 byte2=byte2 |
00001600  84 20 36 34 0d 0d d4 1f  e7 20 62 79 74 65 20 80  |. 64..... byte .|
00001610  20 34 20 62 79 74 65 32  3d 62 79 74 65 32 20 84  | 4 byte2=byte2 .|
00001620  20 33 32 0d 0d de 1f e7  20 62 79 74 65 20 80 20  | 32..... byte . |
00001630  38 20 62 79 74 65 32 3d  62 79 74 65 32 20 84 20  |8 byte2=byte2 . |
00001640  31 36 0d 0d e8 1f e7 20  62 79 74 65 20 80 20 31  |16..... byte . 1|
00001650  36 20 62 79 74 65 32 3d  62 79 74 65 32 20 84 20  |6 byte2=byte2 . |
00001660  38 0d 0d f2 1f e7 20 62  79 74 65 20 80 20 33 32  |8..... byte . 32|
00001670  20 62 79 74 65 32 3d 62  79 74 65 32 20 84 20 34  | byte2=byte2 . 4|
00001680  0d 0d fc 1f e7 20 62 79  74 65 20 80 20 36 34 20  |..... byte . 64 |
00001690  62 79 74 65 32 3d 62 79  74 65 32 20 84 20 32 0d  |byte2=byte2 . 2.|
000016a0  0e 06 20 e7 20 62 79 74  65 20 80 20 31 32 38 20  |.. . byte . 128 |
000016b0  62 79 74 65 32 3d 62 79  74 65 32 20 84 20 31 0d  |byte2=byte2 . 1.|
000016c0  0e 10 1b f2 72 6f 77 5f  70 6f 6b 65 28 63 68 61  |....row_poke(cha|
000016d0  72 2c 76 2c 62 79 74 65  32 29 0d 0e 1a 05 e1 0d  |r,v,byte2)......|
000016e0  0e 24 05 20 0d 0e 2e 12  dd f2 72 65 76 65 72 73  |.$. ......revers|
000016f0  65 5f 68 6f 72 69 0d 0e  38 12 ea 20 62 79 74 65  |e_hori..8.. byte|
00001700  2c 62 79 74 65 32 2c 7a  0d 0e 42 0f f2 63 72 6f  |,byte2,z..B..cro|
00001710  73 73 28 78 2c 79 29 0d  0e 4c 0d e3 20 7a 3d 30  |ss(x,y)..L.. z=0|
00001720  20 b8 20 33 0d 0e 56 18  62 79 74 65 3d a4 70 65  | . 3..V.byte=.pe|
00001730  65 6b 28 63 68 61 72 2c  7a 2c 79 29 0d 0e 60 1b  |ek(char,z,y)..`.|
00001740  62 79 74 65 32 3d a4 70  65 65 6b 28 63 68 61 72  |byte2=.peek(char|
00001750  2c 37 2d 7a 2c 79 29 0d  0e 6a 1a f2 70 6f 6b 65  |,7-z,y)..j..poke|
00001760  28 63 68 61 72 2c 37 2d  7a 2c 79 2c 62 79 74 65  |(char,7-z,y,byte|
00001770  29 0d 0e 74 19 f2 70 6f  6b 65 28 63 68 61 72 2c  |)..t..poke(char,|
00001780  7a 2c 79 2c 62 79 74 65  32 29 0d 0e 7e 05 ed 0d  |z,y,byte2)..~...|
00001790  0e 88 10 f2 73 65 74 5f  75 70 5f 67 72 69 64 0d  |....set_up_grid.|
000017a0  0e 92 05 e1 0d 0e 9c 05  20 0d 0e a6 12 dd f2 72  |........ ......r|
000017b0  65 76 65 72 73 65 5f 76  65 72 74 0d 0e b0 0f f2  |everse_vert.....|
000017c0  63 72 6f 73 73 28 78 2c  79 29 0d 0e ba 18 f2 76  |cross(x,y).....v|
000017d0  65 72 74 69 63 61 6c 5f  72 65 76 65 72 73 65 28  |ertical_reverse(|
000017e0  78 29 0d 0e c4 10 f2 73  65 74 5f 75 70 5f 67 72  |x).....set_up_gr|
000017f0  69 64 0d 0e ce 05 e1 0d  0e d8 05 20 0d 0e e2 0a  |id......... ....|
00001800  dd f2 66 6c 69 70 0d 0e  ec 07 ea 20 7a 0d 0e f6  |..flip..... z...|
00001810  0f f2 63 72 6f 73 73 28  78 2c 79 29 0d 0f 00 0d  |..cross(x,y)....|
00001820  e3 20 7a 3d 30 20 b8 20  37 0d 0f 0a 18 f2 76 65  |. z=0 . 7.....ve|
00001830  72 74 69 63 61 6c 5f 72  65 76 65 72 73 65 28 7a  |rtical_reverse(z|
00001840  29 0d 0f 14 05 ed 0d 0f  1e 10 f2 73 65 74 5f 75  |)..........set_u|
00001850  70 5f 67 72 69 64 0d 0f  28 05 e1 0d 0f 32 05 20  |p_grid..(....2. |
00001860  0d 0f 3c 0a dd f2 73 77  61 70 0d 0f 46 11 ea 20  |..<...swap..F.. |
00001870  73 77 61 70 2c 7a 2c 62  79 74 65 0d 0f 50 0f f2  |swap,z,byte..P..|
00001880  63 72 6f 73 73 28 78 2c  79 29 0d 0f 5a 1a 73 77  |cross(x,y)..Z.sw|
00001890  61 70 3d a4 63 68 6f 6f  73 65 5f 63 68 61 72 61  |ap=.choose_chara|
000018a0  63 74 65 72 0d 0f 64 0d  e3 20 7a 3d 30 20 b8 20  |cter..d.. z=0 . |
000018b0  37 0d 0f 6e 1a 62 79 74  65 3d a4 72 6f 77 5f 70  |7..n.byte=.row_p|
000018c0  65 65 6b 28 73 77 61 70  2c 7a 29 0d 0f 78 27 f2  |eek(swap,z)..x'.|
000018d0  72 6f 77 5f 70 6f 6b 65  28 73 77 61 70 2c 7a 2c  |row_poke(swap,z,|
000018e0  a4 72 6f 77 5f 70 65 65  6b 28 63 68 61 72 2c 7a  |.row_peek(char,z|
000018f0  29 29 0d 0f 82 1a f2 72  6f 77 5f 70 6f 6b 65 28  |)).....row_poke(|
00001900  63 68 61 72 2c 7a 2c 62  79 74 65 29 0d 0f 8c 05  |char,z,byte)....|
00001910  ed 0d 0f 96 10 f2 73 65  74 5f 75 70 5f 67 72 69  |......set_up_gri|
00001920  64 0d 0f a0 05 e1 0d 0f  aa 05 20 0d 0f b4 0d dd  |d......... .....|
00001930  f2 63 6f 6d 70 69 6c 65  0d 0f be 23 ea 20 66 69  |.compile...#. fi|
00001940  6c 65 24 2c 78 24 2c 6d  65 6d 2c 6c 6f 63 2c 63  |le$,x$,mem,loc,c|
00001950  68 61 72 2c 7a 2c 73 61  76 65 24 0d 0f c8 0f f1  |har,z,save$.....|
00001960  27 22 43 6f 6d 70 69 6c  65 22 0d 0f d2 13 66 69  |'"Compile"....fi|
00001970  6c 65 24 3d a4 66 69 6c  65 6e 61 6d 65 0d 0f dc  |le$=.filename...|
00001980  3e f5 20 e8 20 22 52 75  6e 20 74 69 6d 65 20 6d  |>. . "Run time m|
00001990  65 6d 6f 72 79 20 6c 6f  63 61 74 69 6f 6e 20 66  |emory location f|
000019a0  6f 72 20 74 72 61 70 20  63 6f 64 65 20 20 28 69  |or trap code  (i|
000019b0  6e 20 68 65 78 29 3a 20  22 78 24 0d 0f e6 11 6d  |n hex): "x$....m|
000019c0  65 6d 3d a0 28 22 26 22  2b 78 24 29 0d 0f f0 17  |em=.("&"+x$)....|
000019d0  fd 20 6d 65 6d 3e 30 20  80 20 6d 65 6d 3c 26 46  |. mem>0 . mem<&F|
000019e0  46 46 46 0d 0f fa 12 f1  22 50 6c 65 61 73 65 20  |FFF....."Please |
000019f0  57 61 69 74 22 0d 10 04  1b 6c 6f 63 3d a4 61 73  |Wait"....loc=.as|
00001a00  73 65 6d 62 6c 65 5f 74  72 61 70 28 6d 65 6d 29  |semble_trap(mem)|
00001a10  0d 10 0e 13 e3 20 63 68  61 72 3d 33 32 20 b8 20  |..... char=32 . |
00001a20  31 32 36 0d 10 18 0d e3  20 7a 3d 30 20 b8 20 37  |126..... z=0 . 7|
00001a30  0d 10 22 1a 3f 6c 6f 63  3d a4 72 6f 77 5f 70 65  |..".?loc=.row_pe|
00001a40  65 6b 28 63 68 61 72 2c  7a 29 0d 10 2c 0d 6c 6f  |ek(char,z)..,.lo|
00001a50  63 3d 6c 6f 63 2b 31 0d  10 36 05 ed 0d 10 40 05  |c=loc+1..6....@.|
00001a60  ed 0d 10 4a 30 73 61 76  65 24 3d 22 2a 53 41 56  |...J0save$="*SAV|
00001a70  45 20 22 2b 66 69 6c 65  24 2b 22 20 36 30 30 30  |E "+file$+" 6000|
00001a80  20 2b 34 46 46 20 22 2b  78 24 2b 22 20 22 2b 78  | +4FF "+x$+" "+x|
00001a90  24 0d 10 54 0a f1 73 61  76 65 24 0d 10 5e 0c ff  |$..T..save$..^..|
00001aa0  28 73 61 76 65 24 29 0d  10 68 05 e1 0d 10 72 05  |(save$)..h....r.|
00001ab0  20 0d 10 7c 18 dd a4 61  73 73 65 6d 62 6c 65 5f  | ..|...assemble_|
00001ac0  74 72 61 70 28 6d 65 6d  29 0d 10 86 10 6f 73 62  |trap(mem)....osb|
00001ad0  79 74 65 3d 26 46 46 46  34 0d 10 90 14 e3 20 70  |yte=&FFF4..... p|
00001ae0  61 73 73 3d 34 20 b8 20  36 20 88 20 32 0d 10 9a  |ass=4 . 6 . 2...|
00001af0  0a 50 25 3d 6d 65 6d 0d  10 a4 0c 4f 25 3d 26 36  |.P%=mem....O%=&6|
00001b00  30 30 30 0d 10 ae 05 5b  0d 10 b8 0c 4f 50 54 20  |000....[....OPT |
00001b10  70 61 73 73 0d 10 c2 2a  2e 65 6e 74 65 72 20 4c  |pass...*.enter L|
00001b20  44 41 26 32 30 45 20 5c  20 54 61 6b 65 20 63 6f  |DA&20E \ Take co|
00001b30  6e 74 72 6f 6c 20 6f 66  20 57 52 43 48 56 0d 10  |ntrol of WRCHV..|
00001b40  cc 11 53 54 41 20 6f 6c  64 5f 77 72 63 68 76 0d  |..STA old_wrchv.|
00001b50  10 d6 0b 4c 44 41 26 32  30 46 0d 10 e0 13 53 54  |...LDA&20F....ST|
00001b60  41 20 6f 6c 64 5f 77 72  63 68 76 2b 31 0d 10 ea  |A old_wrchv+1...|
00001b70  07 53 45 49 0d 10 f4 17  4c 44 41 23 6e 65 77 5f  |.SEI....LDA#new_|
00001b80  77 72 63 68 76 20 83 20  32 35 36 0d 10 fe 0b 53  |wrchv . 256....S|
00001b90  54 41 26 32 30 45 0d 11  08 17 4c 44 41 23 6e 65  |TA&20E....LDA#ne|
00001ba0  77 5f 77 72 63 68 76 20  81 20 32 35 36 0d 11 12  |w_wrchv . 256...|
00001bb0  0b 53 54 41 26 32 30 46  0d 11 1c 07 43 4c 49 0d  |.STA&20F....CLI.|
00001bc0  11 26 07 52 54 53 0d 11  30 11 2e 73 65 74 5f 66  |.&.RTS..0..set_f|
00001bd0  78 20 4c 44 41 23 33 0d  11 3a 0a 4c 44 58 23 36  |x LDA#3..:.LDX#6|
00001be0  34 0d 11 44 09 4c 44 59  23 30 0d 11 4e 0e 4a 4d  |4..D.LDY#0..N.JM|
00001bf0  50 20 6f 73 62 79 74 65  0d 11 58 13 2e 63 6c 65  |P osbyte..X..cle|
00001c00  61 72 5f 66 78 20 4c 44  41 23 33 0d 11 62 09 4c  |ar_fx LDA#3..b.L|
00001c10  44 58 23 30 0d 11 6c 09  4c 44 59 23 30 0d 11 76  |DX#0..l.LDY#0..v|
00001c20  0e 4a 4d 50 20 6f 73 62  79 74 65 0d 11 80 13 2e  |.JMP osbyte.....|
00001c30  6e 65 77 5f 6c 69 6e 65  20 4c 44 41 23 31 0d 11  |new_line LDA#1..|
00001c40  8a 13 4a 53 52 20 70 73  75 64 65 6f 5f 6a 75 6d  |..JSR psudeo_jum|
00001c50  70 0d 11 94 0a 4c 44 41  23 26 44 0d 11 9e 1f 2e  |p....LDA#&D.....|
00001c60  70 73 75 64 65 6f 5f 6a  75 6d 70 20 4a 4d 50 28  |psudeo_jump JMP(|
00001c70  6f 6c 64 5f 77 72 63 68  76 29 0d 11 a8 1e 2e 6e  |old_wrchv).....n|
00001c80  65 77 5f 77 72 63 68 76  20 4a 53 52 20 70 73 75  |ew_wrchv JSR psu|
00001c90  64 65 6f 5f 6a 75 6d 70  0d 11 b2 09 43 4d 50 23  |deo_jump....CMP#|
00001ca0  32 0d 11 bc 0e 42 45 51  20 73 65 74 5f 66 78 0d  |2....BEQ set_fx.|
00001cb0  11 c6 09 43 4d 50 23 33  0d 11 d0 10 42 45 51 20  |...CMP#3....BEQ |
00001cc0  63 6c 65 61 72 5f 66 78  0d 11 da 0a 43 4d 50 23  |clear_fx....CMP#|
00001cd0  31 33 0d 11 e4 10 42 45  51 20 6e 65 77 5f 6c 69  |13....BEQ new_li|
00001ce0  6e 65 0d 11 ee 0a 43 4d  50 23 33 32 0d 11 f8 0c  |ne....CMP#32....|
00001cf0  42 4d 49 20 71 75 69 74  0d 12 02 0b 43 4d 50 23  |BMI quit....CMP#|
00001d00  31 32 37 0d 12 0c 0c 42  50 4c 20 71 75 69 74 0d  |127....BPL quit.|
00001d10  12 16 0a 53 54 41 20 73  61 0d 12 20 0a 53 54 59  |...STA sa.. .STY|
00001d20  20 73 79 0d 12 2a 0a 53  54 58 20 73 78 0d 12 34  | sy..*.STX sx..4|
00001d30  05 20 0d 12 3e 0b 4c 44  41 23 26 37 35 0d 12 48  |. ..>.LDA#&75..H|
00001d40  0e 4a 53 52 20 6f 73 62  79 74 65 0d 12 52 07 54  |.JSR osbyte..R.T|
00001d50  58 41 0d 12 5c 07 80 23  31 0d 12 66 12 42 4e 45  |XA..\..#1..f.BNE|
00001d60  20 70 72 69 6e 74 65 72  5f 6f 6e 0d 12 70 0a 4c  | printer_on..p.L|
00001d70  44 41 20 73 61 0d 12 7a  0a 4c 44 58 20 73 78 0d  |DA sa..z.LDX sx.|
00001d80  12 84 0a 4c 44 59 20 73  79 0d 12 8e 0d 2e 71 75  |...LDY sy.....qu|
00001d90  69 74 20 52 54 53 0d 12  98 05 20 0d 12 a2 15 2e  |it RTS.... .....|
00001da0  6f 6c 64 5f 77 72 63 68  76 20 45 51 55 57 20 30  |old_wrchv EQUW 0|
00001db0  0d 12 ac 0b 2e 73 61 20  42 52 4b 0d 12 b6 0b 2e  |.....sa BRK.....|
00001dc0  73 78 20 42 52 4b 0d 12  c0 0b 2e 73 79 20 42 52  |sx BRK.....sy BR|
00001dd0  4b 0d 12 ca 30 2e 63 6f  6e 74 72 6f 6c 20 45 51  |K...0.control EQ|
00001de0  55 42 20 31 20 5c 20 45  70 73 6f 6e 20 43 6f 6e  |UB 1 \ Epson Con|
00001df0  74 72 6f 6c 20 53 65 71  75 65 6e 63 65 20 66 6f  |trol Sequence fo|
00001e00  72 0d 12 d4 24 45 51 55  42 20 32 37 20 5c 20 38  |r...$EQUB 27 \ 8|
00001e10  20 62 69 74 73 20 6f 66  20 67 72 61 70 68 69 63  | bits of graphic|
00001e20  20 64 61 74 61 0d 12 de  2d 45 51 55 42 20 31 20  | data...-EQUB 1 |
00001e30  5c 20 45 71 75 69 76 61  6c 65 6e 74 20 74 6f 20  |\ Equivalent to |
00001e40  ef 31 2c 32 37 2c 31 2c  37 35 2c 31 2c 38 2c 31  |.1,27,1,75,1,8,1|
00001e50  2c 30 0d 12 e8 3a 45 51  55 42 20 37 35 20 5c 20  |,0...:EQUB 75 \ |
00001e60  46 6f 72 20 44 6f 75 62  6c 65 20 44 65 6e 73 69  |For Double Densi|
00001e70  74 79 20 62 69 74 20 69  6d 61 67 65 20 63 68 61  |ty bit image cha|
00001e80  6e 67 65 20 37 35 20 74  6f 20 37 36 0d 12 f2 0f  |nge 75 to 76....|
00001e90  45 51 55 42 31 3a 45 51  55 42 38 0d 12 fc 0f 45  |EQUB1:EQUB8....E|
00001ea0  51 55 42 31 3a 45 51 55  42 30 0d 13 06 05 20 0d  |QUB1:EQUB0.... .|
00001eb0  13 10 27 2e 70 72 69 6e  74 65 72 5f 6f 6e 20 5c  |..'.printer_on \|
00001ec0  20 53 65 6e 64 20 43 6f  6e 74 72 6f 6c 20 53 65  | Send Control Se|
00001ed0  71 75 65 6e 63 65 0d 13  1a 09 4c 44 59 23 30 0d  |quence....LDY#0.|
00001ee0  13 24 18 2e 73 62 61 63  6b 20 4c 44 41 20 63 6f  |.$..sback LDA co|
00001ef0  6e 74 72 6f 6c 2c 59 0d  13 2e 13 4a 53 52 20 70  |ntrol,Y....JSR p|
00001f00  73 75 64 65 6f 5f 6a 75  6d 70 0d 13 38 07 49 4e  |sudeo_jump..8.IN|
00001f10  59 0d 13 42 09 43 50 59  23 38 0d 13 4c 0d 42 4e  |Y..B.CPY#8..L.BN|
00001f20  45 20 73 62 61 63 6b 0d  13 56 0a 4c 44 41 20 73  |E sback..V.LDA s|
00001f30  61 0d 13 60 13 4a 53 52  20 6c 6f 63 61 74 65 5f  |a..`.JSR locate_|
00001f40  63 68 61 72 0d 13 6a 09  4c 44 59 23 30 0d 13 74  |char..j.LDY#0..t|
00001f50  11 2e 73 62 61 63 6b 32  20 4c 44 41 23 31 0d 13  |..sback2 LDA#1..|
00001f60  7e 13 4a 53 52 20 70 73  75 64 65 6f 5f 6a 75 6d  |~.JSR psudeo_jum|
00001f70  70 0d 13 88 19 2e 63 68  61 72 5f 61 64 64 72 20  |p.....char_addr |
00001f80  4c 44 41 26 38 30 30 30  2c 59 0d 13 92 13 4a 53  |LDA&8000,Y....JS|
00001f90  52 20 70 73 75 64 65 6f  5f 6a 75 6d 70 0d 13 9c  |R psudeo_jump...|
00001fa0  07 49 4e 59 0d 13 a6 09  43 50 59 23 38 0d 13 b0  |.INY....CPY#8...|
00001fb0  0e 42 4e 45 20 73 62 61  63 6b 32 0d 13 ba 0a 4c  |.BNE sback2....L|
00001fc0  44 41 20 73 61 0d 13 c4  0a 4c 44 58 20 73 78 0d  |DA sa....LDX sx.|
00001fd0  13 ce 0a 4c 44 59 20 73  79 0d 13 d8 07 52 54 53  |...LDY sy....RTS|
00001fe0  0d 13 e2 49 2e 6c 6f 63  61 74 65 5f 63 68 61 72  |...I.locate_char|
00001ff0  20 53 54 41 20 63 68 61  72 5f 61 64 64 72 2b 31  | STA char_addr+1|
00002000  20 5c 20 41 3d 63 68 61  72 20 46 69 6e 64 73 20  | \ A=char Finds |
00002010  6c 6f 63 61 74 69 6f 6e  20 6f 66 20 63 68 61 72  |location of char|
00002020  73 20 38 20 62 79 74 65  73 0d 13 ec 0a 43 4d 50  |s 8 bytes....CMP|
00002030  23 36 34 0d 13 f6 0c 42  43 53 20 6c 63 6f 6b 0d  |#64....BCS lcok.|
00002040  14 00 07 53 45 43 0d 14  0a 0a 53 42 43 23 33 32  |...SEC....SBC#32|
00002050  0d 14 14 13 53 54 41 20  63 68 61 72 5f 61 64 64  |....STA char_add|
00002060  72 2b 31 0d 14 1e 0f 2e  6c 63 6f 6b 20 4c 44 41  |r+1.....lcok LDA|
00002070  23 30 0d 14 28 13 53 54  41 20 63 68 61 72 5f 61  |#0..(.STA char_a|
00002080  64 64 72 2b 32 0d 14 32  13 41 53 4c 20 63 68 61  |ddr+2..2.ASL cha|
00002090  72 5f 61 64 64 72 2b 31  0d 14 3c 09 41 44 43 23  |r_addr+1..<.ADC#|
000020a0  30 0d 14 46 13 41 53 4c  20 63 68 61 72 5f 61 64  |0..F.ASL char_ad|
000020b0  64 72 2b 31 0d 14 50 09  41 44 43 23 30 0d 14 5a  |dr+1..P.ADC#0..Z|
000020c0  13 41 53 4c 20 63 68 61  72 5f 61 64 64 72 2b 31  |.ASL char_addr+1|
000020d0  0d 14 64 09 41 44 43 23  30 0d 14 6e 13 53 54 41  |..d.ADC#0..n.STA|
000020e0  20 63 68 61 72 5f 61 64  64 72 2b 32 0d 14 78 19  | char_addr+2..x.|
000020f0  4c 44 41 23 66 6f 6e 74  73 5f 74 61 62 6c 65 20  |LDA#fonts_table |
00002100  83 20 32 35 36 0d 14 82  07 43 4c 43 0d 14 8c 13  |. 256....CLC....|
00002110  41 44 43 20 63 68 61 72  5f 61 64 64 72 2b 31 0d  |ADC char_addr+1.|
00002120  14 96 13 53 54 41 20 63  68 61 72 5f 61 64 64 72  |...STA char_addr|
00002130  2b 31 0d 14 a0 19 4c 44  41 23 66 6f 6e 74 73 5f  |+1....LDA#fonts_|
00002140  74 61 62 6c 65 20 81 20  32 35 36 0d 14 aa 13 41  |table . 256....A|
00002150  44 43 20 63 68 61 72 5f  61 64 64 72 2b 32 0d 14  |DC char_addr+2..|
00002160  b4 13 53 54 41 20 63 68  61 72 5f 61 64 64 72 2b  |..STA char_addr+|
00002170  32 0d 14 be 07 52 54 53  0d 14 c8 24 2e 66 6f 6e  |2....RTS...$.fon|
00002180  74 73 5f 74 61 62 6c 65  20 5c 20 46 6f 6e 74 73  |ts_table \ Fonts|
00002190  20 6c 6f 61 64 65 64 20  68 65 72 65 0d 14 d2 05  | loaded here....|
000021a0  5d 0d 14 dc 05 ed 0d 14  e6 11 3a 3d 66 6f 6e 74  |].........:=font|
000021b0  73 5f 74 61 62 6c 65 0d  14 f0 05 20 0d 14 fa 0e  |s_table.... ....|
000021c0  dd a4 74 65 73 74 28 78  24 29 0d 15 04 07 ea 20  |..test(x$)..... |
000021d0  78 0d 15 0e 08 f1 27 78  24 0d 15 18 08 78 24 3d  |x.....'x$....x$=|
000021e0  be 0d 15 22 19 e7 20 78  24 3d 22 59 22 20 84 20  |...".. x$="Y" . |
000021f0  78 24 3d 22 79 22 20 78  3d b9 0d 15 2c 19 e7 20  |x$="y" x=...,.. |
00002200  78 24 3d 22 4e 22 20 84  20 78 24 3d 22 6e 22 20  |x$="N" . x$="n" |
00002210  78 3d a3 0d 15 36 07 3a  3d 78 0d 15 40 05 20 0d  |x=...6.:=x..@. .|
00002220  15 4a 1a dd f2 70 6f 6b  65 28 63 68 61 72 2c 78  |.J...poke(char,x|
00002230  2c 79 2c 76 61 6c 75 65  29 0d 15 54 0a ea 20 62  |,y,value)..T.. b|
00002240  79 74 65 0d 15 5e 1e 62  79 74 65 3d 66 6f 6e 74  |yte..^.byte=font|
00002250  73 2b 78 2b 28 28 63 68  61 72 2d 33 32 29 2a 38  |s+x+((char-32)*8|
00002260  29 0d 15 68 25 e7 20 76  61 6c 75 65 3d 30 20 3f  |)..h%. value=0 ?|
00002270  62 79 74 65 3d 3f 62 79  74 65 20 80 20 28 32 35  |byte=?byte . (25|
00002280  35 2d 32 5e 79 29 0d 15  72 1f e7 20 76 61 6c 75  |5-2^y)..r.. valu|
00002290  65 3d 31 20 3f 62 79 74  65 3d 3f 62 79 74 65 20  |e=1 ?byte=?byte |
000022a0  84 20 32 5e 79 0d 15 7c  1f e7 20 76 61 6c 75 65  |. 2^y..|.. value|
000022b0  3d 32 20 3f 62 79 74 65  3d 3f 62 79 74 65 20 82  |=2 ?byte=?byte .|
000022c0  20 32 5e 79 0d 15 86 05  e1 0d 15 90 05 20 0d 15  | 2^y......... ..|
000022d0  9a 14 dd a4 70 65 65 6b  28 63 68 61 72 2c 78 2c  |....peek(char,x,|
000022e0  79 29 0d 15 a4 0a ea 20  62 79 74 65 0d 15 ae 1e  |y)..... byte....|
000022f0  62 79 74 65 3d 66 6f 6e  74 73 2b 78 2b 28 28 63  |byte=fonts+x+((c|
00002300  68 61 72 2d 33 32 29 2a  38 29 0d 15 b8 1b e7 20  |har-32)*8)..... |
00002310  3f 62 79 74 65 20 80 20  32 5e 79 20 3a 3d 31 20  |?byte . 2^y :=1 |
00002320  8b 20 3a 3d 30 0d 15 c2  05 20 0d 15 cc 1c dd f2  |. :=0.... ......|
00002330  72 6f 77 5f 70 6f 6b 65  28 63 68 61 72 2c 78 2c  |row_poke(char,x,|
00002340  76 61 6c 75 65 29 0d 15  d6 22 3f 28 66 6f 6e 74  |value)..."?(font|
00002350  73 2b 78 2b 28 28 63 68  61 72 2d 33 32 29 2a 38  |s+x+((char-32)*8|
00002360  29 29 3d 76 61 6c 75 65  0d 15 e0 05 e1 0d 15 ea  |))=value........|
00002370  05 20 0d 15 f4 16 dd a4  72 6f 77 5f 70 65 65 6b  |. ......row_peek|
00002380  28 63 68 61 72 2c 78 29  0d 15 fe 1e 3a 3d 3f 28  |(char,x)....:=?(|
00002390  66 6f 6e 74 73 2b 78 2b  28 28 63 68 61 72 2d 33  |fonts+x+((char-3|
000023a0  32 29 2a 38 29 29 0d 16  08 05 20 0d 16 12 0e dd  |2)*8)).... .....|
000023b0  a4 66 69 6c 65 6e 61 6d  65 0d 16 1c 08 ea 20 78  |.filename..... x|
000023c0  24 0d 16 26 20 e7 20 a4  74 65 73 74 28 22 43 61  |$..& . .test("Ca|
000023d0  74 61 6c 6f 67 75 65 3f  22 29 20 8c 20 2a 43 41  |talogue?") . *CA|
000023e0  54 0d 16 30 14 f5 20 e8  22 46 69 6c 65 6e 61 6d  |T..0.. ."Filenam|
000023f0  65 3a 22 78 24 0d 16 3a  0c fd 20 78 24 3c 3e 22  |e:"x$..:.. x$<>"|
00002400  22 0d 16 44 08 3a 3d 78  24 0d 16 4e 05 20 0d 16  |"..D.:=x$..N. ..|
00002410  58 16 dd a4 63 68 6f 6f  73 65 5f 63 68 61 72 61  |X...choose_chara|
00002420  63 74 65 72 0d 16 62 0d  ea 20 78 24 2c 79 24 2c  |cter..b.. x$,y$,|
00002430  78 0d 16 6c 05 f5 0d 16  76 0c f1 8a 30 2c 32 33  |x..l....v...0,23|
00002440  29 3b 0d 16 80 1a e8 20  22 46 6f 6e 74 20 43 68  |);..... "Font Ch|
00002450  61 72 61 63 74 65 72 3a  20 22 78 24 0d 16 8a 2a  |aracter: "x$...*|
00002460  e7 20 78 24 3d 22 22 20  f5 20 e8 20 22 46 6f 6e  |. x$="" . . "Fon|
00002470  74 20 6e 75 6d 62 65 72  3a 20 22 79 24 3a fd 20  |t number: "y$:. |
00002480  79 24 3c 3e 22 22 0d 16  94 1d e7 20 78 24 3d 22  |y$<>""..... x$="|
00002490  22 20 78 3d a0 28 79 24  29 20 8b 20 78 3d 97 28  |" x=.(y$) . x=.(|
000024a0  78 24 29 0d 16 9e 2c e7  20 78 3c 33 32 20 84 20  |x$)...,. x<32 . |
000024b0  78 3e 31 32 37 20 f1 22  49 6c 6c 65 67 61 6c 20  |x>127 ."Illegal |
000024c0  43 68 61 72 61 63 74 65  72 20 46 6f 6e 74 22 0d  |Character Font".|
000024d0  16 a8 12 fd 20 78 3e 33  31 20 80 20 78 3c 31 32  |.... x>31 . x<12|
000024e0  38 0d 16 b2 2c f1 8a 30  2c 32 33 29 3b 89 28 33  |8...,..0,23);.(3|
000024f0  35 29 3b 8a 30 2c 32 34  29 3b 89 28 33 35 29 3b  |5);.0,24);.(35);|
00002500  8a 30 2c 32 35 29 3b 89  28 33 35 29 3b 0d 16 bc  |.0,25);.(35);...|
00002510  07 3a 3d 78 0d 16 c6 05  20 0d 16 d0 12 dd f2 61  |.:=x.... ......a|
00002520  73 73 65 6d 62 6c 65 28  6d 63 29 0d 16 da 2e ea  |ssemble(mc).....|
00002530  20 70 61 73 73 2c 6f 73  77 72 63 68 2c 62 61 63  | pass,oswrch,bac|
00002540  6b 2c 62 61 63 6b 31 2c  62 61 63 6b 32 2c 62 61  |k,back1,back2,ba|
00002550  63 6b 33 2c 62 61 63 6b  34 0d 16 e4 0a ea 20 65  |ck3,back4..... e|
00002560  78 69 74 0d 16 ee 0c ea  20 6f 73 77 6f 72 64 0d  |xit..... osword.|
00002570  16 f8 10 6f 73 77 72 63  68 3d 26 46 46 45 45 0d  |...oswrch=&FFEE.|
00002580  17 02 10 6f 73 61 73 63  69 3d 26 46 46 45 33 0d  |...osasci=&FFE3.|
00002590  17 0c 10 6f 73 77 6f 72  64 3d 26 46 46 46 31 0d  |...osword=&FFF1.|
000025a0  17 16 14 e3 20 70 61 73  73 3d 30 20 b8 20 32 20  |.... pass=0 . 2 |
000025b0  88 20 32 0d 17 20 09 50  25 3d 6d 63 0d 17 2a 05  |. 2.. .P%=mc..*.|
000025c0  5b 0d 17 34 0c 4f 50 54  20 70 61 73 73 0d 17 3e  |[..4.OPT pass..>|
000025d0  3e 2e 66 69 6c 6c 5f 62  6f 78 20 5c 20 58 20 61  |>.fill_box \ X a|
000025e0  6e 64 20 59 20 63 6f 6e  74 61 69 6e 20 78 20 61  |nd Y contain x a|
000025f0  6e 64 20 79 20 63 6f 72  64 73 20 66 6f 72 20 62  |nd y cords for b|
00002600  6f 78 20 66 69 6c 6c 20  41 3d e6 0d 17 48 0c 53  |ox fill A=...H.S|
00002610  54 41 20 67 63 6f 6c 0d  17 52 09 4c 44 41 23 31  |TA gcol..R.LDA#1|
00002620  0d 17 5c 0b 53 54 41 20  73 78 32 0d 17 66 0b 53  |..\.STA sx2..f.S|
00002630  54 41 20 73 79 32 0d 17  70 0b 4c 44 41 23 26 46  |TA sy2..p.LDA#&F|
00002640  39 0d 17 7a 0a 53 54 41  20 73 79 0d 17 84 0a 53  |9..z.STA sy....S|
00002650  54 41 20 73 78 0d 17 8e  05 20 0d 17 98 0a 4c 44  |TA sx.... ....LD|
00002660  41 20 73 78 0d 17 a2 07  43 4c 43 0d 17 ac 12 41  |A sx....CLC....A|
00002670  44 43 20 74 69 6d 65 73  35 30 6c 2c 58 0d 17 b6  |DC times50l,X...|
00002680  0a 53 54 41 20 73 78 0d  17 c0 0b 4c 44 41 20 73  |.STA sx....LDA s|
00002690  78 32 0d 17 ca 12 41 44  43 20 74 69 6d 65 73 35  |x2....ADC times5|
000026a0  30 68 2c 58 0d 17 d4 0b  53 54 41 20 73 78 32 0d  |0h,X....STA sx2.|
000026b0  17 de 05 20 0d 17 e8 0a  4c 44 41 20 73 79 0d 17  |... ....LDA sy..|
000026c0  f2 07 43 4c 43 0d 17 fc  12 41 44 43 20 74 69 6d  |..CLC....ADC tim|
000026d0  65 73 35 30 6c 2c 59 0d  18 06 0a 53 54 41 20 73  |es50l,Y....STA s|
000026e0  79 0d 18 10 0b 4c 44 41  20 73 79 32 0d 18 1a 11  |y....LDA sy2....|
000026f0  41 44 43 74 69 6d 65 73  35 30 68 2c 59 0d 18 24  |ADCtimes50h,Y..$|
00002700  0b 53 54 41 20 73 79 32  0d 18 2e 05 20 0d 18 38  |.STA sy2.... ..8|
00002710  0a 4c 44 41 20 73 78 0d  18 42 0d 53 54 41 20 70  |.LDA sx..B.STA p|
00002720  69 78 65 6c 0d 18 4c 0b  4c 44 41 20 73 78 32 0d  |ixel..L.LDA sx2.|
00002730  18 56 0f 53 54 41 20 70  69 78 65 6c 2b 31 0d 18  |.V.STA pixel+1..|
00002740  60 0a 4c 44 41 20 73 79  0d 18 6a 0f 53 54 41 20  |`.LDA sy..j.STA |
00002750  70 69 78 65 6c 2b 32 0d  18 74 0b 4c 44 41 20 73  |pixel+2..t.LDA s|
00002760  79 32 0d 18 7e 0f 53 54  41 20 70 69 78 65 6c 2b  |y2..~.STA pixel+|
00002770  33 0d 18 88 09 4c 44 41  23 39 0d 18 92 13 4c 44  |3....LDA#9....LD|
00002780  58 23 70 69 78 65 6c 20  83 20 32 35 36 0d 18 9c  |X#pixel . 256...|
00002790  13 4c 44 59 23 70 69 78  65 6c 20 81 20 32 35 36  |.LDY#pixel . 256|
000027a0  0d 18 a6 0e 4a 53 52 20  6f 73 77 6f 72 64 0d 18  |....JSR osword..|
000027b0  b0 0f 4c 44 41 20 70 69  78 65 6c 2b 34 0d 18 ba  |..LDA pixel+4...|
000027c0  0c 43 4d 50 20 67 63 6f  6c 0d 18 c4 0c 42 45 51  |.CMP gcol....BEQ|
000027d0  20 65 78 69 74 0d 18 ce  05 20 0d 18 d8 09 4c 44  | exit.... ....LD|
000027e0  59 23 30 0d 18 e2 1d 2e  62 61 63 6b 33 20 4c 44  |Y#0.....back3 LD|
000027f0  41 20 6d 6f 76 65 2c 59  20 5c 20 ec 20 78 2c 79  |A move,Y \ . x,y|
00002800  0d 18 ec 0e 4a 53 52 20  6f 73 77 72 63 68 0d 18  |....JSR oswrch..|
00002810  f6 07 49 4e 59 0d 19 00  09 43 50 59 23 36 0d 19  |..INY....CPY#6..|
00002820  0a 0d 42 4e 45 20 62 61  63 6b 33 0d 19 14 05 20  |..BNE back3.... |
00002830  0d 19 1e 11 4c 44 41 23  31 38 20 5c 20 e6 30 2c  |....LDA#18 \ .0,|
00002840  61 0d 19 28 0e 4a 53 52  20 6f 73 77 72 63 68 0d  |a..(.JSR oswrch.|
00002850  19 32 09 4c 44 41 23 30  0d 19 3c 0e 4a 53 52 20  |.2.LDA#0..<.JSR |
00002860  6f 73 77 72 63 68 0d 19  46 0c 4c 44 41 20 67 63  |oswrch..F.LDA gc|
00002870  6f 6c 0d 19 50 0e 4a 53  52 20 6f 73 77 72 63 68  |ol..P.JSR oswrch|
00002880  0d 19 5a 05 20 0d 19 64  26 4c 44 58 23 30 20 5c  |..Z. ..d&LDX#0 \|
00002890  20 f0 31 2c 34 32 2c 30  3b f0 30 2c 2d 34 32 2c  | .1,42,0;.0,-42,|
000028a0  32 3b 20 32 30 20 74 69  6d 65 73 0d 19 6e 10 2e  |2; 20 times..n..|
000028b0  62 61 63 6b 35 20 4c 44  59 23 30 0d 19 78 15 2e  |back5 LDY#0..x..|
000028c0  62 61 63 6b 34 20 4c 44  41 20 70 6c 6f 74 2c 59  |back4 LDA plot,Y|
000028d0  0d 19 82 0e 4a 53 52 20  6f 73 77 72 63 68 0d 19  |....JSR oswrch..|
000028e0  8c 07 49 4e 59 0d 19 96  0a 43 50 59 23 26 43 0d  |..INY....CPY#&C.|
000028f0  19 a0 0d 42 4e 45 20 62  61 63 6b 34 0d 19 aa 07  |...BNE back4....|
00002900  49 4e 58 0d 19 b4 0a 43  50 58 23 32 30 0d 19 be  |INX....CPX#20...|
00002910  0d 42 4e 45 20 62 61 63  6b 35 0d 19 c8 0d 2e 65  |.BNE back5.....e|
00002920  78 69 74 20 52 54 53 0d  19 d2 0d 2e 67 63 6f 6c  |xit RTS.....gcol|
00002930  20 42 52 4b 0d 19 dc 11  2e 6d 6f 76 65 20 45 51  | BRK.....move EQ|
00002940  55 42 20 32 35 0d 19 e6  0a 45 51 55 42 20 34 0d  |UB 25....EQUB 4.|
00002950  19 f0 0b 2e 73 78 20 42  52 4b 0d 19 fa 0c 2e 73  |....sx BRK.....s|
00002960  78 32 20 42 52 4b 0d 1a  04 0b 2e 73 79 20 42 52  |x2 BRK.....sy BR|
00002970  4b 0d 1a 0e 0c 2e 73 79  32 20 42 52 4b 0d 1a 18  |K.....sy2 BRK...|
00002980  11 2e 70 6c 6f 74 20 45  51 55 42 20 32 35 0d 1a  |..plot EQUB 25..|
00002990  22 09 45 51 55 42 31 0d  1a 2c 0b 45 51 55 57 20  |".EQUB1..,.EQUW |
000029a0  34 32 0d 1a 36 0a 45 51  55 57 20 30 0d 1a 40 0b  |42..6.EQUW 0..@.|
000029b0  45 51 55 42 20 32 35 0d  1a 4a 0a 45 51 55 42 20  |EQUB 25..J.EQUB |
000029c0  30 0d 1a 54 0c 45 51 55  57 20 2d 34 32 0d 1a 5e  |0..T.EQUW -42..^|
000029d0  0a 45 51 55 57 20 32 0d  1a 68 11 2e 70 69 78 65  |.EQUW 2..h..pixe|
000029e0  6c 20 45 51 55 44 20 30  0d 1a 72 07 42 52 4b 0d  |l EQUD 0..r.BRK.|
000029f0  1a 7c 39 2e 74 69 6d 65  73 35 30 6c 20 45 51 55  |.|9.times50l EQU|
00002a00  42 30 3a 45 51 55 42 35  30 20 5c 20 4d 75 6c 74  |B0:EQUB50 \ Mult|
00002a10  69 70 6c 69 63 61 74 69  6f 6e 20 6c 6f 6f 6b 20  |iplication look |
00002a20  75 70 20 74 61 62 6c 65  0d 1a 86 2a 45 51 55 42  |up table...*EQUB|
00002a30  31 30 30 3a 45 51 55 42  31 35 30 20 5c 20 54 6f  |100:EQUB150 \ To|
00002a40  20 73 70 65 65 64 20 75  70 20 67 72 61 70 68 69  | speed up graphi|
00002a50  63 73 0d 1a 90 34 45 51  55 42 32 30 30 3a 45 51  |cs...4EQUB200:EQ|
00002a60  55 42 32 35 30 20 5c 20  48 65 6c 70 73 20 77 69  |UB250 \ Helps wi|
00002a70  74 68 20 6d 75 6c 74 69  70 69 63 61 74 69 6f 6e  |th multipication|
00002a80  20 62 79 20 35 30 0d 1a  9a 13 45 51 55 42 26 32  | by 50....EQUB&2|
00002a90  43 3a 45 51 55 42 26 35  45 0d 1a a4 19 2e 74 69  |C:EQUB&5E.....ti|
00002aa0  6d 65 73 35 30 68 20 45  51 55 42 30 3a 45 51 55  |mes50h EQUB0:EQU|
00002ab0  42 30 0d 1a ae 0f 45 51  55 42 30 3a 45 51 55 42  |B0....EQUB0:EQUB|
00002ac0  30 0d 1a b8 0f 45 51 55  42 30 3a 45 51 55 42 30  |0....EQUB0:EQUB0|
00002ad0  0d 1a c2 0f 45 51 55 42  31 3a 45 51 55 42 31 0d  |....EQUB1:EQUB1.|
00002ae0  1a cc 2a 2e 67 65 74 5f  64 65 66 61 75 6c 74 20  |..*.get_default |
00002af0  53 54 41 20 62 6c 6f 63  6b 20 5c 20 41 3d 63 68  |STA block \ A=ch|
00002b00  61 72 20 74 6f 20 67 65  74 0d 1a d6 0a 4c 44 41  |ar to get....LDA|
00002b10  23 26 41 0d 1a e0 13 4c  44 58 23 62 6c 6f 63 6b  |#&A....LDX#block|
00002b20  20 83 20 32 35 36 0d 1a  ea 13 4c 44 59 23 62 6c  | . 256....LDY#bl|
00002b30  6f 63 6b 20 81 20 32 35  36 0d 1a f4 0e 4a 53 52  |ock . 256....JSR|
00002b40  20 6f 73 77 6f 72 64 0d  1a fe 09 4c 44 58 23 30  | osword....LDX#0|
00002b50  0d 1b 08 09 4c 44 41 23  30 0d 1b 12 18 2e 67 62  |....LDA#0.....gb|
00002b60  61 63 6b 31 20 53 54 41  20 62 6c 6f 63 6b 32 2c  |ack1 STA block2,|
00002b70  58 0d 1b 1c 07 49 4e 58  0d 1b 26 09 43 50 58 23  |X....INX..&.CPX#|
00002b80  38 0d 1b 30 0e 42 4e 45  20 67 62 61 63 6b 31 0d  |8..0.BNE gback1.|
00002b90  1b 3a 09 4c 44 59 23 30  0d 1b 44 11 2e 67 62 61  |.:.LDY#0..D..gba|
00002ba0  63 6b 32 20 4c 44 58 23  30 0d 1b 4e 19 2e 67 62  |ck2 LDX#0..N..gb|
00002bb0  61 63 6b 33 20 4c 44 41  20 62 6c 6f 63 6b 2b 31  |ack3 LDA block+1|
00002bc0  2c 58 0d 1b 58 0c 80 20  6d 61 73 6b 2c 59 0d 1b  |,X..X.. mask,Y..|
00002bd0  62 09 43 4d 50 23 30 0d  1b 6c 0d 42 45 51 20 67  |b.CMP#0..l.BEQ g|
00002be0  66 6f 72 31 0d 1b 76 1a  4c 44 41 20 62 6c 6f 63  |for1..v.LDA bloc|
00002bf0  6b 32 2c 59 3a 84 41 20  6d 61 73 6b 2c 58 0d 1b  |k2,Y:.A mask,X..|
00002c00  80 10 4c 44 41 20 62 6c  6f 63 6b 32 2c 59 0d 1b  |..LDA block2,Y..|
00002c10  8a 0d 84 41 20 6d 61 73  6b 2c 58 0d 1b 94 10 53  |...A mask,X....S|
00002c20  54 41 20 62 6c 6f 63 6b  32 2c 59 0d 1b 9e 0e 2e  |TA block2,Y.....|
00002c30  67 66 6f 72 31 20 49 4e  58 0d 1b a8 09 43 50 58  |gfor1 INX....CPX|
00002c40  23 38 0d 1b b2 0e 42 4e  45 20 67 62 61 63 6b 33  |#8....BNE gback3|
00002c50  0d 1b bc 07 49 4e 59 0d  1b c6 09 43 50 59 23 38  |....INY....CPY#8|
00002c60  0d 1b d0 0e 42 4e 45 20  67 62 61 63 6b 32 0d 1b  |....BNE gback2..|
00002c70  da 07 52 54 53 0d 1b e4  17 2e 6d 61 73 6b 20 45  |..RTS.....mask E|
00002c80  51 55 44 26 31 30 32 30  34 30 38 30 0d 1b ee 11  |QUD&10204080....|
00002c90  45 51 55 44 26 30 31 30  32 30 34 30 38 0d 1b f8  |EQUD&01020408...|
00002ca0  0e 2e 62 6c 6f 63 6b 20  42 52 4b 0d 1c 02 0a 45  |..block BRK....E|
00002cb0  51 55 44 20 30 0d 1c 0c  0a 45 51 55 44 20 30 0d  |QUD 0....EQUD 0.|
00002cc0  1c 16 0f 2e 62 6c 6f 63  6b 32 20 42 52 4b 0d 1c  |....block2 BRK..|
00002cd0  20 0a 45 51 55 44 20 30  0d 1c 2a 0a 45 51 55 44  | .EQUD 0..*.EQUD|
00002ce0  20 30 0d 1c 34 05 20 0d  1c 3e 18 2e 73 65 74 5f  | 0..4. ..>..set_|
00002cf0  75 70 5f 75 64 67 20 53  54 41 20 63 68 61 72 0d  |up_udg STA char.|
00002d00  1c 48 11 2e 76 62 61 63  6b 30 20 4c 44 58 23 30  |.H..vback0 LDX#0|
00002d10  0d 1c 52 09 4c 44 41 23  30 0d 1c 5c 17 2e 76 62  |..R.LDA#0..\..vb|
00002d20  61 63 6b 31 20 53 54 41  20 75 64 67 2b 32 2c 58  |ack1 STA udg+2,X|
00002d30  0d 1c 66 07 49 4e 58 0d  1c 70 09 43 50 58 23 38  |..f.INX..p.CPX#8|
00002d40  0d 1c 7a 0e 42 4e 45 20  76 62 61 63 6b 31 0d 1c  |..z.BNE vback1..|
00002d50  84 05 20 0d 1c 8e 0c 4c  44 41 20 63 68 61 72 0d  |.. ....LDA char.|
00002d60  1c 98 13 4a 53 52 20 6c  6f 63 61 74 65 5f 63 68  |...JSR locate_ch|
00002d70  61 72 0d 1c a2 05 20 0d  1c ac 09 4c 44 58 23 30  |ar.... ....LDX#0|
00002d80  0d 1c b6 11 2e 76 62 61  63 6b 33 20 4c 44 59 23  |.....vback3 LDY#|
00002d90  30 0d 1c c0 16 2e 76 62  61 63 6b 32 20 4c 44 41  |0.....vback2 LDA|
00002da0  28 26 37 30 29 2c 59 0d  1c ca 0d 80 20 76 6d 61  |(&70),Y..... vma|
00002db0  73 6b 2c 58 0d 1c d4 09  43 4d 50 23 30 0d 1c de  |sk,X....CMP#0...|
00002dc0  0c 42 45 51 20 76 66 6f  72 0d 1c e8 0f 4c 44 41  |.BEQ vfor....LDA|
00002dd0  20 75 64 67 2b 32 2c 58  0d 1c f2 0e 84 41 20 76  | udg+2,X.....A v|
00002de0  6d 61 73 6b 2c 59 0d 1c  fc 0f 53 54 41 20 75 64  |mask,Y....STA ud|
00002df0  67 2b 32 2c 58 0d 1d 06  0d 2e 76 66 6f 72 20 49  |g+2,X.....vfor I|
00002e00  4e 59 0d 1d 10 09 43 50  59 23 38 0d 1d 1a 0e 42  |NY....CPY#8....B|
00002e10  4e 45 20 76 62 61 63 6b  32 0d 1d 24 07 49 4e 58  |NE vback2..$.INX|
00002e20  0d 1d 2e 09 43 50 58 23  38 0d 1d 38 0e 42 4e 45  |....CPX#8..8.BNE|
00002e30  20 76 62 61 63 6b 33 0d  1d 42 05 20 0d 1d 4c 09  | vback3..B. ..L.|
00002e40  4c 44 58 23 30 0d 1d 56  15 2e 76 62 61 63 6b 34  |LDX#0..V..vback4|
00002e50  20 4c 44 41 20 75 64 67  2c 58 0d 1d 60 0e 4a 53  | LDA udg,X..`.JS|
00002e60  52 20 6f 73 77 72 63 68  0d 1d 6a 07 49 4e 58 0d  |R oswrch..j.INX.|
00002e70  1d 74 0a 43 50 58 23 31  30 0d 1d 7e 0e 42 4e 45  |.t.CPX#10..~.BNE|
00002e80  20 76 62 61 63 6b 34 0d  1d 88 07 52 54 53 0d 1d  | vback4....RTS..|
00002e90  92 05 20 0d 1d 9c 10 2e  75 64 67 20 45 51 55 42  |.. .....udg EQUB|
00002ea0  20 32 33 0d 1d a6 0c 45  51 55 42 20 31 33 30 0d  | 23....EQUB 130.|
00002eb0  1d b0 0a 45 51 55 44 20  30 0d 1d ba 0a 45 51 55  |...EQUD 0....EQU|
00002ec0  44 20 30 0d 1d c4 0d 2e  63 68 61 72 20 42 52 4b  |D 0.....char BRK|
00002ed0  0d 1d ce 18 2e 76 6d 61  73 6b 20 45 51 55 44 26  |.....vmask EQUD&|
00002ee0  31 30 32 30 34 30 38 30  0d 1d d8 11 45 51 55 44  |10204080....EQUD|
00002ef0  26 30 31 30 32 30 34 30  38 0d 1d e2 05 20 0d 1d  |&01020408.... ..|
00002f00  ec 17 2e 67 72 69 64 5f  6c 65 66 74 20 5c 20 41  |...grid_left \ A|
00002f10  3d 63 68 61 72 0d 1d f6  13 4a 53 52 20 6c 6f 63  |=char....JSR loc|
00002f20  61 74 65 5f 63 68 61 72  0d 1e 00 09 4c 44 59 23  |ate_char....LDY#|
00002f30  30 0d 1e 0a 0e 4c 44 41  28 26 37 30 29 2c 59 0d  |0....LDA(&70),Y.|
00002f40  1e 14 07 50 48 41 0d 1e  1e 09 4c 44 59 23 31 0d  |...PHA....LDY#1.|
00002f50  1e 28 0e 4c 44 41 28 26  37 30 29 2c 59 0d 1e 32  |.(.LDA(&70),Y..2|
00002f60  07 44 45 59 0d 1e 3c 0e  53 54 41 28 26 37 30 29  |.DEY..<.STA(&70)|
00002f70  2c 59 0d 1e 46 09 4c 44  59 23 32 0d 1e 50 0e 4c  |,Y..F.LDY#2..P.L|
00002f80  44 41 28 26 37 30 29 2c  59 0d 1e 5a 07 44 45 59  |DA(&70),Y..Z.DEY|
00002f90  0d 1e 64 0e 53 54 41 28  26 37 30 29 2c 59 0d 1e  |..d.STA(&70),Y..|
00002fa0  6e 09 4c 44 59 23 33 0d  1e 78 0e 4c 44 41 28 26  |n.LDY#3..x.LDA(&|
00002fb0  37 30 29 2c 59 0d 1e 82  07 44 45 59 0d 1e 8c 0e  |70),Y....DEY....|
00002fc0  53 54 41 28 26 37 30 29  2c 59 0d 1e 96 09 4c 44  |STA(&70),Y....LD|
00002fd0  59 23 34 0d 1e a0 0e 4c  44 41 28 26 37 30 29 2c  |Y#4....LDA(&70),|
00002fe0  59 0d 1e aa 07 44 45 59  0d 1e b4 0e 53 54 41 28  |Y....DEY....STA(|
00002ff0  26 37 30 29 2c 59 0d 1e  be 09 4c 44 59 23 35 0d  |&70),Y....LDY#5.|
00003000  1e c8 0e 4c 44 41 28 26  37 30 29 2c 59 0d 1e d2  |...LDA(&70),Y...|
00003010  07 44 45 59 0d 1e dc 0e  53 54 41 28 26 37 30 29  |.DEY....STA(&70)|
00003020  2c 59 0d 1e e6 09 4c 44  59 23 36 0d 1e f0 0e 4c  |,Y....LDY#6....L|
00003030  44 41 28 26 37 30 29 2c  59 0d 1e fa 07 44 45 59  |DA(&70),Y....DEY|
00003040  0d 1f 04 0e 53 54 41 28  26 37 30 29 2c 59 0d 1f  |....STA(&70),Y..|
00003050  0e 09 4c 44 59 23 37 0d  1f 18 0e 4c 44 41 28 26  |..LDY#7....LDA(&|
00003060  37 30 29 2c 59 0d 1f 22  07 44 45 59 0d 1f 2c 0e  |70),Y..".DEY..,.|
00003070  53 54 41 28 26 37 30 29  2c 59 0d 1f 36 09 4c 44  |STA(&70),Y..6.LD|
00003080  59 23 37 0d 1f 40 07 50  4c 41 0d 1f 4a 0e 53 54  |Y#7..@.PLA..J.ST|
00003090  41 28 26 37 30 29 2c 59  0d 1f 54 07 52 54 53 0d  |A(&70),Y..T.RTS.|
000030a0  1f 5e 05 20 0d 1f 68 18  2e 67 72 69 64 5f 72 69  |.^. ..h..grid_ri|
000030b0  67 68 74 20 53 54 41 20  63 68 61 72 0d 1f 72 09  |ght STA char..r.|
000030c0  4c 44 58 23 30 0d 1f 7c  12 2e 67 72 62 61 20 4c  |LDX#0..|..grba L|
000030d0  44 41 20 63 68 61 72 0d  1f 86 11 4a 53 52 20 67  |DA char....JSR g|
000030e0  72 69 64 5f 6c 65 66 74  0d 1f 90 07 49 4e 58 0d  |rid_left....INX.|
000030f0  1f 9a 09 43 50 58 23 37  0d 1f a4 0c 42 4e 45 20  |...CPX#7....BNE |
00003100  67 72 62 61 0d 1f ae 07  52 54 53 0d 1f b8 05 20  |grba....RTS.... |
00003110  0d 1f c2 1c 2e 67 72 69  64 5f 75 70 20 4a 53 52  |.....grid_up JSR|
00003120  20 6c 6f 63 61 74 65 5f  63 68 61 72 0d 1f cc 09  | locate_char....|
00003130  4c 44 59 23 30 0d 1f d6  14 2e 67 75 62 61 20 4c  |LDY#0.....guba L|
00003140  44 41 28 26 37 30 29 2c  59 0d 1f e0 09 52 4f 4c  |DA(&70),Y....ROL|
00003150  20 41 0d 1f ea 09 41 44  43 23 30 0d 1f f4 0e 53  | A....ADC#0....S|
00003160  54 41 28 26 37 30 29 2c  59 0d 1f fe 07 49 4e 59  |TA(&70),Y....INY|
00003170  0d 20 08 09 43 50 59 23  38 0d 20 12 0c 42 4e 45  |. ..CPY#8. ..BNE|
00003180  20 67 75 62 61 0d 20 1c  07 52 54 53 0d 20 26 05  | guba. ..RTS. &.|
00003190  20 0d 20 30 1e 2e 67 72  69 64 5f 64 6f 77 6e 20  | . 0..grid_down |
000031a0  4a 53 52 20 6c 6f 63 61  74 65 5f 63 68 61 72 0d  |JSR locate_char.|
000031b0  20 3a 09 4c 44 59 23 30  0d 20 44 14 2e 67 64 62  | :.LDY#0. D..gdb|
000031c0  61 20 4c 44 41 28 26 37  30 29 2c 59 0d 20 4e 09  |a LDA(&70),Y. N.|
000031d0  52 4f 52 20 41 0d 20 58  0c 42 43 43 20 67 64 66  |ROR A. X.BCC gdf|
000031e0  6f 0d 20 62 07 43 4c 43  0d 20 6c 0b 41 44 43 23  |o. b.CLC. l.ADC#|
000031f0  31 32 38 0d 20 76 14 2e  67 64 66 6f 20 53 54 41  |128. v..gdfo STA|
00003200  28 26 37 30 29 2c 59 0d  20 80 07 49 4e 59 0d 20  |(&70),Y. ..INY. |
00003210  8a 09 43 50 59 23 38 0d  20 94 0c 42 4e 45 20 67  |..CPY#8. ..BNE g|
00003220  64 62 61 0d 20 9e 07 52  54 53 0d 20 a8 05 20 0d  |dba. ..RTS. .. .|
00003230  20 b2 40 2e 6c 6f 63 61  74 65 5f 63 68 61 72 20  | .@.locate_char |
00003240  53 54 41 26 37 30 20 5c  20 41 3d 63 68 61 72 20  |STA&70 \ A=char |
00003250  46 69 6e 64 73 20 6c 6f  63 61 74 69 6f 6e 20 6f  |Finds location o|
00003260  66 20 63 68 61 72 73 20  38 20 62 79 74 65 73 0d  |f chars 8 bytes.|
00003270  20 bc 0a 43 4d 50 23 36  34 0d 20 c6 0b 42 43 53  | ..CMP#64. ..BCS|
00003280  20 6c 6f 6b 0d 20 d0 07  53 45 43 0d 20 da 0a 53  | lok. ..SEC. ..S|
00003290  42 43 23 33 32 0d 20 e4  0a 53 54 41 26 37 30 0d  |BC#32. ..STA&70.|
000032a0  20 ee 0e 2e 6c 6f 6b 20  4c 44 41 23 30 0d 20 f8  | ...lok LDA#0. .|
000032b0  0a 53 54 41 26 37 31 0d  21 02 0a 41 53 4c 26 37  |.STA&71.!..ASL&7|
000032c0  30 0d 21 0c 09 41 44 43  23 30 0d 21 16 0a 41 53  |0.!..ADC#0.!..AS|
000032d0  4c 26 37 30 0d 21 20 09  41 44 43 23 30 0d 21 2a  |L&70.! .ADC#0.!*|
000032e0  0a 41 53 4c 26 37 30 0d  21 34 09 41 44 43 23 30  |.ASL&70.!4.ADC#0|
000032f0  0d 21 3e 0a 53 54 41 26  37 31 0d 21 48 13 4c 44  |.!>.STA&71.!H.LD|
00003300  41 23 66 6f 6e 74 73 20  83 20 32 35 36 0d 21 52  |A#fonts . 256.!R|
00003310  07 43 4c 43 0d 21 5c 0a  41 44 43 26 37 30 0d 21  |.CLC.!\.ADC&70.!|
00003320  66 0a 53 54 41 26 37 30  0d 21 70 13 4c 44 41 23  |f.STA&70.!p.LDA#|
00003330  66 6f 6e 74 73 20 81 20  32 35 36 0d 21 7a 0a 41  |fonts . 256.!z.A|
00003340  44 43 26 37 31 0d 21 84  0a 53 54 41 26 37 31 0d  |DC&71.!..STA&71.|
00003350  21 8e 07 52 54 53 0d 21  98 05 5d 0d 21 a2 05 ed  |!..RTS.!..].!...|
00003360  0d 21 ac 05 e1 0d 21 b6  05 20 0d 21 c0 0d dd f2  |.!....!.. .!....|
00003370  70 72 69 6e 74 65 72 0d  21 ca 2f f4 20 49 6e 73  |printer.!./. Ins|
00003380  65 72 74 20 79 6f 75 72  20 4f 77 6e 20 50 72 69  |ert your Own Pri|
00003390  6e 74 65 72 20 44 75 6d  70 20 50 72 6f 67 72 61  |nter Dump Progra|
000033a0  6d 20 68 65 72 65 0d 21  d4 05 e1 0d ff           |m here.!.....|
000033ad
18-03-89/Editor.m0
18-03-89/Editor.m1
18-03-89/Editor.m2
18-03-89/Editor.m4
18-03-89/Editor.m5