home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 02 / datein.pas < prev    next >
Pascal/Delphi Source File  |  1989-11-30  |  3KB  |  105 lines

  1. (*--------------------------------------------------------*)
  2. (*                    DATEIN.PAS                          *)
  3. (*          Programm zum Datentranfer beim IBM            *)
  4. (*                   Turbo Pascal 3.0                     *)
  5. (*          (C) 1990 Alfred Mühleisen & TOOLBOX           *)
  6. (*--------------------------------------------------------*)
  7.  
  8. PROGRAM DATEIN;
  9.  
  10. CONST RBR=$3F8; { Receice Buffer Register R/O BEI LCR.7=0 }
  11.       THR=$3F8; { TRANSMIT HOLDING REGISTER W/O BEI LCR.7=0}
  12.       DLL=$3F8; { DIVISOR LATCH LOWBYTE R/W BEI LCR.7=1 }
  13.       DLH=$3F9; { DIVISOR LATCH HIGHBYTE R/W BEI LCR.7=1 }
  14.       LCR=$3FB; { LINE CONTROL REGISTER R/W }
  15.       LSR=$3FD; { LINE STATUS REGISTER R/W }
  16.  
  17. TYPE KURZSTR = STRING[2];
  18.  
  19. VAR BAUDRATE,FAKTOR : REAL;
  20.     SCHLUSS,VORVORH : BOOLEAN;
  21.     CH,CHN,CHNV : CHAR;
  22.     FILENAME : STRING[80];
  23.     DATEI : TEXT;
  24.  
  25. FUNCTION LESE : CHAR;
  26. BEGIN
  27.   REPEAT UNTIL (PORT[LSR]AND 1) = 1;
  28.   LESE := CHR(PORT[RBR])
  29. END;
  30.  
  31. PROCEDURE SCHREIBE(ZEICHEN : CHAR);
  32. BEGIN
  33.   PORT[THR] := ORD(ZEICHEN)
  34. END;
  35.  
  36. PROCEDURE UMSETZE (ST : KURZSTR; C : CHAR);
  37. BEGIN
  38.   IF CHNV + CHN = ST THEN
  39.   BEGIN
  40.     CHNV := C;
  41.     VORVORH := FALSE
  42.   END
  43. END;
  44.  
  45. BEGIN
  46.   CLRSCR;
  47.   WRITELN('Datenübertragung APPLE --> TANDON');
  48.   WRITELN;
  49.   WRITE('Name der Textdatei zum Speichern: ');
  50.   READLN(FILENAME);
  51.   ASSIGN(DATEI,FILENAME);
  52.   REWRITE(DATEI);
  53.   { BAUD-RATE EINSTELLEN: }
  54.   BAUDRATE  := 19200;
  55.   FAKTOR    := 1.152E5 / BAUDRATE;
  56.   PORT[LCR] := PORT[LCR] OR 128;
  57.   PORT[DLH] := ROUND(FAKTOR / 256);
  58.   PORT[DLL] := ROUND(FAKTOR - PORT[DLH] * 256);
  59.   { 8 DATENBITS, 1 STOPBIT, KEINE PARITY EINSTELLEN: }
  60.   PORT[LCR] := (PORT[LCR] AND $F0) OR 3;
  61.   { BAUD-RATE zur Kontrolle ausgeben: }
  62.   FAKTOR    := PORT[DLH] * 256 + PORT[DLL];
  63.   WRITELN('BAUD-RATE = ',1.152E5 / FAKTOR:6:0);
  64.   WRITELN;
  65.   WRITELN('Jetzt Apple starten!');
  66.   WRITELN;
  67.   PORT[LCR] := PORT[LCR] AND $7F; { DLAB ABSCHALTEN }
  68.   VORVORH   := FALSE;
  69.   REPEAT
  70.     CH := LESE;
  71.     CASE CH OF
  72.       '[': CHN := 'Ä';
  73.       '\': CHN := 'Ö';
  74.       ']': CHN := 'Ü';
  75.       '{': CHN := 'ä';
  76.       '|': CHN := 'ö';
  77.       '}': CHN := 'ü';
  78.       '~': CHN := 'ß';
  79.       ELSE CHN := CH
  80.     END;
  81.     SCHLUSS := (CH = ^Z);
  82.     IF NOT SCHLUSS THEN
  83.     BEGIN
  84.       IF VORVORH THEN
  85.       BEGIN
  86.         UMSETZE('(.','[');
  87.         UMSETZE('(*','{');
  88.         UMSETZE('*)','}');
  89.         UMSETZE('.)',']');
  90.         WRITE(DATEI,CHNV);
  91.         WRITE(CHNV);
  92.       END {VORVORH}
  93.       ELSE VORVORH := TRUE;
  94.       IF VORVORH THEN CHNV := CHN;
  95.       SCHREIBE(CH)
  96.     END
  97.   UNTIL SCHLUSS;
  98.   IF VORVORH THEN
  99.   BEGIN
  100.     WRITE(DATEI,CHNV);
  101.     WRITE(CHNV)
  102.   END;
  103.   CLOSE(DATEI)
  104. END.
  105.