[comp.sys.zenith.z100] help for a BIOS function call

GRIEB@LOCKE.HS.WASHINGTON.EDU (CINDY GRIEB) (02/12/89)

I am trying to find a way to get the CONSOLE status to determine whether
it is ready to receive a character -- from within an assembly language
routine.  It appears that the BIOS function BIOS_CONFUNC with
AH=CHR_STATUS should give me what I need, but I can't find anything
which tells me what value I should be placing into SI as the CID
(internal control table).

Has anybody out there worked with BIOS routines before?  Can you tell
me what the CID should be or where I can find that information?

                                        Cindy Grieb
                                        GRIEB@locke.hs.washington.edu
                                        GRIEB@uwalocke.bitnet

ahd@OMNIGATE.CLARKSON.EDU (Drew Derbyshire) (02/12/89)

Cindy, 

You really need a copy of the Programmer's Utility Pack.   It rescues
*ME* about once a day when I do Z-100 specific stuff, and I use it as my
general MS-DOS reference as well.  As for your question... I have never
had the console refuse output... I can dig through PUP some more if you
want to me too (and no one can answer off the top of their head).

Did you ever get the S-100 modem to work?

Drew

GRIEB@LOCKE.HS.WASHINGTON.EDU (CINDY GRIEB) (02/14/89)

Drew,

Yes, I know I need a copy of the Programmer's Utility Pack, but at present
I don't have the extra $225 to get it.  (In fact, it is not even listed
in the latest Heath catalog, so I may have trouble getting it at all.)

I have the S-100 modem working.  In fact that is why I requested some help
on BIOS calls.  The modem program loses characters after CLEAR-SCREEN and
INS/DEL-line terminal functions.  Since the board does not support hardware
interrupts I may just be stuck with it until I can determine why my speed
upgrade isn't working yet.
                                                Cindy Grieb
                                                GRIEB@locke.hs.washington.edu

ahd@OMNIGATE.CLARKSON.EDU (Drew Derbyshire) (02/14/89)

Cindy,

I suspect the characters are being lost in the AUX input queue, not on
the terminal output.  (The time it takes for terminal output could cause
the input overruns, but I do not think the output screen routines are
what is dropping the characters.)   

Similar problems exist in Kermit 2.31 for the Z-100, when I get it fixed
I will ship it to you as an example.

What program are you using, or did you roll your own?

$225? EEEKKKK!  

Drew Derbyshire

GRIEB@LOCKE.HS.WASHINGTON.EDU (CINDY GRIEB) (02/15/89)

Drew,

I am not using AUX.  I am using the USR internal (S100) modem board.
It exists as a port address on the bus and as far as I can tell is
not capable of producing INTerrupts when a character is ready --
which means I am stuck polling the board's status to see if a character
is ready and may miss some if MSDOS takes too long in its CONSOLE
output routine.

Cindy Grieb

ahd@OMNIGATE.CLARKSON.EDU (Drew Derbyshire) (02/15/89)

Cindy,

You got problems.  :-)  I would suggest writing a device driver that
polls every (how often?) and queues it internally.  Then you can write
to the stuff to the screen at a lower priority than the queueing.
Another question is, are you using the BIOS or direct MTR-100 calls for
output?  You may be able to speed the screen output up that way.

Also, how do you poll for keyboard input?  There is an interrupt you can
call to report if you had keyboard or aux input since that last
interupt, this may be lower overhead than the noraml BIOS call to poll.
The interrupt is 58H, it returns flags for devices that had interrupts
in AX.

Kermit handles up to (but not including) 9600 baud that way, using the
BIOS for I/O to the AUX port and direct monitor calls for output.


If you can do a device driver, or find an existing one, interfacing to
existing programs might be alot easier and thus faster in the long run.