10 REM Crazy Characters!
   20 REM by Tim Campen
   30 REM for B/B+/M/C (with SWR)
   40 REM (c) BAU July 1990
   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   REM IF fxcode=0 THEN ?version=ASC"M" ELSE ?version=ASC"B"
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