home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* PRINTPP.PAS *)
- (* Anpassung von Grafik-Dateien, die durch das Programm *)
- (* PINPLOT (NEC) für NEC-24-Nadeldrucker erstellt wurden, *)
- (* auf EPSON LQ-Drucker zur Ausgabe. *)
- (* (C) 1989 Dirk Paessler & TOOLBOX *)
- (* ------------------------------------------------------ *)
- (* INPUT-File : 'PLOT.DAT' erstellt mit : *)
- (* 'PINPLOT PLOT.HP -d PLOT.DAT' *)
- (* OUTPUT-File: Drucker *)
-
- PROGRAM PrintPinPlot;
-
- USES Dos;
-
- CONST
- Size = 60000;
- InputFile = 'plot.dat'; { auch Pfadnennung möglich }
- OutPutFile = 'lpt1'; { auch Datei möglich }
-
- TYPE
- BufType = ARRAY [1..Size] OF CHAR;
-
- VAR
- DataFile : TEXT;
- PrintFile : TEXT;
- DataFile2 : FILE OF CHAR;
- Ende, Count : LONGINT;
- Byte1, Byte2,
- Byte3, Byte4 : CHAR;
- Buffer : BufType;
-
- FUNCTION Eof : BOOLEAN;
- BEGIN
- Eof := Count > Ende;
- END;
-
- PROCEDURE Readbyte(VAR a : CHAR);
- { liest ein Byte aus INPUT-File }
- BEGIN
- Count := Count + 1;
- IF Count > Ende THEN
- Halt; { Programm-Ende bei File-Ende }
- Read(DataFile, a);
- END;
-
- PROCEDURE SetDeviceToBinaryMode(VAR f : TEXT);
- { .. hatten wir doch schonmal ... }
- VAR
- Regs : Registers;
-
- BEGIN
- WITH regs DO BEGIN
- ax := $4400;
- bx := TextRec(f).Handle;
- MsDos(Regs);
- IF (flags AND 1) = 1 THEN
- DosError := ax
- ELSE BEGIN
- ax := $4401;
- bx := TextRec(f).Handle;
- dx := (dx AND $df) OR $20;
- MsDos(Regs);
- IF (flags AND 1) = 1 THEN DosError := ax
- ELSE DosError := 0;
- END;
- END;
- END;
-
- BEGIN
- WriteLn('PrintPinPlot (c) 1989 Dirk Paessler & TOOLBOX');
- WriteLn;
- Assign(DataFile2, InputFile);
- { zum Feststellen der Dateigröße }
- Reset(DataFile2);
- Ende := FileSize(DataFile2);
- Close(DataFile2);
- Assign(DataFile, InputFile); { Öffnen des INPUT-Files }
- SetTextBuf(DataFile, Buffer);
- Reset(DataFile);
- Assign(PrintFile, OutPutFile); { Öffnen des OutPut-Files }
- Rewrite(PrintFile);
- SetDeviceToBinaryMode(PrintFile);
- Write(PrintFile, #27, '3', #24);
- { Zeilenabstand einstellen }
- Count := 0;
- WHILE NOT Eof DO BEGIN
- Readbyte(Byte1);
- WHILE (Byte1<>#28) AND NOT Eof DO BEGIN
- Write(PrintFile, Byte1);
- Readbyte(Byte1);
- END;
- Readbyte(Byte2);
- Readbyte(Byte3);
- Readbyte(Byte4);
- IF (Byte2='3') AND (Byte3='0') AND (Byte4=#10) THEN
- Write(PrintFile, Byte4)
- ELSE
- Write(PrintFile, Byte1, Byte2, Byte3, Byte4);
- END;
- Close(DataFile);
- Close(PrintFile);
- END.
- (* ------------------------------------------------------ *)
- (* Ende von PRINTPP.PAS *)