Program Test;
{ Dieses Programm demonstriert die Verwendung eigener Assemblerroutinen
  innerhalb von MINI-Comp. Die Assembler-Routinen liegen in SCROLL.ASM
  vor. Der Linker linkt die Routinen automatisch ein, indem er davon
  ausgeht, daß das Objectfile unter dem Namen der ersten als EXTERNAL
  definierten Procedure /Function im gleichen Pfad wie das gerade
  übersetzte Programm steht.
  Die Assemblerroutinen sind kurz gehalten und nehmen keine Rücksicht
  auf das Aussehen. So müßte eigentlich immer auf den VBEAM gewartet
  werden und die Breite eines Zeichens in Pixeln müßte auch über Text-
  Length (GFX) bestimmt werden
}

Var Big,Color,Mode,CLI  : Boolean;
    Win             : Integer;
    c               : Char;
    ScrText,s       : String;

Procedure Menu;
Begin
 c:='5';
 Repeat
  Writeln;
  Writeln(' 1 = Farbe ändern ');
  Writeln(' 2 = Text ändern ');
  Writeln(' 3 = Mode ändern ');
  Writeln(' 4 = Font ändern ');
  Writeln(' 5 = Ende ');
  Writeln;
  Write(' Wahl :');
  c:=ReadKey;
  If CLI
     then Readln(s);
 Until (c>='1') and (c<'6')
End;

Procedure Scroll(Txt : String);
External;

Function OpenWindow : Integer;
External;

Procedure SetColor(Var Col : Boolean);
External;

Procedure CloseWindow(Win : Integer);
External;

Procedure SetMode(Var Mode : Boolean);
External;

Procedure SetFont(var Font : Boolean);
External;

Procedure GetText;
Begin
 Write('Scrolltext (80 Zeichen):');
 Readln(ScrText)
End;

Begin
 If FromWb
    then Begin
          CLI:=False
         End
    else CLI:=True;
 Color:=False;
 Big:=False;
 Mode:=False;
 ScrText:='Dies ist eine Demo für externe Routinen in Mini-Comp . Die'+
          ' Scrollroutine ist extern in SCROLL.ASM abgelegt ';
 Writeln('ScrollMe wurde erstellt mit MiniComp 0.9');
 Writeln('(C) Markus Rathmann');
 Win:=OpenWindow;
 SetMode(Mode);
 SetColor(Color);
 Scroll(ScrText);
 Repeat
  Menu;
  Case c Of
   '1' : SetColor(Color);
   '2' : GetText;
   '3' : SetMode(Mode);
   '4' : SetFont(Big);
   else ScrText:='Das war die kurze Demo für die externe Routinen. Ich hoff'+
                 'e es hat alles geklappt. Shutting down 5  4  3  2  1 '+
                 '... Bye        ';
  End;
  Scroll(ScrText);
 Until c='5';
 CloseWindow(Win)
End.
