(*******************************************************
*
*		CHARPLOT PROGRAM
*
*	I understand this came from a text book.  It
*  isn't all that great but it will give you some ideas
*  on banners for your programs. So look it over and
*  come up with something better and send it in.
*
*  Donated July, 1980
*
******************************************************)

PROGRAM CHARPLOT;
CONST
  WIDTH = 25;
  HEIGHT = 11;
TYPE
  DX = -WIDTH..+WIDTH;
  DY = -HEIGHT..+HEIGHT;
VAR
  PAGE : ARRAY[DY] OF PACKED ARRAY[DX] OF CHAR;
  X : DX;
  Y : DY;

PROCEDURE RECT(H,W : INTEGER; CH : CHAR);
VAR
  I,XMIN,XMAX : DX;
  J,YMIN,YMAX : DY;
BEGIN
  XMAX:=W;	YMAX:=H;
  XMIN:=-W;	YMIN:=-H;
  (* MARK TOP & BOTTOM OF RECTANGLE *)
  FOR I:=XMIN TO XMAX DO
  BEGIN
	PAGE[YMAX,I]:=CH;
	PAGE[YMIN,I]:=CH;
  END;
  (* MARK SIDES *)
  FOR J:=YMIN TO YMAX DO
  BEGIN
	PAGE[J,XMAX]:=CH;
	PAGE[J,XMIN]:=CH;
  END;
END;  (* RECT *)

PROCEDURE BLANKPAGE;
VAR
  I : DX;
  J : DY;
BEGIN
  FOR J:=-HEIGHT TO HEIGHT DO
    FOR I:=-WIDTH TO WIDTH DO PAGE[J,I]:=' ';
END;

BEGIN	(* MAIN PROGRAM *)
  BLANKPAGE;
  RECT(11,10,'*');
  RECT(5,25,'#');
  RECT(8,15,'&');
  FOR Y:=HEIGHT DOWNTO -HEIGHT DO
    BEGIN
	FOR X:=-WIDTH TO WIDTH DO WRITE(PAGE[Y,X]);
	IF Y > -HEIGHT THEN WRITELN;
    END;
END.

