[Back to PRINTING SWAG index] [Back to Main SWAG index] [Original]
unit Prt;
interface
uses objects;
const
Lpt1= 0; Lpt2= 1;
Lpt3= 2; lf = #10;
cr = #13; pTimeOut= $01;
pIOError= $08; pNoPaper= $20;
pNotBusy= $80;
pTestAll= pTimeOut + pIOError + pNoPaper;
function WriteChar(const APort : word; s : char): boolean;
function Ready(const APort : word): boolean;
function Status(const APort : word): byte;
procedure InitPrinter(const APort : word);
implementation
procedure InitPrinter(const APort : word); assembler;
asm
mov ah, 1
mov bx, APort
int 17h
end;
function Status(const APort : word): byte; assembler;
asm
mov ah, 2 { Service 2 - Printer Status }
mov dx, APort { Printer Port }
int 17h { ROM Printer Services }
mov al, ah { Set function value }
end;
function Ready(const APort : word): boolean;
begin
Ready := Status(APort) and pTestAll = $00;
end;
function WriteChar(const APort : word; s : char): boolean;
begin
if Ready(APort) then
asm
mov ah, 0 { Printer Service - Write Char }
mov al, s { Char to write}
mov dx, APort { Printer Port }
int 17h { ROM Printer Services }
mov al, 0 { Set procedure to false }
and ah, 1 { Check for Error }
jnz @End{ Jump to end if error }
mov al, 1 { Set procedure to true}
@End:
end;
end;
end.
[Back to PRINTING SWAG index] [Back to Main SWAG index] [Original]