home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
sonderh1
/
dfmasch1.inc
< prev
next >
Wrap
Text File
|
1987-06-10
|
3KB
|
80 lines
(*---------------------------------------------------------------------------*)
(* DFMASCH1.INC *)
(* (serielle Schnittstelle mit CP/M BDOS-Funktionen bedienen) *)
(* Es folgen die Funktionen InpStatus(Boolean) und InpSIO(Byte),
InpStatus ist TRUE, wenn ein Zeichen an der seriellen Schnitt-
stelle vorliegt, InpSIO liefert ein Zeichen von der SIO. *)
FUNCTION InpSIO : CHAR;
BEGIN
InpSIO := CHAR(bdos(3))
END;
FUNCTION InpStatus : BOOLEAN;
(* Die auskommentierte Version gilt fuer CP/M 2.2. Da das Byte mit der *)
(* Adresse 3 in CP/M 3.0 reserviert ist, folgt darunter die CP/M 3.0 Version.*)
(* *)
(* var iobite : byte absolute 3; *)
(* altbite : byte; *)
(* *)
(* begin *)
(* altbite:=iobite; *)
(* iobite:=(iobite and $FC) or 2; *)
(* InpStatus := (bdos(11) <> 0); *)
(* iobite:=altbite; *)
(* end; *)
BEGIN
InpStatus := (bdos(7) <> 0);
END;
(* Die Funktionen OutStautus(Boolean) und die Prozedur OutSIO(Char) liefern
den Status des SIO-Outkanals und senden ein Zeichen (siehe auch oben). *)
FUNCTION OutStatus : BOOLEAN;
BEGIN
OutStatus := TRUE
END;
PROCEDURE OutSIO(Zeichen : CHAR);
BEGIN
bdos(4,Ord(Zeichen));
END;
(* Die Prozedur Parameter fragt die zu setzenden Parameter ab,
Setze_Parameter stellt dann die SIO ein. *)
PROCEDURE Setze_Parameter;
(* In dieser Version stark abgemagert. *)
(* Z.B. laesst sich die Baudrate nicht inititalisieren. *)
(* Laesst sich unter CP/M leider nicht ueber das *)
(* Betriebssystem machen. Dafuer gibt es in der Regel *)
(* ein Dienstprogramm SETSIO.COM . *)
BEGIN
VollDuplex := (Param[5] = 1);
LineFeed := (Param[6] = 2);
CASE Param[7] OF
1 : Zeit := 0;
2 : Zeit := 10;
3 : Zeit := 100
END
END;
(* Ende DFMASCH1.INC *)
(*---------------------------------------------------------------------------*)