From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 21 Jan 91 14:01:18 GMT From: mcsun!unido!fauern!faui43.informatik.uni-erlangen.de!faui09!mskuhn@uunet.uu.net (Markus Kuhn) Subject: Meridian Ada and IBM PC serial ports Message-ID: List-Id: I am developing an (public domain) application with Meridian Open Ada 4.1 (was AdaZ) with lots of pre-emptive tasking and access to the serial ports (an OSI system!). As the PC ports have only a 1 byte buffer, the software has to respond quite fast (faster than 18,2 times/sec) on an interrupt that indicates that a byte has been received. I think, the fastest solution is to set the port's interrupt on a small procedure that reads out the byte and puts it in a FIFO queue. But when this procedure is called by the interrupt, where can I get the required values in registers like DS, BP, ...? The interrupt might occur at any time, so my procedure needs to establish it's own environment in order to access the FIFO (a task local variable). Turbo Pascal allows to declare a special interrupt version of a procedure. That's exactly what I need in Meridian Ada. (Unfortunately Turbo knows no tasking :-( ) Can this problem also be solved with Meridian's interrupt entry mechanism? Somebody wrote here a few weeks ago that this would be to slow. Thanks for any hint. Markus Kuhn, Germany CS student (nobody important) mskuhn@faui09.informatik.uni-erlangen.de