10
20
30
40
50 :
60 MODE 7
70 LOMEM=&6600
80 osnewl=&FFE7
90 osbyte=&FFF4
100 oswrch=&FFEE
110 osword=&FFF1
120 osasci=&FFE3
130 oscli=&FFF7
140 patch=&900
150 diff%=&2500
160 comline=&F2
170 FOR pass=0 TO 2 STEP2
180 P%=&5B00
190 [OPT pass
200 EQUB0
210 EQUB75
220 EQUB66
230 JMP serve+diff%
240 EQUB&82
250 EQUB copyright MOD256
260 EQUB1
270 .title
280 EQUS"Crazy Characters!"
290 EQUB0
300 .copyright
310 EQUB0
320 EQUS"(C) BAU Tim Campen"
330 EQUB0
340 .serve
350 PHA
360 STA temp+diff%
370 TXA
380 PHA
390 TYA
400 PHA
410 LDX#255
420 .inloop
430 INX
440 LDA&70,X
450 STA zero+diff%,X
460 CPX#10
470 BCS nobuf
480 LDA patch,X
490 STA buffer+diff%,X
500 .nobuf
510 CPX#31
520 BNE inloop
530 LDA temp+diff%
540 CMP#9
550 BEQ help
560 CMP#4
570 BEQ unrec
580 .splat
590 JSR locate+diff%
600 PLA
610 TAY
620 PLA
630 TAX
640 PLA
650 RTS
660 .help
670 JSR osnewl
680 LDX#&FF
690 .helploop
700 INX
710 LDA title2+diff%,X
720 JSR osasci
730 BNE helploop
740 JSR osnewl
750 LDX#0
760 .hstart
770 LDA (comline),Y
780 CMP#91
790 BCS adjust
800 CMP#13
810 BNE miss
820 CPX#4
830 BCC bye
840 .miss
850 CMP Htext+diff%,X
860 BEQ su
870 LDA (comline),Y
880 CMP#13
890 INY
900 BNE hstart
910 CPX#5
920 BCS explain
930 .bye
940 JMP splat+diff%
950 .explain
960 LDA#helpcode MOD256
970 STA&70
980 LDA#helpcode DIV256
990 STA&71
1000 DEC&70
1010 .disp
1020 INC&70
1030 LDA (&70),Y
1040 JSR osasci
1050 LDA&70
1060 CMP#255
1070 BEQ next
1080 LDA (&70),Y
1090 BNE disp
1100 .outhelp
1110 JMP out+diff%
1120 .adjust
1130 SEC
1140 SBC#32
1150 STA (comline),Y
1160 JMP hstart+diff%
1170 .next
1180 LDA#255
1190 STA&70
1200 INC&71
1210 JMP disp+diff%
1220 .su
1230 INX
1240 JMP hstart+diff%
1250 .unrec
1260 LDA#0
1270 STA&80
1280 STA&72
1290 LDX#1
1300 .loop
1310 LDA&72
1320 CMP#3
1330 BEQ char
1340 .nochar
1350 LDA&72
1360 CMP#5
1370 BEQ large
1380 .blarge
1390 LDA table+diff%,X
1400 .backhigh
1410 CMP (comline),Y
1420 BEQ part
1430 LDA (comline),Y
1440 CMP#91
1450 BCS high
1460 CMP#32
1470 BEQ spacebar
1480 .not
1490 INX
1500 LDA&80
1510 CMP#1
1520 BNE noback
1530 DEY
1540 .noback
1550 LDA#0
1560 STA&80
1570 STA&72
1580 CPX#100
1590 BNE loop
1600 JMP splat+diff%
1610 .high
1620 SEC
1630 SBC#32
1640 STA (comline),Y
1650 JMP backhigh+diff%
1660 .spacebar
1670 INY
1680 JMP nochar+diff%
1690 .part
1700 LDA&80
1710 BNE clear
1720 DEX
1730 LDA table+diff%,X
1740 CMP#13
1750 BNE fake
1760 LDA#1
1770 STA&80
1780 INX
1790 .clear
1800 LDA table+diff%,X
1810 CMP#13
1820 BEQ findjmp
1830 INX
1840 INY
1850 INC&72
1860 JMP loop+diff%
1870 .fake
1880 INX
1890 LDA#0
1900 STA&80
1910 JMP not+diff%
1920 .char
1930 LDA (comline),Y
1940 CMP#ASC"R"
1950 BEQ char22
1960 CMP#ASC"r"
1970 BEQ char22
1980 CMP#ASC"P"
1990 BEQ flip
2000 CMP#ASC"p"
2010 BEQ flip
2020 CMP#ASC"M"
2030 BEQ norm
2040 CMP#ASC"m"
2050 BEQ norm
2060 JMPfile+diff%
2070 .seeya
2080 LDA#0
2090 STA&72
2100 JMP nochar+diff%
2110 .large
2120 JMPlarge2+diff%
2130 .findjmp
2140 BEQ find
2150 .norm
2160 INY
2170 LDA (comline),Y
2180 CMP#33
2190 BCS seeya
2200 CMP#32:BEQ norm
2210 LDA #0
2220 LDX #1
2230 JSR osbyte
2240 TXA
2250 LDX #0
2260 CMP #3
2270 BCS fxcode
2280 LDX #6
2290 .fxcode
2300 LDA#20
2310 LDY#0
2320 JSR osbyte
2330 JMP out+diff%
2340 .char22
2350 INY
2360 LDA (comline),Y
2370 STA charX
2380 INY
2390 LDA (comline),Y
2400 STA charY
2410 JMP out+diff%
2420 .flip
2430 INY
2440 LDA (comline),Y
2450 CMP#ASC"X"
2460 BEQ flipX
2470 CMP#ASC"x"
2480 BEQ flipX
2490 CMP#ASC"Y"
2500 BEQ flipY
2510 CMP#ASC"y"
2520 BEQ flipY
2530 JMP splat+diff%
2540 .flipX
2550 JSR flipXX+diff%
2560 JMP out+diff%
2570 .flipY
2580 JSR flipYY+diff%
2590 JMP out+diff%
2600 .find
2610 STX&70
2620 CPX#7
2630 BEQ fat1
2640 CPX#12
2650 BEQ thin1
2660 CPX#17
2670 BEQ anti1
2680 CPX#24
2690 BEQ clock1
2700 CPX#32
2710 BEQ inverse1
2720 .out
2730 JSR locate+diff%
2740 PLA
2750 TAY
2760 PLA
2770 TAX
2780 PLA
2790 LDA#0
2800 RTS
2810 .fat1
2820 LDA#1
2830 JSR font2+diff%
2840 JMP out+diff%
2850 .thin1
2860 LDA#0
2870 JSR font2+diff%
2880 JMP out+diff%
2890 .anti1
2900 LDA#0
2910 STA&74
2920 JMP go+diff%
2930 .clock1
2940 LDA#1
2950 STA&74
2960 .go
2970 JSR rotation+diff%
2980 JMP out+diff%
2990 .inverse1
3000 JSR inv+diff%
3010 JMP out+diff%
3020 .flipXX
3030 LDA charX
3040 STA&70
3050 .loopX
3060 LDA&70
3070 STA patch
3080 STA patch2
3090 JSR definition+diff%
3100 LDX#0
3110 LDY#9
3120 .loopXX
3130 INX
3140 DEY
3150 LDA patch,X
3160 STA patch2,Y
3170 LDA patch,Y
3180 STA patch2,X
3190 CPX#4
3200 BNE loopXX
3210 JSR end+diff%
3220 LDA&70
3230 CMP charY
3240 BEQ finX
3250 INC&70
3260 JMP loopX+diff%
3270 .finX
3280 RTS
3290 .flipYY
3300 LDA charX
3310 STA&72
3320 DEC&72
3330 .flump
3340 INC&72
3350 LDA&72
3360 STA patch
3370 STA patch2
3380 JSR definition+diff%
3390 LDY#0
3400 .loopY
3410 LDA#128
3420 STA&73
3430 INY
3440 LDA#0
3450 STA&71
3460 LDA patch,Y
3470 STA space+diff%
3480 LDX#255
3490 LDA#1
3500 STA&80
3510 .loopYY
3520 INX
3530 LDA&80
3540 BIT space+diff%
3550 BNE add
3560 .outy
3570 CLC
3580 LSR&73
3590 ASL&80
3600 LDA&80
3610 BNE loopYY
3620 LDA&71
3630 STA patch2,Y
3640 CPY#8
3650 BNE loopY
3660 JSR end+diff%
3670 LDA&72
3680 CMP charY
3690 BNE flump
3700 RTS
3710 .add
3720 CLC
3730 LDA&71
3740 ADC&73
3750 STA&71
3760 JMP outy+diff%
3770 .table
3780 EQUB0
3790 EQUB0
3800 EQUB0
3810 EQUB13
3820 EQUS"FAT"
3830 EQUB13
3840 EQUS"THIN"
3850 EQUB13
3860 EQUS"ANTI"
3870 EQUB13
3880 EQUS"CLOCKW"
3890 EQUB13
3900 EQUS"INVERSE"
3910 EQUB13
3920 EQUS"NORM"
3930 EQUB13
3940 EQUS"CHAR"
3950 EQUB13
3960 EQUS"FLIP"
3970 EQUB13
3980 EQUS"CPUT"
3990 EQUB13
4000 EQUS"CGET"
4010 EQUB13
4020 EQUS"LARGE"
4030 EQUB13
4040 EQUS"DEFIN"
4050 EQUB13
4060 .Htext
4070 EQUS"CRAZY"
4080 .coded
4090 EQUS" ANTI Rotate selected chars 90 degrees anticlockwise"
4100 EQUB13
4110 EQUS" CGET <fsp> Loads Crazy Characters! file"
4120 EQUB13
4130 EQUS" CHAR<XY> Informs characters from X to Y to be acted apon"
4140 EQUB13
4150 EQUS" CLOCKW Rotate selected chars 90 degrees clockwise"
4160 EQUB13
4170 EQUS" CPUT <fsp> Saves selected chars"
4180 EQUB13
4190 EQUS" DEFIN<X> Prints definition of character X"
4200 EQUB13
4210 EQUS" FAT Selected chars fattened!"
4220 EQUB13
4230 EQUS" FLIPX Flip selected chars across x-plane"
4240 EQUB13
4250 EQUS" FLIPY Flip selected chars across y-plane"
4260 EQUB13
4270 EQUS" INVERSE Inverses selected chars"
4280 EQUB13
4290 EQUS" LARGE<X><Y> Message Y printed X characters high"
4300 EQUB13
4310 EQUS" NORM Restores all chars to original states"
4320 EQUB13
4330 EQUS" THIN Selected chars thinned!"
4340 EQUB13
4350 EQUB0
4360 .title2
4370 EQUS"Crazy Characters! 1.20"
4380 EQUB13
4390 EQUS"by Tim Campen"
4400 EQUB13
4410 EQUS" CRAZY"
4420 EQUB0
4430 .temp
4440 EQUB0
4450 .rotation
4460 LDA charX
4470 STA&72
4480 DEC&72
4490 .startA
4500 INC&72
4510 LDA&72
4520 STA patch
4530 STA patch2
4540 JSR definition+diff%
4550 LDA#1
4560 STA&80
4570 LDX#0
4580 LDA#9
4590 STA&76
4600 .loopA
4610 LDA&74
4620 BEQ an1
4630 LDA#1
4640 STA&73
4650 JMP nan1+diff%
4660 .an1
4670 LDA#128
4680 STA&73
4690 .nan1
4700 INX
4710 DEC&76
4720 LDY#0
4730 LDA#0
4740 STA&71
4750 .loopAA
4760 INY
4770 LDA patch,Y
4780 STA space+diff%
4790 LDA&80
4800 BIT space+diff%
4810 BNE addY
4820 .outf
4830 LDA&74
4840 BEQ an2
4850 ASL&73
4860 JMP nan2+diff%
4870 .an2
4880 LSR&73
4890 .nan2
4900 CPY#8
4910 BNE loopAA
4920 LDA&74
4930 CMP#1
4940 BEQ cwsave
4950 LDA&71
4960 STA patch2,X
4970 .backcw
4980 ASL&80
4990 LDA&80
5000 BNE loopA
5010 JSR end+diff%
5020 LDA&72
5030 CMP charY
5040 BNE startA
5050 RTS
5060 .addY
5070 CLC
5080 LDA&73
5090 ADC&71
5100 STA&71
5110 JMP outf+diff%
5120 .cwsave
5130 LDA&76
5140 TAX
5150 LDA&71
5160 STA patch2,X
5170 JMP backcw+diff%
5180 .definition
5190 LDX#patch MOD256
5200 LDY#patch DIV256
5210 LDA#&A
5220 JSR osword
5230 RTS
5240 .end
5250 LDX#0
5260 LDA#23
5270 JSR oswrch
5280 LDA patch2
5290 JSR oswrch
5300 .loop2
5310 LDA patch2+1,X
5320 JSR oswrch
5330 INX
5340 CPX#8
5350 BNE loop2
5360 RTS
5370 .inv
5380 LDA charX
5390 STA &73
5400 LDA charY
5410 STA&74
5420 LDA&73
5430 STA&72
5440 DEC&72
5450 .inv_loop
5460 INC&72
5470 LDA&72
5480 STA patch
5490 STA patch2
5500 JSR definition+diff%
5510 LDX#255
5520 .pop
5530 INX
5540 LDA patch+1,X
5550 EOR#&FF
5560 STA patch2+1,X
5570 CPX#8
5580 BNE pop
5590 JSR end+diff%
5600 LDA&72
5610 CMP&74
5620 BNE inv_loop
5630 RTS
5640 .font2
5650 BNE fat
5660 LDA#61
5670 STA convert+diff%
5680 JMP thin+diff%
5690 .fat
5700 LDA#&1D
5710 STA convert+diff%
5720 .thin
5730 LDA charX
5740 STA&72
5750 DEC&72
5760 .font_loop
5770 INC&72
5780 LDA&72
5790 STA patch
5800 STA patch2
5810 JSR definition+diff%
5820 LDX#255
5830 .pop2
5840 INX
5850 LDA patch+1,X
5860 LSR A
5870 .convert
5880 AND patch+1,X
5890 STA patch2+1,X
5900 CPX#8
5910 BNE pop2
5920 JSR end+diff%
5930 LDA&72
5940 CMP charY
5950 BNE font_loop
5960 RTS
5970 .locate
5980 LDX#255
5990 .outloop
6000 INX
6010 LDA zero+diff%,X
6020 STA &70,X
6030 CPX#10
6040 BCS nobuf2
6050 LDA buffer+diff%,X
6060 STA patch,X
6070 .nobuf2
6080 CPX#31
6090 BNE outloop
6100 RTS
6110 .file
6120 DEY
6130 LDA(comline),Y
6140 CMP#ASC"U"
6150 BEQ save
6160 CMP#ASC"u"
6170 BEQ save
6180 CMP#ASC"E"
6190 BEQ load
6200 CMP#ASC"e"
6210 BEQ load
6220 INY
6230 JMPnochar+diff%
6240 .load
6250 JMP load2+diff%
6260 .save
6270 LDX#0
6280 .resetl
6290 LDA#32
6300 STAfilename+diff%,X
6310 INX
6320 CPX#20
6330 BNE resetl
6340 JSR findname+diff%
6350 LDA charX
6360 STA&80
6370 LDA charY
6380 STA&81
6390 INC&81
6400 LDA#0
6410 STA&82
6420 LDA#&27
6430 STA&83
6440 LDA&83
6450 AND#15
6460 STAareas+1
6470 LDA&83
6480 JSR lsrac+diff%
6490 STAareas
6500 LDA&82
6510 AND#15
6520 STAareas+3
6530 LDA&82
6540 JSR lsrac+diff%
6550 STAareas+2
6560 JSR swapup+diff%
6570 JSR sendl+diff%
6580 LDA&83
6590 AND#15
6600 STAareas+6
6610 LDA&83
6620 JSR lsrac+diff%
6630 STAareas+5
6640 LDA&82
6650 AND#15
6660 STAareas+8
6670 LDA&82
6680 JSR lsrac+diff%
6690 STAareas+7
6700 LDX#255
6710 .kal
6720 INX
6730 LDAareas+5,X
6740 CLC
6750 ADC#48
6760 CMP#58
6770 BCS hex
6780 .bhex
6790 STAareas+5,X
6800 LDAareas,X
6810 CLC
6820 ADC#48
6830 CMP#58
6840 BCS hex2
6850 .bhex2
6860 STAareas,X
6870 CPX#3
6880 BNE kal
6890 LDA#13
6900 STA areas+9
6910 LDX#0
6920 .savelo
6930 LDAsacode+diff%,X
6940 STA scode2,X
6950 INX
6960 CPX#4
6970 BNEsavelo
6980 JSR filingup+diff%
6990 LDX#&E0
7000 LDY#&26
7010 JSR oscli
7020 JSR filingdown+diff%
7030 JSR swapdown+diff%
7040 JMP out+diff%
7050 .swaping
7060 JSRdefinition+diff%
7070 LDY#255
7080 .lswap
7090 INY
7100 LDApatch,Y
7110 STA(&82),Y
7120 CPY#8
7130 BNE lswap
7140 JMP bswaping+diff%
7150 .hex
7160 CLC
7170 ADC#7
7180 JMPbhex+diff%
7190 .hex2
7200 CLC
7210 ADC#7
7220 JMPbhex2+diff%
7230 .sendl
7240 LDA&80
7250 STApatch
7260 JMP swaping+diff%
7270 .bswaping
7280 CLC
7290 LDA&82
7300 ADC#9
7310 BCS set80
7320 .bset80
7330 STA&82
7340 INC&80
7350 LDA&80
7360 CMP&81
7370 BNE sendl
7380 LDX#0
7390 LDY#0
7400 .trans
7410 LDAheader+diff%,X
7420 STA(&82),Y
7430 INX
7440 INY
7450 CPX#9
7460 BNE trans
7470 CLC
7480 LDA&82
7490 ADC#8
7500 BCS sethead
7510 .bsethead
7520 STA&82
7530 RTS
7540 .set80
7550 INC&83
7560 JMPbset80+diff%
7570 .sethead
7580 INC&83
7590 JMPbsethead+diff%
7600 .remember
7610 LDY#0
7620 .ramloop1
7630 LDA(&72),Y
7640 STA(&70),Y
7650 INC&70
7660 INC&72
7670 LDA&70
7680 BEQ next1
7690 .bnext1
7700 LDA&72
7710 BEQ next2
7720 .bnext2
7730 LDA&72
7740 .Azero
7750 CMP#0
7760 BEQ endram
7770 JMP ramloop1+diff%
7780 .next1
7790 INC&71
7800 JMP bnext1+diff%
7810 .next2
7820 INC&73
7830 JMP bnext2+diff%
7840 .endram2
7850 RTS
7860 .endram
7870 LDA&73
7880 .Bzero
7890 CMP#&67
7900 BEQ endram2
7910 JMP ramloop1+diff%
7920 .load2
7930 LDX#0
7940 .copyl
7950 LDAcopyi+diff%,X
7960 STAscode2,X
7970 INX
7980 CPX#21
7990 BNE copyl
8000 JSR findname+diff%
8010 JSR swapup+diff%
8020 JSR filingup+diff%
8030 LDX#&E0
8040 LDY#&26
8050 JSR oscli
8060 JSR filingdown+diff%
8070 LDA#0
8080 STA&70
8090 LDA#&27
8100 STA&71
8110 LDY#0
8120 .defhead
8130 LDA(&70),Y
8140 CMPheader+diff%
8150 BEQ headK
8160 .bheadK
8170 LDX#0
8180 .loopload
8190 LDA(&70),Y
8200 STApatch2,X
8210 INX
8220 INY
8230 CPX#9
8240 BNE loopload
8250 JSR end+diff%
8260 LDY#0
8270 CLC
8280 LDA&70
8290 ADC#9
8300 BCS pageb
8310 .bpageb
8320 STA&70
8330 JMP defhead+diff%
8340 .pageb
8350 INC&71
8360 JMP bpageb+diff%
8370 .headK
8380 INX
8390 INY
8400 LDA(&70),Y
8410 CMPheader+diff%,X
8420 BNE notnowK
8430 JMP headK+diff%
8440 .notnowK
8450 CPX#9
8460 BEQ enddefK
8470 LDX#0
8480 LDY#0
8490 JMP bheadK+diff%
8500 .enddefK
8510 JSR swapdown+diff%
8520 JMP out+diff%
8530 .enlarge
8540 LDA#240
8550 STApatch
8560 TYA
8570 PHA
8580 JSR definition+diff%
8590 LDX#1
8600 PLA
8610 TAY
8620 .retain
8630 LDApatch,X
8640 STAstoring,X
8650 INX
8660 CPX#9
8670 BNE retain
8680 INY
8690 STY&78
8700 .gilbert
8710 LDY&78
8720 LDA(comline),Y
8730 CMP#13
8740 BEQ NoLarge
8750 STApatch
8760 LDA#0
8770 STA&70
8780 LDA#255
8790 STA&71
8800 STA&74
8810 STA&72
8820 JSR definition+diff%
8830 .repeatloopK
8840 INC&71
8850 INC&74
8860 LDA&74
8870 CMP#8
8880 BEQ resetK
8890 .bresetK
8900 JMP maths+diff%
8910 .bmaths
8920 CPX#7
8930 BNE repeatloopK
8940 JMP defineK+diff%
8950 .bdefineK
8960 LDA&70
8970 CMP&73
8980 BNE repeatloopK
8990 INC&78
9000 LDX#0
9010 LDA#11
9020 .upl
9030 JSR oswrch
9040 INX
9050 CPX&73
9060 BNE upl
9070 LDA#9
9080 JSR oswrch
9090 JMP gilbert+diff%
9100 .NoLarge
9110 LDX#0
9120 LDA#10
9130 .doloop
9140 JSR oswrch
9150 INX
9160 CPX&73
9170 BNE doloop
9180 LDA#13
9190 JSR oswrch
9200 PLA
9210 TAY
9220 LDX#1
9230 LDA#240
9240 STApatch2
9250 .pull
9260 LDAstoring,X
9270 STApatch2,X
9280 INX
9290 CPX#9
9300 BNE pull
9310 JSR end+diff%
9320 JMP out+diff%
9330 .resetK
9340 LDA#0
9350 STA&74
9360 JMP bresetK+diff%
9370 .maths
9380 LDA#0
9390 STA&77
9400 LDX#0
9410 .looplsr
9420 CLC
9430 LDA&77
9440 ADC&73
9450 STA&77
9460 CMP&71
9470 BCS overK
9480 INX
9490 JMP looplsr+diff%
9500 .overK
9510 STX&77
9520 CLC
9530 LDApatch+1,X
9540 LDX&74
9550 STA patch2,X
9560 JMP bmaths+diff%
9570 .defineK
9580 INC&70
9590 LDA#23
9600 JSR oswrch
9610 LDA#240
9620 JSR oswrch
9630 LDX#0
9640 .dloop
9650 LDApatch2,X
9660 JSR oswrch
9670 INX
9680 CPX#8
9690 BNE dloop
9700 LDA#240
9710 JSR oswrch
9720 LDA#10
9730 JSR oswrch
9740 LDA#8
9750 JSR oswrch
9760 JMP bdefineK+diff%
9770 .large2
9780 TYA
9790 PHA
9800 LDY#5
9810 LDA(comline),Y
9820 CMP#ASC"E"
9830 BEQ foundlar
9840 CMP#ASC"e"
9850 BEQ foundlar
9860 CMP#ASC"N"
9870 BEQ foundef
9880 CMP#ASC"n"
9890 BEQ foundef
9900 PLA
9910 TAY
9920 JMP blarge+diff%
9930 .foundlar
9940 INY
9950 LDA(comline),Y
9960 CMP#65
9970 BCS hexN
9980 SEC
9990 SBC#48
10000 STA&73
10010 JMP enlarge+diff%
10020 .hexN
10030 SEC
10040 SBC#55
10050 STA&73
10060 JMP enlarge+diff%
10070 .foundef
10080 INY
10090 LDA(comline),Y
10100 STApatch
10110 JSRdefinition+diff%
10120 LDX#1
10130 .defKloop
10140 LDA#38
10150 JSR oswrch
10160 LDApatch,X
10170 PHA
10180 AND#&F0
10190 JSR lsrac+diff%
10200 CLC
10210 ADC#48
10220 CMP#58
10230 BCS Hset
10240 .bHset
10250 JSR oswrch
10260 PLA
10270 AND#&F
10280 CLC
10290 ADC#48
10300 CMP#58
10310 BCS Hset2
10320 .bHset2
10330 JSR oswrch
10340 CPX#8
10350 BEQ endinfo
10360 LDA#ASC","
10370 JSR oswrch
10380 INX
10390 JMPdefKloop+diff%
10400 .endinfo
10410 PLA
10420 TAY
10430 LDA#13
10440 JSR osasci
10450 JMP out+diff%
10460 .Hset
10470 CLC
10480 ADC#7
10490 JMP bHset+diff%
10500 .Hset2
10510 CLC
10520 ADC#7
10530 JMP bHset2+diff%
10540 .swapup
10550 LDA#storing MOD256
10560 STA&70
10570 LDA#storing DIV256
10580 STA&71
10590 LDA#0
10600 STA&72
10610 LDA#&27
10620 STA&73
10630 LDA#0
10640 STA Azero+1+diff%
10650 LDA#&2F
10660 STA Bzero+1+diff%
10670 JSR remember+diff%
10680 RTS
10690 .filingup
10700 LDX#0
10710 .filoop1
10720 LDA&26E0,X
10730 STA filepatch+diff%,X
10740 LDAscode2,X
10750 STA&26E0,X
10760 INX
10770 CPX#26
10780 BNE filoop1
10790 RTS
10800 .filingdown
10810 LDX#0
10820 .filoop2
10830 LDA filepatch+diff%,X
10840 STA&26E0,X
10850 INX
10860 CPX#26
10870 BNE filoop2
10880 RTS
10890 .swapdown
10900 LDA#storing MOD256
10910 STA&72
10920 LDA#storing DIV256
10930 STA&73
10940 LDA#0
10950 STA&70
10960 LDA#&27
10970 STA&71
10980 LDA#storplus MOD256
10990 STA Azero+1+diff%
11000 LDA#storplus DIV256
11010 STA Bzero+1+diff%
11020 JSR remember+diff%
11030 RTS
11040 .findname
11050 INY
11060 LDX#255
11070 .nospa
11080 INX
11090 INY
11100 LDA(comline),Y
11110 CMP#13
11120 BEQ cr13
11130 CMP#32
11140 BEQ spaces
11150 STA filename+diff%,X
11160 JMP nospa+diff%
11170 .spaces
11180 DEX
11190 JMPnospa+diff%
11200 .cr13
11210 RTS
11220 .lsrac
11230 LSRA
11240 LSRA
11250 LSRA
11260 LSRA
11270 RTS
11280 .sacode
11290 EQUS"*SA."
11300 .copyi
11310 EQUS"*LO."
11320 EQUD&20202020
11330 EQUD&20202020
11340 EQUD&20202020
11350 EQUS"2700"
11360 EQUB13
11370 .header
11380 EQUS"(C)BAUTC"
11390 .buffer
11400 EQUD0
11410 EQUD0
11420 EQUD0
11430 .zero
11440 EQUD0
11450 EQUD0
11460 EQUD0
11470 EQUD0
11480 EQUD0
11490 EQUD0
11500 EQUD0
11510 EQUD0
11520 EQUD0
11530 .patch2
11540 EQUD0
11550 EQUD0
11560 EQUW0
11570 .charX
11580 BRK
11590 .charY
11600 BRK
11610 .space
11620 BRK
11630 .scode2
11640 EQUD&20202020
11650 EQUB32
11660 .filename
11670 EQUD&20202020
11680 EQUD&20202020
11690 EQUW&2020
11700 EQUB32
11710 .areas
11720 EQUD&20202020
11730 EQUD&20202020
11740 EQUW&2020
11750 EQUB13
11760 .filepatch
11770 EQUD0
11780 EQUD0
11790 EQUD0
11800 EQUD0
11810 EQUD0
11820 EQUD0
11830 EQUD0
11840 .storing
11850 ]
11860 helpcode=coded+diff%
11870 scode2=scode2+diff%
11880 areas=areas+diff%
11890 storing=storing+diff%
11900 storplus=storing+&600
11910 patch2=patch2+diff%
11920 charX=charX+diff%
11930 charY=charY+diff%
11940
11950 NEXT
11960 PROCcheck
11970 IF C%<>&4B5F7 PROCerror
11980 PRINT"Press <SPACE BAR> to save 'CRAZYC'"
11990 REPEAT:UNTIL GET=32
12000 *SAVE"CRAZYC" 5B00 65E2 8000 8000
12010 END
12020 :
12030 DEF PROCcheck
12040 PRINT"Checking..."
12050 C%=0
12060 FOR N=&5B00 TO &65E0
12070 C%=C%+?N
12080 NEXT
12090 ENDPROC
12100 :
12110 DEF PROCerror
12120 PRINT"Checksum error...please check"
12130 END