{ I am writing a Program that Uses the Printer to (whatelse?) print out a report. Now, the problem that I am having is that the Printer Function in TP 6.0 (ie Writeln (lst,'BLA BLA BLA');) Dosn't check For errors (if the Printer is not on, or is not online) basicaly I need something that weill check and give out the famous line ('Printer not Ready (A)bort (R)etry') Your're in luck, I just got a new Printer and started writing routines to control it (TFDD etc..). These are probably the most important ones: { note: This routines are not throughly tested on Various Printers.} { Thus it may of may not work on your Type of Printer. } { But, as a rule, experiment With it and have fun............} Uses Dos; Functio PrinterOutofPaper( Port : Byte): Boolean; Var Regs : Registers; begin Regs.AH := $02; Regs.DX := Port; { 0=LPT1, 1=LPT2, 2=LPT3 } Intr($17, Regs); { Print Service Please } PrinterOutofPaper := (Regs.AH and $20 = $20) end; Function PrinterReady( Port : Byte): Boolean; Var Regs : Registers; begin With Regs Do begin AH := $02; DX := Port; { 0=LPT1, 1=LPT2, 2=LPT3 } Intr($17, Regs) PrinterReady := (AH and $80 = $80) and { Printer Busy? } (AH and $10 = $10) and { Printer Online? } (AH and $08 = $00) { Printer Error? } end; end; Procedure PrintChar(Port: Byte; Ch: Char); Var Regs : Registers; begin With Regs Do begin AL := ord(Ch); { Char to print } DX := Port; { 0=LPT1, 1=LPT2, 2=LPT3 } AH := $00; { Print Char Service } Intr($17, Regs); { Call Bios } end end; Procedure BootPrinter( Port: Byte); { Initializes IBM- or EPSON- Compatible Printer } { Other Printers may not understand this command } { and may produce unwanted results } Var Regs : Registers; begin Regs.DX := Port; { 0=LPT1, 1=LPT2, 2=LPT3 } Regs.AH := $01; Intr($17, Regs) end;