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