home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 05 / tricks / biosprnt.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-02-09  |  1.8 KB  |  74 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    BIOSPRNT.PAS                        *)
  3. (*  Diese Unit stellt drei Routinen zur Verfügung, die    *)
  4. (*  über den Bios-Interrupt 17h die Druckerschnittstelle  *)
  5. (*  ansprechen.                                           *)
  6. (*          (C) 1990 Michael Plewe & TOOLBOX              *)
  7. (* ------------------------------------------------------ *)
  8. UNIT BiosPrnt;
  9.  
  10. INTERFACE
  11.  
  12. USES Dos;
  13.  
  14. CONST
  15.   PrintError : BYTE = 0;
  16.   PrintPort  : BYTE = 0;        { LPT1=0 / LPT2=1 / LPT3=2 }
  17.  
  18. FUNCTION  PrinterOk(PPort : BYTE): BOOLEAN;
  19. PROCEDURE PrintChr(ch : CHAR);
  20. PROCEDURE PrintStr(strg : STRING);
  21.  
  22. IMPLEMENTATION
  23.  
  24. VAR
  25.   Regs : Registers;
  26.  
  27.   FUNCTION PrinterOk(PPort : BYTE): BOOLEAN;
  28.   BEGIN
  29.     PrintError := 0;
  30.     Regs.AH    := $02;
  31.     Regs.DX    := PPort;
  32.     Intr($17, Regs);
  33.     IF ($39 AND Regs.AH <> $10) THEN
  34.       PrintError := Regs.AH;
  35.     PrinterOk := ($39 AND Regs.AH = $10);
  36.   END;
  37.  
  38.   PROCEDURE PrintChr(ch : CHAR);
  39.   BEGIN
  40.     PrintError := 0;
  41.     IF PrinterOk(0) THEN BEGIN
  42.       Regs.AH := 0;
  43.       Regs.AL := Ord(ch);
  44.       Regs.DX := PrintPort;
  45.       Intr($17, Regs);
  46.       IF ($29 AND Regs.AH <> $00) THEN
  47.         PrintError := Regs.AH;
  48.     END;
  49.   END;
  50.  
  51.   PROCEDURE PrintStr(strg : STRING);
  52.   VAR
  53.     i : BYTE;
  54.   BEGIN
  55.     PrintError := 0;
  56.     IF PrinterOk(0) THEN BEGIN
  57.       FOR i := 1 TO Length(strg) DO BEGIN
  58.         Regs.AH := 0;
  59.         Regs.AL := Ord(strg[i]);
  60.         Regs.DX := PrintPort;
  61.         Intr($17, Regs);
  62.         IF ($29 AND Regs.AH <> $00) THEN BEGIN
  63.           PrintError := Regs.AH;
  64.           Exit;
  65.         END;
  66.       END;
  67.     END;
  68.   END;
  69.  
  70. BEGIN
  71. END.
  72. (* ------------------------------------------------------ *)
  73. (*               Ende von BIOSPRNT.PAS                    *)
  74.