[Back to PRINTING SWAG index] [Back to Main SWAG index] [Original]
{
SM> #1.) The printer's not on...
SM> #2.) The printer's outta paper
SM> #3.) The printer's fried, etc.
Write data to the printer normally like : }
Assign (uitvf,'LPT1');
Rewrite (Uitvf);
Repeat
{$I-}
Write (Uitvf,PrinterData);
If IOResult <> 0 then
begin
WriteLn ('Somthing''s wrong with the printer');
WriteLn ('PrinterError = ',CheckPrinterStatus (1));
end;
{$I+}
until AllWritten;
The funtion to determine the status of the printer :
Function CheckPrinterStatus (Port : Word) : Byte;Assembler;
{
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~ Status : 0 - time out Returns the printer status
1 - unused ==========================
2 - unused
3 - I/O error
4 - On line selected
5 - Out of paper
6 - Acknowledge
7 - Not Busy
2 : Printer not found
3+4 : Printer not on line / selected
3 : Printer not on line / selected
4+5 : Cable not hooked up
4+5+7 : Cable not hooked up
3+6+7 : Printer off or unplugged
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~}
ASM
MOV DX,Port
DEC DX {DX := Lpt -1 }
MOV AX,$0200 {AH := $02 : Read printer status}
INT $17
MOV AL,AH {Zet status in AL}
end;
{-----------------------------------------------------------------------------
}
[Back to PRINTING SWAG index] [Back to Main SWAG index] [Original]