{ **********  Window Management Services Demonstration   ********** }
{ **********           Version 1.0   8/6/84              ********** }

{ (c) Copyright 1984  Timothy E. Ide  All commercial rights reserved }

procedure DemoBorder;
begin
  wi_show(BorderPrompt);
  wi_clear(BorderParam);
  wi_show(BorderParam);
  wi_readln(BorderParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(BorderParam,BordLen,BordStr);
  wi_border(DemoId,BordStr);
  DemoStatus;
  WaitForAny;
end;

procedure DemoClear;
begin
  wi_show(ClearPrompt);
  wi_clear(ClearParam);
  wi_show(ClearParam);
  wi_readln(ClearParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_clear(DemoId);
  DemoStatus;
  WaitForAny;
end;

procedure DemoClose;
begin
  wi_show(ClosePrompt);
  wi_clear(CloseParam);
  wi_show(CloseParam);
  wi_readln(CloseParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_close(DemoId);
  DemoStatus;
  WaitForAny;
end;

procedure DemoClreol;
begin
  wi_show(ClreolPrompt);
  wi_clear(ClreolParam);
  wi_show(ClreolParam);
  wi_readln(ClreolParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_clreol(DemoId);
  DemoStatus;
  WaitForAny;
end;

procedure DemoDelln;
begin
  wi_show(DellnPrompt);
  wi_clear(DellnParam);
  wi_show(DellnParam);
  wi_readln(DellnParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(DellnParam,NumLen,NumStr);
  DemoY := NumVal(NumStr);
  wi_delln(DemoId,DemoY);
  DemoStatus;
  WaitForAny;
end;

procedure DemoErase;
begin
  wi_show(ErasePrompt);
  wi_clear(EraseParam);
  wi_show(EraseParam);
  wi_readln(EraseParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_erase(DemoId);
  DemoStatus;
  WaitForAny;
end;

procedure DemoGet;
var
  GetStatus,
  GetEoln,
  GetEow : boolean;
begin
  wi_show(GetPrompt);
  wi_clear(GetParam);
  wi_show(GetParam);
  wi_readln(GetParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(GetParam,NumLen,NumStr);
  InpLen := NumVal(NumStr);
  InpStr := '?';
  wi_get(DemoId,InpLen,InpStr);
  if (wi_status) then begin
    GetStatus := wi_status;
    GetEoln := wi_eoln;
    GetEow := wi_eow;
    wi_write(GetParam,InpStr);
    wi_status := GetStatus;
    wi_eoln := GetEoln;
    wi_eow := GetEow;
  end;
  DemoStatus;
  WaitForAny;
end;

procedure DemoGetln;
var
  GetlnStatus,
  GetlnEoln,
  GetlnEow : boolean;
begin
  wi_show(GetlnPrompt);
  wi_clear(GetlnParam);
  wi_show(GetlnParam);
  wi_readln(GetlnParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(GetlnParam,NumLen,NumStr);
  InpLen := NumVal(NumStr);
  InpStr := '?';
  wi_getln(DemoId,InpLen,InpStr);
  if (wi_status) then begin
    GetlnStatus := wi_status;
    GetlnEoln := wi_eoln;
    GetlnEow := wi_eow;
    wi_write(GetlnParam,InpStr);
    wi_status := GetlnStatus;
    wi_eoln := GetlnEoln;
    wi_eow := GetlnEow;
  end;
  DemoStatus;
  WaitForAny;
end;

procedure DemoGetorg;
begin
  wi_show(GetorgPrompt);
  wi_clear(GetorgParam);
  wi_show(GetorgParam);
  wi_readln(GetorgParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  DemoX := 0;
  DemoY := 0;
  wi_getorg(DemoId,DemoX,DemoY);
  DemoStatus;
  if (DemoX > 0) and (DemoY > 0) then begin
    wi_writeln(GetorgParam,StrVal(DemoX));
    wi_writeln(GetorgParam,StrVal(DemoY));
  end;
  WaitForAny;
end;

procedure DemoGetpos;
begin
  wi_show(GetposPrompt);
  wi_clear(GetposParam);
  wi_show(GetposParam);
  wi_readln(GetposParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  DemoX := 0;
  DemoY := 0;
  wi_getpos(DemoId,DemoX,DemoY);
  DemoStatus;
  if (DemoX > 0) and (DemoY > 0) then begin
    wi_writeln(GetposParam,StrVal(DemoX));
    wi_writeln(GetposParam,StrVal(DemoY));
  end;
  WaitForAny;
end;

procedure DemoHome;
begin
  wi_show(HomePrompt);
  wi_clear(HomeParam);
  wi_show(HomeParam);
  wi_readln(HomeParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_home(DemoId);
  DemoStatus;
  WaitForAny;
end;

procedure DemoInsln;
begin
  wi_show(InslnPrompt);
  wi_clear(InslnParam);
  wi_show(InslnParam);
  wi_readln(InslnParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(InslnParam,NumLen,NumStr);
  DemoY := NumVal(NumStr);
  wi_Insln(DemoId,DemoY);
  DemoStatus;
  WaitForAny;
end;

procedure DemoOpen;
begin
  wi_show(OpenPrompt);
  wi_clear(OpenParam);
  wi_show(OpenParam);
  wi_readln(OpenParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(OpenParam,NumLen,NumStr);
  DemoX := NumVal(NumStr);
  wi_readln(OpenParam,NumLen,NumStr);
  DemoY := NumVal(NumStr);
  wi_readln(OpenParam,NumLen,NumStr);
  DemoW := NumVal(NumStr);
  wi_readln(OpenParam,NumLen,NumStr);
  DemoH := NumVal(NumStr);
  wi_readln(OpenParam,BordLen,BordStr);
  wi_open(DemoId,DemoX,DemoY,DemoW,DemoH,BordStr);
  DemoStatus;
  WaitForAny;
end;

procedure DemoPut;
begin
  wi_show(PutPrompt);
  wi_clear(PutParam);
  wi_show(PutParam);
  wi_readln(PutParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(PutParam,PutParamW,OutStr);
  wi_put(DemoId,OutStr);
  DemoStatus;
  WaitForAny;
end;

procedure DemoPutln;
begin
  wi_show(PutlnPrompt);
  wi_clear(PutlnParam);
  wi_show(PutlnParam);
  wi_readln(PutlnParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(PutlnParam,PutlnParamW,OutStr);
  wi_putln(DemoId,OutStr);
  DemoStatus;
  WaitForAny;
end;

procedure DemoRead;
var
  ReadStatus,
  ReadEoln,
  ReadEow : boolean;
begin
  wi_show(ReadPrompt);
  wi_clear(ReadParam);
  wi_show(ReadParam);
  wi_readln(ReadParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(ReadParam,NumLen,NumStr);
  InpLen := NumVal(NumStr);
  InpStr := '?';
  wi_show(DemoId);
  wi_read(DemoId,InpLen,InpStr);
  if (wi_status) then begin
    ReadStatus := wi_status;
    ReadEoln := wi_eoln;
    ReadEow := wi_eow;
    wi_write(ReadParam,InpStr);
    wi_status := ReadStatus;
    wi_eoln := ReadEoln;
    wi_eow := ReadEow;
  end;
  DemoStatus;
  WaitForAny;
end;

procedure DemoReadln;
var
  ReadlnStatus,
  ReadlnEoln,
  ReadlnEow : boolean;
begin
  wi_show(ReadlnPrompt);
  wi_clear(ReadlnParam);
  wi_show(ReadlnParam);
  wi_readln(ReadlnParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(ReadlnParam,NumLen,NumStr);
  InpLen := NumVal(NumStr);
  InpStr := '?';
  wi_show(DemoId);
  wi_readln(DemoId,InpLen,InpStr);
  if (wi_status) then begin
    ReadlnStatus := wi_status;
    ReadlnEoln := wi_eoln;
    ReadlnEow := wi_eow;
    wi_write(ReadlnParam,InpStr);
    wi_status := ReadlnStatus;
    wi_eoln := ReadlnEoln;
    wi_eow := ReadlnEow;
  end;
  DemoStatus;
  WaitForAny;
end;

procedure DemoSetorg;
begin
  wi_show(SetorgPrompt);
  wi_clear(SetorgParam);
  wi_show(SetorgParam);
  wi_readln(SetorgParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(SetorgParam,NumLen,NumStr);
  DemoX := NumVal(NumStr);
  wi_readln(SetorgParam,NumLen,NumStr);
  DemoY := NumVal(NumStr);
  wi_setorg(DemoId,DemoX,DemoY);
  DemoStatus;
  WaitForAny;
end;

procedure DemoSetpos;
begin
  wi_show(SetposPrompt);
  wi_clear(SetposParam);
  wi_show(SetposParam);
  wi_readln(SetposParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(SetposParam,NumLen,NumStr);
  DemoX := NumVal(NumStr);
  wi_readln(SetposParam,NumLen,NumStr);
  DemoY := NumVal(NumStr);
  wi_setpos(DemoId,DemoX,DemoY);
  DemoStatus;
  WaitForAny;
end;

procedure DemoShow;
begin
  wi_show(ShowPrompt);
  wi_clear(ShowParam);
  wi_show(ShowParam);
  wi_readln(ShowParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_show(DemoId);
  DemoStatus;
  WaitForAny;
end;

procedure DemoWrite;
begin
  wi_show(WritePrompt);
  wi_clear(WriteParam);
  wi_show(WriteParam);
  wi_readln(WriteParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(WriteParam,WriteParamW,OutStr);
  wi_show(DemoId);
  if wi_status then
    wi_write(DemoId,OutStr);
  DemoStatus;
  WaitForAny;
end;

procedure DemoWriteln;
begin
  wi_show(WritelnPrompt);
  wi_clear(WritelnParam);
  wi_show(WritelnParam);
  wi_readln(WritelnParam,NumLen,NumStr);
  DemoId := NumVal(NumStr);
  wi_readln(WritelnParam,WriteParamW,OutStr);
  wi_show(DemoId);
  if wi_status then
    wi_writeln(DemoId,OutStr);
  DemoStatus;
  WaitForAny;
end;
