home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0931.lha / Modules / PrinterDevice / PrinterDevice.mod / PrinterDevice.mod
Text File  |  1993-12-20  |  3KB  |  164 lines

  1. IMPLEMENTATION MODULE PrinterDevice;
  2.  
  3. (* Die Anleitungen und ErlΣuterungen befinden sich im Definitionsfile  *)
  4. (* Compiler M2Amiga V4.097d                  ⌐ 1991 by Andre Wiethoff  *)
  5.  
  6.  
  7. (*$ StackChk:=FALSE *)
  8. (*$ RangeChk:=FALSE *)
  9. (*$ OverflowChk:=FALSE *)
  10. (*$ NilChk:=FALSE *)
  11. (*$ CaseChk:=FALSE *)
  12. (*$ ReturnChk:=FALSE *)
  13. (*$ Volatile:=FALSE *)
  14. (*$ LargeVars:=FALSE *)
  15.  
  16.  
  17. FROM SYSTEM     IMPORT LONGSET,ADR;
  18. FROM GraphicsD  IMPORT RastPortPtr,ViewPortPtr,ColorMapPtr,ViewModeSet;
  19. FROM ExecD      IMPORT IOStdReqPtr,MsgPort,TaskPtr,write;
  20. FROM ExecL      IMPORT OpenDevice,CloseDevice,FindTask,AddPort,RemPort,DoIO;
  21. FROM Printer    IMPORT IOPrtCmdReqPtr,IODRPReq,SpecialSet,rawWrite,
  22.                prtCommand,dumpRPort,Error,nel,query;
  23. FROM String     IMPORT Length;
  24.  
  25.  
  26. VAR
  27.   task        : TaskPtr;
  28.   msg        : MsgPort;
  29.   ioPrtCmd    : IOPrtCmdReqPtr;
  30.   ioNorm    : IOStdReqPtr;
  31.   all        : IODRPReq;
  32.   opened    : BOOLEAN;
  33.  
  34.  
  35. PROCEDURE OpenPrinter():BOOLEAN;
  36. BEGIN
  37.   IF NOT opened THEN
  38.     opened:=TRUE;
  39.     all.device:=NIL;
  40.     task:=FindTask(0);
  41.     msg.sigTask:=task;
  42.     AddPort(ADR(msg));
  43.     all.message.replyPort:=ADR(msg);
  44.     OpenDevice(ADR("printer.device"),0,ADR(all),LONGSET{});
  45.     IF all.device=NIL THEN
  46.       opened:=FALSE;
  47.       RemPort(ADR(msg));
  48.     ELSE
  49.       ioPrtCmd:=ADR(all);
  50.       ioNorm:=ADR(all);
  51.     END;
  52.   END;
  53.   RETURN opened;
  54. END OpenPrinter;
  55.  
  56.  
  57.  
  58. PROCEDURE SendCommand(befehl       : CARDINAL;
  59.               p0,p1,p2,p3 : SHORTCARD) : Error;
  60. BEGIN
  61.   IF opened THEN
  62.     ioPrtCmd^.command:=prtCommand;
  63.     ioPrtCmd^.prtCommand:=befehl; ioPrtCmd^.parm0:=p0; ioPrtCmd^.parm1:=p1;
  64.     ioPrtCmd^.parm2:=p2; ioPrtCmd^.parm3:=p3;
  65.     DoIO(ioPrtCmd);
  66.   END;
  67.   RETURN all.error;
  68. END SendCommand;
  69.  
  70.  
  71.  
  72. PROCEDURE PrintText(text : ARRAY OF CHAR) : Error;
  73. BEGIN
  74.   IF opened THEN
  75.     ioNorm^.command:=write;
  76.     ioNorm^.data:=ADR(text); ioNorm^.length:=Length(text); ioNorm^.actual:=0;
  77.     ioNorm^.offset:=0;
  78.     DoIO(ioNorm);
  79.   END;
  80.   RETURN all.error;
  81. END PrintText;
  82.  
  83.  
  84.  
  85. PROCEDURE PrintRawText(text : ARRAY OF CHAR) : Error;
  86. BEGIN
  87.   IF opened THEN
  88.     ioNorm^.command:=rawWrite;
  89.     ioNorm^.data:=ADR(text); ioNorm^.length:=Length(text); ioNorm^.actual:=0;
  90.     ioNorm^.offset:=0;
  91.     DoIO(ioNorm);
  92.   END;
  93.   RETURN all.error;
  94. END PrintRawText;
  95.  
  96.  
  97.  
  98. PROCEDURE PrintLn() : Error;
  99. BEGIN
  100.   RETURN SendCommand(nel,0,0,0,0);
  101. END PrintLn;
  102.  
  103.  
  104.  
  105. PROCEDURE PrintDump(rp          : RastPortPtr;
  106.             vp          : ViewPortPtr;
  107.             x,y          : CARDINAL;
  108.             w,h          : CARDINAL;
  109.             VAR cols,rows : LONGINT;
  110.             spezial      : SpecialSet) : Error;
  111. BEGIN
  112.   IF opened THEN
  113.     all.rastPort:=rp; all.colorMap:=vp^.colorMap; all.modes:=vp^.modes;
  114.     all.command:=dumpRPort; all.srcX:=x; all.srcY:=y; all.srcWidth:=w;
  115.     all.modesHi:=0; all.srcHeight:=h; all.destCols:=cols; all.destRows:=rows;
  116.     all.special:=spezial;
  117.     DoIO(ADR(all));
  118.     cols:=all.destCols; rows:=all.destRows;
  119.   END;
  120.   RETURN all.error;
  121. END PrintDump;
  122.  
  123.  
  124.  
  125. PROCEDURE GetPrinterStatus(VAR status : Status) : Error;
  126. VAR c : SerStatusSet;
  127. BEGIN
  128.   IF opened THEN
  129.     ioNorm^.command:=query;
  130.     ioNorm^.data:=ADR(c); ioNorm^.length:=2; ioNorm^.offset:=0;
  131.     DoIO(ioNorm);
  132.     status.serStatus:=c;
  133.     IF ioNorm^.actual=1 THEN
  134.       status.port:=parallel;
  135.     ELSE
  136.       status.port:=serial;
  137.     END;
  138.   END;
  139.   RETURN all.error;
  140. END GetPrinterStatus;
  141.  
  142.  
  143.  
  144. PROCEDURE ClosePrinter;
  145. BEGIN
  146.   IF opened THEN
  147.     RemPort(ADR(msg));
  148.     CloseDevice(ADR(all));
  149.     opened:=FALSE;
  150.   END;
  151. END ClosePrinter;
  152.  
  153.  
  154.  
  155. BEGIN
  156.  
  157.   opened:=FALSE;
  158.  
  159. CLOSE
  160.  
  161.   ClosePrinter;
  162.  
  163. END PrinterDevice.
  164.