home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 11 / tricks / prninit.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-08-06  |  2.1 KB  |  93 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    PRNINIT.PAS                         *)
  3. (*            residenter Druckertreiber                   *)
  4. (*        (c) 1990 Oliver Hallmann & TOOLBOX              *)
  5. (* ------------------------------------------------------ *)
  6. {$A+,B-,D+,E+,F+,I+,L+,N-,O-,R-,S+,V+}
  7. {$M 1024,0,0}
  8.  
  9. PROGRAM PRN_Init;
  10.  
  11. USES Dos;
  12.  
  13. CONST
  14.   tausche : BOOLEAN = TRUE;
  15.  
  16. TYPE
  17.   str10   = STRING [10];
  18.   tab_typ = ARRAY [0..255] OF str10;
  19.  
  20. VAR
  21.   tab  : tab_typ;
  22.   d    : FILE OF tab_typ;
  23.   p    : Pointer;
  24.   Regs : Registers;
  25.  
  26.   PROCEDURE LoadTab;
  27.   VAR
  28.     io : INTEGER;
  29.     x  : BYTE;
  30.   BEGIN
  31.     Assign(d, 'HPRINT.TAB');
  32.     {$I-}
  33.     Reset(d);
  34.     io := IOResult;
  35.     {$I+}
  36.     IF io <> 0 THEN BEGIN
  37.       WriteLn('HPRINT.TAB nicht gefunden!');
  38.       Halt(io);
  39.     END ELSE BEGIN
  40.       Read(d, tab);
  41.       Close(d);
  42.     END;
  43.   END;
  44.  
  45.   PROCEDURE Druck(Flags, cs, ip, ax, bx, cx,
  46.                   dx, si, di, ds, es, bp : WORD); INTERRUPT;
  47.   VAR
  48.     Regs : Registers;
  49.     j    : BYTE;
  50.   BEGIN
  51.     IF cx = $abcd THEN BEGIN
  52.       tausche := NOT tausche;
  53.       IF tausche THEN bx := $a
  54.                  ELSE bx := $0;
  55.       cx := $dcba;
  56.       Exit;
  57.     END;
  58.     IF tausche AND (Hi(ax) = 0) THEN BEGIN
  59.       FOR j := 1 TO Length(tab[Lo(ax)]) DO BEGIN
  60.         Regs.al := BYTE(tab[Lo(ax)][j]);
  61.         Regs.ah := 0;
  62.         Regs.dx := dx;
  63.         Intr($65, Regs);
  64.       END;
  65.       ax := Regs.ax;
  66.     END ELSE BEGIN
  67.       Regs.dx := dx;
  68.       Regs.ax := ax;
  69.       Intr($65, Regs);
  70.       ax := Regs.ax;
  71.     END;
  72.   END;
  73.  
  74. BEGIN
  75.   Regs.cx := $abcd;
  76.   INTR($17, Regs);
  77.   IF Regs.cx = $dcba THEN BEGIN
  78.     IF Regs.bx = $a THEN
  79.       WriteLn('Druckeranpassung aktiv')
  80.     ELSE
  81.       WriteLn('Druckeranpassung inaktiv');
  82.     Halt(0);
  83.   END;
  84.   LoadTab;
  85.   GetIntVec($17, p);
  86.   SetIntVec($65, p);
  87.   SetIntVec($17, @druck);
  88.   WriteLn('PRNINIT installiert.');
  89.   Keep(0);
  90. END.
  91. (* ------------------------------------------------------ *)
  92. (*                  Ende von PRNINIT.PAS                  *)
  93.