comp.lang.ada
 help / color / mirror / Atom feed
From: mcsun!unido!fauern!faui43.informatik.uni-erlangen.de!faui09!mskuhn@uunet.uu.net  (Markus Kuhn)
Subject: Meridian Ada and IBM PC serial ports
Date: 21 Jan 91 14:01:18 GMT	[thread overview]
Message-ID: <mskuhn.664466478@faui09> (raw)

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

             reply	other threads:[~1991-01-21 14:01 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1991-01-21 14:01 Markus Kuhn [this message]
1991-01-22 17:07 ` Meridian Ada and IBM PC serial ports Michael Feldman
1991-01-23  3:12   ` Steven V. Case
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox