home *** CD-ROM | disk | FTP | other *** search
- (*--------------------------------------------------------*)
- (* DATEIN.PAS *)
- (* Programm zum Datentranfer beim IBM *)
- (* Turbo Pascal 3.0 *)
- (* (C) 1990 Alfred Mühleisen & TOOLBOX *)
- (*--------------------------------------------------------*)
-
- PROGRAM DATEIN;
-
- CONST RBR=$3F8; { Receice Buffer Register R/O BEI LCR.7=0 }
- THR=$3F8; { TRANSMIT HOLDING REGISTER W/O BEI LCR.7=0}
- DLL=$3F8; { DIVISOR LATCH LOWBYTE R/W BEI LCR.7=1 }
- DLH=$3F9; { DIVISOR LATCH HIGHBYTE R/W BEI LCR.7=1 }
- LCR=$3FB; { LINE CONTROL REGISTER R/W }
- LSR=$3FD; { LINE STATUS REGISTER R/W }
-
- TYPE KURZSTR = STRING[2];
-
- VAR BAUDRATE,FAKTOR : REAL;
- SCHLUSS,VORVORH : BOOLEAN;
- CH,CHN,CHNV : CHAR;
- FILENAME : STRING[80];
- DATEI : TEXT;
-
- FUNCTION LESE : CHAR;
- BEGIN
- REPEAT UNTIL (PORT[LSR]AND 1) = 1;
- LESE := CHR(PORT[RBR])
- END;
-
- PROCEDURE SCHREIBE(ZEICHEN : CHAR);
- BEGIN
- PORT[THR] := ORD(ZEICHEN)
- END;
-
- PROCEDURE UMSETZE (ST : KURZSTR; C : CHAR);
- BEGIN
- IF CHNV + CHN = ST THEN
- BEGIN
- CHNV := C;
- VORVORH := FALSE
- END
- END;
-
- BEGIN
- CLRSCR;
- WRITELN('Datenübertragung APPLE --> TANDON');
- WRITELN;
- WRITE('Name der Textdatei zum Speichern: ');
- READLN(FILENAME);
- ASSIGN(DATEI,FILENAME);
- REWRITE(DATEI);
- { BAUD-RATE EINSTELLEN: }
- BAUDRATE := 19200;
- FAKTOR := 1.152E5 / BAUDRATE;
- PORT[LCR] := PORT[LCR] OR 128;
- PORT[DLH] := ROUND(FAKTOR / 256);
- PORT[DLL] := ROUND(FAKTOR - PORT[DLH] * 256);
- { 8 DATENBITS, 1 STOPBIT, KEINE PARITY EINSTELLEN: }
- PORT[LCR] := (PORT[LCR] AND $F0) OR 3;
- { BAUD-RATE zur Kontrolle ausgeben: }
- FAKTOR := PORT[DLH] * 256 + PORT[DLL];
- WRITELN('BAUD-RATE = ',1.152E5 / FAKTOR:6:0);
- WRITELN;
- WRITELN('Jetzt Apple starten!');
- WRITELN;
- PORT[LCR] := PORT[LCR] AND $7F; { DLAB ABSCHALTEN }
- VORVORH := FALSE;
- REPEAT
- CH := LESE;
- CASE CH OF
- '[': CHN := 'Ä';
- '\': CHN := 'Ö';
- ']': CHN := 'Ü';
- '{': CHN := 'ä';
- '|': CHN := 'ö';
- '}': CHN := 'ü';
- '~': CHN := 'ß';
- ELSE CHN := CH
- END;
- SCHLUSS := (CH = ^Z);
- IF NOT SCHLUSS THEN
- BEGIN
- IF VORVORH THEN
- BEGIN
- UMSETZE('(.','[');
- UMSETZE('(*','{');
- UMSETZE('*)','}');
- UMSETZE('.)',']');
- WRITE(DATEI,CHNV);
- WRITE(CHNV);
- END {VORVORH}
- ELSE VORVORH := TRUE;
- IF VORVORH THEN CHNV := CHN;
- SCHREIBE(CH)
- END
- UNTIL SCHLUSS;
- IF VORVORH THEN
- BEGIN
- WRITE(DATEI,CHNV);
- WRITE(CHNV)
- END;
- CLOSE(DATEI)
- END.