home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / modula2 / compiler / m2mmdemo / isinst / module / printdem.mod < prev   
Encoding:
Text File  |  1989-02-27  |  7.0 KB  |  218 lines

  1.  
  2. MODULE PrintDemo;
  3.   (*---------------------------------------------------------------------*)
  4.   (*                         P R I N T - D E M O                         *)
  5.   (*                           M 2 P R O L I B                           *)
  6.   (*  Copyright (C) 1987    Bühlmann Computer Software   CH-8636 WALD    *)
  7.   (*                     -- All Rights Reserved --                       *)
  8.   (*---------------------------------------------------------------------*)
  9.   (*  Author: X. Bühlmann                                                *)
  10.   (*                                                                     *)
  11.   (*  Version 1.0      Date: 30/12/87                                    *)
  12.   (*  Version 1.1      Date: 28/09/88       Angepasst auf M2Prolib V3.03 *)
  13.   (*---------------------------------------------------------------------*)
  14.   FROM SYSTEM IMPORT WORD, ADR, ADDRESS, SIZE;
  15.   IMPORT Screen, ScreenNum, Input, InputNum, Ascii;
  16.   FROM Keyboard IMPORT Key;
  17.   FROM PrintSupport IMPORT aKeyTable, KeyTable, TableFile, ReadTable;
  18.   FROM PrintGround IMPORT SetPrinterCode, PrinterInstall, aPrinterCode;
  19.   FROM PrintOut IMPORT PrnError, ePrnError, PrinterReset, ConnectPRN, 
  20.       InterfaceTp, Interface, Print, PrintLn, PrintString, PrintCard, 
  21.       PrintInt, PrintLongInt, PrintReal, KeyConvert;
  22.   (*
  23.     *)
  24.   VAR
  25.     ProgramHalt : BOOLEAN;
  26.   PROCEDURE Handler(error : ePrnError): BOOLEAN;
  27.     VAR
  28.       l : 
  29.         RECORD
  30.           chr : CARDINAL;
  31.         END;
  32.     BEGIN
  33.       CASE error OF
  34.       | outOfPaper :
  35.         Screen.ScrPutString(' Drucker hat kein Papier ');
  36.         Screen.ScrWriteLn();
  37.       | notBusy :
  38.         Screen.ScrPutString(' Drucker nicht bereit ');
  39.         Screen.ScrWriteLn();
  40.       ELSE
  41.         Screen.ScrPutString(
  42.             ' Drucker auf OFF oder anderer Fehler am Drucker ');
  43.         Screen.ScrWriteLn();
  44.       END;
  45.       Screen.ScrPutString(' Wie Sie sehen geht auch das !');
  46.       Screen.ScrWriteLn();
  47.       Screen.ScrPutString(' Esc abbrechen  / Return weiter ');
  48.       Screen.ScrWriteLn();
  49.       LOOP
  50.         l.chr := Key();
  51.         CASE l.chr OF
  52.         | ORD(Ascii.cCR) :
  53.           ProgramHalt := FALSE;
  54.           RETURN TRUE;
  55.         | ORD(Ascii.cESC) :
  56.           ProgramHalt := TRUE;
  57.           RETURN FALSE;
  58.         ELSE
  59.         END;
  60.       END;
  61.     END Handler;
  62.   PROCEDURE Copyright();
  63.     BEGIN
  64.       Screen.ClearScrBound();
  65.       Screen.ScrWriteLn();
  66.       Screen.ScrPutString(
  67.           '               P R I N T - D E M O    Version 1.1   ');
  68.       Screen.ScrWriteLn();
  69.       Screen.ScrPutString(
  70.           '                           1 9 8 8                 ');
  71.       Screen.ScrWriteLn();
  72.       Screen.ScrWriteLn();
  73.       Screen.ScrPutString(
  74.           '                         Copyright by           ');
  75.       Screen.ScrWriteLn();
  76.       Screen.ScrPutString(
  77.           '                 (c) Bühlmann Computer Software    ');
  78.       Screen.ScrWriteLn();
  79.       Screen.ScrPutString(
  80.           '                         CH-8636 Wald              ');
  81.       Screen.ScrWriteLn();
  82.     END Copyright;
  83.   PROCEDURE charOK(VAR chr : CHAR): BOOLEAN;
  84.     BEGIN
  85.       RETURN TRUE;
  86.     END charOK;
  87.   PROCEDURE charOKPort(VAR chr : CHAR): BOOLEAN;
  88.     BEGIN
  89.       chr := CAP(chr);
  90.       RETURN (chr='P') OR (chr='R') OR (chr='N') OR (chr='L') OR (chr='P'
  91.           ) OR (chr='T') OR (chr='1') OR (chr='2') OR (chr='3');
  92.     END charOKPort;
  93.   VAR
  94.     Port : ARRAY [0..3] OF CHAR;
  95.     Code : ARRAY [0..40] OF CHAR;
  96.   BEGIN
  97.     ProgramHalt := FALSE;
  98.     Copyright();
  99.     PrnError := Handler;
  100.     (**)
  101.     Port := 'PRN';
  102.     Code := 'Φ27W1';
  103.     Input.CharOK := charOKPort;
  104.     Screen.ScrPutString('Drucker-Port [PRN/LPT2/LPT3] : ');
  105.     Input.ReadString(Port);
  106.     Screen.ScrWriteLn();
  107.     Screen.ScrWriteLn();
  108.     Input.CharOK := charOK;
  109.     (**)
  110.     PrinterInstall(Port);
  111.     ConnectPRN(Interface, TRUE);
  112.     TableFile := 'DEMO.PRN';
  113.     KeyConvert(TRUE);
  114.     IF ProgramHalt THEN
  115.       RETURN;
  116.     END;
  117.     (**)
  118.     PrintString('               P R I N T - D E M O    Version 1.1   ');
  119.     PrintLn();
  120.     PrintString('                             1 9 8 8');
  121.     PrintLn();
  122.     PrintLn();
  123.     PrintString('                           Copyright by');
  124.     PrintLn();
  125.     PrintString('                 (c) Bühlmann Computer Software');
  126.     PrintLn();
  127.     PrintString('                           CH-8636 Wald');
  128.     PrintLn();
  129.     PrintLn();
  130.     PrintLn();
  131.     IF ProgramHalt THEN
  132.       RETURN;
  133.     END;
  134.     (**)
  135.     Screen.ScrPutString('Sie können auch Zahlen formatiert ausgeben ');
  136.     Screen.ScrWriteLn();
  137.     Screen.ScrPutString('Drücken Sie eine Taste');
  138.     Screen.ScrWriteLn();
  139.     Screen.ScrWriteLn();
  140.     REPEAT
  141.     UNTIL Key()#0;
  142.     (**)
  143.     PrintString('Cardinal-Zahl : ');
  144.     PrintCard(27382, 15);
  145.     PrintLn();
  146.     PrintString('Integer-Zahl  : ');
  147.     PrintInt(-1238, 15);
  148.     PrintLn();
  149.     PrintString('Longint-Zahl  : ');
  150.     PrintLongInt(32478239, 15);
  151.     PrintLn();
  152.     PrintString('Real-Zahl     : ');
  153.     PrintReal(32483123.2173, 15, 2);
  154.     PrintLn();
  155.     PrintLn();
  156.     IF ProgramHalt THEN
  157.       RETURN;
  158.     END;
  159.     (**)
  160.     Screen.ScrPutString(
  161.         'Falls der Drucker nicht bereit ist, führt das selbst-');
  162.     Screen.ScrWriteLn();
  163.     Screen.ScrPutString('verständlich nicht zu einer DOS-Fehler-Meldung ');
  164.     Screen.ScrWriteLn();
  165.     Screen.ScrPutString(
  166.         'Stellen Sie den Drucker auf OFF und drücken Sie eine Taste');
  167.     Screen.ScrWriteLn();
  168.     Screen.ScrWriteLn();
  169.     REPEAT
  170.     UNTIL Key()#0;
  171.     ConnectPRN(Interface, TRUE);
  172.     IF ProgramHalt THEN
  173.       RETURN;
  174.     END;
  175.     (**)
  176.     Screen.ScrWriteLn();
  177.     Screen.ScrPutString(
  178.         'Sie können aber auch Steuerzeichen auf eine sehr einfache ');
  179.     Screen.ScrWriteLn();
  180.     Screen.ScrPutString('Art an den Drucker senden. ');
  181.     Screen.ScrWriteLn();
  182.     Screen.ScrPutString(
  183.         'Geben Sie zum Beispiel folgenden Code ein: Φ27W1 (ESC W 1)');
  184.     Screen.ScrWriteLn();
  185.     Screen.ScrPutString(
  186.         'Dieser Code bewirkt beim Epson-Drucker das Einschalten der  ');
  187.     Screen.ScrWriteLn();
  188.     Screen.ScrPutString(
  189.         'Zeichenvergrösserung. Uebrigens das Zeichen Φ können Sie mit ');
  190.     Screen.ScrWriteLn();
  191.     Screen.ScrPutString('mit ALT 232 eingeben ');
  192.     Screen.ScrWriteLn();
  193.     Input.ReadString(Code);
  194.     Screen.ScrWriteLn();
  195.     Screen.ScrWriteLn();
  196.     SetPrinterCode(Code);
  197.     PrintString('Wie Sie sehen, geht auch das !');
  198.     PrintLn();
  199.     IF ProgramHalt THEN
  200.       RETURN;
  201.     END;
  202.     (**)
  203.     Screen.ScrPutString(
  204.         'Nun können Sie die Zeichenvergrösserung wieder zurück stellen.');
  205.     Screen.ScrWriteLn();
  206.     Screen.ScrPutString('Dazu geben Sie den Code Φ27W0 ein (ESC W 0)');
  207.     Screen.ScrWriteLn();
  208.     Input.ReadString(Code);
  209.     Screen.ScrWriteLn();
  210.     SetPrinterCode(Code);
  211.     PrintString('Nun Schreibt der Drucker wieder normal !');
  212.     PrintLn();
  213.     IF ProgramHalt THEN
  214.       RETURN;
  215.     END;
  216.     (**)
  217.   END PrintDemo.
  218.