home *** CD-ROM | disk | FTP | other *** search
- { [GRAPHN88.PAS of JUGPDS Vol.11] }
-
- { Graphic Routines for NEC PC-8801
- by K. Nakazato Nov. 23, 1984 }
-
- procedure gon;
- begin
- port[$31]:=$3B
- end;
-
- procedure goff;
- begin
- port[$31]:=$37
- end;
-
- procedure gcls;
- var wsp:integer;
- begin
- inline( $F3/ $ED/ $73/ wsp/ $3E/ $5C/ $21/ $00/ $00/
- $31/ $80/ $FE/ $06/ $FA/ $4F/ $ED/ $79/ $E5/
- $E5/ $E5/ $E5/ $E5/ $E5/ $E5/ $E5/ $E5/ $E5/
- $E5/ $E5/ $E5/ $E5/ $E5/ $E5/ $E5/ $E5/ $E5/
- $E5/ $E5/ $E5/ $E5/ $E5/ $E5/ $E5/ $E5/ $E5/
- $E5/ $E5/ $E5/ $E5/ $10/ $DE/ $3C/ $FE/ $5F/
- $20/ $D1/ $D3/ $5F/ $ED/ $7B/ wsp/ $FB)
- end;
-
-
- procedure dotset(x,y,c:integer);
- begin
- inline( $2A/ y/ $01/ $C8/ $00/ $54/ $5D/ $B7/ $ED/
- $42/ $30/ $F9/ $EB/ $29/ $29/ $29/ $29/ $54/
- $5D/ $29/ $29/ $19/ $11/ $00/ $C0/ $19/ $E5/
- $2A/ x/ $01/ $80/ $02/ $54/ $5D/ $B7/ $ED/
- $42/ $30/ $F9/ $EB/ $7D/ $E6/ $07/ $06/ $80/
- $B7/ $28/ $05/ $CB/ $08/ $3D/ $20/ $FB/ $CB/
- $3C/ $CB/ $1D/ $CB/ $3C/ $CB/ $1D/ $CB/ $3C/
- $CB/ $1D/ $D1/ $19/ $3A/ c/ $57/ $0E/ $5C/
- $F3/ $78/ $ED/ $79/ $CB/ $3A/ $38/ $04/ $2F/
- $A6/ $18/ $01/ $B6/ $77/ $0C/ $79/ $FE/ $5F/
- $20/ $ED/ $ED/ $79/ $FB)
- end;
-
- procedure drawline(x1,y1,x2,y2,c:integer);
- var dx,dy,accx,accy,x,y:integer; sdx,sdy:boolean;
- begin
- dx:=abs(x2-x1); dy:=abs(y2-y1);
- if (dx>0) or (dy>0) then
- while ((dx and $4000)=0) and ((dy and $4000)=0) do
- begin dx:=dx shl 1; dy:=dy shl 1 end;
- accx:=$4000; accy:=accx;
- sdx:=x2>x1; sdy:=y2>y1;
- x:=x1; y:=y1; dotset(x,y,c);
- while (x<>x2) or (y<>y2) do
- begin
- accx:=accx+dx;
- if accx<0 then
- begin
- if sdx then x:=x+1 else x:=x-1;
- accx:=accx and $7FFF
- end;
- accy:=accy+dy;
- if accy<0 then
- begin
- if sdy then y:=y+1 else y:=y-1;
- accy:=accy and $7FFF
- end;
- dotset(x,y,c)
- end
- end;
-
- { turtle }
-
- var x,y,angle,color:integer;
-
- procedure moveto(x1,y1:integer);
- begin
- if color>=0 then drawline(x+320,100-y,x1+320,100-y1,color);
- x:=x1; y:=y1
- end;
-
- procedure move(dest:integer);
- var angle1:real;
- begin
- angle1:=angle*pi/180.0;
- moveto(x+round(dest*cos(angle1)),y+round(dest*sin(angle1)))
- end;
-
- procedure turnto(i:integer);
- begin
- angle:=i mod 360
- end;
-
- procedure turn(i:integer);
- begin
- turnto(angle+i)
- end;
-
- procedure pascolor(i:integer);
- begin
- color:=i
- end;
-
- procedure cls(g:boolean);
- var addr:integer; i,attr:byte;
- begin
- if g then begin goff; gcls; gon end else clrscr
- end;
-
- procedure initturtle;
- begin
- cls(false); cls(true);
- x:=0; y:=0; angle:=0; color:=-1
- end;
-