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