home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 11 / tricks / printpp.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-08-11  |  3.0 KB  |  106 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    PRINTPP.PAS                         *)
  3. (* Anpassung von Grafik-Dateien, die durch das Programm   *)
  4. (* PINPLOT (NEC) für NEC-24-Nadeldrucker erstellt wurden, *)
  5. (* auf EPSON LQ-Drucker zur Ausgabe.                      *)
  6. (*          (C) 1989 Dirk Paessler & TOOLBOX              *)
  7. (* ------------------------------------------------------ *)
  8. (* INPUT-File : 'PLOT.DAT' erstellt mit :                 *)
  9. (*              'PINPLOT PLOT.HP -d PLOT.DAT'             *)
  10. (* OUTPUT-File:  Drucker                                  *)
  11.  
  12. PROGRAM PrintPinPlot;
  13.  
  14. USES Dos;
  15.  
  16. CONST
  17.   Size       = 60000;
  18.   InputFile  = 'plot.dat';      { auch Pfadnennung möglich }
  19.   OutPutFile = 'lpt1';          { auch Datei möglich       }
  20.  
  21. TYPE
  22.   BufType   = ARRAY [1..Size] OF CHAR;
  23.  
  24. VAR
  25.   DataFile         : TEXT;
  26.   PrintFile        : TEXT;
  27.   DataFile2        : FILE OF CHAR;
  28.   Ende, Count      : LONGINT;
  29.   Byte1, Byte2,
  30.   Byte3, Byte4     : CHAR;
  31.   Buffer           : BufType;
  32.  
  33.   FUNCTION Eof : BOOLEAN;
  34.   BEGIN
  35.     Eof := Count > Ende;
  36.   END;
  37.  
  38.   PROCEDURE Readbyte(VAR a : CHAR);
  39.                            { liest ein Byte aus INPUT-File }
  40.   BEGIN
  41.     Count := Count + 1;
  42.     IF Count > Ende THEN
  43.       Halt;                { Programm-Ende bei File-Ende   }
  44.     Read(DataFile, a);
  45.   END;
  46.  
  47.   PROCEDURE SetDeviceToBinaryMode(VAR f : TEXT);
  48.                          { .. hatten wir doch schonmal ... }
  49.   VAR
  50.     Regs : Registers;
  51.  
  52.   BEGIN
  53.     WITH regs DO BEGIN
  54.       ax := $4400;
  55.       bx := TextRec(f).Handle;
  56.       MsDos(Regs);
  57.       IF (flags AND 1) = 1 THEN
  58.         DosError := ax
  59.       ELSE BEGIN
  60.         ax := $4401;
  61.         bx := TextRec(f).Handle;
  62.         dx := (dx AND $df) OR $20;
  63.         MsDos(Regs);
  64.         IF (flags AND 1) = 1 THEN DosError := ax
  65.                              ELSE DosError := 0;
  66.       END;
  67.     END;
  68.   END;
  69.  
  70. BEGIN
  71.   WriteLn('PrintPinPlot (c) 1989 Dirk Paessler & TOOLBOX');
  72.   WriteLn;
  73.   Assign(DataFile2, InputFile);
  74.                           { zum Feststellen der Dateigröße }
  75.   Reset(DataFile2);
  76.   Ende := FileSize(DataFile2);
  77.   Close(DataFile2);
  78.   Assign(DataFile, InputFile);    { Öffnen des INPUT-Files }
  79.   SetTextBuf(DataFile, Buffer);
  80.   Reset(DataFile);
  81.   Assign(PrintFile, OutPutFile); { Öffnen des OutPut-Files }
  82.   Rewrite(PrintFile);
  83.   SetDeviceToBinaryMode(PrintFile);
  84.   Write(PrintFile, #27, '3', #24);
  85.                                 { Zeilenabstand einstellen }
  86.   Count := 0;
  87.   WHILE NOT Eof DO BEGIN
  88.     Readbyte(Byte1);
  89.     WHILE (Byte1<>#28) AND NOT Eof DO BEGIN
  90.       Write(PrintFile, Byte1);
  91.       Readbyte(Byte1);
  92.     END;
  93.     Readbyte(Byte2);
  94.     Readbyte(Byte3);
  95.     Readbyte(Byte4);
  96.     IF (Byte2='3') AND (Byte3='0') AND (Byte4=#10) THEN
  97.       Write(PrintFile, Byte4)
  98.     ELSE
  99.       Write(PrintFile, Byte1, Byte2, Byte3, Byte4);
  100.   END;
  101.   Close(DataFile);
  102.   Close(PrintFile);
  103. END.
  104. (* ------------------------------------------------------ *)
  105. (*               Ende von PRINTPP.PAS                     *)
  106.