The serial port:
basis address can be 03f8 for add in serial port (I/O card)
02f8 for add in serial port (I/O card)
03f8,02f8 Transmit and receive buffer with DLAB=0 (see 03fb)
Divisor latch LSB with DLAB=1 (Baudrate)
03f9,02f9 Interrupt enable register with DLAB=0
Divisor latch MSB with DLAB=1 (Baudrate)
03fa,02fa Interrupt identification register
03fb,02fb Line control register
03fc,02fc Modem control register
03fd,02fd Line status register
03fe,02fe Modem status register
Line control register:
Bit 7 6 5 4 3 2 1 0
DLAB SetBreak StickPar EvenPar ParityEn Stopbits Wordlength
DLAB= Divisor Latch Acces Bit
Wordlength bit1 0 Stopbits: 0 = 1 , 1 = 2 stopbits
5bits 0 0 Parity En: 1 parity bit is generated and checked
6bits 0 1 0 no parity bit is generated
7bits 1 0 Even Parity: a 1 selects even, a 0 odd parity
8bits 1 1 Stick parity reverses logic of parity bit
Divisor Latch: Baudrate generator is programmed with this
Divisor Latch MSB is bit15 - bit 8
Divisor Latch LSB is bit7 - bit 0 LSB and MSB form one word
Baudrate LSB MSB Baudrate LSB MSB
50 09 00 1200 00 60
75 06 00 1800 00 40
110 04 17 2000 00 3a
134.5 03 59 2400 00 30
150 03 00 3600 00 20
300 01 80 4800 00 18
600 00 c0 7200 00 10
9600 00 0c
Line status register:
bit7 6 5 4 3 2 1 0
0 Tx-reg tx-buffer Break Framing Parity Overrun Data Ready
empty empty Interr Error Error Error
Interrupt identification register:
bit7 6 5 4 3 2 1 0
0 0 0 0 0 IntID1 IntID0 0 if Interrupt
pending
IntID1 IntID0
1 1 Error (Overrun,Parity,Framing or Break Interrupt)
1 0 Receiver Data available
0 1 Transmitter buffer empty
0 0 Modem status (CTS, DSR, RI or received line signal detect)
Interrupt Enable register:
bit7 6 5 4 3 2 1 0
0 0 0 0 En.Modem En.Recei En.Txbuf En. Data
status ve line empty available
Int. Int. Int. Interrupt
Modem control register
bit7 6 5 4 3 2 1 0
0 0 0 Loop Out2 Out1 RTS DTR
RTS Request to Send
DTR Data Terminal Ready
Modem status register
bit7 6 5 4 3 2 1 0
RLSD RI DSR CTS DRLSD TERI DDSR DCTS
RLSD Receive Line Signal Detect
RI Ring indicator
DSR Data set ready
CTS Clear to send
DRLSD Delta Receive Line Signal Detect
TERI Trailing Edge Ring Indicator
DDSR Delta Data Set Ready
DCTS Delta Clear to Send
Hardddisk Controller 1F0-1F7 & 3F6-3F7
³bit7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³ ³
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÁÄ ÄÄÄÄÅÄÄÄÅÄÄÄ
data ³ databyte or word ³ RW³1F0
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÅÄÄÄ
error ³BBK ³UNC ³ MC ³IDNF ³MCR ³ABRT³ TK0NF³ AMNF³ R ³1F1
feature/RWC ³ control code or RWC ³ W ³ "
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÅÄÄÄ
# of sect ³ # of sectors ³ RW³1F2
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ ÄÄÄÄÅÄÄÄÅÄÄÄ
1. sector ³ 1. sector ³ RW³1F3
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ ÄÄÄÄÅÄÄÄÅÄÄÄ
track LSB ³ track# bit 7-0 ³ RW³1F4
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ ÄÄÄÄÅÄÄÄÅÄÄÄ
track MSB ³ track# bit 8-15 ³ RW³1F5
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄ head select ÄÄÄÄÅÄÄÄÅÄÄÄ
DH reg ³ 1 ³LBA ³ 1 ³ DRV ³ 3 ³ 2 ³ 1 ³ 0 ³ RW³1F6
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÅÄÄÄ
status reg ³ BSY ³DRDY ³ DWF ³ DSC ³ DRQ ³CORR ³ IDX ³ ERR ³ R ³1F7
command ³ command code ³ ³ ³ ³ ³ ³ W ³
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÅÄÄÄ
status 2 ³ BSY ³DRDY ³ DWF ³ DSC ³ DRQ ³CORR ³ IDX ³ ERR ³ R ³3F6
control ³ - ³ - ³ - ³ - ³ 1 ³SRST ³ /IEN³ 0 ³ W ³
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÅÄÄÄ
address ³ - ³/WTG ³ 3 ³ 2 ³ 1 ³ 0 ³ 1 ³ 0 ³ R ³3F7
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄ head select ÄÁÄÄÄÄÄÁÄ drive selÀÄÄÄÁÄÄÄ
BBK bad block detected UNC uncorrectable data error
MC media change IDNF ID not found
MCR media change requested ABRT aborted command
TK0NF track0 not found AMNF address-amrk not found
error codes 01/81H ok, 02/82H sectorformat, 03/83 databuffer
04/84H ECC logic, 05/85H microcontroller
RWC reduced write currrent
# of sectors to be read/writtten 1. sector: starting at sector
DH drive/head LBA LBA mode
DRV 0=master 1=slave
BSY busy DSDY drive ready
DWF drive write fault DSC drive seek complete
DRQ data request CORR corrected data
IDX index signal ERR error in command exec.