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