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
Back to previous page