PROCEDURE CIR(X,Y,R:INTEGER);
  BEGIN
    RESULT.AX:=$4D00;
    RESULT.DI:=X;
    RESULT.BP:=Y;
    RESULT.BX:=R;
    INTR(16,RESULT);
  END;

PROCEDURE GMODE;
  BEGIN
    RESULT.AX:=$4000;
    INTR(16,RESULT);
  END;

PROCEDURE TMODE;
  BEGIN
    RESULT.AX:=$4100;
    INTR(16,RESULT);
  END;

PROCEDURE CLRG;
  BEGIN
    RESULT.AX:=$4200;
    INTR(16,RESULT);
  END;

PROCEDURE GPAGE(X:INTEGER);
  BEGIN
    RESULT.AX:=$4300+X;
    INTR(16,RESULT);
  END;

PROCEDURE DISP(X:INTEGER);
  BEGIN
    RESULT.AX:=$4500+X;
    INTR(16,RESULT);
  END;

procedure arc(x,y,r,q:integer);
  begin
    result.ax:=$4c00+q;
    result.di:=x;
    result.bp:=y;
    result.bx:=r;
    intr(16,result);
  end;

procedure blkfil(x,y,w,h:integer);
  begin
    result.ax:=$4a00;
    result.di:=x;
    result.bp:=y;
    result.cx:=w;
    result.bx:=h;
    intr(16,result);
  end;

procedure dline(x,y:integer);
  begin
    result.ax:=$4900;
    result.di:=x;
    result.bp:=y;
    intr(16,result);
  end;

procedure fill(x,y:integer);
  begin
    result.ax:=$4e00;
    result.di:=x;
    result.bp:=y;
    intr(16,result);
  end;

procedure getpt(x,y,i:integer);
  begin
    result.ax:=$4700;
    result.di:=x;
    result.bp:=y;
    intr(16,result);
    i:=result.ax and 255;
  end;

procedure level(x:integer);
  begin
    result.ax:=$4400+x;
    intr(16,result);
  end;

procedure move(x,y:integer);
  begin
    result.ax:=$4800;
    result.di:=x;
    result.bp:=y;
    intr(16,result);
  end;

procedure invert;
  begin
    level(0);
  end;

procedure normal;
  begin
    level(1)
  end;

procedure plot(x,y:integer);
  begin
    result.ax:=$4600;
    result.di:=x;
    result.bp:=y;
    intr(16,result);
  end;

procedure char(x,y,z:integer);
  begin
    result.ax:=$4b00+z;
    result.di:=x;
    result.bp:=y;
    intr(16,result);
  end;

procedure text(x,y:integer;s:str);
  var
        XX,YY,ZZ:INTEGER;

  begin
    xx:=x;
    yy:=y;
    for i:=1 to length(s) do
    begin
      j:=0;
      repeat
        j:=j+1
      until chr(j)=s[i];
      char(xx,yy,j);
      xx:=xx+9;
    end;
  end;

procedure box(x,y,x2,y2:integer);
  begin
    move(x,y);
    dline(x2,y);
    dline(x2,y2);
    dline(x,y2);
    dline(x,y);
  end;
                                                                                                                                                                                                        