Program ConsoleTest;

{
   Ce programme montre et teste les routines d'E/S de la console.
   Il utilise un petit ensemble de routines que j'ai écrites pour
   rendre un peu plus simple le portage des programmes en Turbo
   Pascal de ce que pourraient le faire les E/S d'écran.
}

{$I "Include:Exec/Ports.i"}
{$I "Include:Intuition/Intuition.i" pour les fonctions et les structures
                                                             de fenêtres }
{$I "Include:Utils/CRT.i" pour ReadKey, WriteString, AttachConsole, etc. }

var
    w  : WindowPtr;

Function OpenTheWindow() : Boolean;
var
    nw : NewWindowPtr;
begin
    new(nw);
    with nw^ do begin
   LeftEdge := 20;
   TopEdge := 50;
   Width := 300;
   Height := 100;

   DetailPen := -1;
   BlockPen  := -1;
   IDCMPFlags := 0;
   Flags := WINDOWSIZING + WINDOWDRAG + WINDOWDEPTH +
       SMART_REFRESH + ACTIVATE;
   FirstGadget := nil;
   CheckMark := nil;
   Title := "Press q to Quit";
   Screen := Nil;
   BitMap := nil;
   MinWidth := 50;
   MaxWidth := -1;
   MinHeight := 20;
   MaxHeight := -1;
   WType := WBENCHSCREEN_f;
    end;

    w := OpenWindow(nw);
    dispose(nw);
    OpenTheWindow := w <> nil;
end;

var
    ConBlock : Address;
    ch : Array [0..1] of Char;
begin
    if OpenTheWindow() then begin
   ConBlock := AttachConsole(w);
   if ConBlock <> Nil then begin
       ch[1] := '\0'; { Seulement pour faciliter l'écriture }
       repeat
      ch[0] := ReadKey(ConBlock);
      WriteString(ConBlock, Adr(ch));
       until ch[0] = 'q';
       DetachConsole(ConBlock);
   end else
       Writeln('Could not open console device');
   CloseWindow(w);
   end else
   writeln('Could not open the window');
end.
