主板IO地址

    本文地址:http://tongxinmao.com/Article/Detail/id/514

    [This file was provided by Wim Osterholt (2:512/56 or wim@djo.wtm.tudelft.nl).]
    Last Change: 11/6/94
    
    
    		XT, AT and PS/2	 I/O port addresses
    
          Do NOT consider this information as complete and accurate.
          If you want to do harware programming check ALWAYS the
          appropriate data sheets. Be aware that erroneously programming
          can put your hardware or your data at risk. 
    
          There is a memory mapped address in use for I/O functions of which I
          think it should be mentioned here. See at the end of this list.
    
    -------------------------------------------------------------------------------
    0000-001F ----	DMA 1	(first Direct Memory Access controller 8237)
    
    0000	r/w	DMA channel 0  address	byte  0, then byte 1.
    0001	r/w	DMA channel 0 word count byte 0, then byte 1.
    0002	r/w	DMA channel 1  address	byte  0, then byte 1.
    0003	r/w	DMA channel 1 word count byte 0, then byte 1.
    0004	r/w	DMA channel 2  address	byte  0, then byte 1.
    0005	r/w	DMA channel 2 word count byte 0, then byte 1.
    0006	r/w	DMA channel 3  address	byte  0, then byte 1.
    0007	r/w	DMA channel 3 word count byte 0, then byte 1.
    
    0008	r	DMA channel 0-3 status register
    		 bit 7 = 1  channel 3 request
    		 bit 6 = 1  channel 2 request
    		 bit 5 = 1  channel 1 request
    		 bit 4 = 1  channel 0 request
    		 bit 3 = 1  channel terminal count on channel 3
    		 bit 2 = 1  channel terminal count on channel 2
    		 bit 1 = 1  channel terminal count on channel 1
    		 bit 0 = 1  channel terminal count on channel 0
    
    0008	w	DMA channel 0-3 command register
    		 bit 7 = 1  DACK sense active high
    		       = 0  DACK sense active low
    		 bit 6 = 1  DREQ sense active high
    		       = 0  DREQ sense active low
    		 bit 5 = 1  extended write selection
    		       = 0  late write selection
    		 bit 4 = 1  rotating priority
    		       = 0  fixed priority
    		 bit 3 = 1  compressed timing
    		       = 0  normal timing
    		 bit 2 = 1  enable controller
    		       = 0  enable memory-to-memory
    
    0009	w	DMA write request register
    
    000A	r/w	DMA channel 0-3 mask register
    		 bit 7-3 = 0   reserved
    		 bit 2	 = 0   clear mask bit
    			 = 1   set mask bit
    		 bit 1-0 = 00  channel 0 select
    			 = 01  channel 1 select
    			 = 10  channel 2 select
    			 = 11  channel 3 select
    
    000B	w	DMA channel 0-3 mode register
    		 bit 7-6 = 00  demand mode
    			 = 01  single mode
    			 = 10  block mode
    			 = 11  cascade mode
    		 bit 5	 = 0   address increment select
    			 = 1   address decrement select
    		 bit 3-2 = 00  verify operation
    			 = 01  write to memory
    			 = 10  read from memory
    			 = 11  reserved
    		 bit 1-0 = 00  channel 0 select
    			 = 01  channel 1 select
    			 = 10  channel 2 select
    			 = 11  channel 3 select
    
    000C	w	DMA clear byte pointer flip-flop
    000D	r	DMA read temporary register
    000D	w	DMA master clear
    000E	w	DMA clear mask register
    000F	w	DMA write mask register
    
    -------------------------------------------------------------------------------
    0010-001F ----	DMA controller (8237) on PS/2 model 60 & 80
    
    -------------------------------------------------------------------------------
    0018	w	PS/2 extended function register
    
    -------------------------------------------------------------------------------
    001A		PS/2 extended function execute
    
    -------------------------------------------------------------------------------
    0020-003F ----	PIC 1	(Programmable Interrupt Controller 8259)
    
    0020	w	PIC initialization command word ICW1
    		 bit 7-5 = 0  only used in 80/85 mode
    		 bit 4	 = 1  ICW1 is being issued
    		 bit 3	 = 0  edge triggered mode
    			 = 1  level triggered mode
    		 bit 2	 = 0  successive interrupt vectors use 8 bytes
    			 = 1  successive interrupt vectors use 4 bytes
    		 bit 1	 = 0  cascade mode
    			 = 1  single mode, no ICW3 needed
    		 bit 0	 = 0  no ICW4 needed
    			 = 1  ICW4 needed
    
    0021	w	PIC  ICW2,ICW3,ICW4 after ICW1 to 0020
    		ICW2:
    		 bit 7-3 = address lines A0-A3 of base vector address for PIC
    		 bit 2-0 = reserved
    		ICW3:
    		 bit 7-0 = 0  slave controller not attached to corresponding
    			      interrupt pin
    			 = 1  slave controller attached to corresponding
    			      interrupt pin
    		ICW4:
    		 bit 7-5 = 0  reserved
    		 bit 4	 = 0  no special fully-nested mode
    			 = 1  special fully-nested mode
    		 bit 3-2 = 0x nonbuffered mode
    			 = 10 buffered mode/slave
    			 = 11 buffered mode/master
    		 bit 1	 = 0  normal EOI
    			 = 1  Auto EOI
    		 bit 0	 = 0  8085 mode
    			 = 1  8086/8088 mode
    
    0021	r/w	PIC master interrupt mask register
    		OCW1:
    		 bit 7 = 0  enable parallel printer interrupt
    		 bit 6 = 0  enable diskette interrupt
    		 bit 5 = 0  enable fixed disk interrupt
    		 bit 4 = 0  enable serial port 1 interrupt
    		 bit 3 = 0  enable serial port 2 interrupt
    		 bit 2 = 0  enable video interrupt
    		 bit 1 = 0  enable keyboard, mouse, RTC interrupt
    		 bit 0 = 0  enable timer interrupt
    
    0020	r	PIC  interrupt request/in-service registers by OCW3
    		request register:
    		 bit 7-0 = 0  no active request for the corresponding int. line
    			 = 1  active request for corresponding interrupt line
    		in-service register:
    		 bit 7-0 = 0  corresponding line not currently being serviced
    			 = 1  corresponding int. line currently being serviced
    
    0020	w	OCW2:
    		 bit 7-5 = 000	rotate in auto EOI mode (clear)
    			 = 001	nonspecific EOI
    			 = 010	no operation
    			 = 011	specific EOI
    			 = 100	rotate in auto EOI mode (set)
    			 = 101	rotate on nonspecific EOI command
    			 = 110	set priority command
    			 = 111	rotate on specific EOI command
    		 bit 4	 = 0	reserved
    		 bit 3	 = 0	reserved
    		 bit 2-0	interrupt request to which the command applies
    
    0020	w	PIC OCW3
    		 bit 7	 = 0   reserved
    		 bit 6-5 = 0x  no operation
    			 = 10  reset special mask
    			 = 11  set special mask
    		 bit 4	 = 0   reserved
    		 bit 3	 = 1   reserved
    		 bit 2	 = 0   no poll command
    			 = 1   poll command
    		 bit 1-0 = 0x  no operation
    			 = 10  read int.request register on next read at 0020
    			 = 11  read int.in-service register on next read 0020
    
    -------------------------------------------------------------------------------
    0022-002B ----	Intel 82355, part of chipset for 386sx
    		 initialisation in POST will disable these addresses,
    		 only a hard reset will enable them again.
    
    0022	r/w	82335 MCR memory configuration register
    0024		82335 RC1 roll compare register
    0026		82335 RC2 roll compare register
    0028		82335 CC0 compare register
    002A		82335 CC1 compare register
    
    		  values for CC0 and CC1:
    		  00F9,0000  enable range compare CC0 0-512K  CC1 disable
    		  00F1,0000  enable range compare CC0 0-1024K CC1 disable
    		  00F1,10F9  enable range compare CC0 0-1M    CC1 1M-1M5
    		  00E1,0000  enable range compare CC0 0-2M    CC1 disable
    		  00E1,0000  enable range compare CC0 0-2M    CC1 disable
    		  00C1,0000  enable range compare CC0 0-4M    CC1 disable
    		  00C1,40E1  enable range compare CC0 0-4M    CC1 4M-6M
    		  0081,0000  enable range compare CC0 0-8M    CC1 disable
    
    -------------------------------------------------------------------------------
    0022-0023 ----	Chip Set Data
    
    0022	w	index for accesses to data port
    0023	r/w	chip set data
    
    -------------------------------------------------------------------------------
    0022-0023 ----	Cyrix Cx486SLC/DLC processor Cache Configuration Registers
    
    0022	w	index for accesses to next port
    		C0h CR0
    		C1h CR1
    		C4h non-cacheable region 1, start address bits 31-24
    		C5h non-cacheable region 1, start address bits 23-16
    		C6h non-cacheable region 1, start addr 15-12, size (low nibble)
    		C7h non-cacheable region 2, start address bits 31-24
    		C8h non-cacheable region 2, start address bits 23-16
    		C9h non-cacheable region 2, start addr 15-12, size (low nibble)
    		CAh non-cacheable region 3, start address bits 31-24
    		CBh non-cacheable region 3, start address bits 23-16
    		CCh non-cacheable region 3, start addr 15-12, size (low nibble)
    		CDh non-cacheable region 4, start address bits 31-24
    		CEh non-cacheable region 4, start address bits 23-16
    		CFh non-cacheable region 4, start addr 15-12, size (low nibble)
    0023	r/w	cache configuration register array (indexed by port 0022h)
    
    		non-cacheable region sizes:
    		 00h  disabled
    		 01h  4K
    		 02h  8K
    		 03h  16K
    		 04h  32K
    		 05h  64K
    		 06h  128K
    		 07h  256K
    		 08h  512K
    		 09h  1M
    		 0Ah  2M
    		 0Bh  4M
    		 0Ch  8M
    		 0Dh  16M
    		 0Eh  32M
    		 0Fh  4G
    
    		Configuration Register 0 format:
    		 bit 0	"NC0" first 64K of each 1M noncacheable in real/V86
    		 bit 1	"NC1" 640K-1M noncacheable
    		 bit 2	"A20M" enables A20M# input pin
    		 bit 3	"KEN"  enables KEN# input pin
    		 bit 4	"FLUSH" enables KEN# input pin
    		 bit 5	"BARB" enables internal cache flushing on bus holds
    		 bit 6	"C0" cache direct-mapped instead of 2-way associative
    		 bit 7	"SUSPEND" enables SUSP# input and SUSPA# output pins
    
    		Configuration Register 1 format;
    		 bit 0	"RPL" enables output pins RPLSET and RPLVAL#
    
    -------------------------------------------------------------------------------
    0026-0027 ----	Power Management
    
    0026	w	index for data port
    0027	r/w	power management data
    
    -------------------------------------------------------------------------------
    0038-003F ----	PC radio by CoZet Info Systems
    		The I/O address range is dipswitch selectable from:
    		   038-03F and 0B0-0BF
    		   078-07F and 0F0-0FF
    		   138-13F and 1B0-1BF
    		   178-17F and 1F0-1FF
    		   238-23F and 2B0-2BF
    		   278-27F and 2F0-2FF
    		   338-33F and 3B0-3BF
    		   378-37F and 3F0-3FF
    		All of these addresses show a readout of FF in initial state.
    		Once started, all of the addresses show	 FB, whatever might
    		happen.
    
    -------------------------------------------------------------------------------
    0040-005F ----	PIT  (Programmable Interrupt Timer  8253, 8254)
    		 XT & AT uses 40-43    PS/2 uses 40, 42,43,44, 47
    
    0040	r/w	PIT  counter 0, counter divisor	      (XT, AT, PS/2)
    0041	r/w	PIT  counter 1, RAM refresh counter   (XT, AT)
    0042	r/w	PIT  counter 2, cassette & speaker    (XT, AT, PS/2)
    
    0043	r/w	PIT  mode port, control word register for counters 0-2
    		 bit 7-6 = 00  counter 0 select
    			 = 01  counter 1 select	  (not PS/2)
    			 = 10  counter 2 select
    		 bit 5-4 = 00  counter latch command
    			 = 01  read/write counter bits 0-7 only
    			 = 10  read/write counter bits 8-15 only
    			 = 11  read/write counter bits 0-7 first, then 8-15
    		 bit 3-1 = 000 mode 0 select
    			 = 001 mode 1 select - programmable one shot
    			 = x10 mode 2 select - rate generator
    			 = x11 mode 3 select - square wave generator
    			 = 100 mode 4 select - software triggered strobe
    			 = 101 mode 5 select - hardware triggered strobe
    		 bit 0	 = 0   binary counter 16 bits
    			 = 1   BCD counter
    
    0044	r/w	PIT  counter 3 (PS/2, EISA)
    		used as fail-safe timer. generates an NMI on time out.
    		for user generated NMI see at 0462.
    
    0047	w	PIT  control word register counter 3 (PS/2, EISA)
    		 bit 7-6 = 00  counter 3 select
    			 = 01  reserved
    			 = 10  reserved
    			 = 11  reserved
    		 bit 5-4 = 00  counter latch command counter 3
    			 = 01  read/write counter bits 0-7 only
    			 = 1x  reserved
    		 bit 3-0 = 00
    
    0048		EISA
    0049		8254 timer 2, not used (counter 1)
    004A		EISA programmable interval timer 2
    004B		EISA programmable interval timer 2
    
    -------------------------------------------------------------------------------
    0060-006F ----	Keyboard controller 804x (8041, 8042)  (or PPI (8255) on PC,XT)
    		 XT uses 60-63,	 AT uses 60-64
    
    		 AT keyboard controller input port bit definitions
    		  bit 7	  = 0  keyboard inhibited
    		  bit 6	  = 0  CGA, else MDA
    		  bit 5	  = 0  manufacturing jumper installed
    		  bit 4	  = 0  system RAM 512K, else 640K
    		  bit 3-0      reserved
    
    		 AT keyboard controller input port bit definitions by Compaq
    		  bit 7	  = 0  security lock is locked
    		  bit 6	  = 0  Compaq dual-scan display, 1=non-Compaq display
    		  bit 5	  = 0  system board dip switch 5 is ON
    		  bit 4	  = 0  auto speed selected, 1=high speed selected
    		  bit 3	  = 0  slow (4MHz), 1 = fast (8MHz)
    		  bit 2	  = 0  80287 installed, 1= no NDP installed
    		  bit 1-0      reserved
    
    		 AT keyboard controller output port bit definitions
    		  bit 7 =    keyboard data output
    		  bit 6 =    keyboard clock output
    		  bit 5 = 0  input buffer full
    		  bit 4 = 0  output buffer empty
    		  bit 3 =    reserved (see note)
    		  bit 2 =    reserved (see note)
    		  bit 1 =    gate A20
    		  bit 0 =    system reset
    		Note:	bits 2 and 3 are the turbo speed switch or password
    			  lock on Award/AMI/Phoenix BIOSes.  These bits make
    			  use of nonstandard keyboard controller BIOS
    			  functionality to manipulate
    			    pin 23 (8041 port 22) as turbo switch for AWARD
    			    pin 35 (8041 port 15) as turbo switch/pw lock for
    				Phoenix
    
    0060	r/w	KB controller data port or keyboard input buffer (ISA, EISA)
    		should only be read from after status port bit0 = 1
    		should only be written to if status port bit1 = 0
    		keyboard commands (data also goes to port 0060):
    		 E6	sngl  set mouse scaling to 1:1
    		 E7	sngl  set mouse scaling to 2:1
    		 E8	dbl   set mouse resolution
    				(00h = 1/mm,01h = 2/mm,02h = 4/mm,03h = 8/mm)
    		 E9	sngl  get mouse information
    				read two status bytes:
    				  byte 0
    					bit 7 unused
    					bit 6 remote rather than stream mode
    					bit 5 mouse enabled
    					bit 4 scaling set to 2:1
    					bit 3 unused
    					bit 2 left button pressed
    					bit 1 unused
    					bit 0 right button pressed
    				  byte 1: resolution
    		 ED	dbl   set/reset mode indicators Caps Num Scrl
    				bit 2 = CapsLk, bit 1 = NumLk, bit 0 = ScrlLk
    		 EE	sngl  diagnostic echo. returns EE.
    		 EF	sngl  NOP (No OPeration). reserved for future use
    		 F0	dbl   get/set scan code set
    				00h get current set
    				01h scancode set 1 (except Type 2 ctrlr)
    				02h scancode set 2 (default)
    				03h scancode set 3
    		 F2	sngl  read keyboard ID (read two ID bytes)
    		 F2	sngl  read mouse ID (read two ID bytes)
    		 F3	dbl   set typematic rate/delay
    		 F3	dbl   set mouse sample rate in reports per second
    		 F4	sngl  enable keyboard
    		 F4	sngl  enable mouse
    		 F5	sngl  disable keyboard. set default parameters
    		 F5	sngl  disable mouse, set default parameters
    		 F6	sngl  set default parameters
    		 F7	sngl  [MCA] set all keys to typematic (scancode set 3)
    		 F8	sngl  [MCA] set all keys to make/release
    		 F9	sngl  [MCA] set all keys to make only
    		 FA	sngl  [MCA] set all keys to typematic/make/release
    		 FB	sngl  [MCA] set al keys to typematic
    		 FC	dbl   [MCA] set specific key to make/release
    		 FD	dbl   [MCA] set specific key to make only
    		 FE	sngl  resend last scancode
    		 FF	sngl  perform internal power-on reset function
    		 FF	sngl  reset mouse
    		Note:	must issue command D4h to port 64h first to access
    			  mouse functions
    
    
    0060	r	KeyBoard or KB controller data output buffer (via PPI on XT)
    
    0061	w	KB controller port B (ISA, EISA)   (PS/2 port A is at 0092)
    		system control port for compatibility with 8255
    		 bit 7	(1= IRQ 0 reset )
    		 bit 6-4    reserved
    		 bit 3 = 1  channel check enable
    		 bit 2 = 1  parity check enable
    		 bit 1 = 1  speaker data enable
    		 bit 0 = 1  timer 2 gate to speaker enable
    
    0061	r	KB controller port B control register (ISA, EISA)
    		system control port for compatibility with 8255
    		 bit 7	 parity check occurred
    		 bit 6	 channel check occurred
    		 bit 5	 mirrors timer 2 output condition
    		 bit 4	 toggles with each refresh request
    		 bit 3	 channel check status
    		 bit 2	 parity check status
    		 bit 1	 speaker data status
    		 bit 0	 timer 2 gate to speaker status
    
    0061	w	PPI  Programmable Peripheral Interface 8255 (XT only)
    		system control port
    		 bit 7 = 1  clear keyboard
    		 bit 6 = 0  hold keyboard clock low
    		 bit 5 = 0  I/O check enable
    		 bit 4 = 0  RAM parity check enable
    		 bit 3 = 0  read low switches
    		 bit 2	    reserved, often used as turbo switch
    		 bit 1 = 1  speaker data enable
    		 bit 0 = 1  timer 2 gate to speaker enable
    
    0062	r/w	PPI (XT only)
    		 bit 7 = 1  RAM parity check
    		 bit 6 = 1  I/O channel check
    		 bit 5 = 1  timer 2 channel out
    		 bit 4	    reserved 
    		 bit 3 = 1  system board RAM size type 1
    		 bit 2 = 1  system board RAM size type 2
    		 bit 1 = 1  coprocessor installed
    		 bit 0 = 1  loop in POST
    
    0063	r/w	PPI (XT only) command mode register  (read dipswitches)
    		 bit 7-6 = 00  1 diskette drive
    			 = 01  2 diskette drives
    			 = 10  3 diskette drives
    			 = 11  4 diskette drives
    		 bit 5-4 = 00  reserved
    			 = 01  40*25 color (mono mode)
    			 = 10  80*25 color (mono mode)
    			 = 11  MDA 80*25
    		 bit 3-2 = 00  256K (using 256K chips)
    			 = 01  512K (using 256K chips)
    			 = 10  576K (using 256K chips)
    			 = 11  640K (using 256K chips)
    		 bit 3-2 = 00  64K  (using 64K chips)
    			 = 01  128K (using 64K chips)
    			 = 10  192K (using 64K chips)
    			 = 11  256K (using 64K chips)
    		 bit 1-0       reserved
    
    0064	r	KB controller read status (ISA, EISA)
    		 bit 7 = 1 parity error on transmission from keyboard
    		 bit 6 = 1 receive timeout
    		 bit 5 = 1 transmit timeout
    		 bit 4 = 0 keyboard inhibit
    		 bit 3 = 1 data in input register is command
    			 0 data in input register is data
    		 bit 2	 system flag status: 0=power up or reset  1=selftest OK
    		 bit 1 = 1 input buffer full (input 60/64 has data for 8042)
    		 bit 0 = 1 output buffer full (output 60 has data for system)
    
    0064	r	KB controller read status (MCA)
    		 bit 7 = 1 parity error on transmission from keyboard
    		 bit 6 = 1 general timeout
    		 bit 5 = 1 mouse output buffer full
    		 bit 4 = 0 keyboard inhibit
    		 bit 3 = 1 data in input register is command
    			 0 data in input register is data
    		 bit 2	 system flag status: 0=power up or reset  1=selftest OK
    		 bit 1 = 1 input buffer full (input 60/64 has data for 804x)
    		 bit 0 = 1 output buffer full (output 60 has data for system)
    
    0064	r	KB controller read status by Compaq
    		 bit 7 = 1 parity error detected (11-bit format only). If an
    			   error is detected, a Resend command is sent to the
    			   keyboard once only, as an attempt to recover.
    		 bit 6 = 1 receive timeout. transmission didn't finish in 2mS.
    		 bit 5 = 1 transmission timeout error
    			    bit 5,6,7  cause
    				1 0 0  No clock
    				1 1 0  Clock OK, no response
    				1 0 1  Clock OK, parity error
    		 bit 4 = 0 security lock engaged
    		 bit 3 = 1 data in OUTPUT register is command
    			 0 data in OUTPUT register is data
    		 bit 2	 system flag status: 0=power up or reset  1=soft reset
    		 bit 1 = 1 input buffer full (output 60/64 has data)
    		 bit 0 = 0 no new data in buffer (input 60 has data)
    
    0064	w	KB controller input buffer (ISA, EISA)
    		KB controller commands (data goes to port 0060):
    		 20	read  read byte zero of internal RAM, this is the
    			      last KB command send to 804x
    		      Compaq  Put current command byte on port 0060
    				command structure:
    				bit 7	reserved
    				bit 6 = 1 convert KB codes to 8086 scan codes
    				bit 5 = 0 use 11-bit codes, 1=use 8086 codes
    				bit 4 = 0 enable keyboard, 1=disable keyboard
    				bit 3 = 1 ignore security lock state
    				bit 2	  this bit goes into bit2 status reg.
    				bit 1 = 0 reserved
    				bit 0 = 1 generate int. when output buffer full
    		 21-3F	read  reads the byte specified in the lower 5 bits of
    			      the command in the 804x's internal RAM
    		 60-7F	dbl   writes the data byte to the address specified in
    			      the 5 lower bits of the command.
    
    			      Alternate description KB IO command 60 summary:
    			       bit7 = 0 reserved
    			       bit6 =	IBM PC compatibility mode
    			       bit5 =	IBM PC mode
    			       bit4 =	disable kb
    			       bit3 =	inhibit override
    			       bit2 =	system flag
    			       bit1 = 0 reserved
    			       bit0 =	enableoutput buffer full interrupt
    
    		 60   Compaq  Load new command (60 to [64], command to [60])
    		 A1   Compaq  unknown speedfunction ??
    		 A2   Compaq  unknown speedfunction ??
    		 A3   Compaq  Enable system speed control
    		 A4	MCA   check if password installed
    		 A4   Compaq  Toggle speed
    		 A5	MCA   load password
    		 A5   Compaq  Special reed. the 8042 places the real values
    			      of port 2 except for bits 4 and 5 wich are given
    			      a new definition in the output buffer. No output
    			      buffer full is generated.
    				if bit 5 = 0, a 9-bit keyboard is in use
    				if bit 5 = 1, an 11-bit keyboard is in use
    				if bit 4 = 0, outp-buff-full interrupt disabled
    				if bit 4 = 1, output-buffer-full int. enabled
    		 A6	MCA   check password
    		 A6   Compaq  unknown speedfunction ??
    		 A7	MCA   disable mouse port
    		 A8	MCA   enable mouse port
    		 A9	MCA   test mouse port
    		 AA	sngl  initiate self-test. will return 55 to data port
    		      Compaq  Initializes ports 1 and 2, disables the keyboard
    			      and clears the buffer pointers. It then places
    			      55 in the output buffer.
    		 AB	sngl  initiate interface test. result values:
    			       0 = no error
    			       1 = keyboard clock line stuck low
    			       2 = keyboard clock line stuck high
    			       3 = keyboard data line is stuck low
    			       4 = keyboard data line stuck high
    		      Compaq   5 = Compaq diagnostic feature
    		 AC	read  diagnostic dump. the contents of the 804x RAM,
    			      output port, input port, status word are send.
    		 AD	sngl  disable keyboard (sets bit 4 of commmand byte)
    		 AE	sngl  enable keyboard  (resets bit 4 of commmand byte)
    		 AF	AWARD Enhanced Command: read keyboard version
    		 C0	read  read input port
    		      Compaq  Places status of input port in output buffer. use
    			      this command only when the output buffer is empty
    		 C1	MCA   Enhanced Command: poll input port Low nibble
    		 C2	MCA   Enhanced Command: poll input port High nibble
    		 D0	read  read output port
    		      Compaq  Places byte in output port in output buffer. use
    			      this command only when the output buffer is empty
    		 D1	dbl   write output port. next byte written  to 0060
    			      will be written to the 804x output port; the
    			      original IBM AT and many compatibles use bit 1 of
    			      the output port to control the A20 gate.
    		      Compaq  The system speed bits are not set by this command
    			      use commands A1-A6 (!) for speed functions.
    		 D2	MCA   Enhanced Command: write keyboard output buffer
    		 D3	MCA   Enhanced Command: write pointing device out.buf.
    		 D4	MCA   write to mouse
    		 D4	AWARD Enhanced Command: write to auxiliary device
    		 DD	sngl  disable address line A20 (HP Vectra only???)
    			      default in Real Mode
    		 DF	sngl  enable address line A20 (HP Vectra only???)
    		 E0	read  read test inputs.
    				bit0 = kbd clock, bit1 = kbd data
    		 Exxx	AWARD Enhanced Command: active output port
    		 ED   Compaq  This is a two part command to control the state
    			      of the NumLock CpasLock and ScrollLock LEDs
    			      The second byte contains the state to set LEDs.
    				bit 7-3	   reserved. should be set to 0.
    				bit 2 = 0  Caps Lock LED off
    				bit 1 = 0  Num Lock LED off
    				bit 0 = 0  Scroll Lock LED off
    		 F0-FF	sngl  pulse output port low for 6 microseconds.
    			      bits 0-3 contain the mask for the bits to be
    			      pulsed. a bit is pulsed if its mask bit is zero.
    			      bit0=system reset. Don't set to zero. Pulse only!
    
    general note:	 Keyboard controllers are widely different from each other.
    		 You cannot generally exchange them between different machines.
    note on Award:	 Derived from Award's Enhanced KB controller advertising sheet.
    note on Compaq:	 Derived from the Compaq Deskpro 386 Tech. Ref. Guide.
    
    0065	r	communications port (Olivetti M24)
    
    0068	w	HP-Vectra  control buffer (HP commands)
    0069	r	HP-Vectra  SVC (keyboard request SerViCe port)
    006A	w	HP-Vectra  clear processing, done
    
    006C-006F	HP-HIL	(Human Interface Link = async. serial inputs 0-7)
    
    -------------------------------------------------------------------------------
    0065	  ----	AT&T 6300+ high/low chip select
    
    -------------------------------------------------------------------------------
    0065	  ----	???
    
    0065	r/w	???
    		bit 2: A20 gate control (set = A20 enabled, clear = disabled)
    
    -------------------------------------------------------------------------------
    0066-0067 ----	AT&T 6300+ system configuration switches
    
    -------------------------------------------------------------------------------
    0068	  ----	C&T chipsets, turbo mode control
    
    -------------------------------------------------------------------------------
    006B-006F ----	SSGA control registers
    
    006B	?	RAM enable/remap
    006C-006F	undocumented
    
    -------------------------------------------------------------------------------
    0070-007F ----	CMOS RAM/RTC (Real Time Clock  MC146818)
    
    0070	w	CMOS RAM index register port (ISA, EISA)
    		 bit 7	 = 1  NMI disabled
    			 = 0  NMI enabled
    		 bit 6-0      CMOS RAM index (64 bytes, sometimes 128 bytes)
    
    		any write to 0070 should be followed by an action to 0071
    		or the RTC wil be left in an unknown state.
    
    0071	r/w	CMOS RAM data port (ISA, EISA)
    		RTC registers:
    		00    current second in BCD
    		01    alarm second   in BCD
    		02    current minute in BCD
    		03    alarm minute   in BCD
    		04    current hour in BCD
    		05    alarm hour   in BCD
    		06    day of week  in BCD
    		07    day of month in BCD
    		08    month in BCD
    		09    year  in BCD (00-99)
    		0A    status register A
    		       bit 7 = 1  update in progress
    		       bit 6-4 divider that identifies the time-based
    				frequency
    		       bit 3-0 rate selection output  frequency and int. rate
    		0B    status register B
    		       bit 7 = 0  run
    			     = 1  halt
    		       bit 6 = 1  enable periodic interrupt
    		       bit 5 = 1  enable alarm interrupt
    		       bit 4 = 1  enable update-ended interrupt
    		       bit 3 = 1  enable square wave interrupt
    		       bit 2 = 1  calendar is in binary format
    			     = 0  calendar is in BCD format
    		       bit 1 = 1  24-hour mode
    			     = 0  12-hour mode
    		       bit 0 = 1  enable daylight savings time. only in USA.
    				  useless in Europe. Some DOS versions clear
    				  this bit when you use the DAT/TIME command.
    		0C    status register C
    		       bit 7 =	  interrupt request flag
    		       bit 6 =	  peridoc interrupt flag
    		       bit 5 =	  alarm interrupt flag
    		       bit 4 =	  update interrupt flag
    		       bit 3-0	  reserved
    		0D    status register D
    		       bit 7 = 1  Real-Time Clock has power
    		       bit 6-0	  reserved
    		0E    diagnostics status byte
    		       bit 7 = 0  RTC lost power
    		       bit 6 = 1  CMOS RAM checksum bad
    		       bit 5 = 1  invalid configuration information at POST
    		       bit 4 = 1  memory size error at POST
    		       bit 3 = 1  fixed disk/adapter failed initialization
    		       bit 2 = 1  CMOS RAM time found invalid
    		       bit 1 = 1  adapters do not match configuration (EISA)
    		       bit 0 = 1  time out reading an adapter ID (EISA)
    		0F    shutdown status byte
    		       00 = normal execution of POST
    		       01 = chip set initialization for real mode reentry
    		       04 = jump to bootstrap code
    		       05 = issue an EOI an JMP to Dword ptr at 40:67
    		       06 = JMP to Dword ptrv at 40:67 without EOI
    		       07 = return to INT15/87 (block move)
    		       08 = return to POST memory test
    		       09 = return to INT15/87 (block move)
    		       0A = JMP to Dword ptr at 40:67 without EOI
    		       0B = return IRETS through 40:67
    		10    diskette drive type for A: and B:
    		       bit 7-4	drive type of drive 0
    		       bit 3-0	drive type of drive 1
    			       = 0000	   no drive
    			       = 0001	   360K
    			       = 0010	   1M2
    			       = 0011	   720K
    			       = 0100	   1M44
    			       = 0101-1111 reserved
    		11    reserved / AMI Extended CMOS setup (AMI Hi-Flex BIOS)
    		       bit 7   = 1     Typematic Rate Programming
    		       bit 6-5 = 00    Typematic Rate Delay 250 mSec
    		       bit 4-0 = 00011 Typematic Rate 21.8 Chars/Sec
    		12    fixed disk drive type for drive 0 and drive 1
    		       bit 7-4	drive type of drive 0
    		       bit 3-0	drive type of drive 1
    				if either of the nibbles equals 0F, then bytes
    				19 an 1A are valid
    		13    reserved / AMI Extended CMOS setup (AMI Hi-Flex BIOS)
    		       bit 7 = 1  Mouse Support Option
    		       bit 6 = 1  Above 1 MB Memory Test disable
    		       bit 5 = 1  Memory Test Tick Sound disable
    		       bit 4 = 1  Memory Parity Error Check enable
    		       bit 3 = 1  Hit <ESC> Message Display disabled
    		       bit 2 = 1  Hard Disk Type 47 Data Area at address 0:300
    		       bit 1 = 1  Wait For <F1> If Any Error enabled
    		       bit 0 = 1  System Boot Up Num Lock is On
    		14    equipment byte
    		       bit 7-6	 diskette drives installed
    			       = 00  1 drive installed
    			       = 01  2 drives installed
    			       = 10  reserved
    			       = 11  reserved
    		       bit 5-4	 primary display
    			       = 00  adapter card with option ROM 
    			       = 01  40*25 color
    			       = 10  80*25 color
    			       = 11  monochrome
    		       bit 3-2	 reserved
    		       bit 1   = 1  coprocessor installed (non-Weitek)
    		       bit 0	    diskette drive avaliable for boot
    		15    LSB of systemn base memory in Kb
    		16    MSB of systemn base memory in Kb
    		17    LSB of total extended memory in Kb
    		18    MSB of total extended memory in Kb
    		19    drive C extension byte
    		1A    drive D extension byte
    		1B-27 reserved
    		1B/1C word to 82335 RC1 roll compare register at [24]
    			(Phoenix)
    		1D/1E word to 82335 RC2 roll compare register at [26]
    			(Phoenix)
    		28    HP-Vectra checksum over 29-2D
    		29-2D reserved
    		29/2A word to Intel 82335 CC0 compare register at
    			[28](Phoenix)
    		2B/2C word send to 82335 CC1 compare register at [2A]
    			(Phoenix)
    		2D    AMI Extended CMOS setup (AMI Hi-Flex BIOS)
    		      (Phoenix BIOS checks for the values AA or CC)
    		       bit 7 = 1  Weitek Processor Absent
    		       bit 6 = 1  Floppy Drive Seek At Boot disabled
    		       bit 5 = 1  System Boot Up Sequence  C:, A:
    		       bit 4 = 1  System Boot Up Speed is high
    		       bit 3 = 1  Cache Memory enabled
    		       bit 2 = 1  Internal Cache Memory	 <1>
    		       bit 1-0	  reserved
    		2E    CMOS MSB checksum over 10-2D
    		2F    CMOS LSB checksum over 10-2D
    		30    LSB of extended memory found above 1Mb at POST
    		31    MSB of extended memory found above 1Mb at POST
    		32    date century in BCD
    		33    information flags
    		       bit4 = bit4 from CPU register CR0   (Phoenix)
    			      this bit is only known as INTEL RESERVED
    		34-3F reserved	
    		34     bit4 bit5 (Phoenix BIOS)
    		3D/3E word to 82335 MCR memory config register at
    			[22](Phoenix)
    		3D     bit3	 base memsize 512/640  (Phoenix)
    		3E     bit7 = 1	 relocate enable       (Phoenix)
    		       bit1 = 1	 shadow video enable   (Phoenix)
    		       bit0 = 1	 shadow BIOS enable    (Phoenix)
    
    
    		User Definable Drive Parameters are also stored in CMOS RAM:
    
    		AMI (386sx BIOS 1989) first user definable drive (type 47)
    		 1B  L cylinders
    		 1C  H cylinders
    		 1D  heads
    		 1E  L Write Precompensation Cylinder
    		 1F  H Write Precompensation Cylinder
    		 20  ??
    		 21  L cylinders parking zone
    		 22  H cylinders parking zone
    		 23  sectors
    
    		AMI (386sx BIOS 1989) second user definable drive (type 48)
    		 24  L cylinders
    		 25  H cylinders
    		 26  heads
    		 27  L Write Precompensation Cylinder
    		 28  H Write Precompensation Cylinder
    		 29  ??
    		 2A  L cylinders parking zone
    		 2B  H cylinders parking zone
    		 2C  sectors
    
    		Phoenix (386BIOS v1.10.03 1988) 1st user definable drv (type48)
    		 20  L cylinders
    		 21  H cylinders
    		 22  heads
    		 23  L Write Precompensation Cylinder
    		 24  H Write Precompensation Cylinder
    		 25  L cylinders parking zone
    		 26  H cylinders parking zone
    		 27  sectors
    
    		Phoenix (386BIOS v1.10.03 1988) 2nd user definable drv (type49)
    		(when PS/2-style password option is not used)
    		 35  L cylinders
    		 36  H cylinders
    		 37  heads
    		 38  L Write Precompensation Cylinder
    		 39  H Write Precompensation Cylinder
    		 3A  L cylinders parking zone
    		 3B  H cylinders parking zone
    		 3C  sectors
    
    - - - - - - - - ---------------------------------------------------------------
    0073	  ----	Intel Pentium motherboard ("Neptune" chipset)
    
    0073	r/w	bit 7: ???
    
    - - - - - - - - ---------------------------------------------------------------
    0074-0076	secondary CMOS (Compaq)
    
    0074	w	secondary CMOS RAM index (Compaq)
    
    0076	r/w	secondary CMOS RAM (Compaq)
    
    - - - - - - - - ---------------------------------------------------------------
    0078		HP-Vectra  Hard Reset: NMI enable/disable
    		 bit 7 = 0  disable & clear hard reset from HP-HIL controller
    		       = 1  enable hard reset from HP-HIL controller chip
    		 bit 6-0    reserved
    
    -------------------------------------------------------------------------------
    0078-007F ----	PC radio by CoZet Info Systems
    		The I/O address range is dipswitch selectable from:
    		   038-03F and 0B0-0BF
    		   078-07F and 0F0-0FF
    		   138-13F and 1B0-1BF
    		   178-17F and 1F0-1FF
    		   238-23F and 2B0-2BF
    		   278-27F and 2F0-2FF
    		   338-33F and 3B0-3BF
    		   378-37F and 3F0-3FF
    		All of these addresses show a readout of FF in initial state.
    		Once started, all of the addresses show	 FB, whatever might
    		happen.
    
    -------------------------------------------------------------------------------
    007C-007D ----	HP-Vectra  PIC 3   (Programmable Interrupt Controller 8259)
    		cascaded to first controller.
    		used for keyboard and input device interface.
    007C	r/w	HP-Vectra  PIC 3  see at 0020  PIC 1
    007D	r/w	HP-Vectra  PIC 3  see at 0021  PIC 1
    
    -------------------------------------------------------------------------------
    0080	w	Manufacturing Diagnostics port
    
    -------------------------------------------------------------------------------
    0080-008F ----	DMA page registers   (74612)
    
    0080	r/w	extra page register (temporary storage)
    0081	r/w	DMA channel 2 address byte 2
    0082	r/w	DMA channel 3 address byte 2
    0083	r/w	DMA channel 1 address byte 2
    0084	r/w	extra page register
    0085	r/w	extra page register
    0086	r/w	extra page register
    0087	r/w	DMA channel 0 address byte 2
    0088	r/w	extra page register
    0089	r/w	DMA channel 6 address byte 2
    0089	r/w	DMA channel 7 address byte 2
    0089	r/w	DMA channel 5 address byte 2
    008C	r/w	extra page register
    008D	r/w	extra page register
    008E	r/w	extra page register
    008F	r/w	DMA refresh page register
    
    -------------------------------------------------------------------------------
    0084	  ----	Compaq POST Diagnostic
    
    -------------------------------------------------------------------------------
    0084	  ----	EISA Synchronize Bus Cycle
    
    -------------------------------------------------------------------------------
    0090-009F ----	PS/2 POS (Programmable Option Select)
    
    0090		Central arbitration control port
    0091	r	Card selection feedback
    
    0092	r/w	PS/2 system control port A  (port B is at 0061)
    		 bit 7-6   any bit set to 1 turns activity light on
    		 bit 5	   reserved
    		 bit 4 = 1 watchdog timout occurred 
    		 bit 3 = 0 RTC/CMOS security lock (on password area) unlocked
    		       = 1 CMOS locked (done by POST)
    		 bit 2	   reserved
    		 bit 1 = 1 indicates A20 active
    		 bit 0 = 0 system reset or write
    			 1 pulse alternate reset pin (alternate CPU reset)
    
    0094	w	system board enable/setup register
    		 bit 7 = 1  enable functions
    		       = 0  setup functions
    		 bit 5 = 1  enables VGA
    		       = 0  setup VGA
    
    0095		reserved
    
    0096	w	adapter enable /setup register
    		 bit 3 = 1  setup adapters
    		       = 0  enable registers
    
    0097		reserved
    
    -------------------------------------------------------------------------------
    00A0-00AF ----	PIC 2	(Programmable Interrupt Controller 8259)
    
    00A0	r/w	NMI mask register (XT)
    
    00A0	r/w	PIC 2  same as 0020 for PIC 1
    00A1	r/w	PIC 2  same as 0021 for PIC 1 except for OCW1:
    		 bit 7 = 0  reserved
    		 bit 6 = 0  enable fixed disk interrupt
    		 bit 5 = 0  enable coprocessor exception interrupt
    		 bit 4 = 0  enable mouse interrupt
    		 bit 3 = 0  reserved
    		 bit 2 = 0  reserved
    		 bit 1 = 0  enable redirect cascade
    		 bit 0 = 0  enable real-time clock interrupt
    
    -------------------------------------------------------------------------------
    00B0-00BF ----	PC radio by CoZet Info Systems
    		The I/O address range is dipswitch selectable from:
    		   038-03F and 0B0-0BF
    		   078-07F and 0F0-0FF
    		   138-13F and 1B0-1BF
    		   178-17F and 1F0-1FF
    		   238-23F and 2B0-2BF
    		   278-27F and 2F0-2FF
    		   338-33F and 3B0-3BF
    		   378-37F and 3F0-3FF
    		All of these addresses show a readout of FF in initial state.
    		Once started, all of the addresses show	 FB, whatever might
    		happen.
    
    -------------------------------------------------------------------------------
    00C0	  ----	TI  SN746496 programmable tone/noise generator	PCjr
    
    -------------------------------------------------------------------------------
    00C0-00DF ----	DMA 2	(second Direct Memory Access controller 8237)
    
    00C0	r/w	DMA channel 4 memory address bytes 1 and 0 (low) (ISA, EISA)
    00C2	r/w	DMA channel 4 transfer count bytes 1 and 0 (low) (ISA, EISA)
    00C4	r/w	DMA channel 5 memory address bytes 1 and 0 (low) (ISA, EISA)
    00C6	r/w	DMA channel 5 transfer count bytes 1 and 0 (low) (ISA, EISA)
    00C8	r/w	DMA channel 6 memory address bytes 1 and 0 (low) (ISA, EISA)
    00CA	r/w	DMA channel 6 transfer count bytes 1 and 0 (low) (ISA, EISA)
    00CC	r/w	DMA channel 7 memory address byte 0 (low), then 1 (ISA, EISA)
    00CE	r/w	DMA channel 7 transfer count byte 0 (low), then 1 (ISA, EISA)
    
    00D0	r	DMA channel 4-7 status register (ISA, EISA)
    		 bit 7 = 1  channel 7 request
    		 bit 6 = 1  channel 6 request
    		 bit 5 = 1  channel 5 request
    		 bit 4 = 1  channel 4 request
    		 bit 3 = 1  terminal count on channel 7
    		 bit 2 = 1  terminal count on channel 6
    		 bit 1 = 1  terminal count on channel 5
    		 bit 0 = 1  terminal count on channel 4
    
    00D0	w	DMA channel 4-7 command register (ISA, EISA)
    		 bit 7 = 1  DACK sense active high
    		       = 0  DACK sense active low
    		 bit 6 = 1  DREQ sense active high
    		       = 0  DREQ sense active low
    		 bit 5 = 1  extended write selection
    		       = 0  late write selection
    		 bit 4 = 1  rotating priority
    		       = 0  fixed priority
    		 bit 3 = 1  compressed timing
    		       = 0  normal timing
    		 bit 2 = 0  enable controller
    		 bit 1 = 1  enable memory-to-memory transfer
    		 bit 0	    .....
    
    00D2	w	DMA channel 4-7 write request register (ISA, EISA)
    
    00D4	w	DMA channel 4-7 write single mask register (ISA, EISA)
    		 bit 7-3      reserved
    		 bit 2	 = 0  clear mask bit
    			 = 1  set mask bit
    		 bit 1-0 = 00 channel 4 select
    			 = 01 channel 5 select
    			 = 10 channel 6 select
    			 = 11 channel 7 select
    
    00D6	w	DMA channel 4-7 mode register (ISA, EISA)
    		 bit 7-6 = 00  demand mode
    			 = 01  single mode
    			 = 10  block mode
    			 = 11  cascade mode
    		 bit 5	 = 0   address increment select
    			 = 1   address decrement select
    		 bit 4	 = 0   autoinitialisation disable
    			 = 1   autoinitialisation enable
    		 bit 3-2 = 00  verify operation
    			 = 01  write to memory
    			 = 10  read from memory
    			 = 11  reserved
    		 bit 1-0 = 00  channel 4 select
    			 = 01  channel 5 select
    			 = 10  channel 6 select
    			 = 11  channel 7 select
    
    00D8	w	DMA channel 4-7 clear byte pointer flip-flop (ISA, EISA)
    00DA	r	DMA channel 4-7 read temporary register (ISA, EISA)
    00DA	w	DMA channel 4-7 master clear (ISA, EISA)
    00DC	w	DMA channel 4-7 clear mask register (ISA, EISA)
    00DE	w	DMA channel 4-7 write mask register (ISA, EISA)
    
    -------------------------------------------------------------------------------
    00E0-00E7 ----	Microchannel
    
    00E0	r/w	split address register, memory encoding registers PS/2m80 only
    00E1	r/w	memory register
    00E3	r/w	error trace
    00E4	r/w	error trace
    00E5	r/w	error trace
    00E7	r/w	error trace
    
    -------------------------------------------------------------------------------
    00F0-00F5 ----	PCjr Disk Controller
    
    00F0		disk controller
    00F2		disk controller control port
    00F4		disk controller status register
    00F5		disk controller data port
    
    -------------------------------------------------------------------------------
    00F0-00FF ----	coprocessor (8087..80387)
    
    00F0	w	math coprocessor clear busy latch
    00F1	w	math coprocessor reset
    00F8	r/w	opcode transfer
    00FA	r/w	opcode transfer
    00FC	r/w	opcode transfer
    
    -------------------------------------------------------------------------------
    00F9-00FF ----	PC radio by CoZet Info Systems
    		The I/O address range is dipswitch selectable from:
    		   038-03F and 0B0-0BF
    		   078-07F and 0F0-0FF
    		   138-13F and 1B0-1BF
    		   178-17F and 1F0-1FF
    		   238-23F and 2B0-2BF
    		   278-27F and 2F0-2FF
    		   338-33F and 3B0-3BF
    		   378-37F and 3F0-3FF
    		All of these addresses show a readout of FF in initial state.
    		Once started, all of the addresses show	 FB, whatever might
    		happen.
    
    -------------------------------------------------------------------------------
    0100-010F ----	CompaQ Tape drive adapter. alternate address at 0300
    
    -------------------------------------------------------------------------------
    0100-0107 ----	PS/2 POS (Programmable Option Select)
    
    0100	r	POS register 0	Low adapter ID byte
    0101	r	POS register 1	High adapter ID byte
    
    0102	r/w	POS register 2	option select data byte 1
    		 bit 0 is card enable (CDEN)
    
    0103	r/w	POS register 3	option select data byte 2
    0104	r/w	POS register 4	option select data byte 3
    0105	r/w	POS register 5	option select data byte 4
    		 bit 7	channel active (-CHCK)
    		 bit 6	channel status
    
    0106	r/w	POS register 6	Low subaddress extension
    0107	r/w	POS register 7	High subaddress extension
    
    -------------------------------------------------------------------------------
    0108-010F ----	8 digit LED info panel on IBM PS/2
    
    010F	w	leftmost character on display
    010E	w	second character
    ....	w
    0108	w	eighth character
    
    -------------------------------------------------------------------------------
    0130-013F ----	CompaQ SCSI adapter. alternate address at 0330
    
    -------------------------------------------------------------------------------
    0130-0133 ----	Adaptec 154xB/154xC SCSI adapter.
    		alternate address at 0134, 0230, 0234, 0330 and 0334
    
    -------------------------------------------------------------------------------
    0134-0137 ----	Adaptec 154xB/154xC SCSI adapter.
    		alternate address at 0130, 0230, 0234, 0330 and 0334
    
    -------------------------------------------------------------------------------
    0138-013F ----	PC radio by CoZet Info Systems
    		The I/O address range is dipswitch selectable from:
    		   038-03F and 0B0-0BF
    		   078-07F and 0F0-0FF
    		   138-13F and 1B0-1BF
    		   178-17F and 1F0-1FF
    		   238-23F and 2B0-2BF
    		   278-27F and 2F0-2FF
    		   338-33F and 3B0-3BF
    		   378-37F and 3F0-3FF
    		All of these addresses show a readout of FF in initial state.
    		Once started, all of the addresses show	 FB, whatever might
    		happen.
    
    -------------------------------------------------------------------------------
    0140-014F ----	SCSI (alternate Small Computer System Interface) adapter
    		(1st at 0340-034F)
    
    -------------------------------------------------------------------------------
    0140-0157 ----	RTC (alternate Real Time Clock for XT)	 (1st at 0340-0357)
    
    -------------------------------------------------------------------------------
    015F	  ----	ARTEC Handyscanner A400Z.  alternate address at 35F.
    
    -------------------------------------------------------------------------------
    0170-0177 ----	HDC 2	(2nd Fixed Disk Controller)   same as 01Fx (ISA, EISA)
    
    -------------------------------------------------------------------------------
    0178-0179 ----	Power Management
    
    0178	w	index selection for data port
    0179	r/w	power management data
    
    -------------------------------------------------------------------------------
    0178-017F ----	PC radio by CoZet Info Systems
    		The I/O address range is dipswitch selectable from:
    		   038-03F and 0B0-0BF
    		   078-07F and 0F0-0FF
    		   138-13F and 1B0-1BF
    		   178-17F and 1F0-1FF
    		   238-23F and 2B0-2BF
    		   278-27F and 2F0-2FF
    		   338-33F and 3B0-3BF
    		   378-37F and 3F0-3FF
    		All of these addresses show a readout of FF in initial state.
    		Once started, all of the addresses show	 FB, whatever might
    		happen.
    
    -------------------------------------------------------------------------------
    01E8-01EF ----	System Control. Laptop chipset: Headland HL21 & Acer M5105
    
    01ED	r/w	select internal register. Data to/from 01EF
    01EE	r
    01EF	r/w	reg.
    		5  = 1000xxxx  for low CPU clock speed (4MHz on Morse/Mitac)
    		   = 0xxxxxxx  for high CPU clock speed (16MHz on Morse/Mitac)
    
    -------------------------------------------------------------------------------
    01F0-01F7 ----	HDC 1	(1st Fixed Disk Controller)   same as 017x (ISA, EISA)
    
    01F0	r/w	data register
    
    01F1	r	error register
    		diagnostic mode errors:
    		 bit 7-3	reserved
    		 bit 2-1 = 001	no error detected
    			 = 010	formatter device error
    			 = 011	sector buffer error
    			 = 100	ECC circuitry error
    			 = 101	controlling microprocessor error
    		 operation mode:
    		  bit 7	 = 1  bad block detected
    			 = 0  block OK
    		  bit 6	 = 1  uncorrectable ECC error
    			 = 0  no error
    		  bit 5	      reserved
    		  bit 4	 = 1  ID found
    			 = 0  ID not found
    		  bit 3	      reserved
    		  bit 2	 = 1  command completed
    			 = 0  command aborted
    		  bit 1	 = 1  track 000 not found
    			 = 0  track 000 found
    		  bit 0	 = 1  DAM not found
    			 = 0  DAM found (CP-3022 always 0)
    
    01F1	w	WPC/4  (Write Precompensation Cylinder divided by 4)
    
    01F2	r/w	sector count
    01F3	r/w	sector number
    01F4	r/w	cylinder low
    01F5	r/w	cylinder high
    
    01F6	r/w	drive/head
    		 bit 7	 = 1
    		 bit 6	 = 0
    		 bit 5	 = 1
    		 bit 4	 = 0  drive 0 select
    			 = 1  drive 1 select
    		 bit 3-0      head select bits
    
    01F7	r	status register
    		 bit 7 = 1  controller is executing a command
    		 bit 6 = 1  drive is ready
    		 bit 5 = 1  write fault
    		 bit 4 = 1  seek complete
    		 bit 3 = 1  sector buffer requires servicing
    		 bit 2 = 1  disk data read successfully corrected
    		 bit 1 = 1  index - set to 1 each disk revolution
    		 bit 0 = 1  previous command ended in an error
    
    01F7	w	command register
    		commands:
    		 98 E5	 check power mode	(IDE)
    		 90	 execute drive diagnostics
    		 50	 format track
    		 EC	 identify drive		(IDE)
    		 97 E3	 idle			(IDE)
    		 95 E1	 idle immediate		(IDE)
    		 91	 initialize drive parameters
    		 1x	 recalibrate
    		 E4	 read buffer		(IDE)
    		 C8	 read DMA with retry	(IDE)
    		 C9	 read DMA without retry (IDE)
    		 C4	 read multiplec		(IDE)
    		 20	 read sectors with retry
    		 21	 read sectors without retry
    		 22	 read long with retry
    		 23	 read long without retry
    		 40	 read verify sectors with retry
    		 41	 read verify sectors without retry
    		 7x	 seek
    		 EF	 set features		(IDE)
    		 C6	 set multiple mode	(IDE)
    		 99 E6	 set sleep mode		(IDE)
    		 96 E2	 standby		(IDE)
    		 94 E0	 standby immediate	(IDE)
    		 E8	 write buffer		(IDE)
    		 CA	 write DMA with retry	(IDE)
    		 CB	 write DMA with retry	(IDE)
    		 C5	 write multiple		(IDE)
    		 E9	 write same		(IDE)
    		 30	 write sectors with retry
    		 31	 write sectors without retry
    		 32	 write long with retry
    		 33	 write long without retry
    		 3C	 write verify		(IDE)
    		 9A	 vendor unique		(IDE)
    		 C0-C3	 vendor unique		(IDE)
    		 8x	 vendor unique		(IDE)
    		 F0-F4	 EATA standard		(IDE)
    		 F5-FF	 vendor unique		(IDE)
    
    -------------------------------------------------------------------------------
    01F8	  ----	???
    
    01F8	r/w	???
    		bit 0: A20 gate control (set = A20 enabled, clear = disabled)
    
    -------------------------------------------------------------------------------
    01F9-01FF ----	PC radio by CoZet Info Systems
    		The I/O address range is dipswitch selectable from:
    		   038-03F and 0B0-0BF
    		   078-07F and 0F0-0FF
    		   138-13F and 1B0-1BF
    		   178-17F and 1F0-1FF
    		   238-23F and 2B0-2BF
    		   278-27F and 2F0-2FF
    		   338-33F and 3B0-3BF
    		   378-37F and 3F0-3FF
    		All of these addresses show a readout of FF in initial state.
    		Once started, all of the addresses show	 FB, whatever might
    		happen.
    
    -------------------------------------------------------------------------------
    0200-020F ----	Game port reserved I/O address space  
    0200-0207 ----	Game port, eight identical addresses on some boards
    
    0201	r	read joystick position and status
    		 bit 7	status B joystick button 2 / D paddle button
    		 bit 6	status B joystick button 1 / C paddle button
    		 bit 5	status A joystick button 2 / B paddle button
    		 bit 4	status A joystick button 1 / A paddle button
    		 bit 3	B joystick Y coordinate	   / D paddle coordinate
    		 bit 2	B joystick X coordinate	   / C paddle coordinate
    		 bit 1	A joystick Y coordinate	   / B paddle coordinate
    		 bit 0	A joystick X coordinate	   / A paddle coordinate
    
    	w	fire joysticks four one-shots
    
    -------------------------------------------------------------------------------
    0200-02FF ----	Sunshine uPW48, programmer for EPROM version CPU's 8748/8749
    		(4 bit DIP switch installable in the range 20x-2Fx)
    0200-0203	adresses of the 8255 on the uPW48
    0208-020B	adresses of ??? on the uPW48 (all showing zeros)
    
    
    -------------------------------------------------------------------------------
    0210-0217 ----	Expansion unit (XT)
    
    0210	w	latch expansion bus data
    	r	verify expansion bus data
    0211	w	clear wait, test latch
    	r	High byte data address
    0212	r	Low byte data address
    0213	w	0=enable,  1=disable expansion unit
    0214	w	latch data  (receiver card port)
    	r	read data   (receiver card port)
    0215	r	High byte of address, then Low byte   (receiver card port)
    
    ------------------------------------------------------------------------------
    0220-0223 ---- Sound Blaster / Adlib port
    
    0220	r/w	Left speaker -- Status / Address port
    0221	w	Left speaker -- Data port
    0222	r/w	Right speaker -- Status / Address port
    		Address:
    		    01 -- Enable waveform control
    		    02 -- Timer #1 data
    		    03 -- Timer #2 data
    		    04 -- Timer control flags
    		    08 -- Speech synthesis mode
    		 20-35 -- Amplitude Modulation / Vibrato
    		 40-55 -- Level key scaling / Total level
    		 60-75 -- Attack / Decay rate
    		 80-95 -- Sustain / Release rate
    		 A0-B8 -- Octave / Frequency Number
    		 C0-C8 -- Feedback / Algorithm
    		 E0-F5 -- Waveform Selection
    0223	w	Right speaker -- Data port
    
    SeeAlso: 0388-0389
    
    -------------------------------------------------------------------------------
    0220-0227 ----	Soundblaster PRO and SSB 16 ASP
    
    -------------------------------------------------------------------------------
    0220-022F ----	Soundblaster PRO 2.0
    
    -------------------------------------------------------------------------------
    0220-022F ----	Soundblaster PRO 4.0
    0220	r	left FM status port
    0220	w	left FM music register address port (index)
    0221	r/w	left FM music data port
    0222	r	right FM status port
    0222	w	right FM music register address port (index)
    0223	r/w	right FM music data port
    0224	w	mixer register address port (index)
    0225	r/w	mixer data port
    0226	w	DSP reset
    0228	r	FM music status port
    0228	w	FM music register address port (index)
    0229	w	FM music data port
    022A	r	DSP read data (voice I/O and Midi)
    022C	w	DSP write data / write command
    022C	r	DSP write buffer status (bit 7)
    022E	r	DSP data available status (bit 7)
    
    		The FM music is accessible on 0388/0389 for compatibility.
    
    -------------------------------------------------------------------------------
    0230-0233 ----	Adaptec 154xB/154xC SCSI adapter.
    		alternate address at 0130, 0134, 0230, 0330 and 0334
    
    -------------------------------------------------------------------------------
    0234-0237 ----	Adaptec 154xB/154xC SCSI adapter.
    		alternate address at 0130, 0134, 0230, 0330 and 0334
    
    -------------------------------------------------------------------------------
    0240-024F ----	Gravis Ultra Sound by Advanced Gravis
    	 The I/O address range is dipswitch selectable from:
    	   0200-020F and 0300-030F
    	   0210-021F and 0310-031F
    	   0220-022F and 0320-032F
    	   0230-023F and 0330-033F
    	   0240-024F and 0340-034F
    	   0250-025F and 0350-035F
    	   0260-026F and 0360-036F
    	   0270-027F and 0370-037F
    
    0240	w	Mix Control register
    		 bit 6	   Control Register Select (see 024B)
    		 bit 5	   Enable MIDI Loopback
    		 bit 4	   Combine GF1 IRQ with MIDI IRQ
    		 bit 3	   Enable Latches
    		 bit 2	   Enable MIC IN
    		 bit 1	   Disable LINE OUT
    		 bit 0	   Disable LINE IN
    0241	r	Read Data
    	w	Trigger Timer
    0246	r	IRQ Status Register
    		 bit 7	   DMA TC IRQ
    		 bit 6	   Volume Ramp IRQ
    		 bit 5	   WaveTable IRQ
    		 bit 3	   Timer 2 IRQ
    		 bit 2	   Timer 1 IRQ
    		 bit 1	   MIDI Receive IRQ
    		 bit 0	   MIDI Transmit IRQ
    0248	r/w	Timer Control Reg
    		 Same a ADLIB Board (look at 0200)
    0249	w	Timer Data
    		 bit 7	   Reset Timr IRQ
    		 bit 6	   Mask Timer 1
    		 bit 5	   Mask Timer 2
    		 bit 1	   Timer 2 Start
    		 bit 0	   Timer 1 Start
    024B	w	IRQ Control Register (0240 bit 6 = 1)
    		 bit 6	   Combine Both IRQ
    		 bit 5-3   MIDI IRQ Selector
    			   = 000  No IRQ
    			   = 001  IRQ 2
    			   = 010  IRQ 5
    			   = 011  IRQ 3
    			   = 100  IRQ 7
    			   = 101  IRQ 11
    			   = 110  IRQ 12
    			   = 111  IRQ 15
    		 bit 2-0   GF1 IRQ Selector
    			   = 000  No IRQ
    			   = 001  IRQ 2
    			   = 010  IRQ 5
    			   = 011  IRQ 3
    			   = 100  IRQ 7
    			   = 101  IRQ 11
    			   = 110  IRQ 12
    			   = 111  IRQ 15
    		DMA Control Register (0240 bit 6 = 0)
    		 bit 6	   Combine Both IRQ
    		 bit 5-3   DMA Select Register 2
    			   = 000  No DMA
    			   = 001  DMA 1
    			   = 010  DMA 3
    			   = 011  DMA 5
    			   = 100  DMA 6
    			   = 101  DMA 7 
    		 bit 2-0   DMA Select Register 1
    			   = 000  No DMA
    			   = 001  DMA 1
    			   = 010  DMA 3
    			   = 011  DMA 5
    			   = 100  DMA 6
    			   = 101  DMA 7 
    024F	r/w	Register Controls (rev 3.4+)
    
    SeeAlso: 0340-034F, 0746
       
    -------------------------------------------------------------------------------
    0240-0257 ----	RTC (alternate Real Time Clock for XT)	 (1st at 0340-0357)
    		(used by TIMER.COM v1.2 which is the 'standard' timer program)
    
    -------------------------------------------------------------------------------
    0258-025F ----	Intel Above Board
    
    -------------------------------------------------------------------------------
    0278-027E ----	parallel printer port, same as 0378 and 03BC
    
    0278	w	data port
    0279	r/w	status port
    027A	r/w	control port
    
    -------------------------------------------------------------------------------
    02A0-02A7 ----	Sunshine EW-901BN, EW-904BN
    		EPROM writer card (release 1986) for EPROMs up to 27512
    02A0-02A3	adresses of the 8255 on the EW-90xBN
    
    
    -------------------------------------------------------------------------------
    02A2-02A3 ----	MSM58321RS clock
    
    -------------------------------------------------------------------------------
    02B0-02BF ----	Trantor SCSI adapter
    
    -------------------------------------------------------------------------------
    02B0-02DF ----	alternate EGA,	primary EGA at 03C0
    
    -------------------------------------------------------------------------------
    02C0-02Cx ----	AST-clock
    
    -------------------------------------------------------------------------------
    02E0-02EF ----	GPIB (General Purpose Interface Bus, IEEE 488 interface)
    		(GAB 0 on XT)
    02E1		GPIB (adapter 0)
    02E2
    02E3
    
    -------------------------------------------------------------------------------
    02E0-02EF ----	data aquisition	 (AT)
    
    02E2		data aquisition (adapter 0)
    02E3		data aquisition (adapter 0)
    
    -------------------------------------------------------------------------------
    02E8	  ----	S3 86C928 video controller (ELSA Winner 1000)
    
    -------------------------------------------------------------------------------
    02E8-02EF ----	serial port, same as 02F8, 03E8 and 03F8
    
    -------------------------------------------------------------------------------
    02E8-02EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    02E8	r	display status
    02E8	w	horizontal total
    02EA	w	DAC mask
    02EB	w	DAC read index
    02EC	w	DAC write index
    02ED	w	DAC data
    
    -------------------------------------------------------------------------------
    02EA	  ----	S3 86C928 video controller (ELSA Winner 1000)
    
    -------------------------------------------------------------------------------
    02F8-02FF ----	serial port, same as 02E8, 03E8 and 03F8
    
    02F8	w	transmitter holding register
    02F8	r	receiver buffer register
    	r/w	divisor latch, low byte	  when DLAB=1
    02F9	r/w	divisor latch, high byte  when DLAB=1
    	r/w	interrupt enable register when DLAB=0
    02FA	r	interrupt identification register
    02FB	r/w	line control register
    02FC	r/w	modem control register
    02FD	r	line status register
    02FF	r/w	scratch register
    
    -------------------------------------------------------------------------------
    0300	  ---- Award POST Diagnostic
    
    -------------------------------------------------------------------------------
    0300-0301 ---- Soundblaster 16 ASP MPU-Midi
    
    -------------------------------------------------------------------------------
    0300-0303 ----	Panasonic 52x CD-ROM SCSI Miniport
    		Alternate addresses at 0320, 0340, 0360, and 0380
    
    -------------------------------------------------------------------------------
    0300-030F ----	Philips CD-ROM player CM50
    
    -------------------------------------------------------------------------------
    0300-030F ----	CompaQ Tape drive adapter. alternate address at 0100
    
    -------------------------------------------------------------------------------
    0300-031F ----	prototype cards
    		Periscope hardware debugger
    
    -------------------------------------------------------------------------------
    0310-031F ----	Philips CD-ROM player CM50
    
    -------------------------------------------------------------------------------
    0320-0323 ----	XT HDC 1   (Hard Disk Controller)
    
    0320	r/w	data register
    
    0321	w	reset controller
    	r	read controller hardware status
    		 bit 7-6 = 0
    		 bit 5	      logical unit number
    		 bit 4-2 = 0
    		 bit 1	 = 0  no error
    		 bit 0	 = 0 
    
    0322	r	read DIPswitch setting on XT controller card
    	w	generate controller-select pulse
    0323	w	write pattern to DMA and INT mask register
    
    0324-0327 ----	XT HDC 2   (Hard Disk Controller)
    0328-032B ----	XT HDC 3   (Hard Disk Controller)
    032C-032F ----	XT HDC 4   (Hard Disk Controller)
    
    -------------------------------------------------------------------------------
    0330-0331 ----	MIDI interface
    
    -------------------------------------------------------------------------------
    0330-0333 ----	Adaptec 154xB/154xC SCSI adapter. default address.
    		alternate address at 0130, 0134, 0230, 0234 and 0334
    
    -------------------------------------------------------------------------------
    0330-033F ----	CompaQ SCSI adapter. alternate address at 0130
    
    -------------------------------------------------------------------------------
    0330-033F ----	Philips CD-ROM player CM50
    
    -------------------------------------------------------------------------------
    0334-0337 ----	Adaptec 154xB/154xC SCSI adapter.
    		alternate address at 0130, 0134, 0230, 0234 and 0330
    
    -------------------------------------------------------------------------------
    0338	  ----	AdLib soundblaster card
    
    -------------------------------------------------------------------------------
    0340-034F ----	Philips CD-ROM player CM50
    
    -------------------------------------------------------------------------------
    0340-034F ----	SCSI (1st Small Computer System Interface) adapter
    		(alternate at 0140-014F)
    
    -------------------------------------------------------------------------------
    0340-034F ----	Gravis Ultra Sound by Advanced Gravis
    	 The I/O address range is dipswitch selectable from:
    	   0200-020F and 0300-030F
    	   0210-021F and 0310-031F
    	   0220-022F and 0320-032F
    	   0230-023F and 0330-033F
    	   0240-024F and 0340-034F
    	   0250-025F and 0350-035F
    	   0260-026F and 0360-036F
    	   0270-027F and 0370-037F
       
    0340	w	MIDI Control
    		 bit 7	   Receive IRQ (1 = enabled)
    		 bit 5-6   Xmit IRQ
    		 bit 0-1   Master Reset (1 = enabled)
    	r	MIDI Status
    		 bit 7	   Interrupt pending
    		 bit 5	   Overrun Error
    		 bit 4	   Framing Error
    		 bit 1	   Transmit Register Empty
    		 bit 0	   Receive Register Empty
    0341	w	MIDI Transmit Data
    	r	MIDI Receive Data
    0342	r/w	GF1 Page Register / Voice Select
    0343	r/w	GF1/Global Register Select
       
    		 Global Registers, NOT voice specific:
    		 41   r/w   DRAM DMA Control
    			     bit 7	 Invert MSB
    			     bit 6	 Data Size (8/16 bits)
    			     bit 5	 DMA Pending
    			     bit 3-4	 DMA Rate Divider
    			     bit 2	 DMA Channel Width (8/16 bits)
    			     bit 1	 DMA Direction (1 = read)
    			     bit 0	 DMA Enable
    		 42   w	    DMA Start Address
    			     bits 15-0	 DMA Address Lines 19-4
    		 43   w	    DRAM I/O Address LOW
    		 44   w	    DRAM I/O Address HIGH
    			     bits 0-3	 Upper 4 Address Lines
    		 45   r/w   Timer Control
    			     bit 3	 Enable Timer 2
    			     bit 2	 Enable Timer 1
    		 46   w	    Timer 1 Count (granularity of 80 micro sec)
    		 47   w	    Timer 2 Count (granulatity of 320 micro sec)
    		 48   w	    Sampling Frequency
    			     rate = 9878400 / (16 * (FREQ + 2))
    		 49   r/w   Sampling Control
    			     bit 7	 Invert MSB
    			     bit 6	 DMA IRQ pending
    			     bit 5	 DMA IRQ enable
    			     bit 2	 DMA width (8/16 bits)
    			     bit 1	 Mode (mone/stereo)
    			     bit 0	 Start Sampling
    		 4B   w	    Joystick Trim DAC
    		 4C   r/w   RESET
    			     bit 2	 GF1 Master IRQ Enable
    			     bit 1	 DAC Enable
    			     bit 0	 Master Reset
       
    		 Voice specific registers:
    		 00   w	    Voice Control
    			     bit 7	 IRQ pending
    			     bit 6	 Direction
    			     bit 5	 Enable WAVE IRQ
    			     bit 4	 Enable bi-directional Looping
    			     bit 3	 Enable Looping
    			     bit 2	 Size data (8/16 bits)
    			     bit 1	 Stop Voice
    			     bit 0	 Voice Stopped
    		 01   w	    Frequency Control
    			     bit 15-10	 Integer Portion
    			     bit 9-1	 Fractional Portion
    		 02   w	    Start Address HIGH
    			     bit 12-0	 Address Lines 19-7
    		 03   w	    Start Address LOW
    			     bit 15-9	 Address Lines 6-0
    			     bit 8-5	 Fractional Part of Start Address
    		 04   w	    End Address HIGH
    			     bit 12-0	 Address Lines 19-7
    		 05   w	    End Address LOW
    			     bit 15-9	 Address Lines 6-0
    			     bit 8-5	 Fractional Part of End Address
    		 06   w	    Volume Ramp Rate
    			     bit 5-0	 Amount added
    			     bit 7-6	 Rate
    		 07   w	    Volume Ramp Start
    			     bit 7-4	 Exponent
    			     bit 3-0	 Mantissa
    		 08   w	    Volume Ramp End
    			     bit 7-4	 Exponent
    			     bit 3-0	 Mantissa
    		 09   w	    Current Volume
    			     bit 15-12	 Exponent
    			     bit 11-4	 Mantissa
    		 0A   w	    Current Address HIGH
    			     bit 12-0	 Address Lines 19-7
    		 0B   w	    Current Address LOW
    			     bit 15-9	 Address Lines 6-0
    			     bit 8-0	 Fractional Position
    		 0C   w	    Pan Position
    			     bit 3-0	 Pan Postion
    		 0D   w	    Volume Control
    			     bit 7	 IRQ Pending
    			     bit 6	 Direction
    			     bit 5	 Enable Volume Ramp IRQ
    			     bit 4	 Enable bi-directional Looping
    			     bit 3	 Enable Looping
    			     bit 2	 Rollover Condition
    			     bit 1	 Stop Ramp
    			     bit 0	 Ramp Stopped
    		 0E   w	    Active Voices
    			     bit 5-0	 #Voices -1  (allowed 13 - 31)
    		 0F   w	    IRQ Source Register
    			     bit 7	 WaveTable IRQ pending
    			     bit 6	 Volume Ramp IRQ pending
    			     bit 4-0	 Voice Number
    		 80   r	    Voice Control (see 00)
    		 81   r	    Frequency Control (see 01)
    		 82   r	    Start Address HIGH (see 02)
    		 83   r	    Start Address LOW (see 03)
    		 84   r	    End Address HIGH (see 04)
    		 85   r	    End Address LOW (see 05)
    		 86   r	    Volume Ramp Rate (see 06)
    		 87   r	    Volume Ramp Start (see 07)
    		 88   r	    Volume Ramp End (see 08)
    		 89   r	    Current Volume (see 09)
    		 8A   r	    Current Address HIGH (see 0A)
    		 8B   r	    Current Address LOW (see 0B)
    		 8C   r	    Pan Position (see 0C)
    		 8D   r	    Volume Control (see 0D)
    		 8E   r	    Active Voices (see 0E)
    		 8F   r	    IRQ Status (see 0F)
    		   
    0344	r/w	GF1/Global Data Low Byte (16 bits)
    0345	r/w	GF1/Global Data High Byte (8 bits)
    0346	w	Mixer Data Port
    0347	r/w	GF1 DRAM
    		 Direct Read Write at Loction pointed with regs 43 and 44
    
    SeeAlso: 0240-024F, 0746
       
    -------------------------------------------------------------------------------
    0340-0357 ----	RTC (1st Real Time Clock for XT), (alternate at 0240-0257)
    		(used by TIMER.COM v1.2 which is the 'standard' timer program)
    
    0340	r/w	0.01 seconds  0-99
    0341	r/w	0.1 seconds   0-99
    0342	r/w	seconds	      0-59
    0343	r/w	minutes	      0-59
    0343	r/w	hours	      0-23
    0345	r/w	day of week   1-7
    0346	r/w	day of month  1-31
    0347	r/w	month	      1-12
    0348
    0349	r/w	year	      0-99
    034A
    034B
    034C
    034D
    034E
    034F
    0350	r	status?
    0351	
    0352
    0353
    0354	r	status?
    0355
    0356
    0357
    
    -------------------------------------------------------------------------------
    0348-0357 ----	DCA 3278
    
    -------------------------------------------------------------------------------
    034C-034F ----	Gravis UltraMax by Advanced Gravis
    	 The I/O address range is dipswitch selectable from:
    	   0200-020F and 0300-030F
    	   0210-021F and 0310-031F
    	   0220-022F and 0320-032F
    	   0230-023F and 0330-033F
    	   0240-024F and 0340-034F
    	   0250-025F and 0350-035F
    	   0260-026F and 0360-036F
    	   0270-027F and 0370-037F
    
    -------------------------------------------------------------------------------
    035A-035B ----  Adaptec AH1520 jumper settings
    
    035A	r	bit 7:	  SCSI parity disabled
    		bits 6-5: DMA channel
    			(00 = channel 0, 01 = 5, 10 = 6, 11 = 7)
    		bits 4-3: IRQ number
    			(00 = IRQ9, 01 = IRQ10, 10 = IRQ11, 11 = IRQ12)
    		bits 2-0: SCSI ID
    035B	r	bit 7: DMA transfer mode (clear for PIO)
    		bit 6: boot enabled
    		bits 5-4: boot type
    			00 ???
    			01 boot from floppy
    			10 print configured options
    			11 boot from hard disk
    		bit 3: enable sync negotiation
    		bit 2: enable target disconnection
    		bits 1-0: unused???
    
    -------------------------------------------------------------------------------
    035F	  ----	ARTEC Handyscanner A400Z.  alternate address at 15F.
    
    -------------------------------------------------------------------------------
    0360-036F ----	PC network (AT)
    0360-0367 ----	PC network (XT only)
    
    -------------------------------------------------------------------------------
    0360-036F ----	National Semiconductor DP8390(1)C/NS3249C network chipset
    Note:	cards based on this IEEE 802.3 networking chipset can use any range
    	of 16 consecutive addresses, and provide a total of four pages of
    	sixteen register
    
    Page 0	r					w
    
    00	Command	reg.			CR	Command reg.		CR
    01	current local DMA address 0	CLDA0	page start reg.		PSTART
    02	current local DMA address 1	CLDA1	page stop reg.		PSTOP
    03	boundary pointer		BNRY	boundary pointer	BNRY
    04	transmit status reg.		TSR	Tx page start address	TPSR
    05	number of collisions reg.	NCR	Tx byte count reg.0	TBCR0 
    06	FIFO					Tx byte count reg.1	TBCR1
    07	interrupt status reg.		ISR	interrupt status reg.	ISR
    08	current remote DMA address 0	CRDA0	remote start addr.reg.0	RSAR0
    09	current remote DMA address 1	CRDA1	remote start addr.reg.1	RSAR1
    0A	reserved				remote byte count reg.0	RBCR0
    0B	reserved				remote byte count reg.1	RBCR1
    0C	receive status reg.		RSR	Rx configuration reg.	RCR
    0D	tally counter 0 (frame errors)	CNTR0	Tx configuration reg.	TCR
    0E	tally counter 1 (CRC errors)	CNTR1	data configuration reg.	DCR
    0F	tally counter 2 (missed pkt)	CNTR2	interrupt mask reg.	IMR
    
    Page 1	r/w
    
    00	Command			CR
    01	physical address reg.0	PAR0
    02	physical address reg.1	PAR1		
    03	physical address reg.2	PAR2		
    04	physical address reg.3	PAR3		
    05	physical address reg.4	PAR4		
    06	physical address reg.5	PAR5		
    07	current page reg.	CURR			
    08	multicast address reg.0	MAR0		
    09	multicast address reg.1	MAR1		
    0A	multicast address reg.2	MAR2		
    0B	multicast address reg.3	MAR3		
    0C	multicast address reg.4	MAR4		
    0D	multicast address reg.5	MAR5		
    0E	multicast address reg.6	MAR6		
    0F	multicast address reg.7	MAR7		
    
    Page 2	r					w
    	diagnostics page - should never be modfied under normal operation.
    
    00	Command				CR	Command			 CR
    01	page start reg.			PSTART	current local DMA addr.0 CLDA0
    02	page stop reg.			BPSTOP	current local DMA addr.1 CLDA1
    03	remote next packet pointer		remote next packet pointer
    04	Tx page start address		TPSR	reserved
    05	local next packet pointer		local next packet pointer
    06	address counter (upper)			address counter (upper)
    07	address counter (lower)			address counter (lower)
    08	reserved				reserved
    09	reserved				reserved
    0A	reserved				reserved
    0B	reserved				reserved
    0C	Rx configuration reg.		RCR	reserved
    0D	Tx configuration reg.		TCR	reserved
    0E	data configuration reg.		DCR	reserved
    0F	interrupt mask reg.		IMR	reserved
    
    Page 3	r					w
    	Test Page - should never be modified !
    
    00	Command CR				Command CR
    
    	bit0=1	software reset command. 1=offline  0=online
    	bit1=0	activate NIC after reset command
    	bit2=1	start transmision of a packet
    	bit3-5	remote DMA command
    		 000 not allowed
    		 001 remote read
    		 010 remote write
    		 011 send packet
    		 1xx abort/complete rmote DMA
    	bit 6,7 page select
    		 00 register page 0
    		 01 register page 1
    		 10 register page 2
    		 11 register page 3
    
    -------------------------------------------------------------------------------
    0370-0377 ----	FDC 2  (2nd Floppy Disk Controller)	first FDC at 03F0
    		(8272, 8272A, NEC765)
    		(82072, 82077AA for perpendicular recording at 2.8Mb)
    
    0370	r	diskette Extra High Density controller board jumpers (AT)
    0370	r	diskette controller status A (PS/2, PS/2 model 30)
    0371	r	diskette controller status B (PS/2, PS/2 model 30)
    0372	w	diskette controller DOR (Digital Output Register)
    0374	r	diskette controller main status register
    0374	w	diskette controller datarate select register
    0375	r/w	diskette controller command/data register
    0376	r/w	(2nd FIXED disk controller data register)
    0377	r	diskette controller DIR (Digital Input Register)
    0377	w	select register for diskette data transfer rate
    
    -------------------------------------------------------------------------------
    0378-037A ----	parallel printer port, same as 0278 and 03BC
    
    0378	w	data port
    0379	r/w	status port
    037A	r/w	control port
    
    -------------------------------------------------------------------------------
    0380-038F ----	2nd Binary Synchronous Data Link Control adapter (see 03A0)
    
    0380	r/w	 on board 8255 port A, internal/external sense
    0381	r/w	 on board 8255 port B, external modem interface
    0382	r/w	 on board 8255 port C, internal control and gating
    0383	r/w	 on board 8255 mode register
    0384	r/w	 on board 8253 channel square wave generator
    0385	r/w	 on board 8253 channel 1 inactivity time-out
    0386	r/w	 on board 8253 channel 2 inactivity time-out
    0387	r/w	 on board 8253 mode register
    0388	r/w	 on board 8273 read: status  write: command
    0389	r/w	 on board 8273 read: response  write: parameter
    038A	r/w	 on board 8273 transmit interrupt status
    038B	r/w	 on board 8273 receiver interrupt status
    038C	r/w	 on board 8273 data
    
    ------------------------------------------------------------------------------
    0388-0389 ---- Sound Blaster / Adlib port
    
    0388	r/w	Both Speakers -- Status / Address port
    		Address:
    		     01 -- Enable waveform control
    		     02 -- Timer #1 data
    		     03 -- Timer #2 data
    		     04 -- Timer control flags
    		     08 -- Speech synthesis mode
    		  20-35 -- Amplitude Modulation / Vibrato
    		  40-55 -- Level key scaling / Total level
    		  60-75 -- Attack / Decay rate
    		  80-95 -- Sustain / Release rate
    		  A0-B8 -- Octave / Frequency Number
    		  C0-C8 -- Feedback / Algorithm
    		  E0-F5 -- Waveform Selection
    0389	w	Data port
    
    SeeAlso: 0220-0223
    
    -------------------------------------------------------------------------------
    0388-0389 ---- Soundblaster PRO FM-Chip
    0388-038B ---- Soundblaster 16 ASP FM-Chip
    
    -------------------------------------------------------------------------------
    0390-0397 ----	Sunshine EW-901B, EW-904B
    		EPROM writer card for EPROMs up to 27512
    0390-0393	adresses of the 8255 on the EW-90xB
    
    -------------------------------------------------------------------------------
    0390-039F ----	Cluster adapter (AT)
    
    0390-0393	(adapter 0)	(XT)
    
    -------------------------------------------------------------------------------
    03A0-03AF ----	1st SDLC (Binary Synchronous Data Link Control adapter)
    
    03A0	r/w	 on board 8255 port A, internal/external sense
    03A1	r/w	 on board 8255 port B, external modem interface
    03A2	r/w	 on board 8255 port C, internal control and gating
    03A3	r/w	 on board 8255 mode register
    03A4	r/w	 on board 8253 counter 0 unused
    03A5	r/w	 on board 8253 channel 1 inactivity time-out
    03A6	r/w	 on board 8253 channel 2 inactivity time-out
    03A7	r/w	 on board 8253 mode register
    03A8	r/w	 on board 8251 data
    03A9	r/w	 on board 8251 command/mode/status register
    
    -------------------------------------------------------------------------------
    03B0-03BF ----	MDA  (Monochrome Display Adapter based on 6845)
    
    03B0		same as 03B4
    03B1		same as 03B5
    03B2		same as 03B4
    03B3		same as 03B5
    03B4	w	MDA CRT index register	 (EGA/VGA)
    		selects which register (0-11h) is to be accessed through 3B5
    03B5	r/w	MDA CRT data register	 (EGA/VGA)
    		selected by port 3B4. registers C-F may be read
    		 00  horizontal total
    		 01  horizontal displayed
    		 02  horizontal sync position
    		 03  horizontal sync pulse width
    		 04  vertical total
    		 05  vertical displayed
    		 06  vertical sync position
    		 07  vertical sunc pulse width
    		 08  interlace mode
    		 09  maximum scan lines
    		 0A  cursor start
    		 0B  cursor end
    		 0C  start address high
    		 0D  start address low
    		 0E  cursor location high
    		 0F  cursor location low
    		 10  light pen high
    		 11  light pen low
    03B6		same as 03B4
    03B7		same as 03B5
    03B8	r/w	MDA mode control register
    		 bit 7 not used
    		 bit 6 not used
    		 bit 5 enable blink
    		 bit 4 not used
    		 bit 3 video enable
    		 bit 2 not used
    		 bit 1 not used
    		 bit 0 high resolution mode
    
    03B9		reserved for color select register on color adapter
    
    03BA	r	CRT status register	 EGA/VGA: input status 1 register
    		 bit 7	 (MSD says) if this bit changes within 8000h reads then
    		  bit 6-4 = 000 = adapter is Hercules or compatible
    			    001 = adapter is Hercules+
    			    101 = adapter is Hercules InColor
    				  else: adapter is unknown
    		 bit 3	 black/white video
    		 bit 2-1 reserved
    		 bit 0	 horizontal drive
    
    03BA	w	EGA/VGA feature control register
    
    03BB		reserved for light pen strobe reset
    
    -------------------------------------------------------------------------------
    03BC-03BF ----	parallel printer port, same as 0278 and 0378
    
    03BC	w	data port
    03BD	r/w	status port
    		 bit 7 = 0  busy
    		 bit 6 = 0  acknowledge
    		 bit 5 = 1  out of paper
    		 bit 4 = 1  printer is selected
    		 bit 3 = 0  error
    		 bit 2 = 0  IRQ has occurred
    		 bit 1-0    reserved
    
    03BE	r/w	control port
    		 bit 7-5    reserved
    		 bit 4 = 1  enable IRQ
    		 bit 3 = 1  select printer
    		 bit 2 = 0  initialize printer
    		 bit 1 = 1  automatic line feed
    		 bit 0 = 1  strobe
    
    -------------------------------------------------------------------------------
    03BF	r/w	Hercules configuration switch register
    		 bit 7-2
    		 bit 1 = 0  disables upper 32K of graphics mode buffer
    			 1  enables upper 32K of graphics mode buffer
    		 bit 0 = 0  prevents graphics mode
    			 1  allows graphics mode
    
    -------------------------------------------------------------------------------
    03C0-03C7 ----	Sunshine EW-901, EW-901A, EW-904, EW-904A
    		EPROM writer card for EPROMs up to 27512
    03C0-03C3	adresses of the 8255 on the EW-90x
    
    -------------------------------------------------------------------------------
    03C0-03CF ----	EGA  (1st Enhanced Graphics Adapter)	alternate at 02C0
    
    03C0	(r)/w	EGA VGA ATC index/data register
    03C1	r	VGA	other attribute register
    03C2	r	EGA VGA input status 0 register
    	w	VGA	miscellaneous output register
    03C3	r/w	VGA	video subsystem enable (see also port 46E8h)
    			for IBM, motherboard VGA only
    03C4	w	EGA	TS index register
    	r/w	VGA	sequencer index register
    03C5	w	EGA	TS data register
    	r/w	VGA	other sequencer register
    03C6	r/w	VGA	PEL mask register
    03C7	r/w	VGA	PEL address read mode
    	r	VGA	DAC state register
    03C8	r/w	VGA	PEL address write mode
    03C9	r/w	VGA	PEL data register
    03CA	w	EGA	graphics 2 position register
    	r	VGA	feature control register
    03CC	w	EGA	graphics 1 position register
    	r	VGA	miscellaneous output register
    03CE	w	EGA	GDC index register
    	r/w	VGA	graphics address register
    03CF	w	EGA	GDC data register
    	r/w	VGA	other graphics register
    
    -------------------------------------------------------------------------------
    03CE-03CF ----	Compaq Qvision - Functionality Level
    
    03CE	w	graphics address register (index for next port)
    03CF	r/w	other graphics register
    		Index
    		 0Ch	r	controller version
    				2Fh Advanced VGA
    				37h early QVision 1024
    				71h QVision 1280 or later QVision 1024
    		 0Dh		extended controller version
    		 0Eh		extended controller capabilities
    		 0Fh		environment info
    		 54h		available memory
    		 55h		phase-locked-loop clock
    		 56h-57h	controller capabilities
    
    -------------------------------------------------------------------------------
    03D0-03DF ----	CGA   (Color Graphics Adapter)
    
    03D0		same as 03D4
    03D1		same as 03D5
    03D2		same as 03D4
    03D3		same as 03D5
    03D4	w	CRT (6845) index register   (EGA/VGA)
    		selects which register (0-11h) is to be accessed through 3B5
    03D5	w	CRT (6845) data register    (EGA/VGA)
    		selected by port 3B4. registers C-F may be read
    		 (for registers see at 3B5)
    03D6		same as 03D4
    		(under OS/2, reads return 0 if full-screen DOS session,
    		nonzero if windowed DOS session)
    03D7		same as 03D5
    03D8	r/w	CGA mode control register  (except PCjr)
    		 bit 7-6      not used
    		 bit 5	 = 1  blink enabled
    		 bit 4	 = 1  640*200 graphics mode
    		 bit 3	 = 1  video enabled
    		 bit 2	 = 1  monochrome signal
    		 bit 1	 = 0  text mode
    			 = 1  320*200 graphics mode
    		 bit 0	 = 0  40*25 text mode
    			 = 1  80*25 text mode
    
    03D9	r/w	CGA palette register
    		 bit 7-6      not used
    		 bit 5	 = 0 active color set: red, green brown
    			 = 1 active color set: cyan, magenta, white
    		 bit 4	     intense colors in graphics, background colors text
    		 bit 3	     intense border in 40*25, intense background in
    			     320*200, intense foreground in 640*200
    		 bit 2	     red border in 40*25, red background in 320*200,
    			     red foreground in 640*200
    		 bit 1	     green border in 40*25, green background in
    			     320*200, green foreground in 640*200
    		 bit 0	     blue border in 40*25, blue background in 320*200,
    			     blue foreground in 640*200
    
    03DA	r	CGA status register	EGA/VGA: input status 1 register
    		 bit 7-4     not used
    		 bit 3 = 1   in vertical retrace
    		 bit 2 = 1   light pen switch is off
    		 bit 1 = 1   positive edge from light pen has set trigger
    		 bit 0 = 0   do not use memory
    		       = 1   memory access without interfering with display
    
    03DA	w	EGA/VGA feature control register
    
    03DB	w	clear light pen latch
    03DC	r/w	preset light pen latch
    
    03DF		CRT/CPU page register  (PCjr only)
    
    -------------------------------------------------------------------------------
    03E8-03EF ----	serial port, same as 02E8, 02F8 and 03F8
    
    -------------------------------------------------------------------------------
    03F0-03F7 ----	FDC 1  (1st Floppy Disk Controller)	second FDC at 0370
    		(8272, 8272A, NEC765)
    		(82072, 82077AA for perpendicular recording at 2.8Mb)
    
    03F0	r	diskette EHD controller board jumper settings (82072AA)
    		 bit 7-6      drive 3
    		 bit 5-4      drive 2
    		 bit 3-2      drive 1
    		 bit 1-0      drive 0
    			 = 00  1.2Mb
    			 = 01  720Kb
    			 = 10  2.8Mb
    			 = 11  1.4Mb
    
    03F0	r	diskette controller status A (PS/2)
    		 bit 7	 interrupt pending
    		 bit 6	 -DRV2	second drive installed
    		 bit 5	 step
    		 bit 4	 -track 0
    		 bit 3	 head 1 select
    		 bit 2	 -index
    		 bit 1	 -write protect
    		 bit 0	 +direction
    
    03F0	r	diskette controller status A (PS/2 model 30)
    		 bit 7	 interrupt pending
    		 bit 6	 DRQ
    		 bit 5	 step F/F
    		 bit 4	 -track 0
    		 bit 3	 head 1 select
    		 bit 2	 +index
    		 bit 1	 +write protect
    		 bit 0	 -direction
    
    03F1	r	diskette controller status B (PS/2)
    		 bit 7-6  =1 reserved
    		 bit 5	  drive select (0=A:, 1=B:)
    		 bit 4	  write data
    		 bit 3	  read data
    		 bit 2	  write enable
    		 bit 1	  motor enable 1
    		 bit 0	  motor enable 0
    
    03F1	r	diskette controller status B (PS/2 model 30)
    		 bit 7	  -DRV2	second drive installed
    		 bit 6	  -DS1
    		 bit 5	  -DS0
    		 bit 4	  write data F/F
    		 bit 3	  read data F/F
    		 bit 2	  write enable F/F
    		 bit 1	  -DS3
    		 bit 0	  -DS2
    
    03F2	w	diskette controller DOR (Digital Output Register)
    		 bit 7-6    reserved on PS/2
    		 bit 7 = 1  drive 3 motor enable
    		 bit 6 = 1  drive 2 motor enable
    		 bit 5 = 1  drive 1 motor enable
    		 bit 4 = 1  drive 0 motor enable
    		 bit 3 = 1  diskette DMA enable (reserved PS/2)
    		 bit 2 = 1  FDC enable	(controller reset)
    		       = 0  hold FDC at reset
    		 bit 1-0    drive select (0=A 1=B ..)
    
    03F3		tape drive register (on the 82077AA)
    		 bit 7-2      reserved, tri-state
    		 bit 1-0      tape select
    			 = 00  none, drive 0 cannot be a tape drive.
    			 = 01  drive1
    			 = 10  drive2
    			 = 11  drive3
    
    03F4	r	diskette controller main status register
    		 bit 7 = 1  RQM	 data register is ready
    			 0  no access is permitted
    		 bit 6 = 1  transfer is from controller to system
    			 0  transfer is from system to controller
    		 bit 5 = 1  non-DMA mode
    		 bit 4 = 1  diskette controller is busy
    		 bit 3 = 1  drive 3 busy (reserved on PS/2)
    		 bit 2 = 1  drive 2 busy (reserved on PS/2)
    		 bit 1 = 1  drive 1 busy (= drive is in seek mode)
    		 bit 0 = 1  drive 0 busy (= drive is in seek mode)
    		Note:	in non-DMA mode, all data transfers occur through
    			  port 03F5h and the status registers (bit 5 here
    			  indicates data read/write rather than than
    			  command/status read/write)
    
    03F4	w	diskette controller data rate select register
    		 bit 7-2      reserved on 8272
    		 bit 7	 = 1  software reset (self clearing)	82072/82077AA
    		 bit 6	 = 1  power down			82072/82077AA
    		 bit 5	 = 0  reserved on 8272 and 82077AA
    			      PLL select bit on 82072
    		 bit 4-2      write precompensation value, 000 default
    		 bit 1-0      data rate select
    			 = 00  500 Kb/S MFM	250 Kb/S FM
    			 = 01  300 Kb/S MFM	150 Kb/S FM
    			 = 10  250 Kb/S MFM	125 Kb/S FM
    			 = 11  1Mb/S	MFM	illegal	 FM on 8207x
    
    03F5	r	diskette command/data register 0 (ST0)
    		 bit 7-6      last command status
    			 = 00  command terminated successfully
    			 = 01  command terminated abnormally
    			 = 10  invalid command
    			 = 11  terminated abnormally by change in ready signal
    		 bit 5	 = 1  seek completed
    		 bit 4	 = 1  equipment check occurred after error
    		 bit 3	 = 1  not ready
    		 bit 2	 = 1  head number at interrupt
    		 bit 1-0 = 1  unit select (0=A 1=B .. )
    			      (on PS/2	01=A  10=B)
    
    		status register 1 (ST1)
    		 bit 7	    end of cylinder; sector# greater then sectors/track
    		 bit 6 = 0
    		 bit 5 = 1  CRC error in ID or data field
    		 bit 4 = 1  overrun
    		 bit 3 = 0
    		 bit 2 = 1  sector ID not found
    		 bit 1 = 1  write protect detected during write
    		 bit 0 = 1  ID address mark not found
    
    		status register 2 (ST2)
    		 bit 7 = 0
    		 bit 6 = 1  deleted Data Address Mark detected
    		 bit 5 = 1  CRC error in data
    		 bit 4 = 1  wrong cylinder detected
    		 bit 3 = 1  scan command equal condition satisfied
    		 bit 2 = 1  scan command failed, sector not found
    		 bit 1 = 1  bad cylinder, ID not found
    		 bit 0 = 1  missing Data Address Mark 
    
    		status register 3 (ST3)
    		 bit 7	    fault status signal
    		 bit 6	    write protect status
    		 bit 5	    ready status
    		 bit 4	    track zero status
    		 bit 3	    two sided status signal
    		 bit 2	    side select (head select)
    		 bit 1-0    unit select (0=A 1=B .. )
    
    03F5	w	diskette command register.  The commands summarized here are
    		mostly multibyte commands. This is for brief recognition only.
    
    			MFM = MFM mode selected, opposite to MF mode.
    			HDS = head select
    			DS  = drive select
    			MT  = multi track operation
    			SK  = skip deleted data address mark
    
    		   Command	     # bytes	D7  6	5   4	3   2	1   0
    		 read track		9	0  MFM	0   0	0   0	1   0
    						0   0	0   0	0 HDS DS1 DS0
    		 specify		3	0   0	0   O	O   O	1   1
    		 sense drive status	2	0   0	0   0	0   1	0   0
    						0   0	0   0	0 HDS DS1 DS0
    		 write data		9	MT MFM	0   0	0   1	0   1
    						0   0	0   0	0 HDS DS1 DS0
    		 read data		9	MT MFM SK   0	0   1	1   0
    						0   0	0   0	0 HDS DS1 DS0
    		 recalibrate		2	0   0	0   0	0   1	1   1
    						0   0	0   0	0   0 DS1 DS0
    		 sense interrupt status	1	0   0	0   0	1   0	0   0
    		 write deleted data	9	MT MFM	0   0	1   0	0   1
    						0   0	0   0	0 HDS DS1 DS0
    		 read ID		2	0  MFM	0   0	1   0	1   0
    						0   0	0   0	0 HDS DS1 DS0
    		 read deleted data	9	MT MFM SK   0	1   1	0   0
    						0   0	0   0	0 HDS DS1 DS0
    		 format track		10	0  MFM	0   0	1   1	0   1
    						0   0	0   0	0 HDS DS1 DS0
    		 dumpreg **		1	0   0	0   0	1   1	1   0
    		 seek			3	0   0	0   0	1   1	1   1
    						0   0	0   0	0 HDS DS1 DS0
    		 version **		1	0   0	0   1	0   0	0   0
    		 scan equal *		9	MT MFM SK   1	0   0	0   1
    						0   0	0   0	0 HDS DS1 DS0
    		 perpendicular mode **	2	0   0	0   1	0   0	1   0
    						0   0	0   0	0   0 WGATE GAP
    		 configure **		4	0   0	0   1	0   0	1   1
    						0   0	0   0	0   0	0   0
    		 verify			9	MT MFM SK   1	0   1	1   0
    						EC  0	0   0	0 HDS DS1 DS0
    		 scan low or equal *	9	MT MFM SK   1	1   0	0   1
    						0   0	0   0	0 HDS DS1 DS0
    		 scan high or equal *	9	MT MFM SK   1	1   1	0   1
    						0   0	0   0	0 HDS DS1 DS0
    		 relative seek **	3	1  DIR	0   0	1   1	1   1
    						0   0	0   0	0 HDS DS1 DS0
    
    		 BEWARE: not every invalid command is treated as invalid!
    		 *  Note: the scan commands aren't mentioned for the 82077AA.
    		 ** Note: EHD controller commands.
    
    03F6		reserved on FDC
    
    03F6	r/w	FIXED disk controller data register
    		 bit 7-4    reserved
    		 bit 3 = 0  reduce write current
    			 1  head select 3 enable
    		 bit 2 = 1  disk reset enable
    			 0  disk reset disable
    		 bit 1 = 0  disk initialization enable
    			 1  disk initialization disable
    		 bit 0	    reserved
    
    03F7	r/w	harddisk controller
    		 bit 6	   FIXED DISK write gate
    		 bit 5	   FIXED DISK head select 3 / reduced write current
    		 bit 4	   FIXED DISK head select 2
    		 bit 3	   FIXED DISK head select 1
    		 bit 2	   FIXED DISK head select 0
    		 bit 1	   FIXED DISK drive 1 select
    		 bit 0	   FIXED DISK drive 0 select
    
    03F7	r	diskette controller DIR (Digital Input Register, PC/AT mode)
    		 bit 7 = 1 diskette change
    		 bit 6-0   tri-state on FDC
    
    03F7	r	diskette controller DIR (Digital Input Register, PS/2 mode)
    		 bit 7	 = 1 diskette change
    		 bit 6-3 = 1
    		 bit 2	     datarate select1
    		 bit 1	     datarate select0
    		 bit 0	 = 0 high density select (500Kb/s, 1Mb/s)
    
     conflicts with	 bit 0	   FIXED DISK drive 0 select
    
    03F7	r	diskette controller DIR (Digital Input Register, PS/2 model 30)
    		 bit 7	 = 0 diskette change
    		 bit 6-4 = 0
    		 bit 3	     -DMA gate (value from DOR register)
    		 bit 2	     NOPREC (value from CCR register)
    		 bit 1	     datarate select1
    		 bit 0	     datarate select0
    
     conflicts with	 bit 0	   FIXED DISK drive 0 select
    
    03F7	w	configuration control register (PC/AT, PS/2)
    		 bit 7-2       reserved, tri-state
    		 bit 1-0 = 00  500 Kb/S mode (MFM)
    			 = 01  300 Kb/S mode (MFM)
    			 = 10  250 Kb/S mode (MFM)
    			 = 11  1   Mb/S mode (MFM) (on 82072/82077AA)
    
     conflicts with	 bit 0	   FIXED DISK drive 0 select
    
    03F7	w	configuration control register (PS/2 model 30)
    		 bit 7-3       reserved, tri-state
    		 bit 2	       NOPREC (has no function. set to 0 by hardreset)
    		 bit 1-0 = 00  500 Kb/S mode (MFM)
    			 = 01  300 Kb/S mode (MFM)
    			 = 10  250 Kb/S mode (MFM)
    			 = 11  1   Mb/S mode (MFM) (on 82072/82077AA)
    
     conflicts with	 bit 0	   FIXED DISK drive 0 select
    
    -------------------------------------------------------------------------------
    03F8-03FF ----	serial port (8250,8251,16450,16550,16550A,etc.)
    		same as 02E8,02F8 and 03E8
    
    03F8	w	serial port, transmitter holding register, which contains the
    		character to be sent. Bit 0 is sent first.
    		 bit 7-0   data bits when DLAB=0 (Divisor Latch Access Bit)
    	r	receiver buffer register, which contains the received character
    		Bit 0 is received first
    		 bit 7-0   data bits when DLAB=0 (Divisor Latch Access Bit)
    	r/w	divisor latch low byte when DLAB=1
    
    03F9	r/w	divisor latch high byte when DLAB=1
    	r/w	interrupt enable register when DLAB=0
    		 bits 7-4   reserved
    		 bit 3 = 1  modem-status interrupt enable
    		 bit 2 = 1  receiver-line-status interrupt enable
    		 bit 1 = 1  transmitter-holding-register empty interrupt enable
    		 bit 0 = 1  received-data-available interrupt enable
    				(also 16550(A) timeout interrupt)
    
    	      - 16550(A) will interrupt with a timeout if data exists in the
    	        FIFO and isn't read within the time it takes to receive four
    		bytes or if no data is received within the time it takes to
    		receive four bytes
    
    03FA	r	interrupt identification register. Information about a pending
    		interrupt is stored here. When the ID register is addressed,
    		the highest priority interrupt is held, and no other interrupts
    		are acknowledged until the CPU services that interrupt.
    		 bit 7-6 = 00  reserved on 8250, 8251, 16450
    			 = 01  if FIFO queues enabled (16550 only)
    			 = 11  if FIFO queues are enabled (16550A only)
    		 bit 5-4 = 0 reserved
    		 bit 3	 = 0 reserved  8250, 16450
    			 = 1 16550  timeout int. pending
    		 bit 2-1 identify pending interrupt with the highest priority
    		  = 11	receiver line status interrupt. priority=highest
    		  = 10	received data available register interrupt. pr.=second
    		  = 01	transmitter holding register empty interrupt. pr.=third
    		  = 00	modem status interrupt. priority=fourth
    		 bit 0 = 0  interrupt pending. contents of register can be used
    			    as a pointer to the appropriate int.service routine
    			 1  no interrupt pending
    
    	      - interrupt pending flag uses reverse logic, 0=pending, 1=none
    	      - interrupt will occur if any of the line status bits are set
    	      - THRE bit is set when THRE register is emptied into the TSR
    
    
    03FA	w	16650 FCR  (FIFO Control Register)
    		 bit 7-6 = received data available interrupt trigger level
    			00  1 byte
    			01  4 bytes
    			10  8 bytes
    			11 14 bytes
    		 bit 5-4 = 00 reserved
    		 bit 3	 = 1  change RXRDY  TXRDY pins from mode 0 to mode 1
    		 bit 2	 = 1  clear XMIT FIFO
    		 bit 1	 = 1  clear RCVR FIFO
    		 bit 0	 = 1  enable clear XMIT and RCVR FIFO queues
    
    	      - bit 0 must be set in order to write to other FCR bits
    	      - bit 1 when set	the RCVR FIFO is cleared and this bit is reset
    		 the receiver shift register is not cleared
    	      - bit 2 when set	the XMIT FIFO is cleared and this bit is reset
    		 the transmit shift register is not cleared
    	      - due to a hardware bug, 16550 FIFOs don't work correctly (this
    	        was fixed in the 16550A)
    
    03FB	r/w	line control register
    		 bit 7 = 1  divisor latch access bit (DLAB)
    			 0  receiver buffer, transmitter holding, or interrupt
    			    enable register access
    		 bit 6 = 1  set break enable. serial ouput is forced to spacing
    			    state and remains there.
    		 bit 5 =    stick parity
    		 bit 4 = 1  even parity select
    		 bit 3 =    parity enable
    			 1  even number of ones are sent and checked in the 
    			    data word bits and parity bit
    			 0  odd number of ones are sent and checked
    		 bit 2 = 0  one stop bit
    			 1  zero stop bit
    		 bit 1-0 00 word length is 5 bits
    			 01 word length is 6 bits
    			 10 word length is 7 bits
    			 11 word length is 8 bits
    
    03FC	r/w	modem control register
    		 bit 7-5 = 0  reserved
    		 bit 4 = 1  loopback mode for diagnostic testing of serial port
    			    output of transmitter shift register is looped back
    			    to receiver shift register input. In this mode
    			    transmitted data is received immediately so that
    			    the CPU can verify the transmit data/receive data
    			    serial port paths.
    		 bit 3 = 1  auxiliary user-designated output 2
    		 bit 2 = 1  auxiliary user-designated output 1
    		 bit 1 = 1  force request-to-send active
    		 bit 0 = 1  force data-terminal-ready active
    
    03FD	r	line status register
    		 bit 7 = 0  reserved
    		 bit 6 = 1  transmitter shift and holding registers empty
    		 bit 5 = 1  transmitter holding register empty. Controller is
    			    ready toaccept a new character to send.
    		 bit 4 = 1  break interrupt. the received data input is held in
    			    in the zero bit state longer than the time of start
    			    bit + data bits + parity bit + stop bits.
    		 bit 3 = 1  framing error. the stop bit that follows the last
    			    parity or data bit is a zero bit.
    		 bit 2 = 1  parity error. Character has wrong parity
    		 bit 1 = 1  overrun error. a character was sent to the receiver
    			    buffer before the previous character in the buffer
    			    could be read. This destroys the previous
    			    character.
    		 bit 0 = 1  data ready. a complete incoming character has been
    			    received and sent to the receiver buffer register.
    
    03FE	r	modem status register
    		 bit 7 = 1  data carrier detect
    		 bit 6 = 1  ring indicator
    		 bit 5 = 1  data set ready
    		 bit 4 = 1  clear to send
    		 bit 3 = 1  delta data carrier detect
    		 bit 2 = 1  trailing edge ring indicator
    		 bit 1 = 1  delta data set ready
    		 bit 0 = 1  delta clear to send
    
    	      - bits 0-3 are reset when the CPU reads the MSR
    	      - bit 4 is the Modem Control Register RTS during loopback test
    	      - bit 5 is the Modem Control Register DTR during loopback test
    	      - bit 6 is the Modem Control Register OUT1 during loopback test
    	      - bit 7 is the Modem Control Register OUT2 during loopback test
    
    03FF	r/w	scratch register
    
    -------------------------------------------------------------------------------
    
    		Adresses above 03FF apply to EISA machines only !
    
    			 1000-1FFF	slot 1 EISA
    			 2000-2FFF	slot 2 EISA
    			 3000-3FFF	slot 3 EISA
    			 4000-4FFF	slot 4 EISA
    			 5000-5FFF	slot 5 EISA
    			 6000-6FFF	slot 6 EISA
    			 7000-7FFF	slot 7 EISA
    
    -------------------------------------------------------------------------------
    0401-04D6 ----	used by EISA systems only
    
    0401	r/w	DMA channel 0 word count byte 2 (high)
    0403	r/w	DMA channel 1 word count byte 2 (high)
    0405	r/w	DMA channel 2 word count byte 2 (high)
    0407	r/w	DMA channel 3 word count byte 2 (high)
    
    040A	w	extended DMA chaining mode register, channels 0-3
    		 bit 7-5      reserved
    		 bit 4	 = 0  generates IRQ13
    			 = 1  generates terminal count
    		 bit 3	 = 0  do not start chaining
    			 = 1  programming complete
    		 bit 2	 = 0  disable buffer chaining mode (default)
    			 = 1  enable buffer chaining mode
    		 bit 1-0      DMA channel select
    
    040A	r	channel interrupt (IRQ13) status register
    		 bit 7-5  interrupt on channels 7-5
    		 bit 4	  reserved
    		 bit 3-0  interrupt on channels 3-0
    
    040B	w	DMA extended mode register for channels 3-0.
    		bit settings same as 04D6
    		 bit 7	 = 0  enable stop register
    		 bit 6	 = 0  terminal count is an output for this channel
    				(default)
    		 bit 5-4      DMA cycle timing
    			 = 00 ISA-compatible (default)
    			 = 01 type A timing mode
    			 = 10 type B timing mode
    			 = 11 burst DMA mode
    		 bit 3-2      Address mode
    			 = 00 8-bit I/O, count by bytes (default)
    			 = 01 16-bit I/O, count by words, address shifted
    			 = 10 32-bit I/O, count by bytes
    			 = 11 16-bit I/O, count by bytes
    		 bit 1-0      DMA channel select
    
    -------------------------------------------------------------------------------
    0461	r/w	Extended NMI status/control register
    		 bit 7 = 1  NMI pending from fail-safe timer (read only)
    		 bit 6 = 1  NMI pending from bus timeout NMI status (read
    only)
    		 bit 5 = 1  NMI pending (read only)
    		 bit 4	    reserved
    		 bit 3 = 1  bus timeout NMI enable (read/write)
    		 bit 2 = 1  fail-safe NMI enable (read/write)
    		 bit 1 = 1  NMI I/O port enable (read/write)
    		 bit 0	    RSTDRV. bus reset (read/write)
    		       = 0  NORMAL bus reset operation
    		       = 1  reset bus asserted
    
    0462	w	Software NMI register. writing to this register causes an NMI
    		if NMI's are enabled
    		 bit 7 = 1  generates an NMI
    
    0464	r	bus master status latch register (slots 1-8). identifies the
    		last bus master that had control of the bus
    		 bit 7 = 0  slot 8 had control last
    		 bit 6 = 0  slot 7 had control last
    		 bit 5 = 0  slot 6 had control last
    		 bit 4 = 0  slot 5 had control last
    		 bit 3 = 0  slot 4 had control last
    		 bit 2 = 0  slot 3 had control last
    		 bit 1 = 0  slot 2 had control last
    		 bit 0 = 0  slot 1 had control last
    
    0465	r	bus master status latch register (slots 9-16)
    		 bit 7 = 0  slot 16 had control last
    		 bit 6 = 0  slot 15 had control last
    		 bit 5 = 0  slot 14 had control last
    		 bit 4 = 0  slot 13 had control last
    		 bit 3 = 0  slot 12 had control last
    		 bit 2 = 0  slot 11 had control last
    		 bit 1 = 0  slot 10 had control last
    		 bit 0 = 0  slot 9  had control last
    
    -------------------------------------------------------------------------------
    0481-048B ---- EISA DMA page registers
    
    0481	r/w	DMA channel 2 address byte 3 (high)
    0482	r/w	DMA channel 3 address byte 3 (high)
    0483	r/w	DMA channel 1 address byte 3 (high)
    0487	r/w	DMA channel 0 address byte 3 (high)
    0489	r/w	DMA channel 6 address byte 3 (high)
    048A	r/w	DMA channel 7 address byte 3 (high)
    048B	r/w	DMA channel 5 address byte 3 (high)
    
    -------------------------------------------------------------------------------
    04C6-04CF ---- EISA DMA count registers
    
    04C6	r/w	DMA channel 5 word count byte 2 (high)
    04CA	r/w	DMA channel 6 word count byte 2 (high)
    04CE	r/w	DMA channel 7 word count byte 2 (high)
    
    -------------------------------------------------------------------------------
    04D0-04D1 ---- EISA IRQ control
    
    04D0	w	IRQ 0-7 interrupt edge/level registers
    		 bit 7 = 1  IRQ 7 is level sensitive
    		 bit 6 = 1  IRQ 6 is level sensitive
    		 bit 5 = 1  IRQ 5 is level sensitive
    		 bit 4 = 1  IRQ 4 is level sensitive
    		 bit 3 = 1  IRQ 3 is level sensitive
    		 bit 2-0    reserved
    
    04D1	w	IRQ 8-15 interrupt edge/level registers
    		 bit 7 = 1  IRQ 15 is level sensitive
    		 bit 6 = 1  IRQ 14 is level sensitive
    		 bit 5 = 1  reserved
    		 bit 4 = 1  IRQ 12 is level sensitive
    		 bit 3 = 1  IRQ 11 is level sensitive
    		 bit 2 = 1  IRQ 10 is level sensitive
    		 bit 1 = 1  IRQ 9  is level sensitive
    		 bit 0	    reserved
    
    -------------------------------------------------------------------------------
    04D4-04D6 ---- EISA DMA control
    
    04D4	r	DMA chaining status
    
    04D4	w	extended DMA chaining mode register, channels 4-7
    		 bit 7-5 = 0  reserved
    		 bit 4	 = 0  generates IRQ 13
    			 = 1  generates terminal count
    		 bit 3	 = 0  do not start chaining
    			 = 1  programming complete
    		 bit 2	 = 0  disable buffer chaining mode (default)
    			 = 1  enable buffer chaining mode
    		 bit 1-0      DMA channel select
    
    04D6	w	DMA extended mode register for channels 4-7
    		bit settings same as 04B
    		 bit 7	 = 0  enable stop register
    		 bit 6	 = 0  terminal count is an output for this channel
    				(default)
    		 bit 5-4      DMA cycle timing
    			 = 00 ISA-compatible (default)
    			 = 01 type A timing mode
    			 = 10 type B timing mode
    			 = 11 burst DMA mode
    		 bit 3-2      Address mode
    			 = 00 8-bit I/O, count by bytes (default)
    			 = 01 16-bit I/O, count by words, address shifted
    			 = 10 32-bit I/O, count by bytes
    			 = 11 16-bit I/O, count by bytes
    		 bit 1-0      DMA channel select
    
    -------------------------------------------------------------------------------
    04E0-04FF ---- EISA DMA stop registers
    
    04E0-04E2 r/w	channel 0
    04E4-04E6 r/w	channel 1
    04E8-04EA r/w	channel 2
    04EC-04EE r/w	channel 3
    04F4-04F6 r/w	channel 5
    04F8-04FA r/w	channel 6
    04FC-04FE r/w	channel 7
    
    -------------------------------------------------------------------------------
    0530-0533 ----	Gravis Ultra Sound Daughter Card by Advanced Gravis
    	 The I/O address range is dipswitch selectable from:
    	   0530-0533 
    	   0604-0607 
    	   0E80-0E83 
    	   0F40-0F43 
    
    0530	r/w	Address Select
    0531	r/w	Data
    0532	r/w	Status
    0533	r/w	PIO
    
    -------------------------------------------------------------------------------
    0601	w	System control. Laptop chipset: Headland HL21 & Acer M5105
    		 bit 7 = 1  power led on
    		 bit 6 = 1  LCD backlight off
    		 bit 5
    		 bit 4
    		 bit 3
    		 bit 2 = 1  video chips disabled, screen blanked.
    		 bit 1
    		 bit 0 = 1  will lock up your machine!
    
    	r	 bit 7 = 0  if screen enabled always these values
    		 bit 6 = 0
    		 bit 5 = 0
    		 bit 4 = 0
    		 bit 3 = 0
    		 bit 2 = 1  (=0 at low power)
    		 bit 1 = 0  power OK
    		 bit 0 = 0
    
    -------------------------------------------------------------------------------
    0620-0627 ----	PC network (adapter 1)
    0628-062F ----	PC network (adapter 2)
    
    -------------------------------------------------------------------------------
    0680	  ----	Microchannel POST Diagnostic (write only)
    
    -------------------------------------------------------------------------------
    06E2-06E3 ----	data aquisition (adapter 1)
    
    -------------------------------------------------------------------------------
    06E8	  ----	S3 86C928 video controller (ELSA Winner 1000)
    
    -------------------------------------------------------------------------------
    06E8-06EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    06E8	w	horizontal displayed
    
    	See also 02E8-02EF, 0AE8, 96E8, 9AE8
    
    -------------------------------------------------------------------------------
    0746	  ----	Gravis Ultra Sound by Advanced Gravis
    
    0746	r	Board Version (rev 3.7+)
    		 FF	  Pre 3.6 boards, ICS mixer NOT present
    		 05	  Rev 3.7 with ICS Mixer. Some R/L: flip problems.
    		 06-09	  Revision 3.7 and above. ICS Mixer present
    		 0A-	  UltraMax. CS4231 present, no ICS mixer
    	w	Mixer Control Port
    
    SeeAlso: 0240-024F, 0340-034F
    
    -------------------------------------------------------------------------------
    0790-0793 ----	cluster (adapter 1)
    
    -------------------------------------------------------------------------------
    0800-08FF ----	I/O port access registers for extended CMOS RAM or SRAM
    		(256 bytes at a time)
    		Sometimes plain text can be seen here.
    
    -------------------------------------------------------------------------------
    0800-08FF ----	reserved for EISA system motherboard
    
    -------------------------------------------------------------------------------
    0A20-0A23 ----	Token Ring (adapter 1)
    0A24-0A27 ----	Token Ring (adapter 2)
    
    -------------------------------------------------------------------------------
    0AE2-0AE3 ----	cluster (adapter 2)
    
    -------------------------------------------------------------------------------
    0AE8	  ----	S3 86C928 video controller (ELSA Winner 1000)
    
    -------------------------------------------------------------------------------
    0AE8-0AEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    0AE8	w	horizontal sync start
    
    -------------------------------------------------------------------------------
    0B90-0B93 ----	cluster (adapter 2)
    
    -------------------------------------------------------------------------------
    0C00	r/w	page register to write to SRAM or I/O
    
    -------------------------------------------------------------------------------
    0C00-0CFF ----	reserved for EISA system motherboard
    
    -------------------------------------------------------------------------------
    0C7C		bit 7-4 (Compaq)
    
    -------------------------------------------------------------------------------
    0C80-0C83 ----	EISA system board ID registers
    
    -------------------------------------------------------------------------------
    0CF8	  ----	Intel Pentium motherboard ("Neptune" chipset)
    
    -------------------------------------------------------------------------------
    0CFA	  ----	Intel Pentium motherboard ("Neptune" chipset)
    
    -------------------------------------------------------------------------------
    0EE8	  ----	S3 86C928 video controller (ELSA Winner 1000)
    
    -------------------------------------------------------------------------------
    0EE8-0EEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    0EE8	w	horizontal sync width
    
    -------------------------------------------------------------------------------
    1000-10FF ----	available for EISA slot 1
    
    -------------------------------------------------------------------------------
    12E8-12EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    12E8	w	vertical total
    
    -------------------------------------------------------------------------------
    1390-1393 ----	cluster (adapter 3)
    
    -------------------------------------------------------------------------------
    1400-14FF ----	available for EISA slot 1
    
    -------------------------------------------------------------------------------
    16E8-16EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    16E8	w	vertical displayed
    
    -------------------------------------------------------------------------------
    1800-18FF ----	available for EISA slot 1
    
    -------------------------------------------------------------------------------
    1AE8-1AEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    1AE8	w	vertical sync start
    
    -------------------------------------------------------------------------------
    1C00-1CFF ----	available for EISA slot 1
    
    -------------------------------------------------------------------------------
    1C80-1C8F ----	VESA XGA Video in EISA slot 1
    
    1C80-1C83 r/w	EISA Video ID
    1C84	r/w	EISA Video expansion board control	
    1C85	r/w	EISA Setup control
    1C88	r/w	EISA Video Programmable Option Select 0
    1C89-1C8F r/w	EISA Video Programmable Option Select 1-7
    
    -------------------------------------------------------------------------------
    1C80-1C83	EISA board product ID (board in slot 1)
    
    -------------------------------------------------------------------------------
    1C85		Compaq Qvision EISA - Virtual Controller ID
    
    -------------------------------------------------------------------------------
    1EE8-1EEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    1EE8	w	vertical sync width
    
    -------------------------------------------------------------------------------
    2000-20FF ----	available for EISA slot 2
    
    -------------------------------------------------------------------------------
    2100-210F ----	IBM XGA (eXtended Graphics Adapter  8514/A) (first installed)
    2110-211F ----	IBM XGA (eXtended Graphics Adapter  8514/A) (second installed)
    2120-212F ----	IBM XGA (eXtended Graphics Adapter  8514/A) (third installed)
    2130-213F ----	IBM XGA (eXtended Graphics Adapter  8514/A) (fourth installed)
    2140-214F ----	IBM XGA (eXtended Graphics Adapter  8514/A) (fifth installed)
    2150-215F ----	IBM XGA (eXtended Graphics Adapter  8514/A) (sixth installed)
    2160-216F ----	IBM XGA (eXtended Graphics Adapter  8514/A) (seventh installed)
    2170-217F ----	IBM XGA (eXtended Graphics Adapter  8514/A) (eighth installed)
    
    -------------------------------------------------------------------------------
    2100	  ----	XGA Video Operating Mode Register
    
    Note:	this port is for the first XGA in the system; 2110-2170 are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    2101	  ----	XGA VIdeo Aperture Control
    
    Note:	this port is for the first XGA in the system; 2111-2171 are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    2102-2103 ----	XGA ???
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    2104	  ----	XGA Video Interrupt Enable
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    2105	  ----	XGA Video Interrupt Status
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    2106	  ----	XGA Video Virtual Memory Control
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    2107	  ----	XGA Video Virtual Memory Interrupt Status
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    2108	  ----	XGA Video Aperture Index
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    2109	  ----	XGA Video Memory Access Mode
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    210A	  ----	XGA Video Index for Data
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    210B	  ----	XGA Video Data (byte)
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    210C-210F ----	XGA Video Data (word/dword)
    
    Note:	this port is for the first XGA in the system; 211x-217x are used for
    	  the second through eighth XGAs
    
    -------------------------------------------------------------------------------
    2110-217F ----	secondary XGA adapters (see individual entries above)
    
    -------------------------------------------------------------------------------
    22E8-22EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    22E8	w	display control
    
    -------------------------------------------------------------------------------
    2390-2393 ----	cluster (adapter 4)
    
    -------------------------------------------------------------------------------
    23C0-23CF ----	Compaq QVision - BitBLT engine
    
    -------------------------------------------------------------------------------
    2400-24FF ----	available for EISA slot 2
    
    -------------------------------------------------------------------------------
    27C6	r/w	LCD timeout in minutes (Compaq LTE Lite)
    
    -------------------------------------------------------------------------------
    2800-28FF ----	available for EISA slot 2
    
    -------------------------------------------------------------------------------
    28E9	  ----	8514/A - WD Escape Functions
    
    -------------------------------------------------------------------------------
    2C80-2C8F ----	VESA XGA Video in EISA slot 2 (see 1C80-1C8F)
    
    -------------------------------------------------------------------------------
    2C80-2C83	EISA board product ID (board in slot 2)
    
    -------------------------------------------------------------------------------
    3000-30FF ----	available for EISA slot 3
    
    -------------------------------------------------------------------------------
    3220-3227 ----	serial port 3, description same as 03F8
    3228-322F ----	serial port 4, description same as 03F8
    
    -------------------------------------------------------------------------------
    33C0-33CF ----	Compaq QVision - BitBLT engine
    
    -------------------------------------------------------------------------------
    3400-34FF ----	available for EISA slot 3
    
    -------------------------------------------------------------------------------
    3540-354F ----	IBM SCSI (Small Computer System Interface) adapter
    3550-355F ----	IBM SCSI (Small Computer System Interface) adapter
    3560-356F ----	IBM SCSI (Small Computer System Interface) adapter
    3570-357F ----	IBM SCSI (Small Computer System Interface) adapter
    
    -------------------------------------------------------------------------------
    3800-38FF ----	available for EISA slot 3
    
    -------------------------------------------------------------------------------
    3C00-3CFF ----	available for EISA slot 3
    
    -------------------------------------------------------------------------------
    3C80-3C8F ----	VESA XGA Video in EISA slot 3
    
    3C80-3C83 r/w	EISA Video ID
    3C84	r/w	EISA Video expansion board control	
    3C85	r/w	EISA Setup control
    3C88	r/w	EISA Video Programmable Option Select 0
    3C89-3C8F r/w	EISA Video Programmable Option Select 1-7
    
    SeeAlso: 1C80-1C8F,2C80-2C8F,7C80-7C8F
    
    -------------------------------------------------------------------------------
    3C80-3C83	EISA board product ID (board in slot 3)
    
    -------------------------------------------------------------------------------
    4000-40FF ----	available for EISA slot 4
    
    -------------------------------------------------------------------------------
    4220-4227 ----	serial port, description same as 03F8
    4228-422F ----	serial port, description same as 03F8
    
    -------------------------------------------------------------------------------
    42E0-42EF ----	GPIB (General Purpose Interface Bus, IEEE 488 interface)
    
    42E1	r/w	GPIB (adapter 2)
    
    -------------------------------------------------------------------------------
    42E8	  ----	8514/A and hardware-compatible video cards
    
    42E8	r	Subsystem Status
    42E8	w	Subsystem Control
    
    -------------------------------------------------------------------------------
    4400-44FF ----	available for EISA slot 4
    
    -------------------------------------------------------------------------------
    46E8	  ----	VGA video adapter enable
    
    46E8	r/w	enable flags
    		bits 7-5 unused or vendor-specific
    		bit 4: setup for POS registers (MCA)
    		bit 3: enable video I/O ports and video buffer
    		bits 2-0 unused or vendor-specific
    
    Note:	IBM uses this port for adapter-card VGAs only, and port 03C3 for
    	  motherboard VGA only
    
    SeeAlso: 03C3
    
    -------------------------------------------------------------------------------
    46E8	  ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    46E8	w	ROM page select
    
    -------------------------------------------------------------------------------
    4800-48FF ----	available for EISA slot 4
    
    -------------------------------------------------------------------------------
    4AE8-4AEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    4AE8	w	Advanced function control
    		(02h = VGA mode, 03h = 480-line mode, 07h = 768-line mode)
    
    -------------------------------------------------------------------------------
    4C00-4CFF ----	available for EISA slot 4
    
    -------------------------------------------------------------------------------
    4C80-4C83	EISA board product ID (board in slot 4)
    
    -------------------------------------------------------------------------------
    4C80-4C8F ----	VESA XGA Video in EISA slot 4 (see 3C80-3C8F)
    
    SeeAlso: 1C80-1C8F,6C80-6C8F
    
    -------------------------------------------------------------------------------
    5000-50FF ----	available for EISA slot 5
    
    -------------------------------------------------------------------------------
    5220-5227 ----	serial port, description same as 03F8
    5228-522F ----	serial port, description same as 03F8
    
    -------------------------------------------------------------------------------
    5400-54FF ----	available for EISA slot 5
    
    -------------------------------------------------------------------------------
    5800-58FF ----	available for EISA slot 5
    
    -------------------------------------------------------------------------------
    5C00-5CFF ----	available for EISA slot 5
    
    -------------------------------------------------------------------------------
    5C80-5C8F ----	VESA XGA Video in EISA slot 5
    
    5C80-5C83 r/w	EISA Video ID
    5C84	r/w	EISA Video expansion board control	
    5C85	r/w	EISA Setup control
    5C88	r/w	EISA Video Programmable Option Select 0
    5C89-5C8F r/w	EISA Video Programmable Option Select 1-7
    
    SeeAlso: 2C80-2C8F,4C80-4C8F,6C80-6C8F
    
    -------------------------------------------------------------------------------
    5C80-5C83	EISA board product ID (board in slot 5)
    
    -------------------------------------------------------------------------------
    6000-60FF ----	available for EISA slot 6
    
    -------------------------------------------------------------------------------
    62E0-62EF ----	GPIB (General Purpose Interface Bus, IEEE 488 interface)
    
    62E1	r/w	GPIB (adapter 3)
    
    -------------------------------------------------------------------------------
    63C0-63CF ----	Compaq QVision - BitBLT engine
    
    -------------------------------------------------------------------------------
    6400-64FF ----	available for EISA slot 6
    
    -------------------------------------------------------------------------------
    6800-68FF ----	available for EISA slot 6
    
    -------------------------------------------------------------------------------
    6C00-6CFF ----	available for EISA slot 6
    
    -------------------------------------------------------------------------------
    6C80-6C83	EISA board product ID (board in slot 6)
    
    -------------------------------------------------------------------------------
    6C80-6C8F ----	VESA XGA Video in EISA slot 1
    
    6C80-6C83 r/w	EISA Video ID
    6C84	r/w	EISA Video expansion board control	
    6C85	r/w	EISA Setup control
    6C88	r/w	EISA Video Programmable Option Select 0
    6C89-1C8F r/w	EISA Video Programmable Option Select 1-7
    
    SeeAlso: 1C80-1C8F,2C80-2C8F,5C80-5C8F
    
    -------------------------------------------------------------------------------
    7000-70FF ----	available for EISA slot 7
    
    -------------------------------------------------------------------------------
    7400-74FF ----	available for EISA slot 7
    
    -------------------------------------------------------------------------------
    7800-78FF ----	available for EISA slot 7
    
    -------------------------------------------------------------------------------
    7C00-7CFF ----	available for EISA slot 7
    
    -------------------------------------------------------------------------------
    7C80-7C83	EISA board product ID (board in slot 7)
    
    -------------------------------------------------------------------------------
    7C80-7C8F ----	VESA XGA Video in EISA slot 7
    
    7C80-7C83 r/w	EISA Video ID
    7C84	r/w	EISA Video expansion board control	
    7C85	r/w	EISA Setup control
    7C88	r/w	EISA Video Programmable Option Select 0
    7C89-7C8F r/w	EISA Video Programmable Option Select 1-7
    
    SeeAlso: 1C80-1C8F, 6C80-6C8F
    
    -------------------------------------------------------------------------------
    8000-80FF ----	available for EISA slot 8
    
    -------------------------------------------------------------------------------
    82E0-82EF ----	GPIB (General Purpose Interface Bus, IEEE 488 interface)
    
    82E1	r/w	GPIB (adapter 4)
    
    -------------------------------------------------------------------------------
    82E8-82EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    82E8	w	current Y position
    
    -------------------------------------------------------------------------------
    82F8-82FF ----	serial port, description same as 03F8
    83F8-83FF ----	serial port, description same as 03F8
    
    -------------------------------------------------------------------------------
    83C0-83CF ----	Compaq QVision - Line Draw Engine
    
    -------------------------------------------------------------------------------
    83C4	  ----	Compaq Qvision EISA - Virtual Controller Select
    
    -------------------------------------------------------------------------------
    83C6-83C9 ----	Compaq Qvision EISA - DAC color registers
    
    -------------------------------------------------------------------------------
    8400-84FF ----	available for EISA slot 8
    
    -------------------------------------------------------------------------------
    86E8-86EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    86E8	w	current X position
    
    -------------------------------------------------------------------------------
    8800-88FF ----	available for EISA slot 8
    
    -------------------------------------------------------------------------------
    8AE8-8AEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    8AE8	w	destination Y position / axial step constant
    
    -------------------------------------------------------------------------------
    8C00-8CFF ----	available for EISA slot 8
    
    -------------------------------------------------------------------------------
    8C80-8C83	EISA board product ID (board in slot 8)
    
    -------------------------------------------------------------------------------
    8EE8-8EEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    8EE8	w	destination X position / axial step constant
    
    -------------------------------------------------------------------------------
    9000-90FF ----	available for EISA slot 9
    
    -------------------------------------------------------------------------------
    92E8-92EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    92E8	w	error term
    
    -------------------------------------------------------------------------------
    9400-94FF ----	available for EISA slot 9
    
    -------------------------------------------------------------------------------
    96E8-96EF ----	8514/A and hardware-compatible video cards
    
    96E8	r	Enter WD Enhanced Mode
    96E8	w	major axis pixel count
    
    -------------------------------------------------------------------------------
    9800-98FF ----	available for EISA slot 9
    
    -------------------------------------------------------------------------------
    9AE8h-9AE9h ----  8514/A Graphics Processor Status
    
    9AE8w	r	bit 9: hardware busy
    9AE8	w	command
    
    -------------------------------------------------------------------------------
    9C00-9CFF ----	available for EISA slot 9
    
    -------------------------------------------------------------------------------
    9C80-9C83	EISA board product ID (board in slot 9)
    
    -------------------------------------------------------------------------------
    A220	  ????	soundblaster support in AMI Hi-Flex BIOS  ????
    
    -------------------------------------------------------------------------------
    A2E0-A2EF ----	GPIB (General Purpose Interface Bus, IEEE 488 interface)
    
    A2E1	r/w	GPIB (adapter 5)
    
    -------------------------------------------------------------------------------
    A2E8-A2EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    A2E8	w	background color
    
    -------------------------------------------------------------------------------
    A6E8-A6EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    A6E8	w	foreground color
    
    -------------------------------------------------------------------------------
    AAE8-AAEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    AAE8	w	write mask
    
    -------------------------------------------------------------------------------
    AEE8-AEEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    AEE8	w	read mask
    
    -------------------------------------------------------------------------------
    AFFF	r/w	plane 0-3 system latch (video register)
    
    -------------------------------------------------------------------------------
    B220-B227 ----	serial port, description same as 03F8
    B228-B22F ----	serial port, description same as 03F8
    
    -------------------------------------------------------------------------------
    B2E8-B2EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    B2E8	w	color compare
    
    -------------------------------------------------------------------------------
    B6E8-B6EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    B6E8	w	background mix
    
    -------------------------------------------------------------------------------
    BAE8-BAEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    BAE8	w	foreground mix
    
    -------------------------------------------------------------------------------
    BEE8-BEEF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    BEE8	w	multi-function control
    
    -------------------------------------------------------------------------------
    C008	  ----	Intel Pentium motherboard ("Neptune" chipset)
    
    -------------------------------------------------------------------------------
    C050	  ----	Intel Pentium motherboard ("Neptune" chipset)
    
    C050	r/w	bit 2: ???
    
    -------------------------------------------------------------------------------
    C052	  ----	Intel Pentium motherboard ("Neptune" chipset)
    
    C052	r/???	bits 6,7: ???
    
    -------------------------------------------------------------------------------
    C220-C227 ----	serial port, description same as 03F8
    C228-C22F ----	serial port, description same as 03F8
    
    -------------------------------------------------------------------------------
    C2E0-C2EF ----	GPIB (General Purpose Interface Bus, IEEE 488 interface)
    
    C2E1	r/w	GPIB (adapter 6)
    
    -------------------------------------------------------------------------------
    D220-D227 ----	serial port, description same as 03F8
    D228-D22F ----	serial port, description same as 03F8
    
    -------------------------------------------------------------------------------
    E2E0-E2EF ----	GPIB (General Purpose Interface Bus, IEEE 488 interface)
    
    E2E1	r/w	GPIB (adapter 7)
    
    -------------------------------------------------------------------------------
    E2E8-E2EF ----	8514/A and compatible video cards (e.g. ATI Graphics Ultra)
    
    E2E8	w	pixel data transfer
    
    -------------------------------------------------------------------------------
    
    MEMORY-MAPPED ADDRESSES
    
    -------------------------------------------------------------------------------
    80C00000  Compaq Deskpro 386 system memory board register
    
    80C00000 w	RAM relocation register
    		bit 7-2	   Reserved, always write 1's.
    		bit 1 = 0  Write-protect 128-Kbyte RAM at FE0000.
    		      = 1  Do not write-protect RAM at FE0000.
    		bit 0 = 0  Relocate 128-Kbyte block at FE0000 to address 0E0000
    		      = 1  128-Kbyte RAM is addressed only at FE0000.
    
    80C00000 r	Diagnostics register
    		bit 7	= 0  memory expansion board is installed
    		bit 6	= 0  second 1 MB of system memory board is installed
    		bit 5-4 = 00 base memory set to 640 KB
    			  01 invalid
    			  10 base memory set to 512 KB
    			  11 base memory set to 256 KB
    		bit 3	= 0  parity error in byte 3
    		bit 2	= 0  parity error in byte 2
    		bit 1	= 0  parity error in byte 1
    		bit 0	= 0  parity error in byte 0 (in 32-bit double word)
    
    -------------------------------------------------------------------------------
    C0000000-C000FFFF	Weitek "Abacus" math coprocessor
    
    -------------------------------------------------------------------------------
    
    
    
    
    -------------CREDITS-------------------------
    Chuck Proctor <71534.2302@CompuServe.COM>
    Richard W. Watson  <73042.1420@CompuServe.COM>
    
    [Some of the information in this list was extracted from Frank van Gilluwe's
    _The_Undocumented_PC_, a must-have book for anyone programming down to the
    "bare metal" of a PC.]
    
    [Some of the information in this list from the shareware version of Dave
    Williams' DOSREF, v3.0]
    
    [8514/A hardware ports found in FractInt v18.0 source file FR8514A.ASM]
    
    [Compaq QVision info from the _COMPAQ_QVision_Graphics_System_Technical_
    _Reference_Guide_, second edition (October 1993).  Compaq part number
    073A/0693.  Much more to come!]


    上一篇:HDMI --USB 描述符
    下一篇:WIFI-HID 网络键盘 通过UDP发送指令控制键盘鼠标 非API模拟 LUA-HID