eine_6ek weg = 0;

if (kbhit<) I- 0) {

}

}

lestget = DATEN;

void
mach_hin(int baud)
1

/* wir gehen auf emfang */

int i, j, k, anz, paritset, timercl, timertic;
unsigned long l;
int getmodus;
char old_Ox21, old_pio_b;
char c;
time t zeit;
struct ~m *zeit2;

fifdef LO0FILE
logfile = fopen(~tlogfile.txt", "a");
if (logfile NULL) return;

#endif

disablet); /* alle interrupts abschalten */

roh_daten_anfang = roh_daten_ende = roh_daten leenge ~ O;
getmodus = GETSYNCR;
anz = k - O;
i! (baud -= 1200) 1
printf('1200 Baud\n")i
tics - TIMEROBl200;
else ~
printf ~ "512 E'audN`,n" );
tic6 = TIMEROB512;

tics 2 = tiosJ2;

	old_vec = getvect(12);	/* alte Timerservicerautine retten *
	setvect(12, lauf_er);	/* timer~ervicerautine setzen *J

time_int = getvect(Oxlc); i* timerO interrupt setzen */
setvect(Oxlc, time-i);

outportb(coMpoRT+McR, OxO9);/* Leitungen setzen *7
outportb(COMPORT'IER, OxOá);/* MODEMzustandEwechsel */

old _ 0x21 = inportb<Ox21); /* interrupt maske holen *7

	outportbtOx2l, old Ox21&(char)(-((char)OxlO))j;	/. Timer 2
	-	einschalten */

	outportb(ox43, OXBO ) ;	/

outportb(Ox42, Oxff);

	outportbtOx42, Oxff);
	old_pio b inportb(Ox61~;

outportbtOx61, old~io_blOxOl)

'* 7.^ehler auf hoccheten wert stellen */

/* pio-b einlesen */
/* zaehler einschalten */

	enable();	J* jetzt gehte los */

	do {

	f (abbruch) break;

	if teine_sek weg) I	/* uhr nachstellen */

	(,~|	~D" ms~nsc~RIichoFach~latt~r~at~reisen	~63it ~enbeb~cub'r

break;

/* ein Zeichen von der Tastatur
liegt an also abErechen */

time(`zeit);
zeit2 = localti~et~zeit);
strapy~asc_time, strip cr(ascLimetzeit2))); /* neue uhrzeit *'

ilfdef LOGFILE
if (last sync >= 0) last sync+~;
lf-(last sync > 20) { i* 20 Sekunden lang kein Sync mehr
gekommen */

i

-

i
-

'

#endif

/*

*/

/*

}

disable<);
if (logfile I= NULL) fclose~logfile);
logfile - fopen("logfile.txt-, ~a");
if (logfile -= NULL) {
printf("Logfile leesst sich nicht oeffnen\n");
s~bruch = 1
}
enable();
last_sync = -1;

if (roh daten_laenge > 0) {

J* timerinterrupt hat ein oder
mehr neue zeichon eingelesen *

/* felddaten holen */
i = roh daten feldlron daten_anfang++l;
if (roh-daten anfang > MAXARRAY) roh_daten anfang ~ O;
roh_daten laenge--;

printf<"%c't, i+,o');
[f lush ~ stdaut );

/* felddaten auswerten */

if (getmodus ~ GE,TSYNCR)

J. Erstee, Syncronframe
erwarten */
1 <C= 1;
if (i == 1) l |= oxooooonolL; /* bit setzen */
if (l -- SYNCRON || 1 -~ SYNCINFO) { /* wert stimmt
mit Syneronwort
ueberein */

printit"\nSyneronwort"~;
f$lushtstdaut);
last sync - O;
getmodus '- GETFRAME,'
anz = k = paritset = 0;
l - OL;
decode_framelO, IDLE);

*/

? else if (getmodus -~ GETFRAME) ~ /* GE.I.FRAME Daten als

		Frame einlesen */
	anz+~;
	1 <<= 1;
	if (i == 1) ~

	l |- OxOOOOOOOlL;	/6 bit setzen *|

if (paritset -= o) paritset = 1;

	~e 1hntendr~enber	D" w~áchafllic~F"h~laN ~rUatcnwi~nde	~

