(* ********* Beginn des Hardware abh„ngigen Teils ********************* *) procedure initmodem; (* die Routine initialisiert die serielle Schnittstelle zum Modem *) begin port(.terms.):=$63;dummy:=port(.termd.); port(.terms.):=parbyte;port(.terms.):=$37;dummy:=port(.termd.); end; procedure resetmodem; (* die Routine initialisiert die serielle Schnittstelle zum Modem *) begin port(.terms.):=$37;port(.terms.):=$37;port(.terms.):=$37; dummy:=port(.Termd.); port(.terms.):=$40; port(.terms.):=parbyte; end; procedure initBaud; (* die Routine initialisiert den Timer *) var hilf:byte; begin port(.$9e.):=$34; port(.$9e.):=$70; port(.$9e.):=$b0; port(.$98.):=Baudkz1; (* Baud Teil 1 *) port(.$98.):=Baudkz2; (* Baud Teil 2 *) port(.$9a.):=$0; port(.$9a.):=$0; port(.$9c.):=$0; port(.$9c.):=$0; port(.terms.):=$37; end; function received:boolean; var inbyte : byte; (* die Funktion liefert den wert true falls ein Zeichen an der seriellen Schnittstelle zum Modus vorliegt *) begin inbyte:=port(.terms.) and $fa; case inbyte of $02 : received:=true; (* zeichen eingegangen ? und Df klar*) $00 : received:=false; else begin write(''); resetmodem;initmodem; received:=false; seri_error:=true; end; end; end; function receive:char; var ws : workstring; begin case hex_ein of true : begin if received then begin (* zeichen eingegangen ?*) port(.terms.):=$37; ws(.1.):=char(port(.Termd.)); end; while not received do delay(1); if received then begin (* zeichen eingegangen ?*) port(.terms.):=$37; ws(.2.):=char(port(.Termd.)); end; receive := chr(lhex(ws)); end; false : begin port(.terms.):=$37; receive:=char(port(.Termd.)); end; end; end; function transmitted:boolean; (* Die Funktion liefert den wert true falls das Zeichen an der seriellen Schnittstelle ausgesendet wurde *) var inbyte : byte; begin inbyte:=port(.terms.); if (inbyte and $05 = $05) and (inbyte and $f8 = 0) then (* zeichen eingegangen ? und Df klar*) transmitted:=true else transmitted:=false; end; procedure transmit (zeichen:char); (* Die Procedure sendet ein Zeichen an die serielle Schnittstelle zum Modem aus *) begin port(.terms.):=$37; port(.Termd.):=ord(zeichen); end; (* ***** Ende des Hardware abh„ngigen Teils ******** *)