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