home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 01 / grdlagen / beispiel.mod < prev    next >
Encoding:
Text File  |  1989-11-02  |  4.2 KB  |  141 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    BEISPIEL.MOD                        *)
  3. (*   Beispielprogramm zur Demonstration der Arbeitsweise  *)
  4. (*   des Screenmoduls SCREEN.MOD unter Fitted Modula 1.0  *)
  5. (*           (c) 1990  Ulrich Mök & toolbox               *)
  6. (* ------------------------------------------------------ *)
  7.  
  8. MODULE Beispiel;
  9. (*$T-,$R-*)
  10.  
  11. IMPORT InOut;
  12. IMPORT Screen;
  13. FROM Strings IMPORT Length;
  14.  
  15. VAR
  16.   s     : Screen.String;
  17.   c     : CHAR;
  18.   x, y,
  19.   i, j  : CARDINAL;
  20.   d     : BOOLEAN;
  21.  
  22.  
  23. PROCEDURE Meldung( s: Screen.String );
  24.   VAR     i : CARDINAL;
  25. BEGIN
  26.   i := ( 80 - Length( s )) DIV 2;
  27.                              (* mittige Ausgabe berechnen *)
  28.   Screen.TextAttr( 14,1 );
  29.   Screen.DispStr( i, 25, s );
  30.                                                (* Ausgabe *)
  31.   Screen.TextAttr( 10,0 );
  32.   InOut.Read( c );
  33.                                                (* Stopper *)
  34.   Screen.ClrScr;
  35. END Meldung;
  36.  
  37.  
  38. PROCEDURE WrStr( s: Screen.String );
  39. BEGIN
  40.   InOut.WriteString( s );  InOut.WriteLn;
  41. END WrStr;
  42.  
  43.  
  44. BEGIN
  45.   Screen.ClrScr;
  46.  
  47.   InOut.WriteLn; InOut.WriteLn; InOut.WriteLn;
  48.   InOut.WriteLn;
  49.   WrStr("Hier werden einige Proceduren des Moduls Screen");
  50.   WrStr("demonstriert, die zum Teil über das Bios reali-");
  51.   WrStr("siert wurden. Ein weiterer  Teil greift direkt ");
  52.   WrStr("auf den Bildschirmspeicher zu, um größtmögliche");
  53.   WrStr("Geschwindigkeit zu erreichen. Hierbei kann es ");
  54.   WrStr("bei alten CGA-Karten zu Video-Retrace kommen. In");
  55.   WrStr("dem Fall müßte ebenfalls mittels Bios-Calls ge-");
  56.   WrStr("schrieben werden, um das Retrace zu vermeiden.");
  57.   InOut.WriteLn; InOut.WriteLn;
  58.   WrStr("Über das Bios wurde Bildschirmpositionierung,");
  59.   WrStr("-positionsabfrage, -löschen, Scrolling und Ein-");
  60.   WrStr("stellen der Cursorgröße, sowie vollständiges ");
  61.   WrStr("Ausblenden desselben implementiert.");
  62.   InOut.WriteLn; InOut.WriteLn; InOut.WriteLn;
  63.   InOut.WriteLn;
  64.   InOut.WriteLn;
  65.   Meldung(" Zum Demo mit Return ! ");
  66.  
  67.  
  68.   FOR i:=1 TO 24 DO
  69.     Screen.GotoXY( 10,i );
  70.     Screen.RepChar( '*', 20, i );
  71.   END;
  72.  
  73.   Screen.WrStr( 40, 5, "Hier werden bunte Sterne mit");
  74.   Screen.WrStr( 40, 7, "20 Zeichen Länge über Bios");
  75.   Screen.WrStr( 40, 9, "10H ausgegeben.");
  76.   Meldung(" Weiter mit Return ! ");
  77.  
  78.   FOR i:=1 TO 25 DO
  79.     FOR j:=1 TO 80 DO
  80.       InOut.Write( '&' );                (* Screen füllen *)
  81.     END;
  82.   END;
  83.  
  84.   Screen.GotoXY( 10, 10 );
  85.   InOut.WriteString( 'Dies ist ein Test !' );
  86.   Screen.TextAttr( 15,0 );
  87.   Screen.WrStr( 12, 20,
  88.    "Der Bildschirm wurde mit InOut-Routinen beschrieben!");
  89.   Meldung(" Weiter mit Return !");
  90.                          (* Meldung setzt Attribut zurück *)
  91.  
  92.   FOR j:=1 TO 25 DO
  93.     FOR i:=1 TO 80 DO
  94.       Screen.WrChr( i,j, '#' );          (* Screen füllen *)
  95.     END;
  96.   END;
  97.  
  98.   Screen.WrStr( 10,10, ' Dies ist ein Test !');
  99.   Screen.TextAttr( 15,1 );
  100.   Screen.WrStr( 15, 20,
  101.          " Hier wurde der Bildschirm direkt beschrieben !");
  102.   Meldung(" Weiter mit Return !");
  103.                          (* Meldung setzt Attribut zurück *)
  104.  
  105.   Screen.OpenWindow( 10,10,75,12,  "", Screen.doppelt );
  106.  
  107.   Screen.Scroll( 10,10,75,12, 6, 0, 70H );
  108.   Screen.TextAttr( 9,0 ); (* 15,1 *)
  109.   Screen.DispStr( 15, 22,
  110.            "Bildschirmbereich löschen und invers setzen !");
  111.   Screen.TextAttr( 9,0 );
  112.   Screen.DispStr( 23, 23, "Geben Sie eine Textzeile ein !");
  113.   Screen.GotoXY( 1,1 );
  114.   InOut.ReadLine( s ); InOut.WriteLn;
  115.   Screen.ClrScr;
  116.  
  117.   Screen.OpenWindow( 1,1,80,25, "", Screen.einfach );
  118.  
  119.   Screen.TextAttr( 0,3 );
  120.   Screen.WrStr( 15, 22,
  121.              " Bitte gewünschte Cursorposition angeben ! ");
  122.   Screen.GotoXY( 15, 24 );
  123.   InOut.WriteString("Spalte : ");     InOut.ReadCard( x );
  124.   InOut.WriteString("   Zeile : ");   InOut.ReadCard( y );
  125.   Screen.TextAttr( 9,0 ); (* 7,1 *)
  126.   Screen.WrStr( 15, 24, " Cursor ist jetzt an Position :");
  127.   Screen.GotoXY( 46, 24 );
  128.   InOut.WriteCard( x, 3 );
  129.   InOut.WriteCard( y, 3 );
  130.   Screen.CursorBlock;
  131.   Screen.TextAttr( 14,1 );
  132.   Screen.DispStr( 30, 25, " Ende mit Return !" );
  133.   Screen.TextAttr( 7,0 );
  134.   Screen.GotoXY( x,y );
  135.   InOut.Read( c );
  136.   Screen.CursorNorm;
  137.   Screen.RemoveAllWindows;
  138.   Screen.ClrScr;
  139.  
  140. END Beispiel.
  141.