type str80=string[80]; filename=string[14]; picstring=string[10]; regpack=record a:byte; x:byte; y:byte end; {6502 registers} const xmax=279; ymax=191; black1=0; green=1; blue1=2; white1=3; black2=4; orange=5; blue2=6; white2=7; var xleft,xright,ytop,ybottom:integer; reg:regpack; procedure graphwindow(xl,yt,xr,yb:integer); begin if (xl>=0) AND (xlxleft) then xright:=xr else xright:=xmax; if (yt>=0) AND (ytytop) then ybottom:=yb else ybottom:=YMAX end; procedure fullwindow; begin graphwindow(0,0,XMAX,YMAX) end; function inwindow(x,y:integer):boolean; begin inwindow:=(x>=xleft) AND (x <=xright) AND (y>=ytop) AND (y<=ybottom) end; procedure page1; CONST page1switch=$E054; begin inline($3a/page1switch) end; procedure page2; CONST page2switch=$E055; begin inline($3a/page2switch) end; procedure graphcolormode; CONST graphmodeswitch=$E050; hiresOnswitch=$E057; begin page2; inline($3A/graphmodeswitch/$3A/hiresonswitch) end; procedure textmode; begin end; procedure callapplerom(romaddr:integer); const routineptr=$F3D0; slotvalue=$F3C8; aregbuff=$F045; xregbuff=$F046; yregbuff=$F047; begin mem[routineptr]:=lo(romaddr); mem[routineptr+1]:=hi(romaddr); mem[aregbuff]:=reg.a; mem[xregbuff]:=reg.x; mem[yregbuff]:=reg.y; inline ($3A/slotvalue/$C6/$20/$67/$2E/$00/$77); reg.a:=mem[aregbuff]; reg.x:=mem[xregbuff]; reg.y:=mem[yregbuff] end; procedure initgraphics; CONST page2val=$0040; romsignature=$DBB3; readrom=$E081; readram=$E083; fullpageswitch=$E052; clearaddr=$F3F2; pageaddr=$F0E6; var signature:integer; begin fullwindow; inline($3A/fullpageswitch); mem[pageaddr]:=page2val; callapplerom(clearaddr); end; procedure setcolor(color:integer); const setcoloraddr=$F6EC; begin if (color>white2) or (colorxplot[2]) OR (abs(x1)>abs(x2)) AND (xplot[1]xplot[1] then begin xplot[1]:=abs(x1);yplot[1]:=abs(y1) end; if abs(x2)yplot[1] then yplot[1]:=abs(y1); if abs(y2)0 then fname:=copy(fname,1,pos('.',fname)-1); fname:=fname+'.PIC' end; procedure saveimage(picname:str80); const hires2addr=$3000; numscreenblocks=64; var f:file; begin fixpicname(picname); assign(f,picname); rewrite(f); blockwrite(f,mem[hires2addr],numscreenblocks); close(f); end; procedure loadimage(picname:str80); const hires2addr=$3000; numscreenblocks=64; var f:file; begin fixpicname(picname); assign(f,picname); reset(f); blockread(f,mem[hires2addr],numscreenblocks); close(f); end; {end of GRAF.INC}