{ Level 1 graphics routine specs added } %end %of %list @16_C00000%integerarray FRAME(0:32767) @16_C20000%byte ENABLE REG @16_C20001%byte COLOUR REG @16_C20002%short ORIGIN REG %constinteger YPIXELS=512, XPIXELS= 688 %constinteger BLACK=0,RED=1,GREEN=2,BLUE=4 %constinteger YELLOW=red+green,MAGENTA=red+blue,CYAN=blue+green %constinteger WHITE=red+green+blue %routine SET OFFSET(%integer x,y) origin reg = (x)>>4&63+(y-1+ypixels)<<6 %end %routine SET COLOUR(%integer c) colour reg = c %end %routine SETUP GRAPHICS !@16_480000%short MAPREG4 ! mapreg4 = 16_40; !Map reg 4 -> 004xxxxx enable reg = 15 set offset(0,0) set colour(white) %end @16_11B4%routine PLOT(%integer x,y) @16_1170%routine LINE(%integer x1,y1,x2,y2) @16_11A8%routine FILL(%integer x1,y1,x2,y2) ! The following routines are special, since the primitive version require ! that all the parameters are held in registers, which the compiler won't do. %routine paint(%integer%name s, %record(*)%name ll, tr, %integer st, be) *move.l d5,-(sp) *move.l d0,d4 *move.l d1,d5 *move.l (a1)+,d0 *move.l (a1),d1 *move.l (a2)+,d2 *move.l (a2),d3 *move.l #16_11a0,a1 *jsr (a1) *move.l (sp)+,d5 %end %routine triangle(%record(*)%name p1,p2,p3) *move.l d5,-(sp) *move.l (a0)+,d0 *move.l (a0),d1 *move.l (a1)+,d2 *move.l (a1),d3 *move.l (a2)+,d4 *move.l (a2),d5 *move.l #16_1178,a0 *jsr (a0) *move.l (sp)+,d5 %end %routine trapeze(%record(*)%name s1,s2) *move.l d5,-(sp) *move.l (a0)+,d0 *move.l (a0)+,d1 *move.l (a0),d2 *move.l (a1)+,d3 *move.l (a1)+,d4 *move.l (a1),d5 *move.l #16_1174,a0 *jsr (a0) *move.l (sp)+,d5 %end %list