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 ; ÿ