kx
 A,10000 ~  '"*M '" ORG $1010 $'"T1    =$D0 .'"T2    =$D1 8'"T3    =$D2 B'"T4    =$D3 L'"T5    =$D4 V'"T6    =$D5 	`'"CHRST =$D6;2B j'"CHRIX =$E8 -t'"REMA  =$334;2B A~'"DIVIS =$336;2B U'"QUOT  =$338;2B i'"DIVID =$33A;2B z'"XCOORD=$33C '"YCOORD=$33D '"X1    =$33E '"Y1    =$33F '"XDIRE =$340 '"YDIRE =$341 '"IX    =$342;2B '"IY    =$344;2B '"LOOPN =$346 '"LOOPC =$347 * ("XFRAC =$348 ;
("YFRAC =$349 L("WINDOW=$34A ]("FUNCTI=$34B n(("COLOR =$34C t2(" <("XWIND =$350;8B F("YWIND =$358;8B P("XMIND =$360;8B Z("YMIND =$368;8B d("XSAVE =$370;8B n("YSAVE =$378;8B x(" y("NPAR  =$380 z("XPAR  =$381 %{("YPAR  =$382 6|("APAR  =$383 <}(" K(" JMP EXEC [(" JMP BEGIN h N"JUMPTB: z*N"WOR INITGR;0 4N"WOR LINETO >N"WOR SETWIN HN"WOR SELWIN RN"WOR PLOT \N"WOR CLEARW fN"WOR CLEARS pN"WOR MOVETO zN"WOR SAVEC N"WOR LOADC N"WOR SETFUN &N"WOR SCREEN 5N"WOR PLOTS CN"WOR TEXT SN"WOR DRAWTX `N"WOR BOX pN"WOR COLOUR N"WOR DRAWCH;18 N"WOR READPX N"WOR CSET N"WOR INVERT N"WOR INVERN N"WOR OLD N"JMAX  =22 N" U"BEGIN:  JSR $802E U" LDA #<LAST+2 V" STA 43 -V" LDA #>LAST+2 :V" STA 44 G"V" LDA #0 X,V" STA LAST+1 h6V" JSR $8117 x@V" JSR $8A7B JV" JSR $80C2 TV" JSR INITGR YV" LDX #$80 ZV" JMP ($300) ^V" ]"OLD:    LDY #1 ]" TYA ]" STA ($2B),Y ]" JSR $8818 ]" JSR $884B ]" STA $2F +]" STY $30 9^" STA $31 G^" STY $32 Q^" RTS W$^" ka"EXEC:   LDA #0 za" STA NPAR a" STA XPAR a" STA YPAR a" STA APAR a" JSR GETPAR a" LDA NPAR a" CMP #JMAX+1 a" BCS EXEX b" ASLA b" TAX b" LDA JUMPTB,X  b" STA GO+1 4*b" LDA JUMPTB+1,X C4b" STA GO+2 R>b" LDX XPAR aHb" LDY YPAR pRb" LDA APAR \b"GO:     JMP $FFFF fb"EXEX:   JMP $991C pb" Hq"GETPAR: JSR $A897 Rq" STX NPAR \q" JSR $A89D fq" JSR $A897 pq" STX XPAR 	zq" JSR $A89D q" JSR $A897 (q" STX YPAR 8q" JSR $A89D Hq" JSR $A897 Wq" STX APAR aq" RTS gq" &u"INVERT: LDX WINDOW 0u"INVERN: LDA WINDOW 5u" PHA 8u" STX WINDOW :u" LDA XMIND,X Du" CLC Nu" SBC XWIND,X Xu" STA CHRST bu" LDA YMIND,X lu" SEC vu" SBC YWIND,X 0u" STA CHRST+1 6u" Gu" LDA FUNCTI Qu" PHA `u" LDA #$40 qu" STA FUNCTI u"INV1:   LDX CHRST u" LDY #0 u" JSR MOVETO u" LDX CHRST u" LDY CHRST+1 u" JSR LINETO u" DEC CHRST v" BPL INV1 v" PLA v" STA FUNCTI v" PLA .v" STA WINDOW 8 v" RTS >*v" T@"READPX: LDA #$4C dJ" STA FIXAD sT" JSR PLOT }^" PHP h" LDA #$20 r" STA FIXAD |" PLP " BNE READ1 " LDY T3 " LDA BSET,Y " STX T1 " AND T1 " RTS  "READ1:  LDA #$80  ̜" RTS  ֜" 5 "CSET:   STX CBASE ? " RTS E " \ "COLOUR: STX COLOR m "PIXEX:  RTS s "  "PLOT:   TXA  &" BMI PIXEX  0" LDX WINDOW  :" CLC  D" ADC XWIND,X  N" CMP XMIND,X  X" BCS PIXEX  b" TAX  l" TYA !v" BMI PIXEX !" LDY WINDOW "!" CLC 4!" ADC YWIND,Y F!" CMP YMIND,Y V!" BCS PIXEX `!" TAY q!" JSR GETLOC !Ɲ" JMP FIXLOC !Н" !ڝ"GETLOC: TYA !" AND #1 !" STA T3 !" TYA !" AND #$FE !" TAY !" LDA PTAB,Y ! " STA T1 "*" LDA PTAB+1,Y "4" STA T2 ">" TXA )"H" LSRA 3"R" PHP ="\" CLC J"f" ADC T1 W"p" STA T1 f"z" BCC GET1 s"" INC T2 ""GET1:   PLP "" BCC GET2 "" LDA T3 "" ORA #2 "" STA T3 ""GET2:   RTS "ʞ" "Ԟ"FIXLOC: LDY #0 "ޞ" LDA (T1),Y #"FIXAD:  JSR SEARCH #" BNE GET2 *#" STX T4 7#" LDY T3 H#" BIT FUNCTI W#" BMI FIX2 f#$" BVS FIX3 w#." LDA BSET,Y #8" ORA T4 #B" JMP FUCK #L" #V"FIX2: LDA BCLR,Y #`" AND T4 #j" JMP FUCK #t" #~"FIX3: LDA BSET,Y #" EOR T4 $" AND #15 $"FUCK: TAX "$" LDA PCDE,X /$" LDY #0 @$" STA (T1),Y M$ğ" LDA T2 Z$Ο" EOR #4 g$؟" STA T2 w$" LDA COLOR $" STA (T1),Y $" RTS $ " $
"SEARCH: LDX #15 $"SEA0:   CMP PCDE,X $" BEQ SEA1 $(" DEX $2" BPL SEA0 $<"SEA1:   RTS %F" %P"DIVID1: STA DIVID -%Z" STY DIVID+1 =%d" STX DIVIS J%n" LDX #0 \%x" STX DIVIS+1 m%" JSR DIVIDE |%" LDA QUOT %" LDY QUOT+1 %" LDX REMA %" RTS %" %"DIVIDE: LDA #0 %Ƞ" STA REMA %Ҡ" STA REMA+1 %ܠ" STA QUOT  &" STA QUOT+1 &" LDX #16 %&"DIVID0: ASL DIVID 7&" ROL DIVID+1 F&" ROL REMA W&" ROL REMA+1 f&"" ROL QUOT w&," ROL QUOT+1 &6" SEC &@" LDA REMA &J" SBC DIVIS &T" TAY &^" LDA REMA+1 &h" SBC DIVIS+1 &r" BMI DIVID3 &|" STA REMA+1 &" STY REMA '" INC QUOT '" BNE DIVID3 /'" INC QUOT+1 @'"DIVID3: DEX Q'" BNE DIVID0 ['¡" RTS a'̡" u'֡"LINETO: STX X1 '" STY Y1 '" LDY #0 '" TXA '" SEC '" SBC XCOORD '" BPL LIN1 '" EOR #255 '&" CLC '0" ADC #1 ':" INY (D"LIN1:   STA T3 (N" STY XDIRE $(X" LDY #0 1(b" LDA Y1 ;(l" SEC L(v" SBC YCOORD [(" BPL LIN2 j(" EOR #255 t(" CLC (" ADC #1 (" INY ("LIN2:   STA T4 (" STY YDIRE (Ƣ" CMP T3 (Т" BCS LIN3 (ڢ" LDA T3 ("LIN3:   STA LOOPN (" TAX )" LDA #0 )" LDY T3 $)" JSR DIVID1 3)" LDA QUOT @) " STA IX Q)*" LDA QUOT+1 `)4" STA IX+1 p)>" LDX LOOPN })H" LDA #0 )R" LDY T4 )\" JSR DIVID1 )f" LDA QUOT )p" STA IY )z" LDA QUOT+1 )" STA IY+1 )" LDA #0 )" STA XFRAC *" STA YFRAC *" LDA #0 !*" STA LOOPC 8*"LINST:  CMP LOOPN H*ʣ" BEQ LINEX Y*ԣ" LDX XCOORD i*ޣ" BIT XFRAC y*" BPL LINS5 *" INX *"LINS5:  LDY YCOORD *" BIT YFRAC *" BPL LINS6 *" INY *$"LINS6: *." JSR PLOT *8" LDA XDIRE +B" BEQ POSITX +L" LDA XFRAC +V" SEC (+`" SBC IX 8+j" STA XFRAC I+t" LDA XCOORD X+~" SBC IX+1 i+" STA XCOORD y+" JMP LINS9 +"POSITX: LDA XFRAC +" CLC +" ADC IX +" STA XFRAC +Ĥ" LDA XCOORD +Τ" ADC IX+1 +ؤ" STA XCOORD +"LINS9:  LDA YDIRE ," BEQ POSITY  ," LDA YFRAC *, " SEC 7,
" SBC IY G," STA YFRAC X," LDA YCOORD g,(" SBC IY+1 x,2" STA YCOORD ,<" JMP LINS10 ,F"POSITY: LDA YFRAC ,P" CLC ,Z" ADC IY ,d" STA YFRAC ,n" LDA YCOORD ,x" ADC IY+1 ," STA YCOORD -"LINS10: INC LOOPC -" LDA LOOPC /-" JMP LINST @-"LINEX:  RTS F-" Z-"SETWIN: STX T1 d-ȥ" TAX u-ҥ" LDA XCOORD -ܥ" AND #$FE -" STA XWIND,X -" LDA YCOORD -" AND #$FE -" STA YWIND,X -" LDA T1 -" AND #$FE -"" STA XMIND,X  .," TYA .6" AND #$FE !.@" STA YMIND,X +.J" RTS 1.T" H.^"SELWIN: STX COLOR Y.h" STY FUNCTI c.r" PHA s.|" JSR SAVEC }." PLA ." STA WINDOW ." JMP LOADC ." ."INITGR: LDA #0 ." STA WINDOW .¦" STA XWIND .̦" STA YWIND .֦" LDA #80 /" STA XMIND /" LDA #50 %/" STA YMIND //" RTS 5/" M/"CLEARW: LDX WINDOW a/"CLEARS: STX T6 s/&" LDA YWIND,X }/0" TAY /:" LDA XWIND,X /D" TAX /N" JSR GETLOC /S" LDX T6 /X" LDA YMIND,X /b" SEC /l" SBC YWIND,X /v" LSRA  0" STA YDIRE 0" LDA XMIND,X 0" CLC .0" SBC XWIND,X 90" LSRA I0" STA XDIRE O0" _0Ƨ" LDA YDIRE o0Ч" BEQ CLEA2 0ڧ" LDA PCDE+15 0" BIT FUNCTI 0" BVS CLEA0 0" BMI CLEA0 0" LDA PCDE 0"CLEA0: STA T3 0"CLEA1: LDY XDIRE 0 " BEQ CLEA2 1*"CLEA3: LDA T3 14" STA (T1),Y +1>" LDA T2 51H" TAX B1R" EOR #4 O1\" STA T2 _1f" LDA COLOR p1p" STA (T1),Y }1z" STX T2 1" DEY 1" BPL CLEA3 1" LDA T1 1" CLC 1" ADC #40 1" STA T1 1" BCC CLEA4 1ʨ" INC T2 1Ԩ"CLEA4: DEC YDIRE 2ި" BNE CLEA1 2"CLEA2: RTS "2" 92"SAVEC: LDX WINDOW J2" LDA XCOORD \2" STA XSAVE,X m2" LDA YCOORD 2$" STA YSAVE,X 2." RTS 28" 2B"LOADC: LDX WINDOW 2L" LDA XSAVE,X 2V" STA XCOORD 2`" LDA YSAVE,X 2j" STA YCOORD 2t" RTS 2~" 3"SETFUN: STX FUNCTI 3" RTS $3" <3"MOVETO: STX XCOORD M3" STY YCOORD W3" RTS ]3ĩ" t3Ω"SCREEN: STX $FF15 3ة" STY $FF19 3" RTS 3" 3"DRAWTX: STX CHRST 3 " STY CHRST+1 3
" STA IY 3" JSR SAVEC 3" LDY #0 3("DRAWED: STY CHRIX 42" LDA (CHRST),Y #4<" BEQ DRAWEX 44F" JSR CHARAC D4P" LDY CHRIX N4Z" INY _4d" BNE DRAWED v4n"DRAWEX: JMP LOADC |4x" 4"DRAWCH: STY IY 4" TXA 4"CHARAC: STA DRAWL+1 4" LDA #0 4" STA DRAWL+2 4" ASL DRAWL+1 4" ROL DRAWL+2 5Ȫ" ASL DRAWL+1 5Ҫ" ROL DRAWL+2 ,5ܪ" ASL DRAWL+1 >5" ROL DRAWL+2 N5" LDA CBASE ]5" AND #$FC g5" CLC y5" ADC DRAWL+2 5" STA DRAWL+2 5""DRAW3:  LDA YCOORD 5," PHA 56" LDY #7 5@"DRAWL:  LDA $FFFF 5J" BIT IY 5T" BVC DRAW55 5^" EOR #255 6h"DRAW55: STA IX #6r" LDA XCOORD -6|" PHA :6" LDX #7 R6"DRAW5:  LDA BSET,X _6" AND IX o6" BEQ DRAW4 |6" BIT IY 6" BPL DRAW51 6«" LDA #0 6̫" STA FUNCTI 6֫" JMP DRAW51 6"DRAW4:  BIT IY 6" BPL DRAW52 6" LDA #$80 7" STA FUNCTI 7"DRAW51: JSR PLOTS 07"DRAW52: INC XCOORD :7" DEX J7&" BPL DRAW5 T70" PLA e7:" STA XCOORD v7D" INC YCOORD 7N" INC DRAWL+1 7X" BNE DRAW6 7b" INC DRAWL+2 7l"DRAW6:  DEY 7v" BPL DRAWL 7" PLA 7" STA YCOORD 7" LDA IY  8" AND #1 8" BEQ LEFRIG "8" LDA YCOORD ,8" CLC 98Ƭ" ADC #8 J8Ь" STA YCOORD T8ڬ" RTS l8"LEFRIG: LDA XCOORD v8" CLC 8" ADC #8 8" STA XCOORD 8" RTS 8" 8 "PLOTS: TXA 8*" PHA 84" TYA 8>" PHA 8H" LDX XCOORD 8R" LDY YCOORD 9\" JSR PLOT 9f" PLA 9p" TAY !9z" PLA +9" TAX 59" RTS ;9" Q9"TEXT:  STX CHRST c9" STY CHRST+1 t9" LDX XCOORD 9" LDY YCOORD 9ʭ" JSR GETLOC 9ԭ" LDY #0 9ޭ"TEXT1: LDA (CHRST),Y 9" BEQ TEXT2 9" LDX FUNCTI 9" CPX #$40 9" BCC TEXT3 :" EOR #128 #:"TEXT3: STA (T1),Y -:$" INY =:." BNE TEXT1 M:8"TEXT2: RTS S:B" g:L"BOX: STX CHRST y:V" STY CHRST+1 :`" LDA YCOORD :j" STA CHRIX :t" LDA XCOORD :~" STA T6 :" :" LDX CHRST :" LDY CHRIX :" JSR LINETO :" LDX CHRST ;" LDY CHRST+1 ";Į" JSR LINETO /;ή" LDX T6 A;خ" LDY CHRST+1 R;" JSR LINETO _;" LDX T6 o;" LDY CHRIX ; " JMP LINETO ;
" ;"PTAB: ;"WOR3072,3112,3152,3192,3232 ;("WOR3272,3312,3352,3392,3432 ;2"WOR3472,3512,3552,3592,3632 <<"WOR3672,3712,3752,3792,3832 6<F"WOR3872,3912,3952,3992,4032 Y<P"BSET:BYT 1,2,4,8,16,32,64,128 w<Z"BCLR:BYT $FE,$FD,$FB,$F7 <d"     BYT $EF,$DF,$BF,$7F <n"PCDE: <x"BYT 32 ,126,123,97 ,124,226 <"BYT 255,236,108,127,98 ,252 <"BYT 225,251,254,160 ="CBASE:BYT $D0 ="LAST: RES 1 '="*T   