10 * A,10000: rem ASSEMBLE CODE 20 end 10000 "*M 10010 "; ASSEMBLY CODE 10020 " 10030 " ORG $2000 10040 "BEGIN: JMP BOB 10050 "; DISPLAY SINGLE LINE OF 10060 "; EIGHT BITS. 10070 " 10080 "; DATA IN 'X' 10090 "; STORED AT 'VEC1' 10100 " 10110 "DISP8: STA THISBT 10120 " TYA 10130 " PHA 10140 " LDA MODE 10150 " BEQ OKNORM 10160 " JMP MULTIM 10170 "OKNORM: LDY #7 10180 " 10190 "DISPL: LSR THISBT 10200 " LDA #BLANK 10210 " BCC NOBLOK 10220 " 10230 " ORA #128 10240 "NOBLOK: 10250 " STA (VEC1),Y 10260 " LDA VEC1 +1 10270 " PHA 10280 " AND #/4 -1 10290 " STA VEC1 +1 10300 " LDA COLOR3 10301 " ORA #8 10310 " STA (VEC1),Y 10320 " PLA 10330 " STA VEC1 +1 10340 " DEY 10350 " BPL DISPL 10360 " 10370 " PLA 10380 " TAY 10390 " RTS 10400 " 10410 "MULTIM: LDA #4 10420 " STA T1 10430 " TXA 10440 " PHA 10450 " LDY #7 10460 "MULTI: LDA THISBT 10470 " AND #3 10480 " LSR THISBT 10490 " LSR THISBT 10500 " TAX 10510 " LDA COLOR0,X 10520 " STA T0 10530 " LDA #BLANK+128 10540 " CPX #0 10550 " BNE BOBBBB 10560 " LDA #BLANK 10570 "BOBBBB: STA (VEC1),Y 10580 " DEY 10590 " STA (VEC1),Y 10600 " INY 10610 " LDA VEC1+1 10620 " PHA 10630 " EOR #4 10640 " STA VEC1+1 10650 " LDA T0 10660 " STA (VEC1),Y 10670 " DEY 10680 " STA (VEC1),Y 10690 " PLA 10700 " STA VEC1+1 10710 " DEY 10720 " BPL MULTI 10730 " PLA 10740 " TAX 10750 " PLA 10760 " TAY 10770 " RTS 10780 " 10790 "; DISPLAY CHARACTERS 10800 "; FROM ADDRESS 'VEC2' 10810 "; NUMCOL WIDE, NUMROW HIGH 10820 " 10830 "DISALL: LDX #36 10840 " LDY #>SCR 10850 " LDA CNUM 10860 " JSR BINHEX 10870 " 10880 " LDX #0 10890 " LDY #0 10900 " 10910 "DIS0: STX TEMP 10920 " LDA TAB,X 10930 " STA VEC1 10940 " 10950 " LDA #>SCR 10960 " STA VEC1 +1 10970 " 10980 " LDA NUMROW 10990 " ASL A 11000 " ASL A 11010 " ASL A 11020 " TAX 11030 " 11040 "DIS1: SEI 11050 " STA RAMON 11060 " LDA (UDGVEC),Y 11070 " STA ROMON 11080 " CLI 11090 " JSR DISP8 11100 " 11110 " JSR ADD40 11120 " INY 11130 " DEX 11140 " BNE DIS1 11150 " 11160 " LDX TEMP 11170 " INX 11180 " CPX NUMCOL 11190 " BCC DIS0 11200 " RTS 11210 "TAB: BYT ONE,TWO,THR,FOU 11220 " 11230 "; FILL 1024 BYTES WITH 'A' 11240 "; 'X' = FIRST PAGE 11250 " 11260 "FIL4PG: STX VEC1 +1 11270 " LDY #0 11280 " STY VEC1 11290 " 11300 " LDX #4 11310 "FIL1: 11320 " STA (VEC1),Y 11330 " INY 11340 " BNE FIL1 11350 " INC VEC1 +1 11360 " DEX 11370 " BNE FIL1 11380 " RTS 11390 " 11400 "; FILL SCREEN 11410 " 11420 "FILSCR: LDX #>SCR 11430 " JMP FIL4PG 11440 " 11450 "; FILL SCREEN COLOUR 11460 " 11470 "FILCOL: LDX #> SCR-1024 11480 " JMP FIL4PG 11490 " 11500 "; SET UP DISPLAY 11510 " 11520 "INIT: LDA #$41 11530 " JSR FILCOL 11540 " LDA #90+128 11550 " JSR FILSCR 11560 " 11570 " LDA #BACK 11580 " STA COL0 11590 " LDA #BORD 11600 " STA COL4 11610 " 11620 " LDA #1 11630 " STA VEC1 11640 " LDA #>SCR 11650 " STA VEC1+1 11660 " 11670 " LDA #40 11680 " STA VEC2 11690 " LDA #>SCR 11700 " STA VEC2+1 11710 " 11720 " LDY #0 11730 " 11740 "SET0: TYA 11750 " AND #7 11760 " ORA #128 11770 " CLC 11780 " ADC #1 11790 " STA (VEC1),Y 11800 " 11810 " CPY #24 11820 " BCS NOVERT 11830 " 11840 " STA (VEC2),Y 11850 " 11860 " CLC 11870 " LDA VEC2 11880 " ADC #39 11890 " STA VEC2 11900 " BCC NOVERT 11910 " 11920 " INC VEC2+1 11930 "NOVERT: 11940 " INY 11950 " CPY #32 11960 " BNE SET0 11970 " 11980 " LDA #BWIN 11990 " STA BOTTOM 12000 " LDA #TWIN 12010 " STA TOP 12020 " LDA #LWIN 12030 " STA LEFT 12040 " LDA #RWIN 12050 " STA RIGHT 12060 " 12070 " LDA #0 12080 " STA CURSOR 12090 " LDA #41 12100 " STA CURSOR+1 12110 " LDA #1 12120 " STA EDC 12130 " LDA #0 12140 " STA EDY 12150 " STA EDX 12160 " 12170 " LDA #CDATA 12200 " STA UDGVEC+1 12210 " LDA #0 12220 " STA CNUM 12230 " 12240 " LDA # 4 12250 " STA NUMCOL 12260 " LDA # 3 12270 " STA NUMROW 12280 " LDA #$71 12290 " STA COLOR0 12300 " LDA #$46 12310 " STA COLOR1 12311 " STA $FF16 12320 " LDA #$42 12330 " STA COLOR2 12331 " STA $FF17 12340 " LDA #$45 12350 " STA COLOR3 12360 " LDA #255 12370 " STA MODE;MCM DRAW 12380 " LDA # CHCOL 12390 " STA CHRCL 12400 " JMP DISALL 12410 " 12420 "; TIME DELAY 12430 " 12440 "TIMDEL: CMP #0 12450 " BEQ TIM1 12460 "TIM0: DEX 12470 " BNE TIM0 12480 " DEY 12490 " BNE TIM0 12500 " 12510 " SEC 12520 " SBC #1 12530 " BNE TIM0 12540 "TIM1: 12550 " RTS 12560 " 12570 "; OUTPUT A STRING 12580 " 12590 "PRSTR: STX VEC1 12600 " STY VEC1+1 12610 " 12620 " LDY #0 12630 "PR1: 12640 " LDA (VEC1),Y 12650 " BEQ PR2 12660 " JSR CHROUT 12670 " INY 12680 " BNE PR1 12690 " 12700 "PR2: RTS 12710 " 12720 "; MULTIPLE CHAR OUTPUT 12730 " 12740 "MULCHR: CPX #0 12750 " BEQ PR2 12760 " 12770 " JSR CHROUT 12780 " DEX 12790 " JMP MULCHR 12800 " 12810 ";SIGN ON MESSAGE 12820 " 12830 "MESG: LDX #MES 12850 ";SCROLL UP DATA 12860 "MESG2: STX VEC1 12870 " STY VEC1+1 12880 " 12890 " LDA #HOME 12900 " JSR CHROUT 12910 " 12920 " LDX #24 12930 " LDA #CURDWN 12940 " JSR MULCHR 12950 " 12960 "MES0: LDY #0 12970 " 12980 " LDA (VEC1),Y 12990 " BEQ MES1 13000 " 13010 " JSR PR1 13020 " TYA 13030 " SEC 13040 " ADC VEC1 13050 " STA VEC1 13060 " BCC MES2 13070 " INC VEC1+1 13080 "MES2: 13090 " LDA #1 13100 " LDX #0 13110 " LDY #40 13120 " JSR TIMDEL 13130 " 13140 " JMP MES0 13150 "MES1: RTS 13160 " 13170 "CARRIG: LDA #13 13180 " JMP CHROUT 13190 " 13200 ";DISPLAY MENU 13210 " 13220 "MENDIS: LDX #MENU 13240 " JMP MESG2 13250 " 13260 "GETKEY: JSR GETIN 13270 " CMP #0 13280 " BEQ GETKEY 13290 " RTS 13300 " 13310 ";REV VIDEO Y BYTES FROM VEC1 13320 " 13330 "INV6: LDY #6 13340 "INVX: 13350 " LDA (VEC1),Y 13360 " EOR #128 13370 " STA (VEC1),Y 13380 " DEY 13390 " BNE INVX 13400 "IN1: RTS 13410 " 13420 "GETCOM: LDA #MEN1ST 13450 " STA VEC1+1 13460 " 13470 " LDA #0 13480 " STA ACT 13490 " 13500 "REVER: JSR INV6 13510 " JSR GETDIR 13520 " JSR INV6 13530 " CPX #2 13540 " BEQ GOUP 13550 " CPX #4 13560 " BEQ GODOWN 13570 " CPX #5 13580 " BNE REVER 13590 " 13600 "ACTION: RTS 13610 "GOUP: LDA ACT 13620 " BNE ADDUP 13630 " 13640 " LDA #MENLST 13670 " STA VEC1+1 13680 " LDA #MENMST 13690 " STA ACT 13700 " JMP REVER 13710 "ADDUP: 13720 " SEC 13730 " LDA VEC1 13740 " SBC #40 13750 " STA VEC1 13760 " LDA VEC1+1 13770 " SBC #0 13780 " STA VEC1+1 13790 " DEC ACT 13800 " JMP REVER 13810 " 13820 "GODOWN: LDA ACT 13830 " CMP #MENMST 13840 " BNE ADDDWN 13850 " 13860 " LDA #MEN1ST 13890 " STA VEC1+1 13900 " LDA #0 13910 " STA ACT 13920 " JMP REVER 13930 " 13940 "ADDDWN: JSR ADD40 13950 " INC ACT 13960 " JMP REVER 13970 " 13980 "ADD40: CLC 13990 " LDA VEC1 14000 " ADC #40 14010 " STA VEC1 14020 " LDA VEC1+1 14030 " ADC #0 14040 " STA VEC1+1 14050 " RTS 14060 " 14070 "GETDIR: JSR GETIN 14080 " LDX #1 14090 " CMP #'D 14100 " BEQ GET1 14110 " CMP #CURLEF 14120 " BEQ GET1 14130 " INX 14140 " CMP #'5 14150 " BEQ GET1 14160 " CMP #CURUP 14170 " BEQ GET1 14180 " INX 14190 " CMP #'6 14200 " BEQ GET1 14210 " CMP #CURRIG 14220 " BEQ GET1 14230 " INX 14240 " CMP #'R 14250 " BEQ GET1 14260 " CMP #CURDWN 14270 " BEQ GET1 14280 " INX 14290 " CMP #'T 14300 " BEQ GET1 14310 " CMP #' ' 14320 " BEQ GET1 14330 " INX 14340 "GET1: RTS 14350 " 14360 "ACTVEC: WOR EDI-1,MOV-1,SIZ-1 14370 " WOR PRI-1,INV-1 14380 " WOR MIR-1,LOA-1,SAV-1 14390 " WOR SWA-1,ROT-1 14395 " WOR DIS-1,FLI-1,COP-1,LFT-1 14400 "WOR INS-1,DIR-1,LOAD-1,SAVE-1,QUI-1 14410 "DOCOM: LDA ACT 14420 " ASL A 14430 " TAX 14440 " LDA ACTVEC+1,X 14450 " PHA 14460 " LDA ACTVEC,X 14470 " PHA 14480 " RTS 14490 " 14500 " AND #127 14510 "MOV: LDA #0 14520 " LDY NUMROW 14530 " CLC 14540 "MOVC: ADC NUMCOL 14550 " DEY 14560 " BNE MOVC 14570 " STA NOFCH 14580 " EOR #$FF 14590 " CLC 14600 " ADC #1 14610 " STA TEMP1 14620 " 14630 "MOVD: JSR DISALL 14640 "MOVE: JSR GETDIR 14650 " 14660 " LDY CNUM 14670 " CPX #4 14680 " BNE MOV1 14690 " JSR MOVD8 14700 " JMP MOVD 14710 "MOV1: 14720 " CPX #2 14730 " BNE MOV3 14740 " JSR MOVP8 14750 " JMP MOVD 14760 "MOV3: 14770 " CPX #3 14780 " BNE MOV4 14790 " LDA NOFCH 14800 " LDX SHIFT 14810 " BEQ MOV30 14820 " ASL A 14830 "MOV30: TAX 14840 "MOV3A: JSR MOVP8 14850 " BEQ MOV 14860 " DEX 14870 " BNE MOV3A 14880 " JMP MOVD 14890 "MOV4: 14900 " CPX #1 14910 " BNE MOV99 14920 " LDA NOFCH 14930 " LDX SHIFT 14940 " BEQ MOV31 14950 " ASL A 14960 "MOV31: TAX 14970 "MOV4A: JSR MOVD8 14980 " BEQ MOV 14990 " DEX 15000 " BNE MOV4A 15010 " JMP MOVD 15020 " 15030 "MOV99: 15040 " CMP #'F 15050 " BNE MOV6 15060 " LDY #0 15070 " STY CNUM 15080 " LDA #CDATA 15110 " STA UDGVEC+1 15120 " JMP MOVD 15130 "MOV6: 15140 " CMP #'M 15150 " BNE MOV8 15160 " LDY #128 15170 " STY CNUM 15180 " LDA #CDATA+1024 15210 " STA UDGVEC+1 15220 " JMP MOVD 15230 "MOV8: 15240 " CMP #'L 15250 " BNE MOV9 15260 " LDA NOFCH 15270 " ASL A 15280 " ASL A 15290 " ASL A 15300 " STA TEMP 15310 " LDA #CDATA+2048 15360 " SBC #0 15370 " STA UDGVEC+1 15380 " LDY TEMP1 15390 " STY CNUM 15400 " JMP MOVD 15410 " 15420 "MOV9: CPX #5 15430 " BEQ MVEND 15440 " JMP MOV 15450 "MVEND: RTS 15460 " 15470 "MOVP8: CPY TEMP1 15480 " BEQ MVERR 15490 " INY 15500 " STY CNUM 15510 " LDA UDGVEC 15520 " CLC 15530 " ADC #8 15540 " STA UDGVEC 15550 " LDA UDGVEC+1 15560 " ADC #0 15570 " STA UDGVEC+1 15580 " LDA #1 15590 "MVERR: RTS 15600 " 15610 "MOVD8: CPY #0 15620 " BEQ MVERR 15630 " DEY 15640 " STY CNUM 15650 " LDA UDGVEC 15660 " SEC 15670 " SBC #8 15680 " STA UDGVEC 15690 " LDA UDGVEC+1 15700 " SBC #0 15710 " STA UDGVEC+1 15720 " LDA #1 15730 " RTS 15740 " 15750 "EDI00: STA (UDGVEC),Y 15760 "EDI000: JSR DISALL 15770 "ED00: 15780 "EDI: JSR MAP 15790 " JSR GETDIR 15800 " CPX #2 15810 " BNE EDI1 15820 " LDY EDY 15830 " BEQ EDI 15840 " DEY 15850 " STY EDY 15860 " JMP ED00 15870 "EDI1: 15880 " CPX #4 15890 " BNE EDI2 15900 " LDA NUMROW 15910 " ASL A 15920 " ASL A 15930 " ASL A 15940 " SEC 15950 " SBC #1 15960 " STA TEMP 15970 " LDY EDY 15980 " CPY TEMP 15990 " BCS EDI 16000 " INY 16010 " STY EDY 16020 " JMP ED00 16030 "EDI2: 16040 " CPX #1 16050 " BNE EDI3 16060 " LDY EDX 16070 " BNE EDI21 16080 " LDY EDC 16090 " CPY #2 16100 " BCC EDI 16110 " DEY 16120 " STY EDC 16130 " LDY #8 16140 "EDI21: DEY 16150 " STY EDX 16160 " JMP ED00 16170 "EDI3: 16180 " CPX #3 16190 " BNE EDI4 16200 " LDY EDX 16210 " CPY #7 16220 " BCC EDI31 16230 " LDY EDC 16240 " CPY NUMCOL 16250 " BCS EDI 16260 " INY 16270 " STY EDC 16280 " LDY #255 16290 "EDI31: INY 16300 " STY EDX 16310 " JMP ED00 16320 " 16330 "EDI4: CMP #'Z 16340 " BNE EDI6 16350 " JSR MAPBY 16360 " SEI 16370 " STA RAMON 16380 " ORA (UDGVEC),Y 16390 " STA ROMON 16400 " CLI 16410 " JMP EDI00 16420 " 16430 "EDI6: CMP #'X 16440 " BNE EDI7 16450 " JSR MAPBY 16460 " EOR #$FF 16470 " SEI 16480 " STA RAMON 16490 " AND (UDGVEC),Y 16500 " STA ROMON 16510 " CLI 16520 " JMP EDI00 16530 "EDI7: 16540 " CMP #'C 16550 " BNE EDI8 16560 " JSR MAPBY 16570 " LDA #$FF 16580 " JMP EDI00 16590 "EDI8: 16600 " CMP #'V 16610 " BNE EDI9 16620 " JSR MAPBY 16630 " LDA #0 16640 " JMP EDI00 16650 "EDI9: 16660 " CMP #'B 16670 " BNE EDI10 16680 " JSR MAPBY 16690 " SEI 16700 " STA RAMON 16710 " LDA (UDGVEC),Y 16720 " STA ROMON 16730 " CLI 16740 " EOR #$FF 16750 " JMP EDI00 16760 "EDI10: 16770 " CMP #'N 16780 " BNE EDI11 16790 " JSR MAPBY1 16800 " LDX #8 16810 "EDI101: PHA 16820 " SEI 16830 " STA RAMON 16840 " ORA (UDGVEC),Y 16850 " STA ROMON 16860 " CLI 16870 " STA (UDGVEC),Y 16880 " PLA 16890 " INY 16900 " DEX 16910 " BNE EDI101 16920 " JMP EDI000 16930 "EDI11: 16940 " CMP #'M 16950 " BNE EDI12 16960 " JSR MAPBY1 16970 " EOR #$FF 16980 " LDX #8 16990 "EDI111: PHA 17000 " SEI 17010 " STA RAMON 17020 " AND (UDGVEC),Y 17030 " STA ROMON 17040 " CLI 17050 " STA (UDGVEC),Y 17060 " PLA 17070 " INY 17080 " DEX 17090 " BNE EDI111 17100 " JMP EDI000 17110 "EDI12: 17120 " CMP #', 17130 " BNE EDI13 17140 " JSR MAPBY1 17150 " LDX #8 17160 "EDI121: PHA 17170 " SEI 17180 " STA RAMON 17190 " EOR (UDGVEC),Y 17200 " STA RAMON 17210 " CLI 17220 " STA (UDGVEC),Y 17230 " PLA 17240 " INY 17250 " DEX 17260 " BNE EDI121 17270 " JMP EDI000 17280 "EDI13: 17290 " CPX #5 17300 " BEQ EDEND 17310 " JMP EDI 17320 "EDEND: RTS 17330 " 17420 "SIZ: JSR GETDIR 17430 " TXA 17440 " CPX #6 17450 " BCS SIZ 17460 " LDY NUMROW 17470 " LDX NUMCOL 17480 " 17490 " CMP #2 17500 " BNE SIZ1 17510 " CPY #2 17520 " BCC SIZ 17530 " DEY 17540 " BNE SIZ99 17550 "SIZ1: 17560 " CMP #4 17570 " BNE SIZ2 17580 " CPY #3 17590 " BCS SIZ 17600 " INY 17610 " BNE SIZ99 17620 "SIZ2: 17630 " CMP #1 17640 " BNE SIZ3 17650 " CPX #2 17660 " BCC SIZ 17670 " DEX 17680 " BNE SIZ99 17690 "SIZ3: 17700 " CMP #3 17710 " BNE SIZEND 17720 " CPX #4 17730 " BCS SIZ 17740 " INX 17750 "SIZ99: 17760 " LDA #0 17770 " STA EDX 17780 " STA EDY 17790 " STA CURSOR 17800 " LDA #1 17810 " STA EDC 17820 " LDA #41 17830 " STA CURSOR+1 17840 " STY NUMROW 17850 " STX NUMCOL 17860 " LDA #79 17870 " JSR CLRCH 17880 " LDA #1 17890 " LDY #160 17900 " LDX #0 17910 " JSR TIMDEL 17920 " JSR DISALL 17930 " JMP SIZ 17940 "SIZEND: RTS 17950 " 17960 "QUI: LDA #HOME 17970 " JSR CHROUT 17980 " JSR CHROUT 17990 " LDA #CLEAR 18000 " JSR CHROUT 18005 " BRK 18010 " BRK 18015 " JMP BEGIN 18020 " 18030 "SCNCLR: LDA #' ' 18040 "CLRCH: STA TEMP 18050 " LDA #SCR+ONE-1 18080 " STA VEC1+1 18090 " LDX #24 18100 "SC0: 18110 " LDY #32 18115 "SC1: LDA TEMP 18120 " STA (VEC1),Y 18121 " LDA VEC1+1 18122 " PHA 18123 " EOR #4 18124 " STA VEC1+1 18125 "BODGE:LDA #$31 18127 " STA (VEC1),Y 18128 " PLA 18129 " STA VEC1+1 18130 " DEY 18140 " BNE SC1 18150 " JSR ADD40 18160 " DEX 18170 " BNE SC0 18180 " RTS 18190 " 18200 "BINHEX: STX VEC1 18210 " STY VEC1+1 18220 " LDY #0 18230 " 18240 " PHA 18250 " LSR A 18260 " LSR A 18270 " LSR A 18280 " LSR A 18290 " JSR BECCLE 18300 " PLA 18310 " AND #15 18320 "BECCLE: 18330 " ORA #'0 18340 " CMP #'9'+1 18350 " BCC OK 18360 " SBC #57 ;VIDEO 18370 "OK: 18380 " ORA #$80 18390 " STA (VEC1),Y 18400 " INY 18410 " RTS 18420 " 18430 "MAP: LDA #0 18440 " STA VEC1 18450 " STA VEC1+1 18460 " LDY EDY 18470 " BEQ MAP1 18480 "MAP0: JSR ADD40 18490 " DEY 18500 " BNE MAP0 18510 "MAP1: 18520 " LDX EDC 18530 " CLC 18540 " LDA TAB-1,X 18550 " ADC VEC1 18560 " STA VEC1 18570 " LDA VEC1+1 18580 " ADC #0 18590 " STA VEC1+1 18600 " CLC 18610 " LDA VEC1 18620 " ADC EDX 18630 " STA CURSOR+1 18640 " LDA VEC1+1 18650 " ADC #0 18660 " STA CURSOR 18670 " RTS 18680 " 18690 "MAPBY: LDA #0 18700 " LDY EDC 18710 " DEY 18720 " BEQ NOMUL 18730 " LDA NUMROW 18740 " ASL A 18750 " ASL A 18760 " ASL A 18770 " STA TEMP 18780 " LDA #0 18790 " CLC 18800 "MBY00: ADC TEMP 18810 " DEY 18820 " BNE MBY00 18830 "NOMUL: CLC 18840 " ADC EDY 18850 " TAY 18860 " LDA #$80 18870 " LDX EDX 18880 " BEQ MBY1 18890 "MBY0: LSR A 18900 " DEX 18910 " BNE MBY0 18920 "MBY1: RTS 18930 " 18940 "MAPBY1: JSR MAPBY 18950 " TAX 18960 " TYA 18970 " AND #$F8 18980 " TAY 18990 " TXA 19000 " RTS 19010 " 19020 "MES: BYT 9,142,8,147,13,'FFFFFF',0 19030 " BYT ' UDG ',0 19040 " BYT 'EDITOR',0 19050 " BYT '777777',0 19060 " BYT 'DARRON',0 19070 " BYT ' M ',0 19080 " BYT 'BROAD ',0 19090 " BYT 'FFFFFF',0 19100 " BYT 'JAN.86',0 19105 " BYT 'REV. ',0 19110 " BYT 'APR.89',0 19112 " BYT '777777',0 19120 " BYT 13,13,13,13,13 19130 " BYT 'FFFFFF',0 19160 " BYT 'PRESS ',0 19170 " BYT ' ANY ',0 19180 " BYT ' KEY ',0 19190 " BYT '777777',0 19200 " BYT 0 19210 " 19220 "MENU:BYT 147 19250 " BYT '777777',0 19270 " BYT 'EDIT ',0 19280 " BYT 'MOVE ',0 19290 " BYT 'SIZE ',0 19300 " BYT 'CLEAR ',0 19310 " BYT 'INVERT',0 19330 " BYT 'SHIFTD',0 19340 " BYT 'MARKER',0 19350 " BYT 'COPY ',0 19360 " BYT 'SWAP ',0 19370 " BYT 'MODE ',0 19380 " BYT 'DISPLA',0 19382 " BYT 'FLIP H',0 19383 " BYT 'SHIFTR',0 19384 " BYT 'SHIFTL',0 19385 " BYT 'ROM ',0 19386 " BYT 'DIR ',0 19387 " BYT 'LOAD ',0 19388 " BYT 'SAVE ',0 19389 " BYT 'QUIT ',0 19390 " BYT 'FFFFFF',0 19405 " BYT 0,0 19410 "MENMST = 19-1 19411 "BOB: 19412 " LDX #255 19413 " TXS 19415 " LDA #0 19416 " STA CODEU 19420 " 19421 " LDA #CDATA 19424 " STA COPY+1 19426 " LDA #$1B 19427 " STA $FF06 19428 " LDA #$08 19429 " STA $FF07 19430 "JSR INIT 19440 "JSR MESG 19450 "JSR GETKEY 19460 "JSR MENDIS 19470 "GG:JSR GETCOM 19480 "JSR DOCOM 19490 "JMP GG 19500 "; MEMORY REGISTERS 19510 " 19520 "VEC1 = $D0 19530 "VEC2 = VEC1 +2 19540 "UDGVEC = VEC2 +2 19550 "COLOR0 = $333 19560 "COLOR1=COLOR0+1 19570 "COLOR2=COLOR1+1 19580 "COLOR3=COLOR2+1 19590 "THISBT = COLOR3+1 19600 "TEMP = THISBT+1 19610 "TEMP1 = TEMP+1 19620 "NUMCOL = TEMP1 +1 19630 "NUMROW = NUMCOL+1 19640 "RAMSWI = NUMROW+1 19650 "ACT = RAMSWI+1 19660 "CNUM = ACT+1 19670 "NOFCH = CNUM+1 19680 "EDX = NOFCH+1 19690 "EDC = EDX+1 19700 "EDY = EDC+1 19710 "T0=EDY+1 19720 "T1=T0+1 19730 "MODE=T1+1 19731 "COPY=MODE+1 19733 "FLIPT=COPY+2 19734 "FLIPS=FLIPT+4 19740 "FUNK=FLIPS+4 19741 "CODEU=FUNK+1 19750 "; CONSTANTS 19760 " 19770 "BLANK = ' ' 19780 "ONE = 41 19790 "TWO = 49 19800 "THR = 57 19810 "FOU = 65 19820 "RAMON = $FF3F 19830 "ROMON = $FF3E 19840 "SCR = $C00 19850 "ROMCHR = $D000 19860 "BOTTOM = $7E5 19870 "TOP = BOTTOM+1 19880 "LEFT = TOP+1 19890 "RIGHT = LEFT+1 19900 "BWIN = $17 19910 "TWIN = 1 19920 "LWIN = $22 19930 "RWIN = $27 19940 "HOME = '' 19950 "CLEAR = 147 19960 "CURDWN = '' 19970 "CURUP = '' 19980 "CURLEF = '' 19990 "CURRIG = '' 20000 "COL0 = $FF15 20010 "COL4 = $FF19 20020 "BACK = 0 20030 "BORD = 0 20040 "GETIN = $FFE4 20160 "CHROUT = $FFD2 20170 "MEN1ST = 3185 20180 "MENLST = 3905 20190 "CHCOL = $71 20200 "CDATA = $3800 20210 "CHRCL =$53B 20220 "CURSOR =$FF0C 20230 "SHIFT =$543 20240 "INV: JSR FINNUM 20250 "INV11: LDA (UDGVEC),Y 20260 " EOR #255 20270 " STA (UDGVEC),Y 20280 " DEY 20290 " BPL INV11 20300 " JMP DISALL 20310 " 20320 "FINNUM: LDY NUMCOL 20330 " LDA #0 20340 " CLC 20350 "FINN1: ADC NUMROW 20360 " DEY 20370 " BNE FINN1 20380 " ASLA 20390 " ASLA 20400 " ASLA 20410 " TAY 20420 " DEY 20430 " RTS 20440 " 20450 "PRI: JSR FINNUM 20460 " LDA #0 20470 "PRI1: STA (UDGVEC),Y 20480 " DEY 20490 " BPL PRI1 20500 " JMP DISALL 20510 " 20520 "LOA: 20530 " LDA UDGVEC 20540 " STA COPY 20550 " LDA UDGVEC+1 20560 " STA COPY+1 20561 " LDA CNUM 20562 " STA CODEU 20570 " RTS 20580 " 20590 "SAV: JSR FINNUM 20600 " LDA COPY 20610 " STA VEC1 20620 " LDA COPY+1 20630 " STA VEC1+1 20640 "SAV1: LDA (VEC1),Y 20650 " STA (UDGVEC),Y 20660 " DEY 20670 " BPL SAV1 20680 " JMP DISALL 20690 " 20700 "COP: LDA #$FF 20710 " STA FUNK 20720 " JMP FUCK 20730 " 21100 "SWA: JSR FINNUM 21110 " LDA COPY 21120 " STA VEC1 21130 " LDA COPY+1 21140 " STA VEC1+1 21150 "SWA1: LDA (VEC1),Y 21160 " TAX 21170 " LDA (UDGVEC),Y 21180 " STA (VEC1),Y 21190 " TXA 21200 " STA (UDGVEC),Y 21210 " DEY 21220 " BPL SWA1 21230 " JMP DISALL 21240 " 21250 "MIR: LDA NUMCOL 21260 " STA T0 21270 " LDA NUMROW 21280 " ASLA 21290 " ASLA 21300 " ASLA 21310 " STA T1 21320 " LDA UDGVEC 21330 " STA VEC1 21340 " LDA UDGVEC+1 21350 " STA VEC1+1 21360 " 21370 "MIR1:LDY T1 21380 " DEY 21390 " DEY 21400 " LDX T1 21410 " DEX 21420 "MIR2: LDA (VEC1),Y 21430 " INY 21440 " STA (VEC1),Y 21450 " DEY 21460 " DEY 21470 " DEX 21480 " BNE MIR2 21490 " LDA #0 21495 " INY 21500 " STA (VEC1),Y 21510 " LDA VEC1 21520 " CLC 21530 " ADC T1 21540 " STA VEC1 21550 " LDA VEC1+1 21560 " ADC #0 21570 " STA VEC1+1 21580 " DEC T0 21590 " BNE MIR1 21600 " JMP DISALL 21610 " 21620 "ROT:LDA MODE 21630 " EOR #255 21640 " STA MODE 21650 " JMP DISALL 29998 "DIS: LDA BODGE+1 29999 " PHA 30000 " LDA COLOR3 30001 " ORA #8 30002 " STA BODGE+1 30003 " LDA CODEU 30005 " JSR CLRCH 30006 " PLA 30007 " STA BODGE+1 30009 " LDA $FF07 30010 " PHA 30011 " ORA #$80 30012 " LDX MODE 30013 " BEQ NORM 30014 " ORA #$10 30015 "NORM: 30019 " STA $FF07 30020 " LDA $FF12 30030 " PHA 30040 " LDA #8 30050 " STA $FF12 30060 " LDA $FF13 30070 " PHA 30080 " LDA #>CDATA 30090 " STA $FF13 30100 " JSR DUMPST 30110 " JSR GETKEY 30120 " PLA 30130 " STA $FF13 30140 " PLA 30150 " STA $FF12 30151 " PLA 30152 " STA $FF07 30153 "WOBBLY: LDA #79 30154 " JSR CLRCH 30160 " JMP DISALL 30170 " 40000 "DUMPST: LDA #<$C29 40010 " STA VEC1 40020 " LDA #>$C29 40030 " STA VEC1+1 40040 " LDA #8 40050 " STA TEMP 40060 " LDX #0 40070 "DUM1: LDY #0 40080 "DUM2: TXA 40090 " STA (VEC1),Y 40100 " INX 40110 " INY 40120 " CPY #32 40130 " BCC DUM2 40140 " JSR ADD40 40150 " DEC TEMP 40160 " BNE DUM1 40170 " LDA #<$E88 40171 " STA VEC1 40172 " LDA #>$E88 40173 " STA VEC1+1 40180 " LDY #0 40190 " LDX CNUM 40200 " LDA NUMCOL 40210 " STA TEMP1 40220 "FRES:LDA NUMROW 40230 " STA TEMP 40260 " TYA 40270 " PHA 40280 "FREW:TXA 40285 " INX 40290 " STA (VEC1),Y 40300 " TYA 40310 " CLC 40320 " ADC #40 40330 " TAY 40340 " DEC TEMP 40350 " BNE FREW 40360 " PLA 40370 " TAY 40380 " INY 40390 " DEC TEMP1 40400 " BNE FRES 40410 " RTS 40420 " 40430 "FUCK: LDA NUMROW 40440 " ASLA 40450 " ASLA 40460 " ASLA 40470 " STA T0 40490 " LDA UDGVEC 40500 " STA VEC1 40510 " LDA UDGVEC+1 40520 " STA VEC1+1 40530 " LDY #0 40540 " 40550 "FLI1: TYA 40560 " PHA 40570 " LDX #0 40580 "FLI2: LDA (VEC1),Y 40590 " STA FLIPT,X 40600 " JSR ADYT0 40605 " INX 40610 " CPX NUMCOL 40620 " BNE FLI2 40630 " LDA NUMCOL 40640 " ASLA 40650 " ASLA 40660 " ASLA 40670 " TAY 40700 " JSR FUNCS 40810 " PLA 40811 " PHA 40820 " TAY 40830 " LDX #0 40840 "FLI5: LDA FLIPS,X 40850 " STA (VEC1),Y 40860 " JSR ADYT0 40870 " INX 40880 " CPX NUMCOL 40890 " BCC FLI5 40900 " PLA 40910 " TAY 40920 " INY 40930 " CPY T0 40940 " BCC FLI1 40950 " JMP DISALL 40960 " 40970 "ADYT0: TYA 40980 " CLC 40990 " ADC T0 41000 " TAY 41010 "GOD: RTS 41020 " 42000 "FUNCS: LDA FUNK 42010 " CMP #0 42020 " BEQ FLIPIT 42030 " CMP #255 42040 " BEQ SHIFRG 42051 " CMP #1 42052 " BNE GOD 42055 " 42060 " JMP SHIFLF 42500 "FLIPIT: LDA MODE 42510 " BEQ FLIPI9 42520 " LDA NUMCOL 42530 " ASLA 42540 " ASLA 42550 " STA TEMP 42560 "FLIPI7: LDA #0 42570 " LDX NUMCOL 42580 "RLL1: ROL FLIPT-1,X 42590 " DEX 42600 " BNE RLL1 42610 " ROLA 42620 " LDX NUMCOL 42630 "RLL2: ROL FLIPT-1,X 42635 " DEX 42640 " BNE RLL2 42650 " ROLA 42680 " LDX #0 42690 " LDY NUMCOL 42700 " LSRA 42710 "RRR1: ROR FLIPS,X 42720 " INX 42730 " DEY 42740 " BNE RRR1 42780 " LDX #0 42790 " LDY NUMCOL 42800 " LSRA 42810 "RRR2: ROR FLIPS,X 42820 " INX 42830 " DEY 42860 " BNE RRR2 42880 " DEC TEMP 42890 " BNE FLIPI7 42900 " RTS 43000 "FLIPI9: CLC 43010 "FLIPI1: ROL FLIPT-1,X 43020 " DEX 43030 " BNE FLIPI1 43040 " PHP 43050 "FLIPI2: PLP 43060 " ROR FLIPS,X 43070 " PHP 43080 " INX 43090 " CPX NUMCOL 43100 " BNE FLIPI2 43105 " PLP 43110 " DEY 43120 " BNE FLIPI9 43130 " RTS 43140 " 44000 "SHIFRG: LDX #0 44010 " CLC 44020 " PHP 44030 "SHIFR:PLP 44040 " LDA FLIPT,X 44050 " RORA 44060 " STA FLIPS,X 44070 " PHP 44080 " INX 44090 " CPX NUMCOL 44100 " BNE SHIFR 44110 " PLP 44120 " DEY 44130 " BNE SHIFRG 44140 " RTS 44150 " 45000 "SHIFLF: LDX NUMCOL 45010 " CLC 45030 "SHIFL: 45040 " LDA FLIPT-1,X 45050 " ROLA 45060 " STA FLIPS-1,X 45080 " DEX 45090 " BNE SHIFL 45100 " DEY 45110 " BNE SHIFLF 45120 " RTS 45130 " 49000 "FLI: LDA #0 49010 " STA FUNK 49020 " JMP FUCK 49030 " 49040 "LFT: LDA #1 49042 " STA FUNK 49043 " JMP FUCK 50000 "INS: LDA #ROMCHR 50030 " STA VEC1+1 50040 " LDA #CDATA 50070 " STA VEC2+1 50080 " LDX #8 50090 " LDY #0 50100 "INS1: LDA (VEC1),Y 50110 " STA (VEC2),Y 50120 " DEY 50130 " BNE INS1 50140 " INC VEC1+1 50150 " INC VEC2+1 50160 " DEX 50170 " BNE INS1 50171 " STX MODE 50180 " JMP DISALL 50190 " 51000 "DIR: LDA #58 51010 " STA $200 51020 " LDA #0 51030 " STA $3B 51040 " LDA #2 51050 " STA $3C 51060 " JSR WINDOW 51120 " JSR $C8BC 51130 "SPACEG:JSR $C9AC 51131 "SPACET:JSR GETKEY 51140 " CMP #13 51150 " BNE SPACET 51160 " JMP WINCLS 51170 " 52000 "WINDOW: LDA #$18 52010 " STA $7E5 52020 " LDA #1 52030 " STA $7E6 52040 " STA $7E7 52050 " LDA #$20 52060 " STA $7E8 52070 " LDA #147 52080 " JMP CHROUT 52090 " 52100 "WINCLS: LDA #BWIN 52110 " STA BOTTOM 52120 " LDA #TWIN 52130 " STA TOP 52140 " LDA #RWIN 52150 " STA RIGHT 52160 " LDA #LWIN 52170 " STA LEFT 52180 " JMP WOBBLY 52190 " 53000 "GETNAM: JSR GETIN 53001 " BNE GETNAM 53009 " LDY #0 53010 "RD:JSR $FFCF 53020 " STA $200,Y 53030 " INY 53040 " CMP #13 53050 " BNE RD 53051 " DEY 53052 " CPY #1 53053 " BNE OKEN 53054 " LDA $200 53055 " CMP #' ' 53056 " BNE OKEN 53057 " DEY 53058 "OKEN: 53060 " RTS 53070 " 53080 "LOAD: JSR WINDOW 53090 " JSR $FBD8 53100 " BYT 'ENTER LOAD NAME',13,0 53110 " JSR GETNAM 53120 " TYA 53130 " BEQ WINCLS 53140 " LDX #0 53150 " LDY #2 53160 " JSR $FFBD 53170 " LDA #8 53180 " TAX 53190 " LDY #0 53200 " JSR $FFBA 53210 " LDA #0 53220 " LDX #CDATA 53240 " JSR $FFD5 53250 " JMP SPACEG 53260 "SAVE: JSR WINDOW 53270 " JSR $FBD8 53280 "BYT'ENTER SAVE NAME',13,0 53281 " JSR GETNAM 53282 " TYA 53283 " BNE OX 53285 " JMP WINCLS 53290 "OX: LDX #0 53300 " LDY #2 53310 " JSR $FFBD 53320 " LDA #8 53330 " TAX 53340 " LDY #255 53350 " JSR $FFBA 53360 " LDA #CDATA 53390 " STA VEC1+1 53400 " LDA #VEC1 53410 " LDX #CDATA+$800 53430 " JSR $FFD8 53440 " JMP SPACEG 53450 " 60000 "*