(* OPREFS OberonOpts mda  OLinkOpts smdia *)
(* ------------------------------------------------------------------------
  :Program.       InitPrinter.mod
  :Contents.      Initializes the printer without sending a linefeed
  :Author.        Franz Schwarz
  :Copyright.     Public Domain (freely distributable, non-© software)
  :Language.      Oberon
  :Translator.    Amiga Oberon 3.00
  :History.       v1.0 fSchwarz Apr 16 1993
  :Bugs.          none konwon
  :Address.       Mühlenstraße 2, D-78591 Durchhausen, Germany / R.F.A.
  :Address.       uucp: Franz.Schwarz@mil.ka.sub.org; Fido: 2:241/7506.18
------------------------------------------------------------------------ *)

MODULE InitPrinter;

IMPORT
  e: Exec, pr: Printer, o: OberonLib;

CONST
  version * = "$VER: Oberon-InitPrinter 1.0 (16.4.93) Public Domain";

VAR
  req: pr.IOPrtCmdReqPtr;
  port: e.MsgPortPtr;

BEGIN
  IF version[0] = ' ' THEN END;
  o.Result := 20;
  IF e.exec.libNode.version >= 37 THEN
    port := e.CreateMsgPort();
    IF port # NIL THEN 
      req := e.CreateIORequest (port, SIZE (pr.IOPrtCmdReq));
      IF req # NIL THEN
        IF e.OpenDevice ("printer.device", 0, req, LONGSET{}) = 0 THEN
          req.command := pr.prtCommand;
          req.prtCommand := pr.aRIS;
          IF e.DoIO (req) = 0 THEN
            req.prtCommand := pr.aRIN;
            IF e.DoIO (req) = 0 THEN            
              o.Result := 0;
            END;              
          END;  
          e.CloseDevice (req);
        END;  
        e.DeleteIORequest (req);    
      END;  
      e.DeleteMsgPort (port);
    END;  
  END;  
END InitPrinter.



  
    



