home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* BEISPIEL.MOD *)
- (* Beispielprogramm zur Demonstration der Arbeitsweise *)
- (* des Screenmoduls SCREEN.MOD unter Fitted Modula 1.0 *)
- (* (c) 1990 Ulrich Mök & toolbox *)
- (* ------------------------------------------------------ *)
-
- MODULE Beispiel;
- (*$T-,$R-*)
-
- IMPORT InOut;
- IMPORT Screen;
- FROM Strings IMPORT Length;
-
- VAR
- s : Screen.String;
- c : CHAR;
- x, y,
- i, j : CARDINAL;
- d : BOOLEAN;
-
-
- PROCEDURE Meldung( s: Screen.String );
- VAR i : CARDINAL;
- BEGIN
- i := ( 80 - Length( s )) DIV 2;
- (* mittige Ausgabe berechnen *)
- Screen.TextAttr( 14,1 );
- Screen.DispStr( i, 25, s );
- (* Ausgabe *)
- Screen.TextAttr( 10,0 );
- InOut.Read( c );
- (* Stopper *)
- Screen.ClrScr;
- END Meldung;
-
-
- PROCEDURE WrStr( s: Screen.String );
- BEGIN
- InOut.WriteString( s ); InOut.WriteLn;
- END WrStr;
-
-
- BEGIN
- Screen.ClrScr;
-
- InOut.WriteLn; InOut.WriteLn; InOut.WriteLn;
- InOut.WriteLn;
- WrStr("Hier werden einige Proceduren des Moduls Screen");
- WrStr("demonstriert, die zum Teil über das Bios reali-");
- WrStr("siert wurden. Ein weiterer Teil greift direkt ");
- WrStr("auf den Bildschirmspeicher zu, um größtmögliche");
- WrStr("Geschwindigkeit zu erreichen. Hierbei kann es ");
- WrStr("bei alten CGA-Karten zu Video-Retrace kommen. In");
- WrStr("dem Fall müßte ebenfalls mittels Bios-Calls ge-");
- WrStr("schrieben werden, um das Retrace zu vermeiden.");
- InOut.WriteLn; InOut.WriteLn;
- WrStr("Über das Bios wurde Bildschirmpositionierung,");
- WrStr("-positionsabfrage, -löschen, Scrolling und Ein-");
- WrStr("stellen der Cursorgröße, sowie vollständiges ");
- WrStr("Ausblenden desselben implementiert.");
- InOut.WriteLn; InOut.WriteLn; InOut.WriteLn;
- InOut.WriteLn;
- InOut.WriteLn;
- Meldung(" Zum Demo mit Return ! ");
-
-
- FOR i:=1 TO 24 DO
- Screen.GotoXY( 10,i );
- Screen.RepChar( '*', 20, i );
- END;
-
- Screen.WrStr( 40, 5, "Hier werden bunte Sterne mit");
- Screen.WrStr( 40, 7, "20 Zeichen Länge über Bios");
- Screen.WrStr( 40, 9, "10H ausgegeben.");
- Meldung(" Weiter mit Return ! ");
-
- FOR i:=1 TO 25 DO
- FOR j:=1 TO 80 DO
- InOut.Write( '&' ); (* Screen füllen *)
- END;
- END;
-
- Screen.GotoXY( 10, 10 );
- InOut.WriteString( 'Dies ist ein Test !' );
- Screen.TextAttr( 15,0 );
- Screen.WrStr( 12, 20,
- "Der Bildschirm wurde mit InOut-Routinen beschrieben!");
- Meldung(" Weiter mit Return !");
- (* Meldung setzt Attribut zurück *)
-
- FOR j:=1 TO 25 DO
- FOR i:=1 TO 80 DO
- Screen.WrChr( i,j, '#' ); (* Screen füllen *)
- END;
- END;
-
- Screen.WrStr( 10,10, ' Dies ist ein Test !');
- Screen.TextAttr( 15,1 );
- Screen.WrStr( 15, 20,
- " Hier wurde der Bildschirm direkt beschrieben !");
- Meldung(" Weiter mit Return !");
- (* Meldung setzt Attribut zurück *)
-
- Screen.OpenWindow( 10,10,75,12, "", Screen.doppelt );
-
- Screen.Scroll( 10,10,75,12, 6, 0, 70H );
- Screen.TextAttr( 9,0 ); (* 15,1 *)
- Screen.DispStr( 15, 22,
- "Bildschirmbereich löschen und invers setzen !");
- Screen.TextAttr( 9,0 );
- Screen.DispStr( 23, 23, "Geben Sie eine Textzeile ein !");
- Screen.GotoXY( 1,1 );
- InOut.ReadLine( s ); InOut.WriteLn;
- Screen.ClrScr;
-
- Screen.OpenWindow( 1,1,80,25, "", Screen.einfach );
-
- Screen.TextAttr( 0,3 );
- Screen.WrStr( 15, 22,
- " Bitte gewünschte Cursorposition angeben ! ");
- Screen.GotoXY( 15, 24 );
- InOut.WriteString("Spalte : "); InOut.ReadCard( x );
- InOut.WriteString(" Zeile : "); InOut.ReadCard( y );
- Screen.TextAttr( 9,0 ); (* 7,1 *)
- Screen.WrStr( 15, 24, " Cursor ist jetzt an Position :");
- Screen.GotoXY( 46, 24 );
- InOut.WriteCard( x, 3 );
- InOut.WriteCard( y, 3 );
- Screen.CursorBlock;
- Screen.TextAttr( 14,1 );
- Screen.DispStr( 30, 25, " Ende mit Return !" );
- Screen.TextAttr( 7,0 );
- Screen.GotoXY( x,y );
- InOut.Read( c );
- Screen.CursorNorm;
- Screen.RemoveAllWindows;
- Screen.ClrScr;
-
- END Beispiel.