PXoX
  A,10000:  ASSEMBLE CODE uX  }X'"*M X'"; ASSEMBLY CODE X$'" X.'"        ORG $2000 X8'"BEGIN:  JMP BOB XB'"; DISPLAY SINGLE LINE OF XL'"; EIGHT BITS. XV'" Y`'"; DATA   IN 'X' (Yj'"; STORED AT 'VEC1' .Yt'" FY~'"DISP8:  STA THISBT WY'"        TYA hY'"        PHA wY'" LDA MODE Y'" BEQ OKNORM Y'" JMP MULTIM Y'"OKNORM: LDY #7 Y'" Y'"DISPL:  LSR THISBT Y'"        LDA #BLANK Y'"        BCC NOBLOK Z'" Z'"        ORA #128 $Z ("NOBLOK: >Z
("        STA (VEC1),Y XZ("        LDA VEC1  +1 iZ("        PHA Z(("        AND #/4 -1 Z2("        STA VEC1  +1 Z<("        LDA COLOR3 Z=(" ORA #8 ZF("        STA (VEC1),Y ZP("        PLA [Z("        STA VEC1  +1 [d("        DEY -[n("        BPL DISPL 3[x(" D[("        PLA U[("        TAY f[("        RTS l[(" [("MULTIM: LDA #4 [(" STA T1 [(" TXA [(" PHA [(" LDY #7 [("MULTI:  LDA THISBT [(" AND #3 [(" LSR THISBT [(" LSR THISBT [)" TAX \)" LDA COLOR0,X \)" STA T0 4\")" LDA #BLANK+128 A\,)" CPX #0 R\6)" BNE BOBBBB c\@)" LDA #BLANK \J)"BOBBBB:    STA (VEC1),Y \T)" DEY \^)" STA (VEC1),Y \h)" INY \r)" LDA VEC1+1 \|)" PHA \)" EOR #4 \)" STA VEC1+1 \)" LDA T0  ])" STA (VEC1),Y 
])" DEY ])" STA (VEC1),Y '])" PLA 8])" STA VEC1+1 B])" DEY R])" BPL MULTI \])" PLA f])" TAX p])" PLA z]*" TAY ]*" RTS ]*" ]&*"; DISPLAY CHARACTERS ]0*"; FROM ADDRESS 'VEC2' ]:*"; NUMCOL WIDE, NUMROW HIGH ]D*" ]N*"DISALL: LDX #36 ^X*"        LDY #>SCR '^b*"        LDA CNUM ?^l*"        JSR BINHEX E^v*" Y^*"        LDX #0 m^*"        LDY #0 s^*" ^*"DIS0:   STX TEMP ^*"        LDA TAB,X ^*"        STA VEC1 ^*" ^*"        LDA #>SCR ^*"        STA VEC1 +1 ^*" 
_*"        LDA NUMROW _*"        ASL A 0_*"        ASL A C_+"        ASL A T_+"        TAX Z_+" k_ +"DIS1:   SEI _*+"        STA RAMON _4+"        LDA (UDGVEC),Y _>+"        STA ROMON _H+"        CLI _R+"        JSR DISP8 _\+" _f+"        JSR ADD40 `p+"        INY `z+"        DEX 2`+"        BNE DIS1 8`+" N`+"        LDX TEMP _`+"        INX w`+"        CPX NUMCOL `+"        BCC DIS0 `+"        RTS `+"TAB:    BYT ONE,TWO,THR,FOU `+" `+"; FILL 1024 BYTES WITH 'A' `+"; 'X' = FIRST PAGE a+" a+"FIL4PG: STX VEC1 +1 0a,"        LDY #0 Fa,"        STY VEC1 La," `a$,"        LDX #4 ka.,"FIL1: a8,"        STA (VEC1),Y aB,"        INY aL,"        BNE FIL1 aV,"        INC VEC1 +1 a`,"        DEX aj,"        BNE FIL1 at,"        RTS b~," b,"; FILL SCREEN b," 3b,"FILSCR: LDX #>SCR Kb,"        JMP FIL4PG Qb," kb,"; FILL SCREEN COLOUR qb," b,"FILCOL: LDX #> SCR-1024 b,"        JMP FIL4PG b," b,"; SET UP DISPLAY b," b -"INIT:   LDA #$41 b
-"        JSR FILCOL c-"        LDA #90+128 'c-"        JSR FILSCR -c(-" Dc2-"        LDA #BACK Zc<-"        STA COL0 qcF-"        LDA #BORD cP-"        STA COL4 cZ-" cd-"        LDA #1 cn-"        STA VEC1 cx-"        LDA #>SCR c-"        STA VEC1+1 c-" d-"        LDA #40 d-"        STA VEC2 .d-"        LDA #>SCR Fd-"        STA VEC2+1 Ld-" `d-"        LDY #0 fd-" wd-"SET0:   TYA d-"        AND #7 d-"        ORA #128 d-"        CLC d."        ADC #1 d."        STA (VEC1),Y d." d"."        CPY #24 e,."        BCS NOVERT e6." 3e@."        STA (VEC2),Y 9eJ." JeT."        CLC `e^."        LDA VEC2 ueh."        ADC #39 er."        STA VEC2 e|."        BCC NOVERT e." e."        INC VEC2+1 e."NOVERT: e."        INY e."        CPY #32 
f."        BNE SET0 f." 'f."        LDA #BWIN ?f."        STA BOTTOM Vf."        LDA #TWIN kf."        STA TOP f."        LDA #LWIN f."        STA LEFT f/"        LDA #RWIN f/"        STA RIGHT f/" f&/"        LDA #0 f0/"        STA CURSOR g:/"        LDA #41 'gD/"        STA CURSOR+1 ;gN/"        LDA #1 PgX/"        STA EDC dgb/"        LDA #0 ygl/"        STA EDY gv/"        STA EDX g/" g/"        LDA #<CDATA g/"        STA UDGVEC g/"        LDA #>CDATA g/"        STA UDGVEC+1 h/"        LDA #0 "h/"        STA CNUM (h/" =h/"        LDA # 4 Uh/"        STA NUMCOL jh/"        LDA # 3 h/"        STA NUMROW h/"        LDA #$71 h0"        STA COLOR0 h0" LDA #$46 h0" STA COLOR1 h0" STA $FF16 h 0" LDA #$42  i*0" STA COLOR2 i+0" STA $FF17 i40" LDA #$45 0i>0" STA COLOR3 ?iH0" LDA #255 WiR0" STA MODE;MCM DRAW pi\0"        LDA # CHCOL if0"        STA CHRCL ip0"        JMP DISALL iz0" i0"; TIME DELAY i0" i0"TIMDEL: CMP #0 i0"        BEQ TIM1 i0"TIM0:   DEX j0"        BNE TIM0 j0"        DEY 5j0"        BNE TIM0 ;j0" Lj0"        SEC `j0"        SBC #1 vj0"        BNE TIM0 j0"TIM1: j1"        RTS j1" j1"; OUTPUT A STRING j$1" j.1"PRSTR:  STX VEC1 j81"        STY VEC1+1 jB1" jL1"        LDY #0 kV1"PR1: !k`1"        LDA (VEC1),Y 6kj1"        BEQ PR2 Nkt1"        JSR CHROUT _k~1"        INY tk1"        BNE PR1 zk1" k1"PR2:    RTS k1" k1"; MULTIPLE CHAR OUTPUT k1" k1"MULCHR: CPX #0 k1"        BEQ PR2 k1" k1"        JSR CHROUT l1"        DEX #l1"        JMP MULCHR )l 2" ?l
2";SIGN ON MESSAGE El2" \l2"MESG:   LDX #<MES sl(2"        LDY #>MES l22";SCROLL UP DATA l<2"MESG2:  STX VEC1 lF2"        STY VEC1+1 lP2" lZ2"        LDA #HOME ld2"        JSR CHROUT ln2" mx2"        LDX #24 m2"        LDA #CURDWN 7m2"        JSR MULCHR =m2" Qm2"MES0:   LDY #0 Wm2" qm2"        LDA (VEC1),Y m2"        BEQ MES1 m2" m2"        JSR PR1 m2"        TYA m2"        SEC m2"        ADC VEC1 m2"        STA VEC1 n3"        BCC MES2 n3"        INC VEC1+1 )n3"MES2: =n"3"        LDA #1 Qn,3"        LDX #0 fn63"        LDY #40 ~n@3"        JSR TIMDEL nJ3" nT3"        JMP MES0 n^3"MES1:   RTS nh3" nr3"CARRIG: LDA #13 n|3"        JMP CHROUT n3" n3";DISPLAY MENU n3" o3"MENDIS: LDX #<MENU -o3"        LDY #>MENU Do3"        JMP MESG2 Jo3" ao3"GETKEY: JSR GETIN uo3"        CMP #0 o3"        BEQ GETKEY o3"        RTS o3" o3";REV VIDEO Y BYTES FROM VEC1 o4" o4"INV6:   LDY #6 o4"INVX: p&4"        LDA (VEC1),Y p04"        EOR #128 5p:4"        STA (VEC1),Y FpD4"        DEY \pN4"        BNE INVX mpX4"IN1:    RTS spb4" pl4"GETCOM: LDA #<MEN1ST pv4"        STA VEC1 p4"        LDA #>MEN1ST p4"        STA VEC1+1 p4" p4"        LDA #0 q4"        STA ACT 
q4"  q4"REVER:  JSR INV6 8q4"        JSR GETDIR Nq4"        JSR INV6 bq4"        CPX #2 xq4"        BEQ GOUP q4"        CPX #4 q4"        BEQ GODOWN q5"        CPX #5 q5"        BNE REVER q5" q 5"ACTION: RTS q*5"GOUP:   LDA ACT r45"        BNE ADDUP r>5" 2rH5"        LDA #<MENLST HrR5"        STA VEC1 br\5"        LDA #>MENLST zrf5"        STA VEC1+1 rp5"        LDA #MENMST rz5"        STA ACT r5"        JMP REVER r5"ADDUP: r5"        SEC r5"        LDA VEC1 s5"        SBC #40 s5"        STA VEC1 5s5"        LDA VEC1+1 Is5"        SBC #0 as5"        STA VEC1+1 vs5"        DEC ACT s5"        JMP REVER s5" s5"GODOWN: LDA ACT s6"        CMP #MENMST s6"        BNE ADDDWN s6" s$6"        LDA #<MEN1ST t.6"        STA VEC1 )t86"        LDA #>MEN1ST AtB6"        STA VEC1+1 UtL6"        LDA #0 jtV6"        STA ACT t`6"        JMP REVER tj6" tt6"ADDDWN: JSR ADD40 t~6"        INC ACT t6"        JMP REVER t6" t6"ADD40:  CLC t6"        LDA VEC1 u6"        ADC #40 "u6"        STA VEC1 :u6"        LDA VEC1+1 Nu6"        ADC #0 fu6"        STA VEC1+1 wu6"        RTS }u6" u6"GETDIR: JSR GETIN u 7"        LDX #1 u
7"        CMP #'D u7"        BEQ GET1 u7"        CMP #CURLEF v(7"        BEQ GET1 v27"        INX (v<7"        CMP #'5 >vF7"        BEQ GET1 VvP7"        CMP #CURUP lvZ7"        BEQ GET1 }vd7"        INX vn7"        CMP #'6 vx7"        BEQ GET1 v7"        CMP #CURRIG v7"        BEQ GET1 v7"        INX v7"        CMP #'R w7"        BEQ GET1 ,w7"        CMP #CURDWN Bw7"        BEQ GET1 Sw7"        INX hw7"        CMP #'T ~w7"        BEQ GET1 w7"        CMP #' ' w7"        BEQ GET1 w7"        INX w8"GET1:   RTS w8" w8"ACTVEC: WOR EDI-1,MOV-1,SIZ-1 x"8"        WOR PRI-1,INV-1 5x,8"        WOR MIR-1,LOA-1,SAV-1 Rx68"        WOR SWA-1,ROT-1 tx;8" WOR DIS-1,FLI-1,COP-1,LFT-1 x@8"WOR INS-1,DIR-1,LOAD-1,SAVE-1,QUI-1 xJ8"DOCOM:  LDA ACT xT8"        ASL A x^8"        TAX xh8"        LDA ACTVEC+1,X yr8"        PHA y|8"        LDA ACTVEC,X .y8"        PHA ?y8"        RTS Ey8" [y8"        AND #127 oy8"MOV:    LDA #0 y8"        LDY NUMROW y8"        CLC y8"MOVC:   ADC NUMCOL y8"        DEY y8"        BNE MOVC y8"        STA NOFCH z8"        EOR #$FF z8"        CLC )z9"        ADC #1 @z9"        STA TEMP1 Fz9" ^z&9"MOVD:   JSR DISALL vz09"MOVE:   JSR GETDIR |z:9" zD9"        LDY CNUM zN9"        CPX #4 zX9"        BNE MOV1 zb9"        JSR MOVD8 zl9"        JMP MOVD zv9"MOV1: {9"        CPX #2 {9"        BNE MOV3 5{9"        JSR MOVP8 K{9"        JMP MOVD V{9"MOV3: j{9"        CPX #3 {9"        BNE MOV4 {9"        LDA NOFCH {9"        LDX SHIFT {9"        BEQ MOV30 {9"        ASL A {9"MOV30:  TAX  |9"MOV3A:  JSR MOVP8 |:"        BEQ MOV &|:"        DEX =|:"        BNE MOV3A S| :"        JMP MOVD ^|*:"MOV4: r|4:"        CPX #1 |>:"        BNE MOV99 |H:"        LDA NOFCH |R:"        LDX SHIFT |\:"        BEQ MOV31 |f:"        ASL A |p:"MOV31:  TAX 	}z:"MOV4A:  JSR MOVD8 }:"        BEQ MOV /}:"        DEX F}:"        BNE MOV4A \}:"        JMP MOVD b}:" n}:"MOV99: }:"        CMP #'F }:"        BNE MOV6 }:"        LDY #0 }:"        STY CNUM }:"        LDA #<CDATA }:"        STA UDGVEC ~:"        LDA #>CDATA '~;"        STA UDGVEC+1 =~;"        JMP MOVD H~;"MOV6: ]~$;"        CMP #'M s~.;"        BNE MOV8 ~8;"        LDY #128 ~B;"        STY CNUM ~L;"        LDA #<CDATA+1024 ~V;"        STA UDGVEC ~`;"        LDA #>CDATA+1024 j;"        STA UDGVEC+1 #t;"        JMP MOVD .~;"MOV8: C;"        CMP #'L Y;"        BNE MOV9 p;"        LDA NOFCH ;"        ASL A ;"        ASL A ;"        ASL A ;"        STA TEMP ;"        LDA #<CDATA+2048 ;"        SEC ;"        SBC TEMP ;"        STA UDGVEC :;"        LDA #>CDATA+2048 N <"        SBC #0 h
<"        STA UDGVEC+1 <"        LDY TEMP1 <"        STY CNUM (<"        JMP MOVD 2<" ŀ<<"MOV9:   CPX #5 ܀F<"        BEQ MVEND P<"        JMP MOV Z<"MVEND:  RTS d<" n<"MOVP8:  CPY TEMP1 6x<"        BEQ MVERR G<"        INY ]<"        STY CNUM u<"        LDA UDGVEC <"        CLC <"        ADC #8 <"        STA UDGVEC ́<"        LDA UDGVEC+1 <"        ADC #0 <"        STA UDGVEC+1 <"        LDA #1 <"MVERR:  RTS %<" 9<"MOVD8:  CPY #0 P="        BEQ MVERR a="        DEY w="        STY CNUM "="        LDA UDGVEC ,="        SEC 6="        SBC #8 ̂@="        STA UDGVEC J="        LDA UDGVEC+1 T="        SBC #0 ^="        STA UDGVEC+1 (h="        LDA #1 9r="        RTS ?|=" [="EDI00:  STA (UDGVEC),Y s="EDI000: JSR DISALL ~="ED00: ="EDI:    JSR MAP ="        JSR GETDIR ="        CPX #2 Ճ="        BNE EDI1 ="        LDY EDY ="        BEQ EDI ="        DEY %="        STY EDY ;="        JMP ED00 F="EDI1: Z>"        CPX #4 p>"        BNE EDI2 >"        LDA NUMROW &>"        ASL A 0>"        ASL A :>"        ASL A ҄D>"        SEC N>"        SBC #1 X>"        STA TEMP b>"        LDY EDY 'l>"        CPY TEMP <v>"        BCS EDI M>"        INY b>"        STY EDY x>"        JMP ED00 >"EDI2: >"        CPX #1 >"        BNE EDI3 >"        LDY EDX م>"        BNE EDI21 >"        LDY EDC >"        CPY #2 >"        BCC EDI (>"        DEY =>"        STY EDC Q?"        LDY #8 b?"EDI21:  DEY w?"        STY EDX  ?"        JMP ED00 *?"EDI3: 4?"        CPX #3 >?"        BNE EDI4 ׆H?"        LDY EDX R?"        CPY #7 \?"        BCC EDI31 f?"        LDY EDC /p?"        CPY NUMCOL Dz?"        BCS EDI U?"        INY j?"        STY EDC ?"        LDY #255 ?"EDI31:  INY ?"        STY EDX ?"        JMP ED00 ?" ׇ?"EDI4:   CMP #'Z ?"        BNE EDI6 ?"        JSR MAPBY ?"        SEI ,?"        STA RAMON H?"        ORA (UDGVEC),Y _@"        STA ROMON p@"        CLI @"        JMP EDI00 $@" .@"EDI6:   CMP #'X 8@"        BNE EDI7 ψB@"        JSR MAPBY L@"        EOR #$FF V@"        SEI `@"        STA RAMON )j@"        AND (UDGVEC),Y @t@"        STA ROMON Q~@"        CLI h@"        JMP EDI00 s@"EDI7: @"        CMP #'C @"        BNE EDI8 @"        JSR MAPBY ˉ@"        LDA #$FF @"        JMP EDI00 @"EDI8: @"        CMP #'V @"        BNE EDI9 /@"        JSR MAPBY C@"        LDA #0 Z A"        JMP EDI00 e
A"EDI9: zA"        CMP #'B A"        BNE EDI10 (A"        JSR MAPBY 2A"        SEI Њ<A"        STA RAMON FA"        LDA (UDGVEC),Y PA"        STA ROMON ZA"        CLI *dA"        EOR #$FF AnA"        JMP EDI00 MxA"EDI10: bA"        CMP #'N yA"        BNE EDI11 A"        JSR MAPBY1 A"        LDX #8 A"EDI101: PHA ǋA"        SEI ދA"        STA RAMON A"        ORA (UDGVEC),Y A"        STA ROMON "A"        CLI >A"        STA (UDGVEC),Y OA"        PLA `A"        INY qB"        DEX B"        BNE EDI101 B"        JMP EDI000 "B"EDI11: ,B"        CMP #'M ٌ6B"        BNE EDI12 @B"        JSR MAPBY1 JB"        EOR #$FF TB"        LDX #8 ,^B"EDI111: PHA =hB"        SEI TrB"        STA RAMON p|B"        AND (UDGVEC),Y B"        STA ROMON B"        CLI B"        STA (UDGVEC),Y ōB"        PLA ֍B"        INY 獸B"        DEX B"        BNE EDI111 B"        JMP EDI000 #B"EDI12: 8B"        CMP #', OB"        BNE EDI13 gB"        JSR MAPBY1 {B"        LDX #8 C"EDI121: PHA C"        SEI C"        STA RAMON Ў&C"        EOR (UDGVEC),Y 0C"        STA RAMON :C"        CLI DC"        STA (UDGVEC),Y %NC"        PLA 6XC"        INY GbC"        DEX _lC"        BNE EDI121 wvC"        JMP EDI000 C"EDI13: C"        CPX #5 C"        BEQ EDEND ÏC"        JMP EDI ԏC"EDEND:  RTS ڏC" D"SIZ:    JSR GETDIR D"        TXA  D"        CPX #6 ,*D"        BCS SIZ D4D"        LDY NUMROW \>D"        LDX NUMCOL bHD" vRD"        CMP #2 \D"        BNE SIZ1 fD"        CPY #2 pD"        BCC SIZ ƐzD"        DEY ݐD"        BNE SIZ99 萎D"SIZ1: D"        CMP #4 D"        BNE SIZ2 &D"        CPY #3 ;D"        BCS SIZ LD"        INY cD"        BNE SIZ99 nD"SIZ2: D"        CMP #1 D"        BNE SIZ3 D"        CPX #2 D"        BCC SIZ ґE"        DEX E"        BNE SIZ99 E"SIZ3: $E"        CMP #3  .E"        BNE SIZEND 48E"        CPX #4 IBE"        BCS SIZ ZLE"        INX fVE"SIZ99: z`E"        LDA #0 jE"        STA EDX tE"        STA EDY ~E"        STA CURSOR ВE"        LDA #1 咒E"        STA EDC E"        LDA #41 E"        STA CURSOR+1 ,E"        STY NUMROW DE"        STX NUMCOL YE"        LDA #79 pE"        JSR CLRCH E"        LDA #1 E"        LDY #160 E"        LDX #0 ƓE"        JSR TIMDEL ޓ F"        JSR DISALL 
F"        JMP SIZ F"SIZEND: RTS 
F" !(F"QUI:    LDA #HOME 92F"        JSR CHROUT Q<F"        JSR CHROUT iFF"        LDA #CLEAR PF"        JSR CHROUT UF" BRK ZF"        BRK _F" JMP BEGIN dF" ȔnF"SCNCLR: LDA #' ' ޔxF"CLRCH:  STA TEMP F"        LDA #<SCR+ONE-1 F"        STA VEC1 .F"        LDA #>SCR+ONE-1 FF"        STA VEC1+1 [F"        LDX #24 eF"SC0: zF"        LDY #32 F"SC1: LDA TEMP F" STA (VEC1),Y F" LDA VEC1+1 F" PHA ȕF" EOR #4 ٕF" STA VEC1+1 F"BODGE:LDA #$31  F" STA (VEC1),Y 
F" PLA F" STA VEC1+1 ,F"        DEY AF"        BNE SC1 XF"        JSR ADD40 iF"        DEX ~F"        BNE SC0 G"        RTS G" G"BINHEX: STX VEC1 Ö"G"        STY VEC1+1 ז,G"        LDY #0 ݖ6G" @G"        PHA JG"        LSR A TG"        LSR A '^G"        LSR A :hG"        LSR A RrG"        JSR BECCLE c|G"        PLA xG"        AND #15 G"BECCLE: G"        ORA #'0 G"        CMP #'9'+1 ƗG"        BCC OK 㗸G"        SBC #57  ;VIDEO G"OK: G"        ORA #$80 G"        STA (VEC1),Y -G"        INY >G"        RTS DG" XG"MAP:    LDA #0 nH"        STA VEC1 H"        STA VEC1+1 H"        LDY EDY &H"        BEQ MAP1 Ș0H"MAP0:   JSR ADD40 ٘:H"        DEY DH"        BNE MAP0 NH"MAP1: XH"        LDX EDC  bH"        CLC 9lH"        LDA TAB-1,X OvH"        ADC VEC1 eH"        STA VEC1 }H"        LDA VEC1+1 H"        ADC #0 H"        STA VEC1+1 H"        CLC ЙH"        LDA VEC1 噼H"        ADC EDX H"        STA CURSOR+1 H"        LDA VEC1+1 +H"        ADC #0 CH"        STA CURSOR TH"        RTS ZH" nI"MAPBY:  LDA #0 I"        LDY EDC I"        DEY  I"        BEQ NOMUL Ú*I"        LDA NUMROW ֚4I"        ASL A >I"        ASL A HI"        ASL A RI"        STA TEMP &\I"        LDA #0 7fI"        CLC MpI"MBY00:  ADC TEMP ^zI"        DEY uI"        BNE MBY00 I"NOMUL:  CLC I"        ADC EDY I"        TAY I"        LDA #$80 כI"        LDX EDX I"        BEQ MBY1  I"MBY0:   LSR A I"        DEX 'I"        BNE MBY0 8I"MBY1:   RTS >I" UI"MAPBY1: JSR MAPBY fJ"        TAX wJ"        TYA J"        AND #$F8 $J"        TAY .J"        TXA 8J"        RTS ƜBJ" LJ"MES: BYT 9,142,8,147,13,'',0 VJ"     BYT ' UDG  ',0  `J"     BYT 'EDITOR',0 9jJ"     BYT '',0 RtJ"     BYT 'DARRON',0 k~J"     BYT '  M   ',0 J"     BYT 'BROAD ',0 J"     BYT '',0 J"     BYT 'JAN.86',0 ϝJ"     BYT 'REV.  ',0 蝦J"     BYT 'APR.89',0 J"     BYT '',0 J"     BYT 13,13,13,13,13 7J"     BYT '',0 PJ"     BYT 'PRESS ',0 iJ"     BYT ' ANY  ',0 J"     BYT ' KEY  ',0 J"     BYT '',0  K"     BYT 0 
K" ÞK"MENU:BYT 147 ܞ2K"     BYT '',0 FK"     BYT 'EDIT  ',0 PK"     BYT 'MOVE  ',0 'ZK"     BYT 'SIZE  ',0 @dK"     BYT 'CLEAR ',0 YnK"     BYT 'INVERT',0 rK"     BYT 'SHIFTD',0 K"     BYT 'MARKER',0 K"     BYT 'COPY  ',0 K"     BYT 'SWAP  ',0 ֟K"     BYT 'MODE  ',0 K"     BYT 'DISPLA',0 K"     BYT 'FLIP H',0 !K"     BYT 'SHIFTR',0 :K"     BYT 'SHIFTL',0 SK"     BYT 'ROM   ',0 lK"     BYT 'DIR   ',0 K"     BYT 'LOAD  ',0 K"     BYT 'SAVE  ',0 K"     BYT 'QUIT  ',0 РK"     BYT '',0 K"     BYT 0,0 K"MENMST =  19-1  K"BOB: K" LDX #255 K" TXS &K" LDA #0 6K" STA CODEU <K" NK" LDA #<CDATA ]K" STA COPY oK" LDA #>CDATA K" STA COPY+1 K" LDA #$1B K" STA $FF06 K" LDA #$08 K" STA $FF07 ̡K"JSR INIT ڡK"JSR MESG K"JSR GETKEY L"JSR MENDIS L"GG:JSR GETCOM L"JSR DOCOM ("L"JMP GG @,L"; MEMORY REGISTERS F6L" [@L"VEC1    =   $D0 uJL"VEC2    =   VEC1  +2 TL"UDGVEC  =   VEC2  +2 ^L"COLOR0  =   $333 hL"COLOR1=COLOR0+1 ϢrL"COLOR2=COLOR1+1 |L"COLOR3=COLOR2+1 L"THISBT  =   COLOR3+1 L"TEMP    =   THISBT+1 0L"TEMP1   =   TEMP+1 JL"NUMCOL  =   TEMP1 +1 dL"NUMROW  =   NUMCOL+1 ~L"RAMSWI  =   NUMROW+1 L"ACT     =   RAMSWI+1 L"CNUM    =   ACT+1 ǣL"NOFCH   =   CNUM+1 L"EDX     =   NOFCH+1 L"EDC     =   EDX+1 L"EDY     =   EDC+1 L"T0=EDY+1 )M"T1=T0+1 8M"MODE=T1+1 IM"COPY=MODE+1 [M"FLIPT=COPY+2 nM"FLIPS=FLIPT+4 M"FUNK=FLIPS+4 M"CODEU=FUNK+1 &M"; CONSTANTS 0M" :M"BLANK   =   ' ' ҤDM"ONE     =   41 NM"TWO     =   49 XM"THR     =   57 bM"FOU     =   65 %lM"RAMON   =   $FF3F <vM"ROMON   =   $FF3E RM"SCR     =   $C00 iM"ROMCHR  =   $D000 M"BOTTOM  =   $7E5 M"TOP     =   BOTTOM+1 M"LEFT    =   TOP+1 ȥM"RIGHT   =   LEFT+1 ݥM"BWIN    =   $17 M"TWIN    =   1 M"LWIN    =   $22 M"RWIN    =   $27 /M"HOME    =   '' DM"CLEAR   =   147 YM"CURDWN  =   '' nN"CURUP   =   '' N"CURLEF  =   '' N"CURRIG  =   ''  N"COL0    =   $FF15 Ʀ*N"COL4    =   $FF19 ٦4N"BACK    =   0 >N"BORD    =   0 HN"GETIN   =   $FFE4 N"CHROUT  =   $FFD2 0N"MEN1ST  =   3185 FN"MENLST  =   3905 [N"CHCOL   =   $71 rN"CDATA   =   $3800 N"CHRCL   =$53B N"CURSOR  =$FF0C O"SHIFT   =$543 O"INV: JSR FINNUM ܧO"INV11: LDA (UDGVEC),Y $O" EOR #255  .O" STA (UDGVEC),Y 
8O" DEY BO" BPL INV11 +LO" JMP DISALL 1VO" I`O"FINNUM: LDY NUMCOL VjO" LDA #0 `tO" CLC w~O"FINN1: ADC NUMROW O" DEY O" BNE FINN1 O" ASLA O" ASLA O" ASLA O" TAY ƨO" DEY ШO" RTS ֨O" O"PRI: JSR FINNUM O" LDA #0 O"PRI1: STA (UDGVEC),Y  P" DEY +
P" BPL PRI1 <P" JMP DISALL BP" L(P"LOA: ]2P" LDA UDGVEC l<P" STA COPY FP" LDA UDGVEC+1 PP" STA COPY+1 QP" LDA CNUM RP" STA CODEU ZP" RTS dP" ԩnP"SAV: JSR FINNUM xP" LDA COPY P" STA VEC1 P" LDA COPY+1 P" STA VEC1+1 ,P"SAV1: LDA (VEC1),Y AP" STA (UDGVEC),Y KP" DEY ZP" BPL SAV1 kP" JMP DISALL qP" P"COP: LDA #$FF P" STA FUNK P" JMP FUCK P" lR"SWA: JSR FINNUM ̪vR" LDA COPY ۪R" STA VEC1 쪊R" LDA COPY+1 R" STA VEC1+1 R"SWA1: LDA (VEC1),Y R" TAX 4R" LDA (UDGVEC),Y GR" STA (VEC1),Y QR" TXA fR" STA (UDGVEC),Y pR" DEY R" BPL SWA1 R" JMP DISALL R" S"MIR: LDA NUMCOL S" STA T0 ɫS" LDA NUMROW ԫ S" ASLA ߫*S" ASLA 4S" ASLA >S" STA T1 HS" LDA UDGVEC RS" STA VEC1 *\S" LDA UDGVEC+1 ;fS" STA VEC1+1 ApS" RzS"MIR1:LDY T1 \S" DEY fS" DEY sS" LDX T1 }S" DEX S"MIR2: LDA (VEC1),Y S" INY S" STA (VEC1),Y S" DEY ƬS" DEY ЬS" DEX ߬S" BNE MIR2 S" LDA #0 S" INY 	S" STA (VEC1),Y T" LDA VEC1 "T" CLC /T" ADC T1 >$T" STA VEC1 O.T" LDA VEC1+1 \8T" ADC #0 mBT" STA VEC1+1 zLT" DEC T0 VT" BNE MIR1 `T" JMP DISALL jT" tT"ROT:LDA MODE ~T" EOR #255 ЭT" STA MODE ᭒T" JMP DISALL .u"DIS: LDA BODGE+1 /u" PHA 0u" LDA COLOR3 1u" ORA #8 12u" STA BODGE+1 A3u" LDA CODEU Q5u" JSR CLRCH [6u" PLA m7u" STA BODGE+1 }9u" LDA $FF07 :u" PHA ;u" ORA #$80 <u" LDX MODE =u" BEQ NORM î>u" ORA #$10 ή?u"NORM: ޮCu" STA $FF07 Du" LDA $FF12 Nu" PHA Xu" LDA #8 bu" STA $FF12 %lu" LDA $FF13 /vu" PHA Au" LDA #>CDATA Qu" STA $FF13 bu" JSR DUMPST su" JSR GETKEY }u" PLA u" STA $FF13 u" PLA u" STA $FF12 u" PLA u" STA $FF07 ׯu"WOBBLY:  LDA #79 u" JSR CLRCH u" JMP DISALL u" @"DUMPST: LDA #<$C29 %J" STA VEC1 6T" LDA #>$C29 G^" STA VEC1+1 Th" LDA #8 cr" STA TEMP p|" LDX #0 "DUM1:   LDY #0 "DUM2: TXA " STA (VEC1),Y " INX " INY Ȱ" CPY #32 װ" BCC DUM2 ̜" JSR ADD40 ֜" DEC TEMP " BNE DUM1 " LDA #<$E88 %" STA VEC1 6" LDA #>$E88 G" STA VEC1+1 T" LDY #0 c" LDX CNUM t" LDA NUMCOL " STA TEMP1 "FRES:LDA NUMROW &" STA TEMP D" TYA N" PHA ʱX"FREW:TXA Ա]" INX b" STA (VEC1),Y l" TYA v" CLC 	" ADC #40 " TAY "" DEC TEMP 1" BNE FREW ;" PLA E" TAY O" INY _Ɲ" DEC TEMP1 nН" BNE FRES xڝ" RTS ~" "FUCK: LDA NUMROW " ASLA " ASLA " ASLA ²" STA T0 Ӳ*" LDA UDGVEC 4" STA VEC1 >" LDA UDGVEC+1 H" STA VEC1+1 R" LDY #0 \" (f"FLI1: TYA 2p" PHA ?z" LDX #0 W"FLI2: LDA (VEC1),Y i" STA FLIPT,X y" JSR ADYT0 " INX " CPX NUMCOL " BNE FLI2 " LDA NUMCOL " ASLA ʳʞ" ASLA ճԞ" ASLA ߳ޞ" TAY " JSR FUNCS j" PLA k" PHA t" TAY ~" LDX #0 1"FLI5: LDA FLIPS,X D" STA (VEC1),Y T" JSR ADYT0 ^" INX o" CPX NUMCOL ~" BCC FLI5 ğ" PLA Ο" TAY ؟" INY " CPY T0 " BCC FLI1 ɴ" JMP DISALL ϴ " ߴ
"ADYT0: TYA " CLC " ADC T0  (" TAY 2"GOD: RTS <" )"FUNCS: LDA FUNK 6" CMP #0 G$" BEQ FLIPIT V." CMP #255 g8" BEQ SHIFRG tC" CMP #1 D" BNE GOD G" L" JMP SHIFLF "FLIPIT: LDA MODE " BEQ FLIPI9 ѵ" LDA NUMCOL ܵ"" ASLA ," ASLA 6" STA TEMP 
@"FLIPI7: LDA #0 J" LDX NUMCOL 6T"RLL1:   ROL FLIPT-1,X @^" DEX Oh" BNE RLL1 Zr" ROLA k|" LDX NUMCOL "RLL2:   ROL FLIPT-1,X " DEX " BNE RLL2 " ROLA " LDX #0 ȶ¦" LDY NUMCOL Ӷ̦" LSRA ֦"RRR1:   ROR FLIPS,X " INX  " DEY " BNE RRR1 " LDX #0 -&" LDY NUMCOL 80" LSRA Q:"RRR2:   ROR FLIPS,X [D" INX eN" DEY tl" BNE RRR2 " DEC TEMP " BNE FLIPI7 " RTS "FLIPI9: CLC ʷ"FLIPI1: ROL FLIPT-1,X Է" DEX " BNE FLIPI1  " PHP  *"FLIPI2: PLP 4" ROR FLIPS,X >" PHP &H" INX 7R" CPX NUMCOL H\" BNE FLIPI2 Ra" PLP \f" DEY mp" BNE FLIPI9 wz" RTS }" "SHIFRG: LDX #0 " CLC " PHP "SHIFR:PLP Ƹ" LDA FLIPT,X Ѹ" RORA " STA FLIPS,X &" PHP 0" INX :" CPX NUMCOL D" BNE SHIFR "N" PLP ,X" DEY =b" BNE SHIFRG Gl" RTS Mv" eȯ"SHIFLF: LDX NUMCOL oү" CLC {"SHIFL: " LDA FLIPT-1,X " ROLA " STA FLIPS-1,X " DEX ȹ"" BNE SHIFL ҹ," DEY 6" BNE SHIFLF @" RTS J" h"FLI: LDA #0 r" STA FUNK "|" JMP FUCK (" 9"LFT: LDA #1 H" STA FUNK W" JMP FUCK nP"INS: LDA #<ROMCHR }Z" STA VEC1 d" LDA #>ROMCHR n" STA VEC1+1 x" LDA #<CDATA º" STA VEC2 Ժ" LDA #>CDATA 庖" STA VEC2+1 " LDX #8 " LDY #0 "INS1: LDA (VEC1),Y *" STA (VEC2),Y 4" DEY C" BNE INS1 T" INC VEC1+1 e" INC VEC2+1 o" DEX ~" BNE INS1 " STX MODE " JMP DISALL " 8"DIR: LDA #58 ŻB" STA $200 һL" LDA #0 V" STA $3B `" LDA #2 j" STA $3C t" JSR WINDOW " JSR $C8BC 2"SPACEG:JSR $C9AC I"SPACET:JSR GETKEY W" CMP #13 h" BNE SPACET y" JMP WINCLS "  "WINDOW: LDA #$18 *" STA $7E5 4" LDA #1 >" STA $7E6 ϼH" STA $7E7 ޼R" LDA #$20 \" STA $7E8 f" LDA #147 p" JMP CHROUT z" *"WINCLS: LDA #BWIN ;" STA BOTTOM K" LDA #TWIN Y" STA TOP i" LDA #RWIN y" STA RIGHT " LDA #LWIN " STA LEFT " JMP WOBBLY " ƽ"GETNAM: JSR GETIN ׽	" BNE GETNAM " LDY #0 "RD:JSR $FFCF " STA $200,Y &" INY 0" CMP #13 ,:" BNE RD 6;" DEY C<" CPY #1 R=" BNE OKEN a>" LDA $200 p?" CMP #' ' @" BNE OKEN A" DEY B"OKEN: D" RTS N" X"LOAD: JSR WINDOW ʾb" JSR $FBD8 l" BYT 'ENTER LOAD NAME',13,0 v" JSR GETNAM " TYA " BEQ WINCLS $" LDX #0 1" LDY #2 A" JSR $FFBD N" LDA #8 X" TAX e" LDY #0 u" JSR $FFBA " LDA #0 " LDX #<CDATA " LDY #>CDATA " JSR $FFD5 ǿ" JMP SPACEG ݿ"SAVE: JSR WINDOW " JSR $FBD8  "BYT'ENTER SAVE NAME',13,0 !" JSR GETNAM '"" TYA 4#" BNE OX E%" JMP WINCLS U*"OX: LDX #0 b4" LDY #2 r>" JSR $FFBD H" LDA #8 R" TAX \" LDY #255 f" JSR $FFBA p" LDA #<CDATA z" STA VEC1 " LDA #>CDATA " STA VEC1+1 " LDA #VEC1 " LDX #<CDATA+$800 *" LDY #>CDATA+$800 :" JSR $FFD8 K" JMP SPACEG Q" X`"*   