home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* PRNINIT.PAS *)
- (* residenter Druckertreiber *)
- (* (c) 1990 Oliver Hallmann & TOOLBOX *)
- (* ------------------------------------------------------ *)
- {$A+,B-,D+,E+,F+,I+,L+,N-,O-,R-,S+,V+}
- {$M 1024,0,0}
-
- PROGRAM PRN_Init;
-
- USES Dos;
-
- CONST
- tausche : BOOLEAN = TRUE;
-
- TYPE
- str10 = STRING [10];
- tab_typ = ARRAY [0..255] OF str10;
-
- VAR
- tab : tab_typ;
- d : FILE OF tab_typ;
- p : Pointer;
- Regs : Registers;
-
- PROCEDURE LoadTab;
- VAR
- io : INTEGER;
- x : BYTE;
- BEGIN
- Assign(d, 'HPRINT.TAB');
- {$I-}
- Reset(d);
- io := IOResult;
- {$I+}
- IF io <> 0 THEN BEGIN
- WriteLn('HPRINT.TAB nicht gefunden!');
- Halt(io);
- END ELSE BEGIN
- Read(d, tab);
- Close(d);
- END;
- END;
-
- PROCEDURE Druck(Flags, cs, ip, ax, bx, cx,
- dx, si, di, ds, es, bp : WORD); INTERRUPT;
- VAR
- Regs : Registers;
- j : BYTE;
- BEGIN
- IF cx = $abcd THEN BEGIN
- tausche := NOT tausche;
- IF tausche THEN bx := $a
- ELSE bx := $0;
- cx := $dcba;
- Exit;
- END;
- IF tausche AND (Hi(ax) = 0) THEN BEGIN
- FOR j := 1 TO Length(tab[Lo(ax)]) DO BEGIN
- Regs.al := BYTE(tab[Lo(ax)][j]);
- Regs.ah := 0;
- Regs.dx := dx;
- Intr($65, Regs);
- END;
- ax := Regs.ax;
- END ELSE BEGIN
- Regs.dx := dx;
- Regs.ax := ax;
- Intr($65, Regs);
- ax := Regs.ax;
- END;
- END;
-
- BEGIN
- Regs.cx := $abcd;
- INTR($17, Regs);
- IF Regs.cx = $dcba THEN BEGIN
- IF Regs.bx = $a THEN
- WriteLn('Druckeranpassung aktiv')
- ELSE
- WriteLn('Druckeranpassung inaktiv');
- Halt(0);
- END;
- LoadTab;
- GetIntVec($17, p);
- SetIntVec($65, p);
- SetIntVec($17, @druck);
- WriteLn('PRNINIT installiert.');
- Keep(0);
- END.
- (* ------------------------------------------------------ *)
- (* Ende von PRNINIT.PAS *)