home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* BIOSPRNT.PAS *)
- (* Diese Unit stellt drei Routinen zur Verfügung, die *)
- (* über den Bios-Interrupt 17h die Druckerschnittstelle *)
- (* ansprechen. *)
- (* (C) 1990 Michael Plewe & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT BiosPrnt;
-
- INTERFACE
-
- USES Dos;
-
- CONST
- PrintError : BYTE = 0;
- PrintPort : BYTE = 0; { LPT1=0 / LPT2=1 / LPT3=2 }
-
- FUNCTION PrinterOk(PPort : BYTE): BOOLEAN;
- PROCEDURE PrintChr(ch : CHAR);
- PROCEDURE PrintStr(strg : STRING);
-
- IMPLEMENTATION
-
- VAR
- Regs : Registers;
-
- FUNCTION PrinterOk(PPort : BYTE): BOOLEAN;
- BEGIN
- PrintError := 0;
- Regs.AH := $02;
- Regs.DX := PPort;
- Intr($17, Regs);
- IF ($39 AND Regs.AH <> $10) THEN
- PrintError := Regs.AH;
- PrinterOk := ($39 AND Regs.AH = $10);
- END;
-
- PROCEDURE PrintChr(ch : CHAR);
- BEGIN
- PrintError := 0;
- IF PrinterOk(0) THEN BEGIN
- Regs.AH := 0;
- Regs.AL := Ord(ch);
- Regs.DX := PrintPort;
- Intr($17, Regs);
- IF ($29 AND Regs.AH <> $00) THEN
- PrintError := Regs.AH;
- END;
- END;
-
- PROCEDURE PrintStr(strg : STRING);
- VAR
- i : BYTE;
- BEGIN
- PrintError := 0;
- IF PrinterOk(0) THEN BEGIN
- FOR i := 1 TO Length(strg) DO BEGIN
- Regs.AH := 0;
- Regs.AL := Ord(strg[i]);
- Regs.DX := PrintPort;
- Intr($17, Regs);
- IF ($29 AND Regs.AH <> $00) THEN BEGIN
- PrintError := Regs.AH;
- Exit;
- END;
- END;
- END;
- END;
-
- BEGIN
- END.
- (* ------------------------------------------------------ *)
- (* Ende von BIOSPRNT.PAS *)