0100 ; GRAFMAC.LIB›0110 ;›0120 GRAFMAC›0130 ;›0140 .IF .NOT .DEF CIOMAC›0150 .ERROR "must include CIOMAC.LIB"›0160 .ENDIF ›0170 ;›0180 ; GRAPHICS MACROS›0190 ;›0200 ; REQUIRES CIOMAC.LIB›0210 ;›0220 ;›0230 ;›0240 ; MACRO: GRAPHICS›0250 ;›0260 ; FORM: GRAPHICS mode›0270 ;›0280 ; enters a graphics mode as in›0290 ; BASIC›0300 ;›0310 .MACRO GRAPHICS ›0320 .IF %1>31›0330 LDY #0›0340 @LOOP LDA PCOLR0,Y›0350 PHA ›0360 INY ›0370 CPY #9›0380 BNE @LOOP›0390 .ENDIF ›0400 @LA %1›0410 AND #$F0›0420 EOR #$10 ;COMP S IN AUX1›0430 ORA #$0C›0440 STA TEMP›0450 @LA %1›0460 AND #$0F›0470 STA TEMP+1›0480 .IF %1>0›0490 CLOSE 6›0500 OPEN 6,TEMP,TEMP+1,"S:"›0510 .ELSE ›0520 CLOSE 0›0530 OPEN 0,12,0,"E:"›0540 .ENDIF ›0550 .IF %1>31›0560 LDY #0›0570 @LOOP2 PLA ›0580 STA PCOLR0,Y›0590 INY ›0600 CPY #9›0610 BNE @LOOP2›0620 .ENDIF ›0630 .ENDM ›0640 ;›0650 .MACRO GR ›0660 GRAPHICS %1›0670 .ENDM ›0680 ;›0690 ;›0700 ; MACRO: COLOR›0710 ;›0720 ; FORM: COLOR data›0730 ;›0740 ; selects color register as in›0750 ; BASIC color statement›0760 ;›0770 .MACRO COLOR ›0780 @LA %1›0790 STA COLOR›0800 .ENDM ›0810 ;›0820 ;›0830 ;›0840 ; MACRO: PLOT›0850 ;›0860 ; FORM: PLOT X,Y›0870 ;›0880 ; same as BASIC plot›0890 ;›0900 .MACRO PLOT ›0910 .IF %1<320›0920 LDA # <%1›0930 STA COLCRS›0940 LDA # >%1›0950 STA COLCRS+1›0960 .ELSE ›0970 LDA %1›0980 STA COLCRS›0990 LDA %1+1›1000 STA COLCRS+1›1010 .ENDIF ›1020 @LA %2›1030 STA ROWCRS›1040 LDA COLOR›1050 STA ATACHR›1060 BPUT 6,ATACHR,1›1070 .ENDM ›1080 ;›1090 ;›1100 ;›1110 ; MACRO: DRAWTO›1120 ;›1130 ; FORM: DRAWTO X,Y›1140 ;›1150 ; same as basic drawto›1160 ;›1170 .MACRO DRAWTO ›1180 .IF %1<320›1190 LDA # <%1›1200 STA COLCRS›1210 LDA # >%1›1220 STA COLCRS+1›1230 .ELSE ›1240 LDA %1›1250 STA COLCRS›1260 LDA %1+1›1270 STA COLCRS+1›1280 .ENDIF ›1290 @LA %2›1300 STA ROWCRS›1310 LDA COLOR›1320 STA ATACHR›1330 LDX #6›1340 LDA ICAX1,X›1350 STA TEMP›1360 LDA ICAX2,X›1370 STA TEMP+1›1380 XIO $11,6,TEMP,TEMP+1,"S:"›1390 .ENDM ›1400 ;›1410 .MACRO DR ›1420 DRAWTO %1,%2›1430 .ENDM ›1440 ;›1450 ;›1460 ; MACRO: SETCOLOR›1470 ;›1480 ; FORM: SETCOLOR color,hue,lum›1490 ;›1500 ; same as BASIC setcolor command›1510 ;›1520 .MACRO SETCOLOR ›1530 @LA %1›1540 TAY ›1550 @LA %2›1560 ASL A›1570 ASL A›1580 ASL A›1590 ASL A›1600 .IF %3<16›1610 ORA #%3›1620 .ELSE ›1630 ORA %3›1640 .ENDIF ›1650 TAX ›1660 LDA DINDEX›1670 CMP #9›1680 BEQ @B1›1690 INY ›1700 INY ›1710 INY ›1720 INY ›1730 @B1 TXA ›1740 STA PCOLR0,Y›1750 .ENDM ›1760 ;›1770 .MACRO SE ›1780 SETCOLOR %1,%2,%3›1790 .ENDM ›1800 ;›1810 ;›1820 ; MACRO: TPOS›1830 ;›1840 ; FORM: TPOS X,Y›1850 ;›1860 ; position for text window›1870 ;›1880 .MACRO TPOS ›1890 .IF %2<20 .OR %2>23›1900 .ERROR "TPOS cursor out of range"›1910 .ENDIF ›1920 @LA #%1›1930 STA TXTCOL›1940 @LA #%2›1950 STA TXTROW›1960 .ENDM ›1970 ;›1980 ;›1990 ;›2000 ; MACRO: LOCATE›2010 ;›2020 ; FORM: LOCATE X,Y›2030 ;›2040 ; same as BASIC LOCATE except›2050 ; color data is put in›2060 ; ATACHR›2070 ;›2080 .MACRO LOCATE ›2090 .IF %1<320›2100 LDA # <%1›2110 STA COLCRS›2120 LDA # >%1›2130 STA COLCRS+1›2140 .ELSE ›2150 LDA %1›2160 STA COLCRS›2170 LDA %1+1›2180 STA COLCRS+1›2190 .ENDIF ›2200 @LA %2›2210 STA ROWCRS›2220 BGET 6,ATACHR,1›2230 .ENDM ›2240 ;›2250 ;›2260 ;›