home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Antic Magazine 1985 October
/
Antic_Magazine_1985_10_Antic.atr
/
gup.asm
< prev
next >
Wrap
Assembly Source File
|
2023-02-26
|
19KB
|
1 lines
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¢