home *** CD-ROM | disk | FTP | other *** search
- (*---------------------------------------------------------------------------*)
- (* 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
- Init := TRUE;
- 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 *)
- (*---------------------------------------------------------------------------*)