[comp.os.msdos.programmer] Int 14h protocol

chas@tira.uchicago.edu (Charles Blair) (12/20/90)

I would like a description of the Int 14h protocols so that I can
adapt some asynchronous communications software written in 8086
assembly language to run over Ethernet. Can anyone point me to the
specs? (I already have the telnet driver I need which would grab the
Int 14h I/O.) 

Is it as simple as converting the program to using Int 14h BIOS calls
instead of writing directly to the hardware, or is something else also
involved?

Thanks.
--
Bitnet:                 pmrcjdb@uchimvs1
Internet:       cjdb@midway.uchicago.edu

dzoey@terminus.umd.edu (Joe Herman) (12/20/90)

In article <CHAS.90Dec19185228@tira.uchicago.edu> chas@tira.uchicago.edu (Charles Blair) writes:
>
>I would like a description of the Int 14h protocols so that I can
>adapt some asynchronous communications software written in 8086
>assembly language to run over Ethernet. Can anyone point me to the
>specs? (I already have the telnet driver I need which would grab the
>Int 14h I/O.)

As long as you have a INT14 interceptor that will send your calls over
ethernet (by which I assume you mean TCP/TELNET) the documented INT14
interface is all you need to worry about.  The parameters for calling
INT14 are documented in the DOS Tech Ref and most books on DOS programming.

Here's a thumbnail sketch (from memory)
AH = 0     ; Initialize - AL = 0x8 even parity, AL = 0x10 ODD parity
AH = 1	   ; send char - AL = <char> - returns status in AH
AH = 2	   ; read char - returns <char> in AL
AH = 3	   ; status - returns (AH & 1) == 1 if char waiting to be read

There are also extended calls AH = 4 & AH = 5.  These allow a break to
be transmitted as well as a more detailed status of the modem (useless).
There are probably return codes that I left out of the above, so you're
better off finding a reference in a book.

Using INT14 over TCP is a little slow.  Running kermit over COMTCP
(from the MD-DOSIP package.  Sorry had to plug) I get about the equivalent
of 9600 baud.

			Hope this helps,

			Joe Herman
			U. of Maryland
			dzoey@terminus.umd.edu
-- 
"Everything is wonderful until you know something about it."

bank@lea.ncsu.edu (Dave The DM) (12/23/90)

In article <CHAS.90Dec19185228@tira.uchicago.edu> chas@tira.uchicago.edu (Charles Blair) writes:
>
>I would like a description of the Int 14h protocols so that I can
>adapt some asynchronous communications software written in 8086
>assembly language to run over Ethernet. Can anyone point me to the
>specs? (I already have the telnet driver I need which would grab the
>Int 14h I/O.) 
>
>Is it as simple as converting the program to using Int 14h BIOS calls
>instead of writing directly to the hardware, or is something else also
>involved?
>
>Thanks.
>--
>Bitnet:                 pmrcjdb@uchimvs1
>Internet:       cjdb@midway.uchicago.edu

    According to the book "System BIOS for the IBM PC/XT/AT" put out by
Phoenix Technologies (1989 printing, ISBN 0-201-51806-6, Chapter 12),
there are four INT 14h services offerred (Services 04h thru FFh are
listed as "Reserved"...the others are listed as being available on all
platforms).
    These are:
 
         00h - Initialize Serial Communications Port
         01h - Send character
         02h - Receive Character
         03h - Read Serial Port Status

    I won't go into detail of the I/O signals discussed, theory of
operation, baud rate, I/O ports used, and error conditions. Check the
book out at your local library or buy it from your local computer

store...it isn't worth the net bandwidth.
 
    I seem to recall the "C Programmer's Guide to Serial Communications"
...or perhaps it was "Microsoft C Run-Time Library Reference" saying
something about an effective data transmission rate limitation of 1200
baud due to interrupt overhead and that you'd do better to use your
own interrupt hander. I dunno for sure...all the stuff I've written
using this service has been polled operation rather than
interrupt-driven as I wasn't worried about speed.

Dave the DM
bank@lea.csc.ncsu.edu