SERIAL(DOCS)		IBM PC Device Documentation		SERIAL(DOCS)

    NAME
        serial - serial port pinout

    INT 14H   BIOS Serial Communications
    
	AH=0    INITIALIZE PORT ---------------------------------------------
    
	AL:
	    7       6       5       4       3       2       1       0
	    --- baud rate ---       -parity -    stopbit    -- word length --
	    000 - 110               x0 - none    0 - 1      10 - 7 bits
	    001 - 150               01 - odd     1 - 2      11 - 8 bits
	    010 - 300               11 - even
	    011 - 600
	    100 - 1200
	    101 - 2400
	    110 - 4800
	    111 - 9600
	DX: 0=com1, 1=com2
    
	AH=1    SEND CHARACTER ----------------------------------------------
    
	AL: character to send
	DX: 0=com1, 1=com2
    
	ON RETURN:
	    bit 7 of AH set if error occurred
    
	AH=2    RECEIVE CHARACTER --------------------------------------------
    
	AL: character read
	DX: 0=com1, 1=com2
    
    
    PORT  DLAB=0          DLAB=1
    3f8 - data in/out     baud rate low
    3f9 - IER int enable  baud rate high
    
	--- Ports when DLAB is set -------------------------------------------
    
	    03f9 03f8   ACTUAL BAUD RATE
	     09   00    50
	     04   17    110
	     01   80    300
	     00   60    1200
	     00   30    2400
	     00   18    4800
	     00   0c    9600
	     00   01    real fast
    
	--- Ports when DLAB is clear -----------------------------------------
    
	    03f8 - 8 bit data i/o (characters in/characters out)
    
	    03f9 Interrupt Enable Register (IER)
		0 - Interrupt when character ready
		1 - Interrupt when transmitter holding register empty (THRE)
		2 - Interrupt when LSR has data ready
		3 - Interrupt when MSR has data ready
		4 - 0
		5 - 0
		6 - 0
		7 - 0
    
    3fa - IIR Interrupt Identification Register
    
	    PortValue  Description (Cause)
	    ---------  -------------------------------------------------------
	    06h        LSR has info (overrun/parity/framing/break interrupt)
	    04h        Data ready (character waiting)
	    02h        Transmitter Holding Register Empty (character was sent)
	    00h        MSR has info (CTS, DSR, RI, RLSD)
	       
    
    3fb - LCR line ctrl
	    0 word length (see below)
	    1 word length (see below)
	    2 Stop Bits
	    3 Parity Enable
	    4 Even Parity
	    5 Stick Parity
	    6 Set Break
	    7 DLAB bit (access baud rate via 3f8 and 3f9)
    
	    bit1  bit0  Word Length
	    ----  ----  -----------
	     0      0   5 bits
	     0      1   6 bits
	     1      0   7 bits
	     1      1   8 bits
    
    3fc - MCR modem ctrl
	  0 - Data Terminal Ready
	  1 - Request To Send
	  2 - Out 1
	  3 - Out 2
	  4 - Loop
	  5 - 0
	  6 - 0
	  7 - 0
    
    3fd - LSR line status
	  0 - Data Ready
	  1 - Overrun Error
	  2 - Parity Error
	  3 - Framing Error
	  4 - Break INterrupt
	  5 - Transmitter Holding Reg Empty
	  6 - Transmitter Shift Reg Empty
	  7 - (always zero)
    
    3fe - MSR modem status
	  0 - Delta Clear To Send
	  1 - Delta Data Set Ready
	  2 - Trailing Edge Ring Detector
	  3 - Delta Rx Line Signal Detect
	  4 - Clear To Send
	  5 - Data Set Ready
	  6 - Ring Indicator (=1 during ring voltage)
	  7 - Receive Line Signal Detect (=1 when carrier appears)
    
    mode com1 9600,n,8,1
    debug
    o 3fb 80
    o 3f8 00
    o 3f9 0c
    o 3fb 03
    o 3fc 03

    // UNTESTED
    //    Might need to read LSR again to clear Data Ready bit?
    //
    while ( 1 )
	if ( inp(0x03fd) & 0x01 )
	    fprintf(stderr, "%c", inp(0x03f8));
    
    MODEM/SERIAL PORT WIRING
    
	    25 PIN DCE (IBM computer, modems)	25 PIN DTE (terminal)
    
	    1 	(sheild)			1
	    2	TX ----	OUT			2	RX	IN
	    3	RX 	IN			3	TX	OUT
	    4	RTS ---	OUT			4	
	    5	CTS	IN			5
	    6	DSR 	IN			6
	    7	GND	GND			7
	    8	CD/RLSD	IN			8
	    9	(tx currentloop)		9
	    10					10
	    11					11
	    12					12
	    13					13
	    14					14
	    15					15
	    16					16
	    17					17
	    18	(rx currentloop)		18
	    19					19
	    20	DTR ---	OUT			20
	    21					21
	    22	RI	IN			22
	    23					23
	    24					24
	    25	(rx currentloop ret)		25
    
    
	    9 PIN DCE (IBM computer, modems)	9 PIN DTE (terminal)
	    
	    1	CD/RLSD		IN		1
	    2	TX ------------ OUT		2	RX 	IN
	    3	RX		IN		3	TX ---- OUT
	    4	DTR ----------- OUT		4
	    5	GND		GND		5
	    6	DSR		IN		6
	    7	RTS ----------- OUT		7
	    8	CTS		IN		8
	    9	RI		IN		9
    

© Copyright 1997 Greg Ercolano. All rights reserved.