10 ;  G.U.P.›20 ;›30 ; (THE SOURCE CODE›40 ;  FOR THE POPULAR›50 ;  GRAPHICS UTILITY›60 ;  PUBLISHED IN THE›70 ;  JUNE 1985 ISSUE OF ANTIC.)›80 ;›90 ;  BY DAREK MIHOCKA›0100 ;  (c) 1985, ANTIC PUBLISHING›0110 ;›0120 ;›0130 ;›0140 START = $4000›0150     *=  START›0160     JSR INIT›0170     .WORD RANDOM›0180     .WORD SQUARE›0190     .WORD DRAWTO›0200     .WORD LINE›0210     .WORD CIRCLE›0220     .WORD COLOR›0230     .WORD GRAPHICS›0240     .WORD C128›0250     .WORD CIRF›0260     .WORD TEXTPLOT›0270     .WORD ONEPLOT›0280     .WORD COLORN›0290     .WORD SETCOLOR›0300 ;FUTURE EXPANSION›0310     .WORD END›0320     .WORD END›0330 TITLE .SBYTE " GRAPHICS UTILITY PACKAGE. DAREK MIHOCKA"›0340 ;ZERO PAGE VARIABLES›0350 XLOC =  203›0360 YLOC =  204›0370 COL =   205›0380 OFFSET = 206›0390 ONEORMANY = 207›0400 XLOCOFFSET = 208›0410 HBYTES = 209›0420 ;THE FOLLOWING ARE TEMPORARY›0430 ;VARIABLES STORED IN FR0›0440 REG1 =  212›0450 REG2 =  214›0460 REG3 =  216›0470 SLOPE = 218›0480 MASK =  220›0490 XMAX =  221›0500 YMAX =  222›0510 XTEMP = 223›0520 YTEMP = 224›0530 IDEAL = 225›0540 RAD =   227›0550 ORAD =  228›0560 RADS =  229›0570 XC  =   230›0580 YC  =   231›0590 YTEMP2 = 232›0600 STRHI = 233›0610 STRLO = 234›0620 STRLEN = 235›0630 LCOUNT = 236›0640 ;THE SUPERFAST PLOT›0650 PLOT LDA XLOC›0660     AND #$07    ;0-7›0670     ORA OFFSET  ;8n›0680     TAX         ;=MASK OFFSET›0690     LDA YLOC›0700     AND #3›0710     TAY ›0720     LDA MASKTABLE,X›0730     AND ONEORMANY ;0 MAKES MANY›0740     STA MASK›0750     EOR #255›0760     AND COLOR,Y›0770     STA COL›0780 ;ENTER HERE FOR MORE SPEED›0790 MINIPLOT LDX YLOC›0800     CPX #192›0810     BCS PLOTFIN›0820     LDA XLOC›0830 YDIV›0840     LDY #2›0850     BEQ MEM87›0860     LSR A›0870     DEY ›0880     BEQ MEM87›0890     LSR A›0900     DEY ›0910     BEQ MEM87›0920     LSR A›0930 MEM87 TAY ›0940 MEM88›0950     LDA SCR.TABLE,X›0960     STA REG2›0970     LDA SCR.TABLE+$C0,X›0980 MEM89›0990     STA REG2+1›1000     LDA (REG2),Y›1010     AND MASK›1020     ORA COL›1030     STA (REG2),Y ;THE PLOT›1040 PLOTFIN RTS ›1050 XINT .WORD 0›1060 COLOR .WORD $FFFF,$FFFF›1070 MUL .WORD 0›1080 ;MASK FOR PLOT›1090 MASKTABLE .BYTE 0,0,0,0,0,0,0,0,15,240,15,240,15,240,15,240,$3F,$CF,$F3,$FC,$3F,$CF,$F3,$FC›1100     .BYTE $7F,$BF,$DF,$EF,$F7,$FB,$FD,$FE›1110 HLINMACH›1120     LDA XMAX    ;NO ENTRY FROM BASIC›1130     CMP XLOC    ;MAKE SURE›1140     BEQ FINI.2  ;XLOC<XMAX›1150     BCS HLIN2›1160     LDX XLOC›1170     STX XMAX›1180     STA XLOC›1190 HLIN2 LDA XMAX›1200     AND MASKFORHLIN›1210     STA XTEMP›1220     LDA XLOC›1230     AND MASKFORHLIN›1240     CMP XTEMP›1250     BEQ HLIN4.4›1260     CMP XLOC›1270     BEQ HLIN3.2›1280     ADC HBYTES›1290     STA YTEMP   ;XLOC/4+1›1300 HLIN2.2›1310     JSR PLOT›1320     INC XLOC›1330     LDA XLOC›1340     CMP XMAX›1350 FINI.2›1360     BEQ HLIN4.4›1370     CMP XTEMP›1380     BEQ HLIN4.4›1390     CMP YTEMP›1400     BNE HLIN2.2›1410 HLIN3.2›1420     LDA #0›1430     STA ONEORMANY›1440     JSR PLOT›1450     LDA XLOC›1460     CLC ›1470     ADC HBYTES›1480     STA XLOC›1490     JMP HLIN3.5›1500 HLIN3.3›1510     INC REG2›1520     BNE HLIN3.4›1530     INC REG2+1›1540 HLIN3.4›1550     LDA COL›1560     STA (REG2),Y›1570     LDA XLOC›1580     CLC ›1590     ADC HBYTES›1600     STA XLOC›1610 HLIN3.5›1620     CMP XTEMP›1630     BNE HLIN3.3›1640     LDA #$FF›1650     STA ONEORMANY›1660 HLIN4.4›1670     JSR PLOT›1680     LDA XLOC›1690     CMP XMAX›1700     BEQ FINI›1710     INC XLOC›1720     JMP HLIN4.4›1730 FINI›1740     RTS ›1750 MASKFORHLIN .BYTE 0›1760 SQUARE PLA      ;A=USR(BOX,A,B,C,D)›1770     PLA ›1780     PLA ›1790     STA XMIN›1800     PLA ›1810     PLA ›1820     STA YLOC›1830     PLA ›1840     PLA ›1850     STA XMAX›1860     PLA ›1870     PLA ›1880     STA YMAX›1890 SQRMACH›1900     LDA XMIN›1910     CMP XMAX›1920     BCC S01›1930     LDX XMAX›1940     STX XMIN›1950     STA XMAX›1960 S01 LDA YLOC›1970     CMP YMAX›1980     BCC S02›1990     LDX YMAX›2000     STX YLOC›2010     STA YMAX›2020 S02›2030     LDA XMIN›2040     STA XLOC›2050     JSR HLIN2›2060     INC YLOC›2070     LDA YLOC›2080     CMP YMAX›2090     BNE S02›2100     LDA XMIN›2110     STA XLOC›2120     JSR HLIN2›2130 END2 RTS ›2140 YMIN .WORD 0›2150 XMIN .WORD 0›2160 DRAWTO PLA      ;BASIC DR.›2170     STA NARG›2180     INC NARG›2190     INC NARG›2200     LDA TYMAX›2210     PHA ›2220     LDA #0›2230     PHA ›2240     LDA TXMAX›2250     PHA ›2260     LDA #0›2270     PHA ›2280     LDA NARG›2290     PHA ›2300 LINE›2310     PLA         ;LINE X,Y,A,B...›2320     LSR A›2330     BEQ END2›2340     CMP #1›2350     BNE LINE3›2360     JMP PLOT›2370 LINE3 STA NARG›2380     DEC NARG›2390     PLA ›2400     PLA ›2410     STA XLOC›2420     PLA ›2430     PLA ›2440     STA YLOC›2450     STA IDEAL+1›2460     JMP ARGLOOPINIT›2470 ARGLOOP›2480     LDA TXMAX›2490     STA XLOC›2500     LDA TYMAX›2510     STA YLOC›2520     STA IDEAL+1›2530 ARGLOOPINIT›2540     PLA ›2550     STA NEGSL›2560     PLA ›2570     STA XMAX›2580     STA TXMAX›2590     PLA ›2600     PLA ›2610     STA YMAX›2620     STA TYMAX›2630     JSR DRAWTOMACH›2640     DEC NARG›2650     BNE ARGLOOP›2660     RTS ›2670 NARG .WORD 0›2680 TXMAX .WORD 0›2690 TYMAX .WORD 0›2700 DRAWTOMACH LDA YMAX›2710     CMP YLOC›2720     BNE DIV1    ;SAME Y?›2730     JMP HLINMACH ;YES, DO HLIN›2740 DIV1›2750     LDA XMAX›2760     CMP XLOC›2770     BNE DIV2    ;SAME X?›2780     JMP VLINMACH ;YES, DO VLIN›2790 DIV2 BCS DIV22›2800     LDX XLOC›2810     STX XMAX›2820     STA XLOC›2830     LDA YLOC›2840     LDY YMAX›2850     STA YMAX›2860     STY YLOC›2870     STY IDEAL+1›2880     LDA XMAX›2890 DIV22 SEC ›2900     SBC XLOC›2910     STA DIV     ;DIVISOR›2920     PHA ›2930     LDA YLOC›2940     STA IDEAL+1›2950     LDA #0›2960     STA G128›2970     STA NEGSL›2980     PLA ›2990     BPL DIV.OK›3000     STA G128›3010     LSR DIV›3020 DIV.OK›3030     INC DIV›3040     LDA YMAX›3050     SEC ›3060     SBC YLOC›3070     BCS DIV23›3080     PHA ›3090     LDA #1›3100     STA NEGSL›3110     PLA ›3120     EOR #255›3130 DIV23 CLC       ;DIVIDEND›3140     ADC #1›3150     STA LOBYT›3160     LDA #0›3170     JSR DIV3    ;M=Y/X›3180     PHA ›3190     STA LOBYT›3200     LDA QUT›3210     STA SLOPE+1 ;M-HI BYTE›3220     LDA #0›3230     STA LOBYT›3240     PLA ›3250     CLC ›3260     ADC #0›3270     JSR DIV3›3280     LDA QUT›3290     STA SLOPE   ;M-LO BYTE›3300     LDA #128    ;XLOC+1›3310     STA IDEAL   ;TO ROUND OFF›3320     LDA #$E6›3330     STA INYLOC›3340     STA INYLOC2›3350     LDA G128›3360     BEQ L128›3370     CLC ›3380     ROR SLOPE+1›3390     ROR SLOPE›3400 L128›3410     LDA SLOPE+1›3420     STA MSMALL›3430     CMP #1›3440     BNE L129›3450     LDA SLOPE›3460     STA MSMALL›3470 ;IF SLOPE <=1 THEN MSMALL=0›3480 L129›3490     LDA NEGSL›3500     BEQ FIRSTPLOT›3510     LDA SLOPE›3520     EOR #255›3530     STA SLOPE›3540     LDA SLOPE+1›3550     EOR #255›3560     STA SLOPE+1›3570     LDA #$C6›3580     STA INYLOC›3590     STA INYLOC2›3600 FIRSTPLOT LDA MSMALL›3610     BEQ CHECK1›3620     JSR PLOT›3630 NEXTIDEAL CLC   ;CALCULATE›3640     LDA IDEAL   ;IDEAL POS.›3650     ADC SLOPE›3660     STA IDEAL›3670     LDA IDEAL+1›3680     ADC SLOPE+1›3690     STA IDEAL+1›3700     LDA YLOC›3710     CMP IDEAL+1›3720     BEQ CHECK1›3730 INYLOC2 INC YLOC›3740 DRAWLOOP LDA YLOC›3750     CMP IDEAL+1›3760     BEQ CHECK1  ;Y=IDEAL?›3770     CMP YMAX›3780     BEQ CHECK1  ;Y=MAX?›3790     JSR PLOT›3800 INYLOC INC YLOC›3810     JMP DRAWLOOP›3820 CHECK1›3830     JSR PLOT›3840     LDA XLOC›3850     CMP XMAX›3860     BEQ DRDONE›3870     INC XLOC›3880     JMP NEXTIDEAL›3890 DRDONE RTS ›3900 DIV .WORD 0›3910 QUT .WORD 0›3920 LOBYT .WORD 0›3930 REMDR .WORD 0›3940 NEGSL .WORD 0›3950 MSMALL .BYTE 0›3960 DIV3›3970     LDY #8›3980     SEC ›3990     SBC DIV›4000 DLOOP›4010     PHP ›4020     ROL QUT›4030     ASL LOBYT›4040     ROL A›4050     PLP ›4060     BCC WORDDD›4070     SBC DIV›4080     JMP DNEXT›4090 WORDDD ADC DIV›4100 DNEXT DEY ›4110     BNE DLOOP›4120     BCS DLAST›4130     ADC DIV›4140     CLC ›4150 DLAST ROL QUT›4160     RTS ›4170 VLINMACH LDA YLOC›4180     CMP YMAX›4190     BCC VLIN22›4200     LDY YMAX›4210     STA YMAX›4220     STY YLOC›4230 VLIN22 JSR PLOT›4240     LDA YLOC›4250     CMP YMAX›4260     BEQ VEND›4270 VLINLOOP INC YLOC›4280     JSR PLOT›4290     LDA YLOC›4300     CMP YMAX›4310     BNE VLINLOOP›4320 VEND RTS ›4330 CIRCLE›4340     PLA         ;A=USR(CIRCLE,X,Y,R)›4350     PLA ›4360     PLA ›4370     STA XC›4380     PLA ›4390     PLA ›4400     STA YC›4410     PLA ›4420     STA IDEAL›4430     STA IDEAL+1›4440     PLA ›4450     STA RAD›4460     BEQ VEND›4470 CIRMACH›4480     STA DIV     ;DIV=RAD›4490     LDA #128›4500     STA LOBYT›4510     LDA #0›4520     JSR DIV3›4530     PHA ›4540     LDA #0›4550     STA LOBYT›4560     LDA QUT›4570     STA SLOPE+1 ;HI BYTE OF /›4580     PLA ›4590     JSR DIV3›4600     LDA QUT›4610     STA SLOPE   ;LO BYTE›4620     LDA #255›4630     STA LCOUNT›4640 YLOOP›4650     LDA IDEAL›4660     CLC ›4670     ADC SLOPE›4680     STA IDEAL›4690     LDA IDEAL+1›4700     ADC SLOPE+1›4710     STA IDEAL+1›4720     TAX ›4730     BIT IDEAL+1›4740     BMI VEND    ;FINISHED?›4750     INC LCOUNT›4760     LDA YC›4770     SEC ›4780     SBC LCOUNT›4790     STA YLOC›4800     LDA CIRWORD,X›4810     STA MUL›4820     LDA #0›4830     STA LOBYT›4840     LDX #8›4850 MULOOP LSR MUL›4860     BCC NOADD›4870     CLC ›4880     ADC RAD›4890 NOADD ROR A›4900     ROR LOBYT›4910     DEX ›4920     BNE MULOOP›4930 CIRCLESTRETCH.1 NOP ›4940 CIRCLESTRETCH.2 NOP ›4950     STA RADS›4960     LDA CIRF›4970     BEQ RING›4980     LDA XC›4990     CLC ›5000     ADC RADS›5010     STA XMAX›5020     LDA XC›5030     SEC ›5040     SBC RADS›5050     STA XLOC›5060     JSR HLIN2   ;UPPER LINE›5070     LDA YC›5080     CLC ›5090     ADC LCOUNT›5100     STA YLOC›5110     LDA XC›5120     SEC ›5130     SBC RADS›5140     STA XLOC›5150     JSR HLIN2   ;LOWER LINE›5160     JMP YLOOP›5170 RING›5180     LDA LCOUNT›5190     BNE RING2›5200     LDA YC›5210     STA YLOC›5220     LDA XC›5230     CLC ›5240     ADC RADS›5250     STA XLOC›5260     JSR PLOT›5270     LDA XC›5280     SEC ›5290     SBC RADS›5300     STA XLOC›5310     JSR PLOT›5320 RING4 LDA RADS›5330     STA ORAD›5340     JMP YLOOP›5350 RING2›5360     LDA YC›5370     CLC ›5380     ADC LCOUNT›5390     STA YLOC›5400     JSR RING3›5410     LDA YC›5420     SEC ›5430     SBC LCOUNT›5440     STA YLOC›5450     JSR RING3›5460     JMP RING4›5470 RING3 LDA XC›5480     SEC         ;DOES THE LEFT›5490     SBC ORAD    ;SIDE OF›5500     STA XLOC    ;THE RING›5510     LDA XC›5520     SEC ›5530     SBC RADS›5540     STA XMAX›5550     JSR HLINMACH›5560     LDA XC›5570     CLC         ;DOES THE RIGHT›5580     ADC ORAD    ;SIDE OF›5590     STA XMAX    ;THE RING›5600     LDA XC›5610     CLC ›5620     ADC RADS›5630     STA XLOC›5640     JSR HLINMACH ;DRAWIT›5650     RTS ›5660 CIRF .WORD 1›5670 NUMDIV .BYTE 0›5680 ;DATA FOR OFFSET TO BIT MASK›5690 TABOFFSET .BYTE 0,0,0,16,24,16,24,16,24,8,8,8,0,0,24,16›5700 ;DATA FOR CIRCLE RATIO›5710 TABRATIO .BYTE 255,0,1,255,255,255,255,255,255,1,1,1,255,255,1,0›5720 GRAPHICS›5730     PLA         ;BASIC GR. (0-63)›5740     PLA ›5750     PLA ›5760     STA GRMODE›5770     AND #$0F›5780     TAX ›5790     LDA TABOFFSET,X›5800     STA OFFSET›5810     LDA #$EA›5820     STA CIRCLESTRETCH.1›5830     STA CIRCLESTRETCH.2 ;NOP'S›5840     LDA TABRATIO,X›5850     BEQ NOSTRETCH›5860     CMP #255›5870     BEQ GR8›5880     CMP #2›5890     BEQ STRETCH2›5900 STRETCH1 LDA #$4A›5910     STA CIRCLESTRETCH.1›5920     JMP NOSTRETCH›5930 STRETCH2 LDA #$4A›5940     STA CIRCLESTRETCH.2›5950     JMP STRETCH1›5960 GR8 LDA #$0A›5970     JMP STRETCH1+2›5980 NOSTRETCH›5990     LDA BYTAB,X›6000     STA BYTES›6010     LDA TABHLIN,X›6020     STA MASKFORHLIN›6030     LDA DTAB,X›6040     STA YDIV+1  ;£ OF ROT'S›6050     STA NUMDIV›6060     LDA HBTAB,X›6070     STA HBYTES  ;£OF PIXELS/BYTE›6080     TXA ›6090     CMP #12›6100     BPL OK12›6110     LDA GRMODE›6120     JSR GRAPHICSMACH ;EXIT TO OS›6130     LDA GRMODE›6140     AND #$0F›6150     CMP #9›6160     BMI CALC›6170     LDA #4›6180     STA 703     ;SUPPRESS GR.0›6190     BNE CALC›6200 OK12 LDA GRMODE›6210     AND #$30›6220     STA TEMP›6230     LDA GRMODE›6240     AND #3      ;SUB 12›6250     TAX ›6260     PHA         ;SAVE X›6270     LDA GTAB,X›6280     ORA TEMP›6290     JSR GRAPHICSMACH ;DO GR.›6300     PLA         ;GET X›6310     TAX ›6320     LDA ATAB,X›6330     STA ANTICMOD+1›6340     LDX GRMODE›6350     LDY #202›6360 ANTICLOOP LDA (REG2),Y›6370     AND #$BF    ;LDA FROM DL›6380     CMP ANTICMOD ;NEW MODE?›6390     BNE NEXTANTIC›6400     LDA (REG2),Y›6410     AND #$F0›6420     ORA ANTICMOD+1 ;CHANGE MODE›6430     STA (REG2),Y›6440 NEXTANTIC DEY ›6450     BNE ANTICLOOP›6460 CALC›6470     LDX #8›6480 CALC.COL›6490     LDA SETCOLOR,X›6500     STA 704,X›6510     DEX ›6520     BPL CALC.COL›6530     LDA 88›6540     CLC ›6550     ADC XLOCOFFSET›6560     STA IDEAL›6570     STA SCR.TABLE›6580     LDA 89›6590     STA IDEAL+1›6600     STA SCR.TABLE+$C0›6610     LDY #1›6620 CALCLOOP CLC ›6630     LDA IDEAL›6640     ADC BYTES›6650     STA IDEAL›6660     STA SCR.TABLE,Y›6670     LDA IDEAL+1›6680     ADC #0›6690     STA IDEAL+1›6700     STA SCR.TABLE+$C0,Y›6710     INY ›6720     CPY #192›6730     BNE CALCLOOP›6740     RTS ›6750 ;IMITATE GR.12-15 WITH 0 OR 8›6760 GTAB .BYTE 0,0,8,8›6770 ANTICMOD .WORD 0›6780 ATAB .BYTE 4,5,12,14›6790 GRMODE .WORD 0›6800 BYTAB .BYTE 40,20,20,10,10,20,20,40,40,40,40,40,40,40,20,40›6810 ;BYTES PER SCREEN›6820 TABHLIN .BYTE 255,255,255,$FC,$F8,$FC,$F8,$FC,$F8,$FE,$FE,$FE,255,255,$F8,$FC›6830 BYTES .WORD 0›6840 C128›6850 TDLO =  544     ;TIMER 5›6860     PLA ›6870     PLA ›6880     STA TDLO+1  ;TIME DELAY HI›6890     PLA ›6900     STA TDLO    ;TIME DELAY LO›6910     PLA ›6920     PLA ›6930     TAX         ;COLOR REGISTER›6940     LDA #255›6950     STA 558›6960 CLOOP›6970     LDA 54283›6980     CLC ›6990     ADC 20›7000     ASL A›7010     STA 54282›7020     STA 53266,X›7030     LDA 558›7040     BNE CLOOP›7050     RTS ›7060 GRAPHICSMACH PHA ›7070     LDX #$60›7080     LDA #255&CCLOSE›7090     STA ICCOM,X›7100     JSR CIO›7110     LDX #$60›7120     LDA #255&COPEN›7130     STA ICCOM,X›7140     LDA #SCREENNAME&255›7150     STA ICBADR,X›7160     LDA #SCREENNAME/256›7170     STA ICBADR+1,X›7180     PLA ›7190     STA ICAUX2,X›7200     AND #$F0›7210     EOR #$1C›7220     STA ICAUX1,X›7230     JSR CIO›7240     LDA 560›7250     STA REG2›7260     LDA 561›7270     STA REG2+1›7280     LDY #7›7290     LDA (REG2),Y›7300     STA ANTICMOD›7310     RTS ›7320 CIO =   $E456›7330 ICCOM = $0342›7340 ICBADR = $0344›7350 ICAUX1 = $034A›7360 ICAUX2 = $034B›7370 COPEN = 3›7380 CCLOSE = 12›7390 SCREENNAME .BYTE "S:"›7400 CIRWORD›7410 ;THE CIRCLE DATA. HERE GOES:›7420     .BYTE 153,153,153,153,153,153,153,153,153,153,153,152,152,152,152,152,152,152,151,151›7430     .BYTE 151,151,151,150,150,150,150,150,149,149,149,148,148,148,147,147,147,146,146,146›7440     .BYTE 145,145,144,144,144,143,143,142,142,141,141,140,140,139,138,138,137,137,136,135›7450     .BYTE 135,134,134,133,132,131,131,130,129,128,128,127,126,125,124,123,123,122,121,120›7460     .BYTE 119,118,117,116,115,114,113,111,110,109,108,107,105,104,103,102,100,99,97,96›7470     .BYTE 94,93,91,90,88,86,84,82,81,79,76,74,72,70,67,65,62,60,57,53›7480     .BYTE 50,46,43,38,33,27,19,0›7490 TEXTPLOT›7500     PLA ›7510     PLA ›7520     PLA ›7530     STA XLOC›7540     PLA ›7550     PLA ›7560     STA YLOC›7570     PLA ›7580     STA STRHI›7590     PLA ›7600     STA STRLO›7610     PLA ›7620     PLA ›7630     STA STRLEN›7640     DEC STRLEN›7650     LDY #0›7660 TEXT.1›7670     LDA STRLO›7680     STA REG2›7690     LDA STRHI›7700     STA REG2+1›7710     LDA (REG2),Y›7720     STY YTEMP›7730     PHA         ; STORE LETTER›7740     AND #$60›7750     LSR A›7760     LSR A›7770     LSR A›7780     LSR A›7790     LSR A›7800     TAY         ;CONVERSION›7810     LDA CONV,Y›7820     STA XTEMP›7830     PLA ›7840     AND #$9F›7850     ORA XTEMP   ;DONE!›7860     STA SLOPE›7870     LDA #0›7880     STA SLOPE+1›7890     CLC ›7900     ROL SLOPE›7910     ROL SLOPE+1›7920     ROL SLOPE›7930     ROL SLOPE+1›7940     ROL SLOPE›7950     ROL SLOPE+1›7960     LDA SLOPE›7970     STA REG2›7980     LDA SLOPE+1›7990     CLC ›8000     ADC #57344/256›8010     STA REG2+1  ;REG2=CHS+8*ASC›8020     LDY #7›8030 TEXT.2 STY YTEMP2›8040     TYA ›8050     CLC ›8060     ADC YLOC›8070     TAX ›8080     LDA XLOC›8090     LSR A›8100     LSR A›8110     CLC ›8120 MEM88.1›8130     ADC SCR.TABLE,X›8140     STA REG1›8150     LDA SCR.TABLE+$C0,X›8160     ADC #0›8170 MEM89.1›8180     STA REG1+1  ;REG1=SCR.BYTE›8190     LDA XLOC›8200     AND #$03›8210     TAX ›8220     CLC ›8230     LDY YTEMP2›8240     LDA (REG2),Y›8250     STA REG3›8260     LDA #0›8270     STA REG3+1›8280 TEXT.3›8290     ROR REG3›8300     ROR REG3+1›8310     DEX ›8320     BPL TEXT.3›8330     LDY #0›8340     LDA TEXT.CLEAR›8350     AND (REG1),Y›8360     EOR REG3›8370     STA (REG1),Y›8380     INY ›8390     LDA TEXT.CLEAR›8400     AND (REG1),Y›8410     EOR REG3+1›8420     STA (REG1),Y›8430     LDY YTEMP2›8440     DEY ›8450     BPL TEXT.2›8460     INC XLOC›8470     INC XLOC›8480     INC XLOC›8490     INC XLOC›8500     LDA XLOC›8510     CMP #152›8520     BCC TEXT.5›8530     SEC ›8540     SBC #152›8550     STA XLOC›8560     LDA YLOC›8570     CLC ›8580     ADC #8›8590     STA YLOC›8600     CMP #184›8610     BCC TEXT.5›8620 TEXT.5›8630     LDY YTEMP›8640     CPY STRLEN›8650     BEQ TEXT.4›8660     INY ›8670     JMP TEXT.1›8680 TEXT.4›8690     RTS ›8700 TEXT.CLEAR .WORD 255›8710 CONV .BYTE $40,$00,$20,$60›8720 G128 .WORD 0›8730 DTAB .BYTE 0,0,0,2,3,2,3,2,3,1,1,1,0,0,3,2›8740 ;LOG2 OF HBTAB›8750 HBTAB .BYTE 1,1,1,4,8,4,8,4,8,2,2,2,1,1,8,4›8760 ;PIXELS PER BYTE›8770 TEMP .WORD 0›8780 ONEPLOT›8790     PLA         ;BASIC ENTRY - PLOT›8800     PLA ›8810     PLA ›8820     STA XLOC›8830     PLA ›8840     PLA ›8850     STA YLOC›8860     JMP PLOT›8870 COLORN›8880     PLA         ;A=USR(SET,A1,A2,A3,A4)›8890     LDX #4›8900     LDY #0›8910 COLOR.2›8920     PLA ›8930     PLA ›8940     STA COLOR,Y›8950     INY ›8960     DEX ›8970     BNE COLOR.2›8980     RTS ›8990 RANDOM›9000     PLA ›9010     LDX #3›9020 RND.LOOP›9030     LDA 53770›9040     STA COLOR,X›9050     DEX ›9060     BPL RND.LOOP›9070     RTS ›9080 INIT›9090     LDA 88›9100     STA REG1›9110     LDA 89›9120     STA REG1+1›9130     LDY #39›9140 INITLOOP›9150     LDA TITLE,Y›9160     STA (REG1),Y›9170     DEY ›9180     BPL INITLOOP›9190     LDA #255›9200     STA ONEORMANY›9210     LDA #$24›9220     STA 710›9230     RTS ›9240 SETCOLOR›9250     *=  *+9›9260 SCR.TABLE›9270     *=  *+384›9280 END›