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