[Back to PRINTING SWAG index]  [Back to Main SWAG index]  [Original]

PROGRAM PRINTCHK;

uses crt,dos,printer;
const
  lpt1=0;
  lpt2=1;
  lpt3=2;

  PrnReady = $90;
  OffLine = $00;
  OffLine2 = $10;             {NEW LINE}
  PaperOut = $20;
  PaperOut2 = $30;            {NEW LINE}
  HookedButOff = $80;         {NEW LINE}
  NoConnect = $B0;            {MODIFIED LINE}

  {NOCONNECT = $30 FOR SOME COMPUTERS BY STU}

  Function ChkPrinter(Printer:Word) :Word;
  Var Regs:Registers;

  Begin
    Regs.AH:=2;
    Regs.DX:=Printer;
    Intr($17,regs);
    ChkPrinter:=Regs.AH
  end;

  Procedure PrinterError(ErrorCode:BYTE);  ;NEW


  VAR
    C : BYTE;



  Begin
   ErrorCode := ErrorCode and $B0;       {NEW LINE}

   C := ERRORCODE SHL 6   {ALWAYS MEANS NOTHING CONNECTED}

   IF C > 0 THEN ERRORCODE = $B0; {ELEMINATES NO LPT3 AND NOTHING CONNECTED}


   Case ErrorCode of
    NoConnect           : WriteLn('Printer not connected');
    Offline,OffLine2    : WriteLn('Printer off line');     {Modified}
    PaperOut,PaperOut2  : WriteLn('Printer out of paper'); {Modified}
    HookedButOff        : WriteLn('Printer connected but turned off'); {New}
   else
    WriteLn('Printer error code: ',ErrorCode);
   end
  end;

  procedure TryPrinter;
  Begin
   {$I-}
   WriteLn(Lst,'Check Printer'+#12);
   {$I+}
   WriteLn(IOResult)
  End;

  Begin
   ClrScr;
   {TryPrinter;}
   If ChkPrinter(LPT1) = PrnReady then
    Writeln('Printer is Ready')
   else
    PrinterError(ChkPrinter(LPT1))
  end.

[Back to PRINTING SWAG index]  [Back to Main SWAG index]  [Original]