home *** CD-ROM | disk | FTP | other *** search
/ Power CD-ROM!! 7 / POWERCD7.ISO / prgmming / inter43 / ports.lst < prev    next >
File List  |  1994-11-06  |  129KB  |  3,481 lines

  1. [This file was provided by Wim Osterholt (2:512/56 or wim@djo.wtm.tudelft.nl).]
  2. Last Change: 11/6/94
  3.  
  4.  
  5.         XT, AT and PS/2     I/O port addresses
  6.  
  7.       Do NOT consider this information as complete and accurate.
  8.       If you want to do harware programming check ALWAYS the
  9.       appropriate data sheets. Be aware that erroneously programming
  10.       can put your hardware or your data at risk. 
  11.  
  12.       There is a memory mapped address in use for I/O functions of which I
  13.       think it should be mentioned here. See at the end of this list.
  14.  
  15. -------------------------------------------------------------------------------
  16. 0000-001F ----    DMA 1    (first Direct Memory Access controller 8237)
  17.  
  18. 0000    r/w    DMA channel 0  address    byte  0, then byte 1.
  19. 0001    r/w    DMA channel 0 word count byte 0, then byte 1.
  20. 0002    r/w    DMA channel 1  address    byte  0, then byte 1.
  21. 0003    r/w    DMA channel 1 word count byte 0, then byte 1.
  22. 0004    r/w    DMA channel 2  address    byte  0, then byte 1.
  23. 0005    r/w    DMA channel 2 word count byte 0, then byte 1.
  24. 0006    r/w    DMA channel 3  address    byte  0, then byte 1.
  25. 0007    r/w    DMA channel 3 word count byte 0, then byte 1.
  26.  
  27. 0008    r    DMA channel 0-3 status register
  28.          bit 7 = 1  channel 3 request
  29.          bit 6 = 1  channel 2 request
  30.          bit 5 = 1  channel 1 request
  31.          bit 4 = 1  channel 0 request
  32.          bit 3 = 1  channel terminal count on channel 3
  33.          bit 2 = 1  channel terminal count on channel 2
  34.          bit 1 = 1  channel terminal count on channel 1
  35.          bit 0 = 1  channel terminal count on channel 0
  36.  
  37. 0008    w    DMA channel 0-3 command register
  38.          bit 7 = 1  DACK sense active high
  39.                = 0  DACK sense active low
  40.          bit 6 = 1  DREQ sense active high
  41.                = 0  DREQ sense active low
  42.          bit 5 = 1  extended write selection
  43.                = 0  late write selection
  44.          bit 4 = 1  rotating priority
  45.                = 0  fixed priority
  46.          bit 3 = 1  compressed timing
  47.                = 0  normal timing
  48.          bit 2 = 1  enable controller
  49.                = 0  enable memory-to-memory
  50.  
  51. 0009    w    DMA write request register
  52.  
  53. 000A    r/w    DMA channel 0-3 mask register
  54.          bit 7-3 = 0   reserved
  55.          bit 2     = 0   clear mask bit
  56.              = 1   set mask bit
  57.          bit 1-0 = 00  channel 0 select
  58.              = 01  channel 1 select
  59.              = 10  channel 2 select
  60.              = 11  channel 3 select
  61.  
  62. 000B    w    DMA channel 0-3 mode register
  63.          bit 7-6 = 00  demand mode
  64.              = 01  single mode
  65.              = 10  block mode
  66.              = 11  cascade mode
  67.          bit 5     = 0   address increment select
  68.              = 1   address decrement select
  69.          bit 3-2 = 00  verify operation
  70.              = 01  write to memory
  71.              = 10  read from memory
  72.              = 11  reserved
  73.          bit 1-0 = 00  channel 0 select
  74.              = 01  channel 1 select
  75.              = 10  channel 2 select
  76.              = 11  channel 3 select
  77.  
  78. 000C    w    DMA clear byte pointer flip-flop
  79. 000D    r    DMA read temporary register
  80. 000D    w    DMA master clear
  81. 000E    w    DMA clear mask register
  82. 000F    w    DMA write mask register
  83.  
  84. -------------------------------------------------------------------------------
  85. 0010-001F ----    DMA controller (8237) on PS/2 model 60 & 80
  86.  
  87. -------------------------------------------------------------------------------
  88. 0018    w    PS/2 extended function register
  89.  
  90. -------------------------------------------------------------------------------
  91. 001A        PS/2 extended function execute
  92.  
  93. -------------------------------------------------------------------------------
  94. 0020-003F ----    PIC 1    (Programmable Interrupt Controller 8259)
  95.  
  96. 0020    w    PIC initialization command word ICW1
  97.          bit 7-5 = 0  only used in 80/85 mode
  98.          bit 4     = 1  ICW1 is being issued
  99.          bit 3     = 0  edge triggered mode
  100.              = 1  level triggered mode
  101.          bit 2     = 0  successive interrupt vectors use 8 bytes
  102.              = 1  successive interrupt vectors use 4 bytes
  103.          bit 1     = 0  cascade mode
  104.              = 1  single mode, no ICW3 needed
  105.          bit 0     = 0  no ICW4 needed
  106.              = 1  ICW4 needed
  107.  
  108. 0021    w    PIC  ICW2,ICW3,ICW4 after ICW1 to 0020
  109.         ICW2:
  110.          bit 7-3 = address lines A0-A3 of base vector address for PIC
  111.          bit 2-0 = reserved
  112.         ICW3:
  113.          bit 7-0 = 0  slave controller not attached to corresponding
  114.                   interrupt pin
  115.              = 1  slave controller attached to corresponding
  116.                   interrupt pin
  117.         ICW4:
  118.          bit 7-5 = 0  reserved
  119.          bit 4     = 0  no special fully-nested mode
  120.              = 1  special fully-nested mode
  121.          bit 3-2 = 0x nonbuffered mode
  122.              = 10 buffered mode/slave
  123.              = 11 buffered mode/master
  124.          bit 1     = 0  normal EOI
  125.              = 1  Auto EOI
  126.          bit 0     = 0  8085 mode
  127.              = 1  8086/8088 mode
  128.  
  129. 0021    r/w    PIC master interrupt mask register
  130.         OCW1:
  131.          bit 7 = 0  enable parallel printer interrupt
  132.          bit 6 = 0  enable diskette interrupt
  133.          bit 5 = 0  enable fixed disk interrupt
  134.          bit 4 = 0  enable serial port 1 interrupt
  135.          bit 3 = 0  enable serial port 2 interrupt
  136.          bit 2 = 0  enable video interrupt
  137.          bit 1 = 0  enable keyboard, mouse, RTC interrupt
  138.          bit 0 = 0  enable timer interrupt
  139.  
  140. 0020    r    PIC  interrupt request/in-service registers by OCW3
  141.         request register:
  142.          bit 7-0 = 0  no active request for the corresponding int. line
  143.              = 1  active request for corresponding interrupt line
  144.         in-service register:
  145.          bit 7-0 = 0  corresponding line not currently being serviced
  146.              = 1  corresponding int. line currently being serviced
  147.  
  148. 0020    w    OCW2:
  149.          bit 7-5 = 000    rotate in auto EOI mode (clear)
  150.              = 001    nonspecific EOI
  151.              = 010    no operation
  152.              = 011    specific EOI
  153.              = 100    rotate in auto EOI mode (set)
  154.              = 101    rotate on nonspecific EOI command
  155.              = 110    set priority command
  156.              = 111    rotate on specific EOI command
  157.          bit 4     = 0    reserved
  158.          bit 3     = 0    reserved
  159.          bit 2-0    interrupt request to which the command applies
  160.  
  161. 0020    w    PIC OCW3
  162.          bit 7     = 0   reserved
  163.          bit 6-5 = 0x  no operation
  164.              = 10  reset special mask
  165.              = 11  set special mask
  166.          bit 4     = 0   reserved
  167.          bit 3     = 1   reserved
  168.          bit 2     = 0   no poll command
  169.              = 1   poll command
  170.          bit 1-0 = 0x  no operation
  171.              = 10  read int.request register on next read at 0020
  172.              = 11  read int.in-service register on next read 0020
  173.  
  174. -------------------------------------------------------------------------------
  175. 0022-002B ----    Intel 82355, part of chipset for 386sx
  176.          initialisation in POST will disable these addresses,
  177.          only a hard reset will enable them again.
  178.  
  179. 0022    r/w    82335 MCR memory configuration register
  180. 0024        82335 RC1 roll compare register
  181. 0026        82335 RC2 roll compare register
  182. 0028        82335 CC0 compare register
  183. 002A        82335 CC1 compare register
  184.  
  185.           values for CC0 and CC1:
  186.           00F9,0000  enable range compare CC0 0-512K  CC1 disable
  187.           00F1,0000  enable range compare CC0 0-1024K CC1 disable
  188.           00F1,10F9  enable range compare CC0 0-1M    CC1 1M-1M5
  189.           00E1,0000  enable range compare CC0 0-2M    CC1 disable
  190.           00E1,0000  enable range compare CC0 0-2M    CC1 disable
  191.           00C1,0000  enable range compare CC0 0-4M    CC1 disable
  192.           00C1,40E1  enable range compare CC0 0-4M    CC1 4M-6M
  193.           0081,0000  enable range compare CC0 0-8M    CC1 disable
  194.  
  195. -------------------------------------------------------------------------------
  196. 0022-0023 ----    Chip Set Data
  197.  
  198. 0022    w    index for accesses to data port
  199. 0023    r/w    chip set data
  200.  
  201. -------------------------------------------------------------------------------
  202. 0022-0023 ----    Cyrix Cx486SLC/DLC processor Cache Configuration Registers
  203.  
  204. 0022    w    index for accesses to next port
  205.         C0h CR0
  206.         C1h CR1
  207.         C4h non-cacheable region 1, start address bits 31-24
  208.         C5h non-cacheable region 1, start address bits 23-16
  209.         C6h non-cacheable region 1, start addr 15-12, size (low nibble)
  210.         C7h non-cacheable region 2, start address bits 31-24
  211.         C8h non-cacheable region 2, start address bits 23-16
  212.         C9h non-cacheable region 2, start addr 15-12, size (low nibble)
  213.         CAh non-cacheable region 3, start address bits 31-24
  214.         CBh non-cacheable region 3, start address bits 23-16
  215.         CCh non-cacheable region 3, start addr 15-12, size (low nibble)
  216.         CDh non-cacheable region 4, start address bits 31-24
  217.         CEh non-cacheable region 4, start address bits 23-16
  218.         CFh non-cacheable region 4, start addr 15-12, size (low nibble)
  219. 0023    r/w    cache configuration register array (indexed by port 0022h)
  220.  
  221.         non-cacheable region sizes:
  222.          00h  disabled
  223.          01h  4K
  224.          02h  8K
  225.          03h  16K
  226.          04h  32K
  227.          05h  64K
  228.          06h  128K
  229.          07h  256K
  230.          08h  512K
  231.          09h  1M
  232.          0Ah  2M
  233.          0Bh  4M
  234.          0Ch  8M
  235.          0Dh  16M
  236.          0Eh  32M
  237.          0Fh  4G
  238.  
  239.         Configuration Register 0 format:
  240.          bit 0    "NC0" first 64K of each 1M noncacheable in real/V86
  241.          bit 1    "NC1" 640K-1M noncacheable
  242.          bit 2    "A20M" enables A20M# input pin
  243.          bit 3    "KEN"  enables KEN# input pin
  244.          bit 4    "FLUSH" enables KEN# input pin
  245.          bit 5    "BARB" enables internal cache flushing on bus holds
  246.          bit 6    "C0" cache direct-mapped instead of 2-way associative
  247.          bit 7    "SUSPEND" enables SUSP# input and SUSPA# output pins
  248.  
  249.         Configuration Register 1 format;
  250.          bit 0    "RPL" enables output pins RPLSET and RPLVAL#
  251.  
  252. -------------------------------------------------------------------------------
  253. 0026-0027 ----    Power Management
  254.  
  255. 0026    w    index for data port
  256. 0027    r/w    power management data
  257.  
  258. -------------------------------------------------------------------------------
  259. 0038-003F ----    PC radio by CoZet Info Systems
  260.         The I/O address range is dipswitch selectable from:
  261.            038-03F and 0B0-0BF
  262.            078-07F and 0F0-0FF
  263.            138-13F and 1B0-1BF
  264.            178-17F and 1F0-1FF
  265.            238-23F and 2B0-2BF
  266.            278-27F and 2F0-2FF
  267.            338-33F and 3B0-3BF
  268.            378-37F and 3F0-3FF
  269.         All of these addresses show a readout of FF in initial state.
  270.         Once started, all of the addresses show     FB, whatever might
  271.         happen.
  272.  
  273. -------------------------------------------------------------------------------
  274. 0040-005F ----    PIT  (Programmable Interrupt Timer  8253, 8254)
  275.          XT & AT uses 40-43    PS/2 uses 40, 42,43,44, 47
  276.  
  277. 0040    r/w    PIT  counter 0, counter divisor          (XT, AT, PS/2)
  278. 0041    r/w    PIT  counter 1, RAM refresh counter   (XT, AT)
  279. 0042    r/w    PIT  counter 2, cassette & speaker    (XT, AT, PS/2)
  280.  
  281. 0043    r/w    PIT  mode port, control word register for counters 0-2
  282.          bit 7-6 = 00  counter 0 select
  283.              = 01  counter 1 select      (not PS/2)
  284.              = 10  counter 2 select
  285.          bit 5-4 = 00  counter latch command
  286.              = 01  read/write counter bits 0-7 only
  287.              = 10  read/write counter bits 8-15 only
  288.              = 11  read/write counter bits 0-7 first, then 8-15
  289.          bit 3-1 = 000 mode 0 select
  290.              = 001 mode 1 select - programmable one shot
  291.              = x10 mode 2 select - rate generator
  292.              = x11 mode 3 select - square wave generator
  293.              = 100 mode 4 select - software triggered strobe
  294.              = 101 mode 5 select - hardware triggered strobe
  295.          bit 0     = 0   binary counter 16 bits
  296.              = 1   BCD counter
  297.  
  298. 0044    r/w    PIT  counter 3 (PS/2, EISA)
  299.         used as fail-safe timer. generates an NMI on time out.
  300.         for user generated NMI see at 0462.
  301.  
  302. 0047    w    PIT  control word register counter 3 (PS/2, EISA)
  303.          bit 7-6 = 00  counter 3 select
  304.              = 01  reserved
  305.              = 10  reserved
  306.              = 11  reserved
  307.          bit 5-4 = 00  counter latch command counter 3
  308.              = 01  read/write counter bits 0-7 only
  309.              = 1x  reserved
  310.          bit 3-0 = 00
  311.  
  312. 0048        EISA
  313. 0049        8254 timer 2, not used (counter 1)
  314. 004A        EISA programmable interval timer 2
  315. 004B        EISA programmable interval timer 2
  316.  
  317. -------------------------------------------------------------------------------
  318. 0060-006F ----    Keyboard controller 804x (8041, 8042)  (or PPI (8255) on PC,XT)
  319.          XT uses 60-63,     AT uses 60-64
  320.  
  321.          AT keyboard controller input port bit definitions
  322.           bit 7      = 0  keyboard inhibited
  323.           bit 6      = 0  CGA, else MDA
  324.           bit 5      = 0  manufacturing jumper installed
  325.           bit 4      = 0  system RAM 512K, else 640K
  326.           bit 3-0      reserved
  327.  
  328.          AT keyboard controller input port bit definitions by Compaq
  329.           bit 7      = 0  security lock is locked
  330.           bit 6      = 0  Compaq dual-scan display, 1=non-Compaq display
  331.           bit 5      = 0  system board dip switch 5 is ON
  332.           bit 4      = 0  auto speed selected, 1=high speed selected
  333.           bit 3      = 0  slow (4MHz), 1 = fast (8MHz)
  334.           bit 2      = 0  80287 installed, 1= no NDP installed
  335.           bit 1-0      reserved
  336.  
  337.          AT keyboard controller output port bit definitions
  338.           bit 7 =    keyboard data output
  339.           bit 6 =    keyboard clock output
  340.           bit 5 = 0  input buffer full
  341.           bit 4 = 0  output buffer empty
  342.           bit 3 =    reserved (see note)
  343.           bit 2 =    reserved (see note)
  344.           bit 1 =    gate A20
  345.           bit 0 =    system reset
  346.         Note:    bits 2 and 3 are the turbo speed switch or password
  347.               lock on Award/AMI/Phoenix BIOSes.  These bits make
  348.               use of nonstandard keyboard controller BIOS
  349.               functionality to manipulate
  350.                 pin 23 (8041 port 22) as turbo switch for AWARD
  351.                 pin 35 (8041 port 15) as turbo switch/pw lock for
  352.                 Phoenix
  353.  
  354. 0060    r/w    KB controller data port or keyboard input buffer (ISA, EISA)
  355.         should only be read from after status port bit0 = 1
  356.         should only be written to if status port bit1 = 0
  357.         keyboard commands (data also goes to port 0060):
  358.          E6    sngl  set mouse scaling to 1:1
  359.          E7    sngl  set mouse scaling to 2:1
  360.          E8    dbl   set mouse resolution
  361.                 (00h = 1/mm,01h = 2/mm,02h = 4/mm,03h = 8/mm)
  362.          E9    sngl  get mouse information
  363.                 read two status bytes:
  364.                   byte 0
  365.                     bit 7 unused
  366.                     bit 6 remote rather than stream mode
  367.                     bit 5 mouse enabled
  368.                     bit 4 scaling set to 2:1
  369.                     bit 3 unused
  370.                     bit 2 left button pressed
  371.                     bit 1 unused
  372.                     bit 0 right button pressed
  373.                   byte 1: resolution
  374.          ED    dbl   set/reset mode indicators Caps Num Scrl
  375.                 bit 2 = CapsLk, bit 1 = NumLk, bit 0 = ScrlLk
  376.          EE    sngl  diagnostic echo. returns EE.
  377.          EF    sngl  NOP (No OPeration). reserved for future use
  378.          F0    dbl   get/set scan code set
  379.                 00h get current set
  380.                 01h scancode set 1 (except Type 2 ctrlr)
  381.                 02h scancode set 2 (default)
  382.                 03h scancode set 3
  383.          F2    sngl  read keyboard ID (read two ID bytes)
  384.          F2    sngl  read mouse ID (read two ID bytes)
  385.          F3    dbl   set typematic rate/delay
  386.          F3    dbl   set mouse sample rate in reports per second
  387.          F4    sngl  enable keyboard
  388.          F4    sngl  enable mouse
  389.          F5    sngl  disable keyboard. set default parameters
  390.          F5    sngl  disable mouse, set default parameters
  391.          F6    sngl  set default parameters
  392.          F7    sngl  [MCA] set all keys to typematic (scancode set 3)
  393.          F8    sngl  [MCA] set all keys to make/release
  394.          F9    sngl  [MCA] set all keys to make only
  395.          FA    sngl  [MCA] set all keys to typematic/make/release
  396.          FB    sngl  [MCA] set al keys to typematic
  397.          FC    dbl   [MCA] set specific key to make/release
  398.          FD    dbl   [MCA] set specific key to make only
  399.          FE    sngl  resend last scancode
  400.          FF    sngl  perform internal power-on reset function
  401.          FF    sngl  reset mouse
  402.         Note:    must issue command D4h to port 64h first to access
  403.               mouse functions
  404.  
  405.  
  406. 0060    r    KeyBoard or KB controller data output buffer (via PPI on XT)
  407.  
  408. 0061    w    KB controller port B (ISA, EISA)   (PS/2 port A is at 0092)
  409.         system control port for compatibility with 8255
  410.          bit 7    (1= IRQ 0 reset )
  411.          bit 6-4    reserved
  412.          bit 3 = 1  channel check enable
  413.          bit 2 = 1  parity check enable
  414.          bit 1 = 1  speaker data enable
  415.          bit 0 = 1  timer 2 gate to speaker enable
  416.  
  417. 0061    r    KB controller port B control register (ISA, EISA)
  418.         system control port for compatibility with 8255
  419.          bit 7     parity check occurred
  420.          bit 6     channel check occurred
  421.          bit 5     mirrors timer 2 output condition
  422.          bit 4     toggles with each refresh request
  423.          bit 3     channel check status
  424.          bit 2     parity check status
  425.          bit 1     speaker data status
  426.          bit 0     timer 2 gate to speaker status
  427.  
  428. 0061    w    PPI  Programmable Peripheral Interface 8255 (XT only)
  429.         system control port
  430.          bit 7 = 1  clear keyboard
  431.          bit 6 = 0  hold keyboard clock low
  432.          bit 5 = 0  I/O check enable
  433.          bit 4 = 0  RAM parity check enable
  434.          bit 3 = 0  read low switches
  435.          bit 2        reserved, often used as turbo switch
  436.          bit 1 = 1  speaker data enable
  437.          bit 0 = 1  timer 2 gate to speaker enable
  438.  
  439. 0062    r/w    PPI (XT only)
  440.          bit 7 = 1  RAM parity check
  441.          bit 6 = 1  I/O channel check
  442.          bit 5 = 1  timer 2 channel out
  443.          bit 4        reserved 
  444.          bit 3 = 1  system board RAM size type 1
  445.          bit 2 = 1  system board RAM size type 2
  446.          bit 1 = 1  coprocessor installed
  447.          bit 0 = 1  loop in POST
  448.  
  449. 0063    r/w    PPI (XT only) command mode register  (read dipswitches)
  450.          bit 7-6 = 00  1 diskette drive
  451.              = 01  2 diskette drives
  452.              = 10  3 diskette drives
  453.              = 11  4 diskette drives
  454.          bit 5-4 = 00  reserved
  455.              = 01  40*25 color (mono mode)
  456.              = 10  80*25 color (mono mode)
  457.              = 11  MDA 80*25
  458.          bit 3-2 = 00  256K (using 256K chips)
  459.              = 01  512K (using 256K chips)
  460.              = 10  576K (using 256K chips)
  461.              = 11  640K (using 256K chips)
  462.          bit 3-2 = 00  64K  (using 64K chips)
  463.              = 01  128K (using 64K chips)
  464.              = 10  192K (using 64K chips)
  465.              = 11  256K (using 64K chips)
  466.          bit 1-0       reserved
  467.  
  468. 0064    r    KB controller read status (ISA, EISA)
  469.          bit 7 = 1 parity error on transmission from keyboard
  470.          bit 6 = 1 receive timeout
  471.          bit 5 = 1 transmit timeout
  472.          bit 4 = 0 keyboard inhibit
  473.          bit 3 = 1 data in input register is command
  474.              0 data in input register is data
  475.          bit 2     system flag status: 0=power up or reset  1=selftest OK
  476.          bit 1 = 1 input buffer full (input 60/64 has data for 8042)
  477.          bit 0 = 1 output buffer full (output 60 has data for system)
  478.  
  479. 0064    r    KB controller read status (MCA)
  480.          bit 7 = 1 parity error on transmission from keyboard
  481.          bit 6 = 1 general timeout
  482.          bit 5 = 1 mouse output buffer full
  483.          bit 4 = 0 keyboard inhibit
  484.          bit 3 = 1 data in input register is command
  485.              0 data in input register is data
  486.          bit 2     system flag status: 0=power up or reset  1=selftest OK
  487.          bit 1 = 1 input buffer full (input 60/64 has data for 804x)
  488.          bit 0 = 1 output buffer full (output 60 has data for system)
  489.  
  490. 0064    r    KB controller read status by Compaq
  491.          bit 7 = 1 parity error detected (11-bit format only). If an
  492.                error is detected, a Resend command is sent to the
  493.                keyboard once only, as an attempt to recover.
  494.          bit 6 = 1 receive timeout. transmission didn't finish in 2mS.
  495.          bit 5 = 1 transmission timeout error
  496.                 bit 5,6,7  cause
  497.                 1 0 0  No clock
  498.                 1 1 0  Clock OK, no response
  499.                 1 0 1  Clock OK, parity error
  500.          bit 4 = 0 security lock engaged
  501.          bit 3 = 1 data in OUTPUT register is command
  502.              0 data in OUTPUT register is data
  503.          bit 2     system flag status: 0=power up or reset  1=soft reset
  504.          bit 1 = 1 input buffer full (output 60/64 has data)
  505.          bit 0 = 0 no new data in buffer (input 60 has data)
  506.  
  507. 0064    w    KB controller input buffer (ISA, EISA)
  508.         KB controller commands (data goes to port 0060):
  509.          20    read  read byte zero of internal RAM, this is the
  510.                   last KB command send to 804x
  511.               Compaq  Put current command byte on port 0060
  512.                 command structure:
  513.                 bit 7    reserved
  514.                 bit 6 = 1 convert KB codes to 8086 scan codes
  515.                 bit 5 = 0 use 11-bit codes, 1=use 8086 codes
  516.                 bit 4 = 0 enable keyboard, 1=disable keyboard
  517.                 bit 3 = 1 ignore security lock state
  518.                 bit 2      this bit goes into bit2 status reg.
  519.                 bit 1 = 0 reserved
  520.                 bit 0 = 1 generate int. when output buffer full
  521.          21-3F    read  reads the byte specified in the lower 5 bits of
  522.                   the command in the 804x's internal RAM
  523.          60-7F    dbl   writes the data byte to the address specified in
  524.                   the 5 lower bits of the command.
  525.  
  526.                   Alternate description KB IO command 60 summary:
  527.                    bit7 = 0 reserved
  528.                    bit6 =    IBM PC compatibility mode
  529.                    bit5 =    IBM PC mode
  530.                    bit4 =    disable kb
  531.                    bit3 =    inhibit override
  532.                    bit2 =    system flag
  533.                    bit1 = 0 reserved
  534.                    bit0 =    enableoutput buffer full interrupt
  535.  
  536.          60   Compaq  Load new command (60 to [64], command to [60])
  537.          A1   Compaq  unknown speedfunction ??
  538.          A2   Compaq  unknown speedfunction ??
  539.          A3   Compaq  Enable system speed control
  540.          A4    MCA   check if password installed
  541.          A4   Compaq  Toggle speed
  542.          A5    MCA   load password
  543.          A5   Compaq  Special reed. the 8042 places the real values
  544.                   of port 2 except for bits 4 and 5 wich are given
  545.                   a new definition in the output buffer. No output
  546.                   buffer full is generated.
  547.                 if bit 5 = 0, a 9-bit keyboard is in use
  548.                 if bit 5 = 1, an 11-bit keyboard is in use
  549.                 if bit 4 = 0, outp-buff-full interrupt disabled
  550.                 if bit 4 = 1, output-buffer-full int. enabled
  551.          A6    MCA   check password
  552.          A6   Compaq  unknown speedfunction ??
  553.          A7    MCA   disable mouse port
  554.          A8    MCA   enable mouse port
  555.          A9    MCA   test mouse port
  556.          AA    sngl  initiate self-test. will return 55 to data port
  557.               Compaq  Initializes ports 1 and 2, disables the keyboard
  558.                   and clears the buffer pointers. It then places
  559.                   55 in the output buffer.
  560.          AB    sngl  initiate interface test. result values:
  561.                    0 = no error
  562.                    1 = keyboard clock line stuck low
  563.                    2 = keyboard clock line stuck high
  564.                    3 = keyboard data line is stuck low
  565.                    4 = keyboard data line stuck high
  566.               Compaq   5 = Compaq diagnostic feature
  567.          AC    read  diagnostic dump. the contents of the 804x RAM,
  568.                   output port, input port, status word are send.
  569.          AD    sngl  disable keyboard (sets bit 4 of commmand byte)
  570.          AE    sngl  enable keyboard  (resets bit 4 of commmand byte)
  571.          AF    AWARD Enhanced Command: read keyboard version
  572.          C0    read  read input port
  573.               Compaq  Places status of input port in output buffer. use
  574.                   this command only when the output buffer is empty
  575.          C1    MCA   Enhanced Command: poll input port Low nibble
  576.          C2    MCA   Enhanced Command: poll input port High nibble
  577.          D0    read  read output port
  578.               Compaq  Places byte in output port in output buffer. use
  579.                   this command only when the output buffer is empty
  580.          D1    dbl   write output port. next byte written  to 0060
  581.                   will be written to the 804x output port; the
  582.                   original IBM AT and many compatibles use bit 1 of
  583.                   the output port to control the A20 gate.
  584.               Compaq  The system speed bits are not set by this command
  585.                   use commands A1-A6 (!) for speed functions.
  586.          D2    MCA   Enhanced Command: write keyboard output buffer
  587.          D3    MCA   Enhanced Command: write pointing device out.buf.
  588.          D4    MCA   write to mouse
  589.          D4    AWARD Enhanced Command: write to auxiliary device
  590.          DD    sngl  disable address line A20 (HP Vectra only???)
  591.                   default in Real Mode
  592.          DF    sngl  enable address line A20 (HP Vectra only???)
  593.          E0    read  read test inputs.
  594.                 bit0 = kbd clock, bit1 = kbd data
  595.          Exxx    AWARD Enhanced Command: active output port
  596.          ED   Compaq  This is a two part command to control the state
  597.                   of the NumLock CpasLock and ScrollLock LEDs
  598.                   The second byte contains the state to set LEDs.
  599.                 bit 7-3       reserved. should be set to 0.
  600.                 bit 2 = 0  Caps Lock LED off
  601.                 bit 1 = 0  Num Lock LED off
  602.                 bit 0 = 0  Scroll Lock LED off
  603.          F0-FF    sngl  pulse output port low for 6 microseconds.
  604.                   bits 0-3 contain the mask for the bits to be
  605.                   pulsed. a bit is pulsed if its mask bit is zero.
  606.                   bit0=system reset. Don't set to zero. Pulse only!
  607.  
  608. general note:     Keyboard controllers are widely different from each other.
  609.          You cannot generally exchange them between different machines.
  610. note on Award:     Derived from Award's Enhanced KB controller advertising sheet.
  611. note on Compaq:     Derived from the Compaq Deskpro 386 Tech. Ref. Guide.
  612.  
  613. 0065    r    communications port (Olivetti M24)
  614.  
  615. 0068    w    HP-Vectra  control buffer (HP commands)
  616. 0069    r    HP-Vectra  SVC (keyboard request SerViCe port)
  617. 006A    w    HP-Vectra  clear processing, done
  618.  
  619. 006C-006F    HP-HIL    (Human Interface Link = async. serial inputs 0-7)
  620.  
  621. -------------------------------------------------------------------------------
  622. 0065      ----    AT&T 6300+ high/low chip select
  623.  
  624. -------------------------------------------------------------------------------
  625. 0065      ----    ???
  626.  
  627. 0065    r/w    ???
  628.         bit 2: A20 gate control (set = A20 enabled, clear = disabled)
  629.  
  630. -------------------------------------------------------------------------------
  631. 0066-0067 ----    AT&T 6300+ system configuration switches
  632.  
  633. -------------------------------------------------------------------------------
  634. 0068      ----    C&T chipsets, turbo mode control
  635.  
  636. -------------------------------------------------------------------------------
  637. 006B-006F ----    SSGA control registers
  638.  
  639. 006B    ?    RAM enable/remap
  640. 006C-006F    undocumented
  641.  
  642. -------------------------------------------------------------------------------
  643. 0070-007F ----    CMOS RAM/RTC (Real Time Clock  MC146818)
  644.  
  645. 0070    w    CMOS RAM index register port (ISA, EISA)
  646.          bit 7     = 1  NMI disabled
  647.              = 0  NMI enabled
  648.          bit 6-0      CMOS RAM index (64 bytes, sometimes 128 bytes)
  649.  
  650.         any write to 0070 should be followed by an action to 0071
  651.         or the RTC wil be left in an unknown state.
  652.  
  653. 0071    r/w    CMOS RAM data port (ISA, EISA)
  654.         RTC registers:
  655.         00    current second in BCD
  656.         01    alarm second   in BCD
  657.         02    current minute in BCD
  658.         03    alarm minute   in BCD
  659.         04    current hour in BCD
  660.         05    alarm hour   in BCD
  661.         06    day of week  in BCD
  662.         07    day of month in BCD
  663.         08    month in BCD
  664.         09    year  in BCD (00-99)
  665.         0A    status register A
  666.                bit 7 = 1  update in progress
  667.                bit 6-4 divider that identifies the time-based
  668.                 frequency
  669.                bit 3-0 rate selection output  frequency and int. rate
  670.         0B    status register B
  671.                bit 7 = 0  run
  672.                  = 1  halt
  673.                bit 6 = 1  enable periodic interrupt
  674.                bit 5 = 1  enable alarm interrupt
  675.                bit 4 = 1  enable update-ended interrupt
  676.                bit 3 = 1  enable square wave interrupt
  677.                bit 2 = 1  calendar is in binary format
  678.                  = 0  calendar is in BCD format
  679.                bit 1 = 1  24-hour mode
  680.                  = 0  12-hour mode
  681.                bit 0 = 1  enable daylight savings time. only in USA.
  682.                   useless in Europe. Some DOS versions clear
  683.                   this bit when you use the DAT/TIME command.
  684.         0C    status register C
  685.                bit 7 =      interrupt request flag
  686.                bit 6 =      peridoc interrupt flag
  687.                bit 5 =      alarm interrupt flag
  688.                bit 4 =      update interrupt flag
  689.                bit 3-0      reserved
  690.         0D    status register D
  691.                bit 7 = 1  Real-Time Clock has power
  692.                bit 6-0      reserved
  693.         0E    diagnostics status byte
  694.                bit 7 = 0  RTC lost power
  695.                bit 6 = 1  CMOS RAM checksum bad
  696.                bit 5 = 1  invalid configuration information at POST
  697.                bit 4 = 1  memory size error at POST
  698.                bit 3 = 1  fixed disk/adapter failed initialization
  699.                bit 2 = 1  CMOS RAM time found invalid
  700.                bit 1 = 1  adapters do not match configuration (EISA)
  701.                bit 0 = 1  time out reading an adapter ID (EISA)
  702.         0F    shutdown status byte
  703.                00 = normal execution of POST
  704.                01 = chip set initialization for real mode reentry
  705.                04 = jump to bootstrap code
  706.                05 = issue an EOI an JMP to Dword ptr at 40:67
  707.                06 = JMP to Dword ptrv at 40:67 without EOI
  708.                07 = return to INT15/87 (block move)
  709.                08 = return to POST memory test
  710.                09 = return to INT15/87 (block move)
  711.                0A = JMP to Dword ptr at 40:67 without EOI
  712.                0B = return IRETS through 40:67
  713.         10    diskette drive type for A: and B:
  714.                bit 7-4    drive type of drive 0
  715.                bit 3-0    drive type of drive 1
  716.                    = 0000       no drive
  717.                    = 0001       360K
  718.                    = 0010       1M2
  719.                    = 0011       720K
  720.                    = 0100       1M44
  721.                    = 0101-1111 reserved
  722.         11    reserved / AMI Extended CMOS setup (AMI Hi-Flex BIOS)
  723.                bit 7   = 1     Typematic Rate Programming
  724.                bit 6-5 = 00    Typematic Rate Delay 250 mSec
  725.                bit 4-0 = 00011 Typematic Rate 21.8 Chars/Sec
  726.         12    fixed disk drive type for drive 0 and drive 1
  727.                bit 7-4    drive type of drive 0
  728.                bit 3-0    drive type of drive 1
  729.                 if either of the nibbles equals 0F, then bytes
  730.                 19 an 1A are valid
  731.         13    reserved / AMI Extended CMOS setup (AMI Hi-Flex BIOS)
  732.                bit 7 = 1  Mouse Support Option
  733.                bit 6 = 1  Above 1 MB Memory Test disable
  734.                bit 5 = 1  Memory Test Tick Sound disable
  735.                bit 4 = 1  Memory Parity Error Check enable
  736.                bit 3 = 1  Hit <ESC> Message Display disabled
  737.                bit 2 = 1  Hard Disk Type 47 Data Area at address 0:300
  738.                bit 1 = 1  Wait For <F1> If Any Error enabled
  739.                bit 0 = 1  System Boot Up Num Lock is On
  740.         14    equipment byte
  741.                bit 7-6     diskette drives installed
  742.                    = 00  1 drive installed
  743.                    = 01  2 drives installed
  744.                    = 10  reserved
  745.                    = 11  reserved
  746.                bit 5-4     primary display
  747.                    = 00  adapter card with option ROM 
  748.                    = 01  40*25 color
  749.                    = 10  80*25 color
  750.                    = 11  monochrome
  751.                bit 3-2     reserved
  752.                bit 1   = 1  coprocessor installed (non-Weitek)
  753.                bit 0        diskette drive avaliable for boot
  754.         15    LSB of systemn base memory in Kb
  755.         16    MSB of systemn base memory in Kb
  756.         17    LSB of total extended memory in Kb
  757.         18    MSB of total extended memory in Kb
  758.         19    drive C extension byte
  759.         1A    drive D extension byte
  760.         1B-27 reserved
  761.         1B/1C word to 82335 RC1 roll compare register at [24]
  762.             (Phoenix)
  763.         1D/1E word to 82335 RC2 roll compare register at [26]
  764.             (Phoenix)
  765.         28    HP-Vectra checksum over 29-2D
  766.         29-2D reserved
  767.         29/2A word to Intel 82335 CC0 compare register at
  768.             [28](Phoenix)
  769.         2B/2C word send to 82335 CC1 compare register at [2A]
  770.             (Phoenix)
  771.         2D    AMI Extended CMOS setup (AMI Hi-Flex BIOS)
  772.               (Phoenix BIOS checks for the values AA or CC)
  773.                bit 7 = 1  Weitek Processor Absent
  774.                bit 6 = 1  Floppy Drive Seek At Boot disabled
  775.                bit 5 = 1  System Boot Up Sequence  C:, A:
  776.                bit 4 = 1  System Boot Up Speed is high
  777.                bit 3 = 1  Cache Memory enabled
  778.                bit 2 = 1  Internal Cache Memory     <1>
  779.                bit 1-0      reserved
  780.         2E    CMOS MSB checksum over 10-2D
  781.         2F    CMOS LSB checksum over 10-2D
  782.         30    LSB of extended memory found above 1Mb at POST
  783.         31    MSB of extended memory found above 1Mb at POST
  784.         32    date century in BCD
  785.         33    information flags
  786.                bit4 = bit4 from CPU register CR0   (Phoenix)
  787.                   this bit is only known as INTEL RESERVED
  788.         34-3F reserved    
  789.         34     bit4 bit5 (Phoenix BIOS)
  790.         3D/3E word to 82335 MCR memory config register at
  791.             [22](Phoenix)
  792.         3D     bit3     base memsize 512/640  (Phoenix)
  793.         3E     bit7 = 1     relocate enable       (Phoenix)
  794.                bit1 = 1     shadow video enable   (Phoenix)
  795.                bit0 = 1     shadow BIOS enable    (Phoenix)
  796.  
  797.  
  798.         User Definable Drive Parameters are also stored in CMOS RAM:
  799.  
  800.         AMI (386sx BIOS 1989) first user definable drive (type 47)
  801.          1B  L cylinders
  802.          1C  H cylinders
  803.          1D  heads
  804.          1E  L Write Precompensation Cylinder
  805.          1F  H Write Precompensation Cylinder
  806.          20  ??
  807.          21  L cylinders parking zone
  808.          22  H cylinders parking zone
  809.          23  sectors
  810.  
  811.         AMI (386sx BIOS 1989) second user definable drive (type 48)
  812.          24  L cylinders
  813.          25  H cylinders
  814.          26  heads
  815.          27  L Write Precompensation Cylinder
  816.          28  H Write Precompensation Cylinder
  817.          29  ??
  818.          2A  L cylinders parking zone
  819.          2B  H cylinders parking zone
  820.          2C  sectors
  821.  
  822.         Phoenix (386BIOS v1.10.03 1988) 1st user definable drv (type48)
  823.          20  L cylinders
  824.          21  H cylinders
  825.          22  heads
  826.          23  L Write Precompensation Cylinder
  827.          24  H Write Precompensation Cylinder
  828.          25  L cylinders parking zone
  829.          26  H cylinders parking zone
  830.          27  sectors
  831.  
  832.         Phoenix (386BIOS v1.10.03 1988) 2nd user definable drv (type49)
  833.         (when PS/2-style password option is not used)
  834.          35  L cylinders
  835.          36  H cylinders
  836.          37  heads
  837.          38  L Write Precompensation Cylinder
  838.          39  H Write Precompensation Cylinder
  839.          3A  L cylinders parking zone
  840.          3B  H cylinders parking zone
  841.          3C  sectors
  842.  
  843. - - - - - - - - ---------------------------------------------------------------
  844. 0073      ----    Intel Pentium motherboard ("Neptune" chipset)
  845.  
  846. 0073    r/w    bit 7: ???
  847.  
  848. - - - - - - - - ---------------------------------------------------------------
  849. 0074-0076    secondary CMOS (Compaq)
  850.  
  851. 0074    w    secondary CMOS RAM index (Compaq)
  852.  
  853. 0076    r/w    secondary CMOS RAM (Compaq)
  854.  
  855. - - - - - - - - ---------------------------------------------------------------
  856. 0078        HP-Vectra  Hard Reset: NMI enable/disable
  857.          bit 7 = 0  disable & clear hard reset from HP-HIL controller
  858.                = 1  enable hard reset from HP-HIL controller chip
  859.          bit 6-0    reserved
  860.  
  861. -------------------------------------------------------------------------------
  862. 0078-007F ----    PC radio by CoZet Info Systems
  863.         The I/O address range is dipswitch selectable from:
  864.            038-03F and 0B0-0BF
  865.            078-07F and 0F0-0FF
  866.            138-13F and 1B0-1BF
  867.            178-17F and 1F0-1FF
  868.            238-23F and 2B0-2BF
  869.            278-27F and 2F0-2FF
  870.            338-33F and 3B0-3BF
  871.            378-37F and 3F0-3FF
  872.         All of these addresses show a readout of FF in initial state.
  873.         Once started, all of the addresses show     FB, whatever might
  874.         happen.
  875.  
  876. -------------------------------------------------------------------------------
  877. 007C-007D ----    HP-Vectra  PIC 3   (Programmable Interrupt Controller 8259)
  878.         cascaded to first controller.
  879.         used for keyboard and input device interface.
  880. 007C    r/w    HP-Vectra  PIC 3  see at 0020  PIC 1
  881. 007D    r/w    HP-Vectra  PIC 3  see at 0021  PIC 1
  882.  
  883. -------------------------------------------------------------------------------
  884. 0080    w    Manufacturing Diagnostics port
  885.  
  886. -------------------------------------------------------------------------------
  887. 0080-008F ----    DMA page registers   (74612)
  888.  
  889. 0080    r/w    extra page register (temporary storage)
  890. 0081    r/w    DMA channel 2 address byte 2
  891. 0082    r/w    DMA channel 3 address byte 2
  892. 0083    r/w    DMA channel 1 address byte 2
  893. 0084    r/w    extra page register
  894. 0085    r/w    extra page register
  895. 0086    r/w    extra page register
  896. 0087    r/w    DMA channel 0 address byte 2
  897. 0088    r/w    extra page register
  898. 0089    r/w    DMA channel 6 address byte 2
  899. 0089    r/w    DMA channel 7 address byte 2
  900. 0089    r/w    DMA channel 5 address byte 2
  901. 008C    r/w    extra page register
  902. 008D    r/w    extra page register
  903. 008E    r/w    extra page register
  904. 008F    r/w    DMA refresh page register
  905.  
  906. -------------------------------------------------------------------------------
  907. 0084      ----    Compaq POST Diagnostic
  908.  
  909. -------------------------------------------------------------------------------
  910. 0084      ----    EISA Synchronize Bus Cycle
  911.  
  912. -------------------------------------------------------------------------------
  913. 0090-009F ----    PS/2 POS (Programmable Option Select)
  914.  
  915. 0090        Central arbitration control port
  916. 0091    r    Card selection feedback
  917.  
  918. 0092    r/w    PS/2 system control port A  (port B is at 0061)
  919.          bit 7-6   any bit set to 1 turns activity light on
  920.          bit 5       reserved
  921.          bit 4 = 1 watchdog timout occurred 
  922.          bit 3 = 0 RTC/CMOS security lock (on password area) unlocked
  923.                = 1 CMOS locked (done by POST)
  924.          bit 2       reserved
  925.          bit 1 = 1 indicates A20 active
  926.          bit 0 = 0 system reset or write
  927.              1 pulse alternate reset pin (alternate CPU reset)
  928.  
  929. 0094    w    system board enable/setup register
  930.          bit 7 = 1  enable functions
  931.                = 0  setup functions
  932.          bit 5 = 1  enables VGA
  933.                = 0  setup VGA
  934.  
  935. 0095        reserved
  936.  
  937. 0096    w    adapter enable /setup register
  938.          bit 3 = 1  setup adapters
  939.                = 0  enable registers
  940.  
  941. 0097        reserved
  942.  
  943. -------------------------------------------------------------------------------
  944. 00A0-00AF ----    PIC 2    (Programmable Interrupt Controller 8259)
  945.  
  946. 00A0    r/w    NMI mask register (XT)
  947.  
  948. 00A0    r/w    PIC 2  same as 0020 for PIC 1
  949. 00A1    r/w    PIC 2  same as 0021 for PIC 1 except for OCW1:
  950.          bit 7 = 0  reserved
  951.          bit 6 = 0  enable fixed disk interrupt
  952.          bit 5 = 0  enable coprocessor exception interrupt
  953.          bit 4 = 0  enable mouse interrupt
  954.          bit 3 = 0  reserved
  955.          bit 2 = 0  reserved
  956.          bit 1 = 0  enable redirect cascade
  957.          bit 0 = 0  enable real-time clock interrupt
  958.  
  959. -------------------------------------------------------------------------------
  960. 00B0-00BF ----    PC radio by CoZet Info Systems
  961.         The I/O address range is dipswitch selectable from:
  962.            038-03F and 0B0-0BF
  963.            078-07F and 0F0-0FF
  964.            138-13F and 1B0-1BF
  965.            178-17F and 1F0-1FF
  966.            238-23F and 2B0-2BF
  967.            278-27F and 2F0-2FF
  968.            338-33F and 3B0-3BF
  969.            378-37F and 3F0-3FF
  970.         All of these addresses show a readout of FF in initial state.
  971.         Once started, all of the addresses show     FB, whatever might
  972.         happen.
  973.  
  974. -------------------------------------------------------------------------------
  975. 00C0      ----    TI  SN746496 programmable tone/noise generator    PCjr
  976.  
  977. -------------------------------------------------------------------------------
  978. 00C0-00DF ----    DMA 2    (second Direct Memory Access controller 8237)
  979.  
  980. 00C0    r/w    DMA channel 4 memory address bytes 1 and 0 (low) (ISA, EISA)
  981. 00C2    r/w    DMA channel 4 transfer count bytes 1 and 0 (low) (ISA, EISA)
  982. 00C4    r/w    DMA channel 5 memory address bytes 1 and 0 (low) (ISA, EISA)
  983. 00C6    r/w    DMA channel 5 transfer count bytes 1 and 0 (low) (ISA, EISA)
  984. 00C8    r/w    DMA channel 6 memory address bytes 1 and 0 (low) (ISA, EISA)
  985. 00CA    r/w    DMA channel 6 transfer count bytes 1 and 0 (low) (ISA, EISA)
  986. 00CC    r/w    DMA channel 7 memory address byte 0 (low), then 1 (ISA, EISA)
  987. 00CE    r/w    DMA channel 7 transfer count byte 0 (low), then 1 (ISA, EISA)
  988.  
  989. 00D0    r    DMA channel 4-7 status register (ISA, EISA)
  990.          bit 7 = 1  channel 7 request
  991.          bit 6 = 1  channel 6 request
  992.          bit 5 = 1  channel 5 request
  993.          bit 4 = 1  channel 4 request
  994.          bit 3 = 1  terminal count on channel 7
  995.          bit 2 = 1  terminal count on channel 6
  996.          bit 1 = 1  terminal count on channel 5
  997.          bit 0 = 1  terminal count on channel 4
  998.  
  999. 00D0    w    DMA channel 4-7 command register (ISA, EISA)
  1000.          bit 7 = 1  DACK sense active high
  1001.                = 0  DACK sense active low
  1002.          bit 6 = 1  DREQ sense active high
  1003.                = 0  DREQ sense active low
  1004.          bit 5 = 1  extended write selection
  1005.                = 0  late write selection
  1006.          bit 4 = 1  rotating priority
  1007.                = 0  fixed priority
  1008.          bit 3 = 1  compressed timing
  1009.                = 0  normal timing
  1010.          bit 2 = 0  enable controller
  1011.          bit 1 = 1  enable memory-to-memory transfer
  1012.          bit 0        .....
  1013.  
  1014. 00D2    w    DMA channel 4-7 write request register (ISA, EISA)
  1015.  
  1016. 00D4    w    DMA channel 4-7 write single mask register (ISA, EISA)
  1017.          bit 7-3      reserved
  1018.          bit 2     = 0  clear mask bit
  1019.              = 1  set mask bit
  1020.          bit 1-0 = 00 channel 4 select
  1021.              = 01 channel 5 select
  1022.              = 10 channel 6 select
  1023.              = 11 channel 7 select
  1024.  
  1025. 00D6    w    DMA channel 4-7 mode register (ISA, EISA)
  1026.          bit 7-6 = 00  demand mode
  1027.              = 01  single mode
  1028.              = 10  block mode
  1029.              = 11  cascade mode
  1030.          bit 5     = 0   address increment select
  1031.              = 1   address decrement select
  1032.          bit 4     = 0   autoinitialisation disable
  1033.              = 1   autoinitialisation enable
  1034.          bit 3-2 = 00  verify operation
  1035.              = 01  write to memory
  1036.              = 10  read from memory
  1037.              = 11  reserved
  1038.          bit 1-0 = 00  channel 4 select
  1039.              = 01  channel 5 select
  1040.              = 10  channel 6 select
  1041.              = 11  channel 7 select
  1042.  
  1043. 00D8    w    DMA channel 4-7 clear byte pointer flip-flop (ISA, EISA)
  1044. 00DA    r    DMA channel 4-7 read temporary register (ISA, EISA)
  1045. 00DA    w    DMA channel 4-7 master clear (ISA, EISA)
  1046. 00DC    w    DMA channel 4-7 clear mask register (ISA, EISA)
  1047. 00DE    w    DMA channel 4-7 write mask register (ISA, EISA)
  1048.  
  1049. -------------------------------------------------------------------------------
  1050. 00E0-00E7 ----    Microchannel
  1051.  
  1052. 00E0    r/w    split address register, memory encoding registers PS/2m80 only
  1053. 00E1    r/w    memory register
  1054. 00E3    r/w    error trace
  1055. 00E4    r/w    error trace
  1056. 00E5    r/w    error trace
  1057. 00E7    r/w    error trace
  1058.  
  1059. -------------------------------------------------------------------------------
  1060. 00F0-00F5 ----    PCjr Disk Controller
  1061.  
  1062. 00F0        disk controller
  1063. 00F2        disk controller control port
  1064. 00F4        disk controller status register
  1065. 00F5        disk controller data port
  1066.  
  1067. -------------------------------------------------------------------------------
  1068. 00F0-00FF ----    coprocessor (8087..80387)
  1069.  
  1070. 00F0    w    math coprocessor clear busy latch
  1071. 00F1    w    math coprocessor reset
  1072. 00F8    r/w    opcode transfer
  1073. 00FA    r/w    opcode transfer
  1074. 00FC    r/w    opcode transfer
  1075.  
  1076. -------------------------------------------------------------------------------
  1077. 00F9-00FF ----    PC radio by CoZet Info Systems
  1078.         The I/O address range is dipswitch selectable from:
  1079.            038-03F and 0B0-0BF
  1080.            078-07F and 0F0-0FF
  1081.            138-13F and 1B0-1BF
  1082.            178-17F and 1F0-1FF
  1083.            238-23F and 2B0-2BF
  1084.            278-27F and 2F0-2FF
  1085.            338-33F and 3B0-3BF
  1086.            378-37F and 3F0-3FF
  1087.         All of these addresses show a readout of FF in initial state.
  1088.         Once started, all of the addresses show     FB, whatever might
  1089.         happen.
  1090.  
  1091. -------------------------------------------------------------------------------
  1092. 0100-010F ----    CompaQ Tape drive adapter. alternate address at 0300
  1093.  
  1094. -------------------------------------------------------------------------------
  1095. 0100-0107 ----    PS/2 POS (Programmable Option Select)
  1096.  
  1097. 0100    r    POS register 0    Low adapter ID byte
  1098. 0101    r    POS register 1    High adapter ID byte
  1099.  
  1100. 0102    r/w    POS register 2    option select data byte 1
  1101.          bit 0 is card enable (CDEN)
  1102.  
  1103. 0103    r/w    POS register 3    option select data byte 2
  1104. 0104    r/w    POS register 4    option select data byte 3
  1105. 0105    r/w    POS register 5    option select data byte 4
  1106.          bit 7    channel active (-CHCK)
  1107.          bit 6    channel status
  1108.  
  1109. 0106    r/w    POS register 6    Low subaddress extension
  1110. 0107    r/w    POS register 7    High subaddress extension
  1111.  
  1112. -------------------------------------------------------------------------------
  1113. 0108-010F ----    8 digit LED info panel on IBM PS/2
  1114.  
  1115. 010F    w    leftmost character on display
  1116. 010E    w    second character
  1117. ....    w
  1118. 0108    w    eighth character
  1119.  
  1120. -------------------------------------------------------------------------------
  1121. 0130-013F ----    CompaQ SCSI adapter. alternate address at 0330
  1122.  
  1123. -------------------------------------------------------------------------------
  1124. 0130-0133 ----    Adaptec 154xB/154xC SCSI adapter.
  1125.         alternate address at 0134, 0230, 0234, 0330 and 0334
  1126.  
  1127. -------------------------------------------------------------------------------
  1128. 0134-0137 ----    Adaptec 154xB/154xC SCSI adapter.
  1129.         alternate address at 0130, 0230, 0234, 0330 and 0334
  1130.  
  1131. -------------------------------------------------------------------------------
  1132. 0138-013F ----    PC radio by CoZet Info Systems
  1133.         The I/O address range is dipswitch selectable from:
  1134.            038-03F and 0B0-0BF
  1135.            078-07F and 0F0-0FF
  1136.            138-13F and 1B0-1BF
  1137.            178-17F and 1F0-1FF
  1138.            238-23F and 2B0-2BF
  1139.            278-27F and 2F0-2FF
  1140.            338-33F and 3B0-3BF
  1141.            378-37F and 3F0-3FF
  1142.         All of these addresses show a readout of FF in initial state.
  1143.         Once started, all of the addresses show     FB, whatever might
  1144.         happen.
  1145.  
  1146. -------------------------------------------------------------------------------
  1147. 0140-014F ----    SCSI (alternate Small Computer System Interface) adapter
  1148.         (1st at 0340-034F)
  1149.  
  1150. -------------------------------------------------------------------------------
  1151. 0140-0157 ----    RTC (alternate Real Time Clock for XT)     (1st at 0340-0357)
  1152.  
  1153. -------------------------------------------------------------------------------
  1154. 015F      ----    ARTEC Handyscanner A400Z.  alternate address at 35F.
  1155.  
  1156. -------------------------------------------------------------------------------
  1157. 0170-0177 ----    HDC 2    (2nd Fixed Disk Controller)   same as 01Fx (ISA, EISA)
  1158.  
  1159. -------------------------------------------------------------------------------
  1160. 0178-0179 ----    Power Management
  1161.  
  1162. 0178    w    index selection for data port
  1163. 0179    r/w    power management data
  1164.  
  1165. -------------------------------------------------------------------------------
  1166. 0178-017F ----    PC radio by CoZet Info Systems
  1167.         The I/O address range is dipswitch selectable from:
  1168.            038-03F and 0B0-0BF
  1169.            078-07F and 0F0-0FF
  1170.            138-13F and 1B0-1BF
  1171.            178-17F and 1F0-1FF
  1172.            238-23F and 2B0-2BF
  1173.            278-27F and 2F0-2FF
  1174.            338-33F and 3B0-3BF
  1175.            378-37F and 3F0-3FF
  1176.         All of these addresses show a readout of FF in initial state.
  1177.         Once started, all of the addresses show     FB, whatever might
  1178.         happen.
  1179.  
  1180. -------------------------------------------------------------------------------
  1181. 01E8-01EF ----    System Control. Laptop chipset: Headland HL21 & Acer M5105
  1182.  
  1183. 01ED    r/w    select internal register. Data to/from 01EF
  1184. 01EE    r
  1185. 01EF    r/w    reg.
  1186.         5  = 1000xxxx  for low CPU clock speed (4MHz on Morse/Mitac)
  1187.            = 0xxxxxxx  for high CPU clock speed (16MHz on Morse/Mitac)
  1188.  
  1189. -------------------------------------------------------------------------------
  1190. 01F0-01F7 ----    HDC 1    (1st Fixed Disk Controller)   same as 017x (ISA, EISA)
  1191.  
  1192. 01F0    r/w    data register
  1193.  
  1194. 01F1    r    error register
  1195.         diagnostic mode errors:
  1196.          bit 7-3    reserved
  1197.          bit 2-1 = 001    no error detected
  1198.              = 010    formatter device error
  1199.              = 011    sector buffer error
  1200.              = 100    ECC circuitry error
  1201.              = 101    controlling microprocessor error
  1202.          operation mode:
  1203.           bit 7     = 1  bad block detected
  1204.              = 0  block OK
  1205.           bit 6     = 1  uncorrectable ECC error
  1206.              = 0  no error
  1207.           bit 5          reserved
  1208.           bit 4     = 1  ID found
  1209.              = 0  ID not found
  1210.           bit 3          reserved
  1211.           bit 2     = 1  command completed
  1212.              = 0  command aborted
  1213.           bit 1     = 1  track 000 not found
  1214.              = 0  track 000 found
  1215.           bit 0     = 1  DAM not found
  1216.              = 0  DAM found (CP-3022 always 0)
  1217.  
  1218. 01F1    w    WPC/4  (Write Precompensation Cylinder divided by 4)
  1219.  
  1220. 01F2    r/w    sector count
  1221. 01F3    r/w    sector number
  1222. 01F4    r/w    cylinder low
  1223. 01F5    r/w    cylinder high
  1224.  
  1225. 01F6    r/w    drive/head
  1226.          bit 7     = 1
  1227.          bit 6     = 0
  1228.          bit 5     = 1
  1229.          bit 4     = 0  drive 0 select
  1230.              = 1  drive 1 select
  1231.          bit 3-0      head select bits
  1232.  
  1233. 01F7    r    status register
  1234.          bit 7 = 1  controller is executing a command
  1235.          bit 6 = 1  drive is ready
  1236.          bit 5 = 1  write fault
  1237.          bit 4 = 1  seek complete
  1238.          bit 3 = 1  sector buffer requires servicing
  1239.          bit 2 = 1  disk data read successfully corrected
  1240.          bit 1 = 1  index - set to 1 each disk revolution
  1241.          bit 0 = 1  previous command ended in an error
  1242.  
  1243. 01F7    w    command register
  1244.         commands:
  1245.          98 E5     check power mode    (IDE)
  1246.          90     execute drive diagnostics
  1247.          50     format track
  1248.          EC     identify drive        (IDE)
  1249.          97 E3     idle            (IDE)
  1250.          95 E1     idle immediate        (IDE)
  1251.          91     initialize drive parameters
  1252.          1x     recalibrate
  1253.          E4     read buffer        (IDE)
  1254.          C8     read DMA with retry    (IDE)
  1255.          C9     read DMA without retry (IDE)
  1256.          C4     read multiplec        (IDE)
  1257.          20     read sectors with retry
  1258.          21     read sectors without retry
  1259.          22     read long with retry
  1260.          23     read long without retry
  1261.          40     read verify sectors with retry
  1262.          41     read verify sectors without retry
  1263.          7x     seek
  1264.          EF     set features        (IDE)
  1265.          C6     set multiple mode    (IDE)
  1266.          99 E6     set sleep mode        (IDE)
  1267.          96 E2     standby        (IDE)
  1268.          94 E0     standby immediate    (IDE)
  1269.          E8     write buffer        (IDE)
  1270.          CA     write DMA with retry    (IDE)
  1271.          CB     write DMA with retry    (IDE)
  1272.          C5     write multiple        (IDE)
  1273.          E9     write same        (IDE)
  1274.          30     write sectors with retry
  1275.          31     write sectors without retry
  1276.          32     write long with retry
  1277.          33     write long without retry
  1278.          3C     write verify        (IDE)
  1279.          9A     vendor unique        (IDE)
  1280.          C0-C3     vendor unique        (IDE)
  1281.          8x     vendor unique        (IDE)
  1282.          F0-F4     EATA standard        (IDE)
  1283.          F5-FF     vendor unique        (IDE)
  1284.  
  1285. -------------------------------------------------------------------------------
  1286. 01F8      ----    ???
  1287.  
  1288. 01F8    r/w    ???
  1289.         bit 0: A20 gate control (set = A20 enabled, clear = disabled)
  1290.  
  1291. -------------------------------------------------------------------------------
  1292. 01F9-01FF ----    PC radio by CoZet Info Systems
  1293.         The I/O address range is dipswitch selectable from:
  1294.            038-03F and 0B0-0BF
  1295.            078-07F and 0F0-0FF
  1296.            138-13F and 1B0-1BF
  1297.            178-17F and 1F0-1FF
  1298.            238-23F and 2B0-2BF
  1299.            278-27F and 2F0-2FF
  1300.            338-33F and 3B0-3BF
  1301.            378-37F and 3F0-3FF
  1302.         All of these addresses show a readout of FF in initial state.
  1303.         Once started, all of the addresses show     FB, whatever might
  1304.         happen.
  1305.  
  1306. -------------------------------------------------------------------------------
  1307. 0200-020F ----    Game port reserved I/O address space  
  1308. 0200-0207 ----    Game port, eight identical addresses on some boards
  1309.  
  1310. 0201    r    read joystick position and status
  1311.          bit 7    status B joystick button 2 / D paddle button
  1312.          bit 6    status B joystick button 1 / C paddle button
  1313.          bit 5    status A joystick button 2 / B paddle button
  1314.          bit 4    status A joystick button 1 / A paddle button
  1315.          bit 3    B joystick Y coordinate       / D paddle coordinate
  1316.          bit 2    B joystick X coordinate       / C paddle coordinate
  1317.          bit 1    A joystick Y coordinate       / B paddle coordinate
  1318.          bit 0    A joystick X coordinate       / A paddle coordinate
  1319.  
  1320.     w    fire joysticks four one-shots
  1321.  
  1322. -------------------------------------------------------------------------------
  1323. 0200-02FF ----    Sunshine uPW48, programmer for EPROM version CPU's 8748/8749
  1324.         (4 bit DIP switch installable in the range 20x-2Fx)
  1325. 0200-0203    adresses of the 8255 on the uPW48
  1326. 0208-020B    adresses of ??? on the uPW48 (all showing zeros)
  1327.  
  1328.  
  1329. -------------------------------------------------------------------------------
  1330. 0210-0217 ----    Expansion unit (XT)
  1331.  
  1332. 0210    w    latch expansion bus data
  1333.     r    verify expansion bus data
  1334. 0211    w    clear wait, test latch
  1335.     r    High byte data address
  1336. 0212    r    Low byte data address
  1337. 0213    w    0=enable,  1=disable expansion unit
  1338. 0214    w    latch data  (receiver card port)
  1339.     r    read data   (receiver card port)
  1340. 0215    r    High byte of address, then Low byte   (receiver card port)
  1341.  
  1342. ------------------------------------------------------------------------------
  1343. 0220-0223 ---- Sound Blaster / Adlib port
  1344.  
  1345. 0220    r/w    Left speaker -- Status / Address port
  1346. 0221    w    Left speaker -- Data port
  1347. 0222    r/w    Right speaker -- Status / Address port
  1348.         Address:
  1349.             01 -- Enable waveform control
  1350.             02 -- Timer #1 data
  1351.             03 -- Timer #2 data
  1352.             04 -- Timer control flags
  1353.             08 -- Speech synthesis mode
  1354.          20-35 -- Amplitude Modulation / Vibrato
  1355.          40-55 -- Level key scaling / Total level
  1356.          60-75 -- Attack / Decay rate
  1357.          80-95 -- Sustain / Release rate
  1358.          A0-B8 -- Octave / Frequency Number
  1359.          C0-C8 -- Feedback / Algorithm
  1360.          E0-F5 -- Waveform Selection
  1361. 0223    w    Right speaker -- Data port
  1362.  
  1363. SeeAlso: 0388-0389
  1364.  
  1365. -------------------------------------------------------------------------------
  1366. 0220-0227 ----    Soundblaster PRO and SSB 16 ASP
  1367.  
  1368. -------------------------------------------------------------------------------
  1369. 0220-022F ----    Soundblaster PRO 2.0
  1370.  
  1371. -------------------------------------------------------------------------------
  1372. 0220-022F ----    Soundblaster PRO 4.0
  1373. 0220    r    left FM status port
  1374. 0220    w    left FM music register address port (index)
  1375. 0221    r/w    left FM music data port
  1376. 0222    r    right FM status port
  1377. 0222    w    right FM music register address port (index)
  1378. 0223    r/w    right FM music data port
  1379. 0224    w    mixer register address port (index)
  1380. 0225    r/w    mixer data port
  1381. 0226    w    DSP reset
  1382. 0228    r    FM music status port
  1383. 0228    w    FM music register address port (index)
  1384. 0229    w    FM music data port
  1385. 022A    r    DSP read data (voice I/O and Midi)
  1386. 022C    w    DSP write data / write command
  1387. 022C    r    DSP write buffer status (bit 7)
  1388. 022E    r    DSP data available status (bit 7)
  1389.  
  1390.         The FM music is accessible on 0388/0389 for compatibility.
  1391.  
  1392. -------------------------------------------------------------------------------
  1393. 0230-0233 ----    Adaptec 154xB/154xC SCSI adapter.
  1394.         alternate address at 0130, 0134, 0230, 0330 and 0334
  1395.  
  1396. -------------------------------------------------------------------------------
  1397. 0234-0237 ----    Adaptec 154xB/154xC SCSI adapter.
  1398.         alternate address at 0130, 0134, 0230, 0330 and 0334
  1399.  
  1400. -------------------------------------------------------------------------------
  1401. 0240-024F ----    Gravis Ultra Sound by Advanced Gravis
  1402.      The I/O address range is dipswitch selectable from:
  1403.        0200-020F and 0300-030F
  1404.        0210-021F and 0310-031F
  1405.        0220-022F and 0320-032F
  1406.        0230-023F and 0330-033F
  1407.        0240-024F and 0340-034F
  1408.        0250-025F and 0350-035F
  1409.        0260-026F and 0360-036F
  1410.        0270-027F and 0370-037F
  1411.  
  1412. 0240    w    Mix Control register
  1413.          bit 6       Control Register Select (see 024B)
  1414.          bit 5       Enable MIDI Loopback
  1415.          bit 4       Combine GF1 IRQ with MIDI IRQ
  1416.          bit 3       Enable Latches
  1417.          bit 2       Enable MIC IN
  1418.          bit 1       Disable LINE OUT
  1419.          bit 0       Disable LINE IN
  1420. 0241    r    Read Data
  1421.     w    Trigger Timer
  1422. 0246    r    IRQ Status Register
  1423.          bit 7       DMA TC IRQ
  1424.          bit 6       Volume Ramp IRQ
  1425.          bit 5       WaveTable IRQ
  1426.          bit 3       Timer 2 IRQ
  1427.          bit 2       Timer 1 IRQ
  1428.          bit 1       MIDI Receive IRQ
  1429.          bit 0       MIDI Transmit IRQ
  1430. 0248    r/w    Timer Control Reg
  1431.          Same a ADLIB Board (look at 0200)
  1432. 0249    w    Timer Data
  1433.          bit 7       Reset Timr IRQ
  1434.          bit 6       Mask Timer 1
  1435.          bit 5       Mask Timer 2
  1436.          bit 1       Timer 2 Start
  1437.          bit 0       Timer 1 Start
  1438. 024B    w    IRQ Control Register (0240 bit 6 = 1)
  1439.          bit 6       Combine Both IRQ
  1440.          bit 5-3   MIDI IRQ Selector
  1441.                = 000  No IRQ
  1442.                = 001  IRQ 2
  1443.                = 010  IRQ 5
  1444.                = 011  IRQ 3
  1445.                = 100  IRQ 7
  1446.                = 101  IRQ 11
  1447.                = 110  IRQ 12
  1448.                = 111  IRQ 15
  1449.          bit 2-0   GF1 IRQ Selector
  1450.                = 000  No IRQ
  1451.                = 001  IRQ 2
  1452.                = 010  IRQ 5
  1453.                = 011  IRQ 3
  1454.                = 100  IRQ 7
  1455.                = 101  IRQ 11
  1456.                = 110  IRQ 12
  1457.                = 111  IRQ 15
  1458.         DMA Control Register (0240 bit 6 = 0)
  1459.          bit 6       Combine Both IRQ
  1460.          bit 5-3   DMA Select Register 2
  1461.                = 000  No DMA
  1462.                = 001  DMA 1
  1463.                = 010  DMA 3
  1464.                = 011  DMA 5
  1465.                = 100  DMA 6
  1466.                = 101  DMA 7 
  1467.          bit 2-0   DMA Select Register 1
  1468.                = 000  No DMA
  1469.                = 001  DMA 1
  1470.                = 010  DMA 3
  1471.                = 011  DMA 5
  1472.                = 100  DMA 6
  1473.                = 101  DMA 7 
  1474. 024F    r/w    Register Controls (rev 3.4+)
  1475.  
  1476. SeeAlso: 0340-034F, 0746
  1477.    
  1478. -------------------------------------------------------------------------------
  1479. 0240-0257 ----    RTC (alternate Real Time Clock for XT)     (1st at 0340-0357)
  1480.         (used by TIMER.COM v1.2 which is the 'standard' timer program)
  1481.  
  1482. -------------------------------------------------------------------------------
  1483. 0258-025F ----    Intel Above Board
  1484.  
  1485. -------------------------------------------------------------------------------
  1486. 0278-027E ----    parallel printer port, same as 0378 and 03BC
  1487.  
  1488. 0278    w    data port
  1489. 0279    r/w    status port
  1490. 027A    r/w    control port
  1491.  
  1492. -------------------------------------------------------------------------------
  1493. 02A0-02A7 ----    Sunshine EW-901BN, EW-904BN
  1494.         EPROM writer card (release 1986) for EPROMs up to 27512
  1495. 02A0-02A3    adresses of the 8255 on the EW-90xBN
  1496.  
  1497.  
  1498. -------------------------------------------------------------------------------
  1499. 02A2-02A3 ----    MSM58321RS clock
  1500.  
  1501. -------------------------------------------------------------------------------
  1502. 02B0-02BF ----    Trantor SCSI adapter
  1503.  
  1504. -------------------------------------------------------------------------------
  1505. 02B0-02DF ----    alternate EGA,    primary EGA at 03C0
  1506.  
  1507. -------------------------------------------------------------------------------
  1508. 02C0-02Cx ----    AST-clock
  1509.  
  1510. -------------------------------------------------------------------------------
  1511. 02E0-02EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  1512.         (GAB 0 on XT)
  1513. 02E1        GPIB (adapter 0)
  1514. 02E2
  1515. 02E3
  1516.  
  1517. -------------------------------------------------------------------------------
  1518. 02E0-02EF ----    data aquisition     (AT)
  1519.  
  1520. 02E2        data aquisition (adapter 0)
  1521. 02E3        data aquisition (adapter 0)
  1522.  
  1523. -------------------------------------------------------------------------------
  1524. 02E8      ----    S3 86C928 video controller (ELSA Winner 1000)
  1525.  
  1526. -------------------------------------------------------------------------------
  1527. 02E8-02EF ----    serial port, same as 02F8, 03E8 and 03F8
  1528.  
  1529. -------------------------------------------------------------------------------
  1530. 02E8-02EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  1531.  
  1532. 02E8    r    display status
  1533. 02E8    w    horizontal total
  1534. 02EA    w    DAC mask
  1535. 02EB    w    DAC read index
  1536. 02EC    w    DAC write index
  1537. 02ED    w    DAC data
  1538.  
  1539. -------------------------------------------------------------------------------
  1540. 02EA      ----    S3 86C928 video controller (ELSA Winner 1000)
  1541.  
  1542. -------------------------------------------------------------------------------
  1543. 02F8-02FF ----    serial port, same as 02E8, 03E8 and 03F8
  1544.  
  1545. 02F8    w    transmitter holding register
  1546. 02F8    r    receiver buffer register
  1547.     r/w    divisor latch, low byte      when DLAB=1
  1548. 02F9    r/w    divisor latch, high byte  when DLAB=1
  1549.     r/w    interrupt enable register when DLAB=0
  1550. 02FA    r    interrupt identification register
  1551. 02FB    r/w    line control register
  1552. 02FC    r/w    modem control register
  1553. 02FD    r    line status register
  1554. 02FF    r/w    scratch register
  1555.  
  1556. -------------------------------------------------------------------------------
  1557. 0300      ---- Award POST Diagnostic
  1558.  
  1559. -------------------------------------------------------------------------------
  1560. 0300-0301 ---- Soundblaster 16 ASP MPU-Midi
  1561.  
  1562. -------------------------------------------------------------------------------
  1563. 0300-0303 ----    Panasonic 52x CD-ROM SCSI Miniport
  1564.         Alternate addresses at 0320, 0340, 0360, and 0380
  1565.  
  1566. -------------------------------------------------------------------------------
  1567. 0300-030F ----    Philips CD-ROM player CM50
  1568.  
  1569. -------------------------------------------------------------------------------
  1570. 0300-030F ----    CompaQ Tape drive adapter. alternate address at 0100
  1571.  
  1572. -------------------------------------------------------------------------------
  1573. 0300-031F ----    prototype cards
  1574.         Periscope hardware debugger
  1575.  
  1576. -------------------------------------------------------------------------------
  1577. 0310-031F ----    Philips CD-ROM player CM50
  1578.  
  1579. -------------------------------------------------------------------------------
  1580. 0320-0323 ----    XT HDC 1   (Hard Disk Controller)
  1581.  
  1582. 0320    r/w    data register
  1583.  
  1584. 0321    w    reset controller
  1585.     r    read controller hardware status
  1586.          bit 7-6 = 0
  1587.          bit 5          logical unit number
  1588.          bit 4-2 = 0
  1589.          bit 1     = 0  no error
  1590.          bit 0     = 0 
  1591.  
  1592. 0322    r    read DIPswitch setting on XT controller card
  1593.     w    generate controller-select pulse
  1594. 0323    w    write pattern to DMA and INT mask register
  1595.  
  1596. 0324-0327 ----    XT HDC 2   (Hard Disk Controller)
  1597. 0328-032B ----    XT HDC 3   (Hard Disk Controller)
  1598. 032C-032F ----    XT HDC 4   (Hard Disk Controller)
  1599.  
  1600. -------------------------------------------------------------------------------
  1601. 0330-0331 ----    MIDI interface
  1602.  
  1603. -------------------------------------------------------------------------------
  1604. 0330-0333 ----    Adaptec 154xB/154xC SCSI adapter. default address.
  1605.         alternate address at 0130, 0134, 0230, 0234 and 0334
  1606.  
  1607. -------------------------------------------------------------------------------
  1608. 0330-033F ----    CompaQ SCSI adapter. alternate address at 0130
  1609.  
  1610. -------------------------------------------------------------------------------
  1611. 0330-033F ----    Philips CD-ROM player CM50
  1612.  
  1613. -------------------------------------------------------------------------------
  1614. 0334-0337 ----    Adaptec 154xB/154xC SCSI adapter.
  1615.         alternate address at 0130, 0134, 0230, 0234 and 0330
  1616.  
  1617. -------------------------------------------------------------------------------
  1618. 0338      ----    AdLib soundblaster card
  1619.  
  1620. -------------------------------------------------------------------------------
  1621. 0340-034F ----    Philips CD-ROM player CM50
  1622.  
  1623. -------------------------------------------------------------------------------
  1624. 0340-034F ----    SCSI (1st Small Computer System Interface) adapter
  1625.         (alternate at 0140-014F)
  1626.  
  1627. -------------------------------------------------------------------------------
  1628. 0340-034F ----    Gravis Ultra Sound by Advanced Gravis
  1629.      The I/O address range is dipswitch selectable from:
  1630.        0200-020F and 0300-030F
  1631.        0210-021F and 0310-031F
  1632.        0220-022F and 0320-032F
  1633.        0230-023F and 0330-033F
  1634.        0240-024F and 0340-034F
  1635.        0250-025F and 0350-035F
  1636.        0260-026F and 0360-036F
  1637.        0270-027F and 0370-037F
  1638.    
  1639. 0340    w    MIDI Control
  1640.          bit 7       Receive IRQ (1 = enabled)
  1641.          bit 5-6   Xmit IRQ
  1642.          bit 0-1   Master Reset (1 = enabled)
  1643.     r    MIDI Status
  1644.          bit 7       Interrupt pending
  1645.          bit 5       Overrun Error
  1646.          bit 4       Framing Error
  1647.          bit 1       Transmit Register Empty
  1648.          bit 0       Receive Register Empty
  1649. 0341    w    MIDI Transmit Data
  1650.     r    MIDI Receive Data
  1651. 0342    r/w    GF1 Page Register / Voice Select
  1652. 0343    r/w    GF1/Global Register Select
  1653.    
  1654.          Global Registers, NOT voice specific:
  1655.          41   r/w   DRAM DMA Control
  1656.                  bit 7     Invert MSB
  1657.                  bit 6     Data Size (8/16 bits)
  1658.                  bit 5     DMA Pending
  1659.                  bit 3-4     DMA Rate Divider
  1660.                  bit 2     DMA Channel Width (8/16 bits)
  1661.                  bit 1     DMA Direction (1 = read)
  1662.                  bit 0     DMA Enable
  1663.          42   w        DMA Start Address
  1664.                  bits 15-0     DMA Address Lines 19-4
  1665.          43   w        DRAM I/O Address LOW
  1666.          44   w        DRAM I/O Address HIGH
  1667.                  bits 0-3     Upper 4 Address Lines
  1668.          45   r/w   Timer Control
  1669.                  bit 3     Enable Timer 2
  1670.                  bit 2     Enable Timer 1
  1671.          46   w        Timer 1 Count (granularity of 80 micro sec)
  1672.          47   w        Timer 2 Count (granulatity of 320 micro sec)
  1673.          48   w        Sampling Frequency
  1674.                  rate = 9878400 / (16 * (FREQ + 2))
  1675.          49   r/w   Sampling Control
  1676.                  bit 7     Invert MSB
  1677.                  bit 6     DMA IRQ pending
  1678.                  bit 5     DMA IRQ enable
  1679.                  bit 2     DMA width (8/16 bits)
  1680.                  bit 1     Mode (mone/stereo)
  1681.                  bit 0     Start Sampling
  1682.          4B   w        Joystick Trim DAC
  1683.          4C   r/w   RESET
  1684.                  bit 2     GF1 Master IRQ Enable
  1685.                  bit 1     DAC Enable
  1686.                  bit 0     Master Reset
  1687.    
  1688.          Voice specific registers:
  1689.          00   w        Voice Control
  1690.                  bit 7     IRQ pending
  1691.                  bit 6     Direction
  1692.                  bit 5     Enable WAVE IRQ
  1693.                  bit 4     Enable bi-directional Looping
  1694.                  bit 3     Enable Looping
  1695.                  bit 2     Size data (8/16 bits)
  1696.                  bit 1     Stop Voice
  1697.                  bit 0     Voice Stopped
  1698.          01   w        Frequency Control
  1699.                  bit 15-10     Integer Portion
  1700.                  bit 9-1     Fractional Portion
  1701.          02   w        Start Address HIGH
  1702.                  bit 12-0     Address Lines 19-7
  1703.          03   w        Start Address LOW
  1704.                  bit 15-9     Address Lines 6-0
  1705.                  bit 8-5     Fractional Part of Start Address
  1706.          04   w        End Address HIGH
  1707.                  bit 12-0     Address Lines 19-7
  1708.          05   w        End Address LOW
  1709.                  bit 15-9     Address Lines 6-0
  1710.                  bit 8-5     Fractional Part of End Address
  1711.          06   w        Volume Ramp Rate
  1712.                  bit 5-0     Amount added
  1713.                  bit 7-6     Rate
  1714.          07   w        Volume Ramp Start
  1715.                  bit 7-4     Exponent
  1716.                  bit 3-0     Mantissa
  1717.          08   w        Volume Ramp End
  1718.                  bit 7-4     Exponent
  1719.                  bit 3-0     Mantissa
  1720.          09   w        Current Volume
  1721.                  bit 15-12     Exponent
  1722.                  bit 11-4     Mantissa
  1723.          0A   w        Current Address HIGH
  1724.                  bit 12-0     Address Lines 19-7
  1725.          0B   w        Current Address LOW
  1726.                  bit 15-9     Address Lines 6-0
  1727.                  bit 8-0     Fractional Position
  1728.          0C   w        Pan Position
  1729.                  bit 3-0     Pan Postion
  1730.          0D   w        Volume Control
  1731.                  bit 7     IRQ Pending
  1732.                  bit 6     Direction
  1733.                  bit 5     Enable Volume Ramp IRQ
  1734.                  bit 4     Enable bi-directional Looping
  1735.                  bit 3     Enable Looping
  1736.                  bit 2     Rollover Condition
  1737.                  bit 1     Stop Ramp
  1738.                  bit 0     Ramp Stopped
  1739.          0E   w        Active Voices
  1740.                  bit 5-0     #Voices -1  (allowed 13 - 31)
  1741.          0F   w        IRQ Source Register
  1742.                  bit 7     WaveTable IRQ pending
  1743.                  bit 6     Volume Ramp IRQ pending
  1744.                  bit 4-0     Voice Number
  1745.          80   r        Voice Control (see 00)
  1746.          81   r        Frequency Control (see 01)
  1747.          82   r        Start Address HIGH (see 02)
  1748.          83   r        Start Address LOW (see 03)
  1749.          84   r        End Address HIGH (see 04)
  1750.          85   r        End Address LOW (see 05)
  1751.          86   r        Volume Ramp Rate (see 06)
  1752.          87   r        Volume Ramp Start (see 07)
  1753.          88   r        Volume Ramp End (see 08)
  1754.          89   r        Current Volume (see 09)
  1755.          8A   r        Current Address HIGH (see 0A)
  1756.          8B   r        Current Address LOW (see 0B)
  1757.          8C   r        Pan Position (see 0C)
  1758.          8D   r        Volume Control (see 0D)
  1759.          8E   r        Active Voices (see 0E)
  1760.          8F   r        IRQ Status (see 0F)
  1761.            
  1762. 0344    r/w    GF1/Global Data Low Byte (16 bits)
  1763. 0345    r/w    GF1/Global Data High Byte (8 bits)
  1764. 0346    w    Mixer Data Port
  1765. 0347    r/w    GF1 DRAM
  1766.          Direct Read Write at Loction pointed with regs 43 and 44
  1767.  
  1768. SeeAlso: 0240-024F, 0746
  1769.    
  1770. -------------------------------------------------------------------------------
  1771. 0340-0357 ----    RTC (1st Real Time Clock for XT), (alternate at 0240-0257)
  1772.         (used by TIMER.COM v1.2 which is the 'standard' timer program)
  1773.  
  1774. 0340    r/w    0.01 seconds  0-99
  1775. 0341    r/w    0.1 seconds   0-99
  1776. 0342    r/w    seconds          0-59
  1777. 0343    r/w    minutes          0-59
  1778. 0343    r/w    hours          0-23
  1779. 0345    r/w    day of week   1-7
  1780. 0346    r/w    day of month  1-31
  1781. 0347    r/w    month          1-12
  1782. 0348
  1783. 0349    r/w    year          0-99
  1784. 034A
  1785. 034B
  1786. 034C
  1787. 034D
  1788. 034E
  1789. 034F
  1790. 0350    r    status?
  1791. 0351    
  1792. 0352
  1793. 0353
  1794. 0354    r    status?
  1795. 0355
  1796. 0356
  1797. 0357
  1798.  
  1799. -------------------------------------------------------------------------------
  1800. 0348-0357 ----    DCA 3278
  1801.  
  1802. -------------------------------------------------------------------------------
  1803. 034C-034F ----    Gravis UltraMax by Advanced Gravis
  1804.      The I/O address range is dipswitch selectable from:
  1805.        0200-020F and 0300-030F
  1806.        0210-021F and 0310-031F
  1807.        0220-022F and 0320-032F
  1808.        0230-023F and 0330-033F
  1809.        0240-024F and 0340-034F
  1810.        0250-025F and 0350-035F
  1811.        0260-026F and 0360-036F
  1812.        0270-027F and 0370-037F
  1813.  
  1814. -------------------------------------------------------------------------------
  1815. 035A-035B ----  Adaptec AH1520 jumper settings
  1816.  
  1817. 035A    r    bit 7:      SCSI parity disabled
  1818.         bits 6-5: DMA channel
  1819.             (00 = channel 0, 01 = 5, 10 = 6, 11 = 7)
  1820.         bits 4-3: IRQ number
  1821.             (00 = IRQ9, 01 = IRQ10, 10 = IRQ11, 11 = IRQ12)
  1822.         bits 2-0: SCSI ID
  1823. 035B    r    bit 7: DMA transfer mode (clear for PIO)
  1824.         bit 6: boot enabled
  1825.         bits 5-4: boot type
  1826.             00 ???
  1827.             01 boot from floppy
  1828.             10 print configured options
  1829.             11 boot from hard disk
  1830.         bit 3: enable sync negotiation
  1831.         bit 2: enable target disconnection
  1832.         bits 1-0: unused???
  1833.  
  1834. -------------------------------------------------------------------------------
  1835. 035F      ----    ARTEC Handyscanner A400Z.  alternate address at 15F.
  1836.  
  1837. -------------------------------------------------------------------------------
  1838. 0360-036F ----    PC network (AT)
  1839. 0360-0367 ----    PC network (XT only)
  1840.  
  1841. -------------------------------------------------------------------------------
  1842. 0360-036F ----    National Semiconductor DP8390(1)C/NS3249C network chipset
  1843. Note:    cards based on this IEEE 802.3 networking chipset can use any range
  1844.     of 16 consecutive addresses, and provide a total of four pages of
  1845.     sixteen register
  1846.  
  1847. Page 0    r                    w
  1848.  
  1849. 00    Command    reg.            CR    Command reg.        CR
  1850. 01    current local DMA address 0    CLDA0    page start reg.        PSTART
  1851. 02    current local DMA address 1    CLDA1    page stop reg.        PSTOP
  1852. 03    boundary pointer        BNRY    boundary pointer    BNRY
  1853. 04    transmit status reg.        TSR    Tx page start address    TPSR
  1854. 05    number of collisions reg.    NCR    Tx byte count reg.0    TBCR0 
  1855. 06    FIFO                    Tx byte count reg.1    TBCR1
  1856. 07    interrupt status reg.        ISR    interrupt status reg.    ISR
  1857. 08    current remote DMA address 0    CRDA0    remote start addr.reg.0    RSAR0
  1858. 09    current remote DMA address 1    CRDA1    remote start addr.reg.1    RSAR1
  1859. 0A    reserved                remote byte count reg.0    RBCR0
  1860. 0B    reserved                remote byte count reg.1    RBCR1
  1861. 0C    receive status reg.        RSR    Rx configuration reg.    RCR
  1862. 0D    tally counter 0 (frame errors)    CNTR0    Tx configuration reg.    TCR
  1863. 0E    tally counter 1 (CRC errors)    CNTR1    data configuration reg.    DCR
  1864. 0F    tally counter 2 (missed pkt)    CNTR2    interrupt mask reg.    IMR
  1865.  
  1866. Page 1    r/w
  1867.  
  1868. 00    Command            CR
  1869. 01    physical address reg.0    PAR0
  1870. 02    physical address reg.1    PAR1        
  1871. 03    physical address reg.2    PAR2        
  1872. 04    physical address reg.3    PAR3        
  1873. 05    physical address reg.4    PAR4        
  1874. 06    physical address reg.5    PAR5        
  1875. 07    current page reg.    CURR            
  1876. 08    multicast address reg.0    MAR0        
  1877. 09    multicast address reg.1    MAR1        
  1878. 0A    multicast address reg.2    MAR2        
  1879. 0B    multicast address reg.3    MAR3        
  1880. 0C    multicast address reg.4    MAR4        
  1881. 0D    multicast address reg.5    MAR5        
  1882. 0E    multicast address reg.6    MAR6        
  1883. 0F    multicast address reg.7    MAR7        
  1884.  
  1885. Page 2    r                    w
  1886.     diagnostics page - should never be modfied under normal operation.
  1887.  
  1888. 00    Command                CR    Command             CR
  1889. 01    page start reg.            PSTART    current local DMA addr.0 CLDA0
  1890. 02    page stop reg.            BPSTOP    current local DMA addr.1 CLDA1
  1891. 03    remote next packet pointer        remote next packet pointer
  1892. 04    Tx page start address        TPSR    reserved
  1893. 05    local next packet pointer        local next packet pointer
  1894. 06    address counter (upper)            address counter (upper)
  1895. 07    address counter (lower)            address counter (lower)
  1896. 08    reserved                reserved
  1897. 09    reserved                reserved
  1898. 0A    reserved                reserved
  1899. 0B    reserved                reserved
  1900. 0C    Rx configuration reg.        RCR    reserved
  1901. 0D    Tx configuration reg.        TCR    reserved
  1902. 0E    data configuration reg.        DCR    reserved
  1903. 0F    interrupt mask reg.        IMR    reserved
  1904.  
  1905. Page 3    r                    w
  1906.     Test Page - should never be modified !
  1907.  
  1908. 00    Command CR                Command CR
  1909.  
  1910.     bit0=1    software reset command. 1=offline  0=online
  1911.     bit1=0    activate NIC after reset command
  1912.     bit2=1    start transmision of a packet
  1913.     bit3-5    remote DMA command
  1914.          000 not allowed
  1915.          001 remote read
  1916.          010 remote write
  1917.          011 send packet
  1918.          1xx abort/complete rmote DMA
  1919.     bit 6,7 page select
  1920.          00 register page 0
  1921.          01 register page 1
  1922.          10 register page 2
  1923.          11 register page 3
  1924.  
  1925. -------------------------------------------------------------------------------
  1926. 0370-0377 ----    FDC 2  (2nd Floppy Disk Controller)    first FDC at 03F0
  1927.         (8272, 8272A, NEC765)
  1928.         (82072, 82077AA for perpendicular recording at 2.8Mb)
  1929.  
  1930. 0370    r    diskette Extra High Density controller board jumpers (AT)
  1931. 0370    r    diskette controller status A (PS/2, PS/2 model 30)
  1932. 0371    r    diskette controller status B (PS/2, PS/2 model 30)
  1933. 0372    w    diskette controller DOR (Digital Output Register)
  1934. 0374    r    diskette controller main status register
  1935. 0374    w    diskette controller datarate select register
  1936. 0375    r/w    diskette controller command/data register
  1937. 0376    r/w    (2nd FIXED disk controller data register)
  1938. 0377    r    diskette controller DIR (Digital Input Register)
  1939. 0377    w    select register for diskette data transfer rate
  1940.  
  1941. -------------------------------------------------------------------------------
  1942. 0378-037A ----    parallel printer port, same as 0278 and 03BC
  1943.  
  1944. 0378    w    data port
  1945. 0379    r/w    status port
  1946. 037A    r/w    control port
  1947.  
  1948. -------------------------------------------------------------------------------
  1949. 0380-038F ----    2nd Binary Synchronous Data Link Control adapter (see 03A0)
  1950.  
  1951. 0380    r/w     on board 8255 port A, internal/external sense
  1952. 0381    r/w     on board 8255 port B, external modem interface
  1953. 0382    r/w     on board 8255 port C, internal control and gating
  1954. 0383    r/w     on board 8255 mode register
  1955. 0384    r/w     on board 8253 channel square wave generator
  1956. 0385    r/w     on board 8253 channel 1 inactivity time-out
  1957. 0386    r/w     on board 8253 channel 2 inactivity time-out
  1958. 0387    r/w     on board 8253 mode register
  1959. 0388    r/w     on board 8273 read: status  write: command
  1960. 0389    r/w     on board 8273 read: response  write: parameter
  1961. 038A    r/w     on board 8273 transmit interrupt status
  1962. 038B    r/w     on board 8273 receiver interrupt status
  1963. 038C    r/w     on board 8273 data
  1964.  
  1965. ------------------------------------------------------------------------------
  1966. 0388-0389 ---- Sound Blaster / Adlib port
  1967.  
  1968. 0388    r/w    Both Speakers -- Status / Address port
  1969.         Address:
  1970.              01 -- Enable waveform control
  1971.              02 -- Timer #1 data
  1972.              03 -- Timer #2 data
  1973.              04 -- Timer control flags
  1974.              08 -- Speech synthesis mode
  1975.           20-35 -- Amplitude Modulation / Vibrato
  1976.           40-55 -- Level key scaling / Total level
  1977.           60-75 -- Attack / Decay rate
  1978.           80-95 -- Sustain / Release rate
  1979.           A0-B8 -- Octave / Frequency Number
  1980.           C0-C8 -- Feedback / Algorithm
  1981.           E0-F5 -- Waveform Selection
  1982. 0389    w    Data port
  1983.  
  1984. SeeAlso: 0220-0223
  1985.  
  1986. -------------------------------------------------------------------------------
  1987. 0388-0389 ---- Soundblaster PRO FM-Chip
  1988. 0388-038B ---- Soundblaster 16 ASP FM-Chip
  1989.  
  1990. -------------------------------------------------------------------------------
  1991. 0390-0397 ----    Sunshine EW-901B, EW-904B
  1992.         EPROM writer card for EPROMs up to 27512
  1993. 0390-0393    adresses of the 8255 on the EW-90xB
  1994.  
  1995. -------------------------------------------------------------------------------
  1996. 0390-039F ----    Cluster adapter (AT)
  1997.  
  1998. 0390-0393    (adapter 0)    (XT)
  1999.  
  2000. -------------------------------------------------------------------------------
  2001. 03A0-03AF ----    1st SDLC (Binary Synchronous Data Link Control adapter)
  2002.  
  2003. 03A0    r/w     on board 8255 port A, internal/external sense
  2004. 03A1    r/w     on board 8255 port B, external modem interface
  2005. 03A2    r/w     on board 8255 port C, internal control and gating
  2006. 03A3    r/w     on board 8255 mode register
  2007. 03A4    r/w     on board 8253 counter 0 unused
  2008. 03A5    r/w     on board 8253 channel 1 inactivity time-out
  2009. 03A6    r/w     on board 8253 channel 2 inactivity time-out
  2010. 03A7    r/w     on board 8253 mode register
  2011. 03A8    r/w     on board 8251 data
  2012. 03A9    r/w     on board 8251 command/mode/status register
  2013.  
  2014. -------------------------------------------------------------------------------
  2015. 03B0-03BF ----    MDA  (Monochrome Display Adapter based on 6845)
  2016.  
  2017. 03B0        same as 03B4
  2018. 03B1        same as 03B5
  2019. 03B2        same as 03B4
  2020. 03B3        same as 03B5
  2021. 03B4    w    MDA CRT index register     (EGA/VGA)
  2022.         selects which register (0-11h) is to be accessed through 3B5
  2023. 03B5    r/w    MDA CRT data register     (EGA/VGA)
  2024.         selected by port 3B4. registers C-F may be read
  2025.          00  horizontal total
  2026.          01  horizontal displayed
  2027.          02  horizontal sync position
  2028.          03  horizontal sync pulse width
  2029.          04  vertical total
  2030.          05  vertical displayed
  2031.          06  vertical sync position
  2032.          07  vertical sunc pulse width
  2033.          08  interlace mode
  2034.          09  maximum scan lines
  2035.          0A  cursor start
  2036.          0B  cursor end
  2037.          0C  start address high
  2038.          0D  start address low
  2039.          0E  cursor location high
  2040.          0F  cursor location low
  2041.          10  light pen high
  2042.          11  light pen low
  2043. 03B6        same as 03B4
  2044. 03B7        same as 03B5
  2045. 03B8    r/w    MDA mode control register
  2046.          bit 7 not used
  2047.          bit 6 not used
  2048.          bit 5 enable blink
  2049.          bit 4 not used
  2050.          bit 3 video enable
  2051.          bit 2 not used
  2052.          bit 1 not used
  2053.          bit 0 high resolution mode
  2054.  
  2055. 03B9        reserved for color select register on color adapter
  2056.  
  2057. 03BA    r    CRT status register     EGA/VGA: input status 1 register
  2058.          bit 7     (MSD says) if this bit changes within 8000h reads then
  2059.           bit 6-4 = 000 = adapter is Hercules or compatible
  2060.                 001 = adapter is Hercules+
  2061.                 101 = adapter is Hercules InColor
  2062.                   else: adapter is unknown
  2063.          bit 3     black/white video
  2064.          bit 2-1 reserved
  2065.          bit 0     horizontal drive
  2066.  
  2067. 03BA    w    EGA/VGA feature control register
  2068.  
  2069. 03BB        reserved for light pen strobe reset
  2070.  
  2071. -------------------------------------------------------------------------------
  2072. 03BC-03BF ----    parallel printer port, same as 0278 and 0378
  2073.  
  2074. 03BC    w    data port
  2075. 03BD    r/w    status port
  2076.          bit 7 = 0  busy
  2077.          bit 6 = 0  acknowledge
  2078.          bit 5 = 1  out of paper
  2079.          bit 4 = 1  printer is selected
  2080.          bit 3 = 0  error
  2081.          bit 2 = 0  IRQ has occurred
  2082.          bit 1-0    reserved
  2083.  
  2084. 03BE    r/w    control port
  2085.          bit 7-5    reserved
  2086.          bit 4 = 1  enable IRQ
  2087.          bit 3 = 1  select printer
  2088.          bit 2 = 0  initialize printer
  2089.          bit 1 = 1  automatic line feed
  2090.          bit 0 = 1  strobe
  2091.  
  2092. -------------------------------------------------------------------------------
  2093. 03BF    r/w    Hercules configuration switch register
  2094.          bit 7-2
  2095.          bit 1 = 0  disables upper 32K of graphics mode buffer
  2096.              1  enables upper 32K of graphics mode buffer
  2097.          bit 0 = 0  prevents graphics mode
  2098.              1  allows graphics mode
  2099.  
  2100. -------------------------------------------------------------------------------
  2101. 03C0-03C7 ----    Sunshine EW-901, EW-901A, EW-904, EW-904A
  2102.         EPROM writer card for EPROMs up to 27512
  2103. 03C0-03C3    adresses of the 8255 on the EW-90x
  2104.  
  2105. -------------------------------------------------------------------------------
  2106. 03C0-03CF ----    EGA  (1st Enhanced Graphics Adapter)    alternate at 02C0
  2107.  
  2108. 03C0    (r)/w    EGA VGA ATC index/data register
  2109. 03C1    r    VGA    other attribute register
  2110. 03C2    r    EGA VGA input status 0 register
  2111.     w    VGA    miscellaneous output register
  2112. 03C3    r/w    VGA    video subsystem enable (see also port 46E8h)
  2113.             for IBM, motherboard VGA only
  2114. 03C4    w    EGA    TS index register
  2115.     r/w    VGA    sequencer index register
  2116. 03C5    w    EGA    TS data register
  2117.     r/w    VGA    other sequencer register
  2118. 03C6    r/w    VGA    PEL mask register
  2119. 03C7    r/w    VGA    PEL address read mode
  2120.     r    VGA    DAC state register
  2121. 03C8    r/w    VGA    PEL address write mode
  2122. 03C9    r/w    VGA    PEL data register
  2123. 03CA    w    EGA    graphics 2 position register
  2124.     r    VGA    feature control register
  2125. 03CC    w    EGA    graphics 1 position register
  2126.     r    VGA    miscellaneous output register
  2127. 03CE    w    EGA    GDC index register
  2128.     r/w    VGA    graphics address register
  2129. 03CF    w    EGA    GDC data register
  2130.     r/w    VGA    other graphics register
  2131.  
  2132. -------------------------------------------------------------------------------
  2133. 03CE-03CF ----    Compaq Qvision - Functionality Level
  2134.  
  2135. 03CE    w    graphics address register (index for next port)
  2136. 03CF    r/w    other graphics register
  2137.         Index
  2138.          0Ch    r    controller version
  2139.                 2Fh Advanced VGA
  2140.                 37h early QVision 1024
  2141.                 71h QVision 1280 or later QVision 1024
  2142.          0Dh        extended controller version
  2143.          0Eh        extended controller capabilities
  2144.          0Fh        environment info
  2145.          54h        available memory
  2146.          55h        phase-locked-loop clock
  2147.          56h-57h    controller capabilities
  2148.  
  2149. -------------------------------------------------------------------------------
  2150. 03D0-03DF ----    CGA   (Color Graphics Adapter)
  2151.  
  2152. 03D0        same as 03D4
  2153. 03D1        same as 03D5
  2154. 03D2        same as 03D4
  2155. 03D3        same as 03D5
  2156. 03D4    w    CRT (6845) index register   (EGA/VGA)
  2157.         selects which register (0-11h) is to be accessed through 3B5
  2158. 03D5    w    CRT (6845) data register    (EGA/VGA)
  2159.         selected by port 3B4. registers C-F may be read
  2160.          (for registers see at 3B5)
  2161. 03D6        same as 03D4
  2162.         (under OS/2, reads return 0 if full-screen DOS session,
  2163.         nonzero if windowed DOS session)
  2164. 03D7        same as 03D5
  2165. 03D8    r/w    CGA mode control register  (except PCjr)
  2166.          bit 7-6      not used
  2167.          bit 5     = 1  blink enabled
  2168.          bit 4     = 1  640*200 graphics mode
  2169.          bit 3     = 1  video enabled
  2170.          bit 2     = 1  monochrome signal
  2171.          bit 1     = 0  text mode
  2172.              = 1  320*200 graphics mode
  2173.          bit 0     = 0  40*25 text mode
  2174.              = 1  80*25 text mode
  2175.  
  2176. 03D9    r/w    CGA palette register
  2177.          bit 7-6      not used
  2178.          bit 5     = 0 active color set: red, green brown
  2179.              = 1 active color set: cyan, magenta, white
  2180.          bit 4         intense colors in graphics, background colors text
  2181.          bit 3         intense border in 40*25, intense background in
  2182.                  320*200, intense foreground in 640*200
  2183.          bit 2         red border in 40*25, red background in 320*200,
  2184.                  red foreground in 640*200
  2185.          bit 1         green border in 40*25, green background in
  2186.                  320*200, green foreground in 640*200
  2187.          bit 0         blue border in 40*25, blue background in 320*200,
  2188.                  blue foreground in 640*200
  2189.  
  2190. 03DA    r    CGA status register    EGA/VGA: input status 1 register
  2191.          bit 7-4     not used
  2192.          bit 3 = 1   in vertical retrace
  2193.          bit 2 = 1   light pen switch is off
  2194.          bit 1 = 1   positive edge from light pen has set trigger
  2195.          bit 0 = 0   do not use memory
  2196.                = 1   memory access without interfering with display
  2197.  
  2198. 03DA    w    EGA/VGA feature control register
  2199.  
  2200. 03DB    w    clear light pen latch
  2201. 03DC    r/w    preset light pen latch
  2202.  
  2203. 03DF        CRT/CPU page register  (PCjr only)
  2204.  
  2205. -------------------------------------------------------------------------------
  2206. 03E8-03EF ----    serial port, same as 02E8, 02F8 and 03F8
  2207.  
  2208. -------------------------------------------------------------------------------
  2209. 03F0-03F7 ----    FDC 1  (1st Floppy Disk Controller)    second FDC at 0370
  2210.         (8272, 8272A, NEC765)
  2211.         (82072, 82077AA for perpendicular recording at 2.8Mb)
  2212.  
  2213. 03F0    r    diskette EHD controller board jumper settings (82072AA)
  2214.          bit 7-6      drive 3
  2215.          bit 5-4      drive 2
  2216.          bit 3-2      drive 1
  2217.          bit 1-0      drive 0
  2218.              = 00  1.2Mb
  2219.              = 01  720Kb
  2220.              = 10  2.8Mb
  2221.              = 11  1.4Mb
  2222.  
  2223. 03F0    r    diskette controller status A (PS/2)
  2224.          bit 7     interrupt pending
  2225.          bit 6     -DRV2    second drive installed
  2226.          bit 5     step
  2227.          bit 4     -track 0
  2228.          bit 3     head 1 select
  2229.          bit 2     -index
  2230.          bit 1     -write protect
  2231.          bit 0     +direction
  2232.  
  2233. 03F0    r    diskette controller status A (PS/2 model 30)
  2234.          bit 7     interrupt pending
  2235.          bit 6     DRQ
  2236.          bit 5     step F/F
  2237.          bit 4     -track 0
  2238.          bit 3     head 1 select
  2239.          bit 2     +index
  2240.          bit 1     +write protect
  2241.          bit 0     -direction
  2242.  
  2243. 03F1    r    diskette controller status B (PS/2)
  2244.          bit 7-6  =1 reserved
  2245.          bit 5      drive select (0=A:, 1=B:)
  2246.          bit 4      write data
  2247.          bit 3      read data
  2248.          bit 2      write enable
  2249.          bit 1      motor enable 1
  2250.          bit 0      motor enable 0
  2251.  
  2252. 03F1    r    diskette controller status B (PS/2 model 30)
  2253.          bit 7      -DRV2    second drive installed
  2254.          bit 6      -DS1
  2255.          bit 5      -DS0
  2256.          bit 4      write data F/F
  2257.          bit 3      read data F/F
  2258.          bit 2      write enable F/F
  2259.          bit 1      -DS3
  2260.          bit 0      -DS2
  2261.  
  2262. 03F2    w    diskette controller DOR (Digital Output Register)
  2263.          bit 7-6    reserved on PS/2
  2264.          bit 7 = 1  drive 3 motor enable
  2265.          bit 6 = 1  drive 2 motor enable
  2266.          bit 5 = 1  drive 1 motor enable
  2267.          bit 4 = 1  drive 0 motor enable
  2268.          bit 3 = 1  diskette DMA enable (reserved PS/2)
  2269.          bit 2 = 1  FDC enable    (controller reset)
  2270.                = 0  hold FDC at reset
  2271.          bit 1-0    drive select (0=A 1=B ..)
  2272.  
  2273. 03F3        tape drive register (on the 82077AA)
  2274.          bit 7-2      reserved, tri-state
  2275.          bit 1-0      tape select
  2276.              = 00  none, drive 0 cannot be a tape drive.
  2277.              = 01  drive1
  2278.              = 10  drive2
  2279.              = 11  drive3
  2280.  
  2281. 03F4    r    diskette controller main status register
  2282.          bit 7 = 1  RQM     data register is ready
  2283.              0  no access is permitted
  2284.          bit 6 = 1  transfer is from controller to system
  2285.              0  transfer is from system to controller
  2286.          bit 5 = 1  non-DMA mode
  2287.          bit 4 = 1  diskette controller is busy
  2288.          bit 3 = 1  drive 3 busy (reserved on PS/2)
  2289.          bit 2 = 1  drive 2 busy (reserved on PS/2)
  2290.          bit 1 = 1  drive 1 busy (= drive is in seek mode)
  2291.          bit 0 = 1  drive 0 busy (= drive is in seek mode)
  2292.         Note:    in non-DMA mode, all data transfers occur through
  2293.               port 03F5h and the status registers (bit 5 here
  2294.               indicates data read/write rather than than
  2295.               command/status read/write)
  2296.  
  2297. 03F4    w    diskette controller data rate select register
  2298.          bit 7-2      reserved on 8272
  2299.          bit 7     = 1  software reset (self clearing)    82072/82077AA
  2300.          bit 6     = 1  power down            82072/82077AA
  2301.          bit 5     = 0  reserved on 8272 and 82077AA
  2302.                   PLL select bit on 82072
  2303.          bit 4-2      write precompensation value, 000 default
  2304.          bit 1-0      data rate select
  2305.              = 00  500 Kb/S MFM    250 Kb/S FM
  2306.              = 01  300 Kb/S MFM    150 Kb/S FM
  2307.              = 10  250 Kb/S MFM    125 Kb/S FM
  2308.              = 11  1Mb/S    MFM    illegal     FM on 8207x
  2309.  
  2310. 03F5    r    diskette command/data register 0 (ST0)
  2311.          bit 7-6      last command status
  2312.              = 00  command terminated successfully
  2313.              = 01  command terminated abnormally
  2314.              = 10  invalid command
  2315.              = 11  terminated abnormally by change in ready signal
  2316.          bit 5     = 1  seek completed
  2317.          bit 4     = 1  equipment check occurred after error
  2318.          bit 3     = 1  not ready
  2319.          bit 2     = 1  head number at interrupt
  2320.          bit 1-0 = 1  unit select (0=A 1=B .. )
  2321.                   (on PS/2    01=A  10=B)
  2322.  
  2323.         status register 1 (ST1)
  2324.          bit 7        end of cylinder; sector# greater then sectors/track
  2325.          bit 6 = 0
  2326.          bit 5 = 1  CRC error in ID or data field
  2327.          bit 4 = 1  overrun
  2328.          bit 3 = 0
  2329.          bit 2 = 1  sector ID not found
  2330.          bit 1 = 1  write protect detected during write
  2331.          bit 0 = 1  ID address mark not found
  2332.  
  2333.         status register 2 (ST2)
  2334.          bit 7 = 0
  2335.          bit 6 = 1  deleted Data Address Mark detected
  2336.          bit 5 = 1  CRC error in data
  2337.          bit 4 = 1  wrong cylinder detected
  2338.          bit 3 = 1  scan command equal condition satisfied
  2339.          bit 2 = 1  scan command failed, sector not found
  2340.          bit 1 = 1  bad cylinder, ID not found
  2341.          bit 0 = 1  missing Data Address Mark 
  2342.  
  2343.         status register 3 (ST3)
  2344.          bit 7        fault status signal
  2345.          bit 6        write protect status
  2346.          bit 5        ready status
  2347.          bit 4        track zero status
  2348.          bit 3        two sided status signal
  2349.          bit 2        side select (head select)
  2350.          bit 1-0    unit select (0=A 1=B .. )
  2351.  
  2352. 03F5    w    diskette command register.  The commands summarized here are
  2353.         mostly multibyte commands. This is for brief recognition only.
  2354.  
  2355.             MFM = MFM mode selected, opposite to MF mode.
  2356.             HDS = head select
  2357.             DS  = drive select
  2358.             MT  = multi track operation
  2359.             SK  = skip deleted data address mark
  2360.  
  2361.            Command         # bytes    D7  6    5   4    3   2    1   0
  2362.          read track        9    0  MFM    0   0    0   0    1   0
  2363.                         0   0    0   0    0 HDS DS1 DS0
  2364.          specify        3    0   0    0   O    O   O    1   1
  2365.          sense drive status    2    0   0    0   0    0   1    0   0
  2366.                         0   0    0   0    0 HDS DS1 DS0
  2367.          write data        9    MT MFM    0   0    0   1    0   1
  2368.                         0   0    0   0    0 HDS DS1 DS0
  2369.          read data        9    MT MFM SK   0    0   1    1   0
  2370.                         0   0    0   0    0 HDS DS1 DS0
  2371.          recalibrate        2    0   0    0   0    0   1    1   1
  2372.                         0   0    0   0    0   0 DS1 DS0
  2373.          sense interrupt status    1    0   0    0   0    1   0    0   0
  2374.          write deleted data    9    MT MFM    0   0    1   0    0   1
  2375.                         0   0    0   0    0 HDS DS1 DS0
  2376.          read ID        2    0  MFM    0   0    1   0    1   0
  2377.                         0   0    0   0    0 HDS DS1 DS0
  2378.          read deleted data    9    MT MFM SK   0    1   1    0   0
  2379.                         0   0    0   0    0 HDS DS1 DS0
  2380.          format track        10    0  MFM    0   0    1   1    0   1
  2381.                         0   0    0   0    0 HDS DS1 DS0
  2382.          dumpreg **        1    0   0    0   0    1   1    1   0
  2383.          seek            3    0   0    0   0    1   1    1   1
  2384.                         0   0    0   0    0 HDS DS1 DS0
  2385.          version **        1    0   0    0   1    0   0    0   0
  2386.          scan equal *        9    MT MFM SK   1    0   0    0   1
  2387.                         0   0    0   0    0 HDS DS1 DS0
  2388.          perpendicular mode **    2    0   0    0   1    0   0    1   0
  2389.                         0   0    0   0    0   0 WGATE GAP
  2390.          configure **        4    0   0    0   1    0   0    1   1
  2391.                         0   0    0   0    0   0    0   0
  2392.          verify            9    MT MFM SK   1    0   1    1   0
  2393.                         EC  0    0   0    0 HDS DS1 DS0
  2394.          scan low or equal *    9    MT MFM SK   1    1   0    0   1
  2395.                         0   0    0   0    0 HDS DS1 DS0
  2396.          scan high or equal *    9    MT MFM SK   1    1   1    0   1
  2397.                         0   0    0   0    0 HDS DS1 DS0
  2398.          relative seek **    3    1  DIR    0   0    1   1    1   1
  2399.                         0   0    0   0    0 HDS DS1 DS0
  2400.  
  2401.          BEWARE: not every invalid command is treated as invalid!
  2402.          *  Note: the scan commands aren't mentioned for the 82077AA.
  2403.          ** Note: EHD controller commands.
  2404.  
  2405. 03F6        reserved on FDC
  2406.  
  2407. 03F6    r/w    FIXED disk controller data register
  2408.          bit 7-4    reserved
  2409.          bit 3 = 0  reduce write current
  2410.              1  head select 3 enable
  2411.          bit 2 = 1  disk reset enable
  2412.              0  disk reset disable
  2413.          bit 1 = 0  disk initialization enable
  2414.              1  disk initialization disable
  2415.          bit 0        reserved
  2416.  
  2417. 03F7    r/w    harddisk controller
  2418.          bit 6       FIXED DISK write gate
  2419.          bit 5       FIXED DISK head select 3 / reduced write current
  2420.          bit 4       FIXED DISK head select 2
  2421.          bit 3       FIXED DISK head select 1
  2422.          bit 2       FIXED DISK head select 0
  2423.          bit 1       FIXED DISK drive 1 select
  2424.          bit 0       FIXED DISK drive 0 select
  2425.  
  2426. 03F7    r    diskette controller DIR (Digital Input Register, PC/AT mode)
  2427.          bit 7 = 1 diskette change
  2428.          bit 6-0   tri-state on FDC
  2429.  
  2430. 03F7    r    diskette controller DIR (Digital Input Register, PS/2 mode)
  2431.          bit 7     = 1 diskette change
  2432.          bit 6-3 = 1
  2433.          bit 2         datarate select1
  2434.          bit 1         datarate select0
  2435.          bit 0     = 0 high density select (500Kb/s, 1Mb/s)
  2436.  
  2437.  conflicts with     bit 0       FIXED DISK drive 0 select
  2438.  
  2439. 03F7    r    diskette controller DIR (Digital Input Register, PS/2 model 30)
  2440.          bit 7     = 0 diskette change
  2441.          bit 6-4 = 0
  2442.          bit 3         -DMA gate (value from DOR register)
  2443.          bit 2         NOPREC (value from CCR register)
  2444.          bit 1         datarate select1
  2445.          bit 0         datarate select0
  2446.  
  2447.  conflicts with     bit 0       FIXED DISK drive 0 select
  2448.  
  2449. 03F7    w    configuration control register (PC/AT, PS/2)
  2450.          bit 7-2       reserved, tri-state
  2451.          bit 1-0 = 00  500 Kb/S mode (MFM)
  2452.              = 01  300 Kb/S mode (MFM)
  2453.              = 10  250 Kb/S mode (MFM)
  2454.              = 11  1   Mb/S mode (MFM) (on 82072/82077AA)
  2455.  
  2456.  conflicts with     bit 0       FIXED DISK drive 0 select
  2457.  
  2458. 03F7    w    configuration control register (PS/2 model 30)
  2459.          bit 7-3       reserved, tri-state
  2460.          bit 2           NOPREC (has no function. set to 0 by hardreset)
  2461.          bit 1-0 = 00  500 Kb/S mode (MFM)
  2462.              = 01  300 Kb/S mode (MFM)
  2463.              = 10  250 Kb/S mode (MFM)
  2464.              = 11  1   Mb/S mode (MFM) (on 82072/82077AA)
  2465.  
  2466.  conflicts with     bit 0       FIXED DISK drive 0 select
  2467.  
  2468. -------------------------------------------------------------------------------
  2469. 03F8-03FF ----    serial port (8250,8251,16450,16550,16550A,etc.)
  2470.         same as 02E8,02F8 and 03E8
  2471.  
  2472. 03F8    w    serial port, transmitter holding register, which contains the
  2473.         character to be sent. Bit 0 is sent first.
  2474.          bit 7-0   data bits when DLAB=0 (Divisor Latch Access Bit)
  2475.     r    receiver buffer register, which contains the received character
  2476.         Bit 0 is received first
  2477.          bit 7-0   data bits when DLAB=0 (Divisor Latch Access Bit)
  2478.     r/w    divisor latch low byte when DLAB=1
  2479.  
  2480. 03F9    r/w    divisor latch high byte when DLAB=1
  2481.     r/w    interrupt enable register when DLAB=0
  2482.          bits 7-4   reserved
  2483.          bit 3 = 1  modem-status interrupt enable
  2484.          bit 2 = 1  receiver-line-status interrupt enable
  2485.          bit 1 = 1  transmitter-holding-register empty interrupt enable
  2486.          bit 0 = 1  received-data-available interrupt enable
  2487.                 (also 16550(A) timeout interrupt)
  2488.  
  2489.           - 16550(A) will interrupt with a timeout if data exists in the
  2490.             FIFO and isn't read within the time it takes to receive four
  2491.         bytes or if no data is received within the time it takes to
  2492.         receive four bytes
  2493.  
  2494. 03FA    r    interrupt identification register. Information about a pending
  2495.         interrupt is stored here. When the ID register is addressed,
  2496.         the highest priority interrupt is held, and no other interrupts
  2497.         are acknowledged until the CPU services that interrupt.
  2498.          bit 7-6 = 00  reserved on 8250, 8251, 16450
  2499.              = 01  if FIFO queues enabled (16550 only)
  2500.              = 11  if FIFO queues are enabled (16550A only)
  2501.          bit 5-4 = 0 reserved
  2502.          bit 3     = 0 reserved  8250, 16450
  2503.              = 1 16550  timeout int. pending
  2504.          bit 2-1 identify pending interrupt with the highest priority
  2505.           = 11    receiver line status interrupt. priority=highest
  2506.           = 10    received data available register interrupt. pr.=second
  2507.           = 01    transmitter holding register empty interrupt. pr.=third
  2508.           = 00    modem status interrupt. priority=fourth
  2509.          bit 0 = 0  interrupt pending. contents of register can be used
  2510.                 as a pointer to the appropriate int.service routine
  2511.              1  no interrupt pending
  2512.  
  2513.           - interrupt pending flag uses reverse logic, 0=pending, 1=none
  2514.           - interrupt will occur if any of the line status bits are set
  2515.           - THRE bit is set when THRE register is emptied into the TSR
  2516.  
  2517.  
  2518. 03FA    w    16650 FCR  (FIFO Control Register)
  2519.          bit 7-6 = received data available interrupt trigger level
  2520.             00  1 byte
  2521.             01  4 bytes
  2522.             10  8 bytes
  2523.             11 14 bytes
  2524.          bit 5-4 = 00 reserved
  2525.          bit 3     = 1  change RXRDY  TXRDY pins from mode 0 to mode 1
  2526.          bit 2     = 1  clear XMIT FIFO
  2527.          bit 1     = 1  clear RCVR FIFO
  2528.          bit 0     = 1  enable clear XMIT and RCVR FIFO queues
  2529.  
  2530.           - bit 0 must be set in order to write to other FCR bits
  2531.           - bit 1 when set    the RCVR FIFO is cleared and this bit is reset
  2532.          the receiver shift register is not cleared
  2533.           - bit 2 when set    the XMIT FIFO is cleared and this bit is reset
  2534.          the transmit shift register is not cleared
  2535.           - due to a hardware bug, 16550 FIFOs don't work correctly (this
  2536.             was fixed in the 16550A)
  2537.  
  2538. 03FB    r/w    line control register
  2539.          bit 7 = 1  divisor latch access bit (DLAB)
  2540.              0  receiver buffer, transmitter holding, or interrupt
  2541.                 enable register access
  2542.          bit 6 = 1  set break enable. serial ouput is forced to spacing
  2543.                 state and remains there.
  2544.          bit 5 =    stick parity
  2545.          bit 4 = 1  even parity select
  2546.          bit 3 =    parity enable
  2547.              1  even number of ones are sent and checked in the 
  2548.                 data word bits and parity bit
  2549.              0  odd number of ones are sent and checked
  2550.          bit 2 = 0  one stop bit
  2551.              1  zero stop bit
  2552.          bit 1-0 00 word length is 5 bits
  2553.              01 word length is 6 bits
  2554.              10 word length is 7 bits
  2555.              11 word length is 8 bits
  2556.  
  2557. 03FC    r/w    modem control register
  2558.          bit 7-5 = 0  reserved
  2559.          bit 4 = 1  loopback mode for diagnostic testing of serial port
  2560.                 output of transmitter shift register is looped back
  2561.                 to receiver shift register input. In this mode
  2562.                 transmitted data is received immediately so that
  2563.                 the CPU can verify the transmit data/receive data
  2564.                 serial port paths.
  2565.          bit 3 = 1  auxiliary user-designated output 2
  2566.          bit 2 = 1  auxiliary user-designated output 1
  2567.          bit 1 = 1  force request-to-send active
  2568.          bit 0 = 1  force data-terminal-ready active
  2569.  
  2570. 03FD    r    line status register
  2571.          bit 7 = 0  reserved
  2572.          bit 6 = 1  transmitter shift and holding registers empty
  2573.          bit 5 = 1  transmitter holding register empty. Controller is
  2574.                 ready toaccept a new character to send.
  2575.          bit 4 = 1  break interrupt. the received data input is held in
  2576.                 in the zero bit state longer than the time of start
  2577.                 bit + data bits + parity bit + stop bits.
  2578.          bit 3 = 1  framing error. the stop bit that follows the last
  2579.                 parity or data bit is a zero bit.
  2580.          bit 2 = 1  parity error. Character has wrong parity
  2581.          bit 1 = 1  overrun error. a character was sent to the receiver
  2582.                 buffer before the previous character in the buffer
  2583.                 could be read. This destroys the previous
  2584.                 character.
  2585.          bit 0 = 1  data ready. a complete incoming character has been
  2586.                 received and sent to the receiver buffer register.
  2587.  
  2588. 03FE    r    modem status register
  2589.          bit 7 = 1  data carrier detect
  2590.          bit 6 = 1  ring indicator
  2591.          bit 5 = 1  data set ready
  2592.          bit 4 = 1  clear to send
  2593.          bit 3 = 1  delta data carrier detect
  2594.          bit 2 = 1  trailing edge ring indicator
  2595.          bit 1 = 1  delta data set ready
  2596.          bit 0 = 1  delta clear to send
  2597.  
  2598.           - bits 0-3 are reset when the CPU reads the MSR
  2599.           - bit 4 is the Modem Control Register RTS during loopback test
  2600.           - bit 5 is the Modem Control Register DTR during loopback test
  2601.           - bit 6 is the Modem Control Register OUT1 during loopback test
  2602.           - bit 7 is the Modem Control Register OUT2 during loopback test
  2603.  
  2604. 03FF    r/w    scratch register
  2605.  
  2606. -------------------------------------------------------------------------------
  2607.  
  2608.         Adresses above 03FF apply to EISA machines only !
  2609.  
  2610.              1000-1FFF    slot 1 EISA
  2611.              2000-2FFF    slot 2 EISA
  2612.              3000-3FFF    slot 3 EISA
  2613.              4000-4FFF    slot 4 EISA
  2614.              5000-5FFF    slot 5 EISA
  2615.              6000-6FFF    slot 6 EISA
  2616.              7000-7FFF    slot 7 EISA
  2617.  
  2618. -------------------------------------------------------------------------------
  2619. 0401-04D6 ----    used by EISA systems only
  2620.  
  2621. 0401    r/w    DMA channel 0 word count byte 2 (high)
  2622. 0403    r/w    DMA channel 1 word count byte 2 (high)
  2623. 0405    r/w    DMA channel 2 word count byte 2 (high)
  2624. 0407    r/w    DMA channel 3 word count byte 2 (high)
  2625.  
  2626. 040A    w    extended DMA chaining mode register, channels 0-3
  2627.          bit 7-5      reserved
  2628.          bit 4     = 0  generates IRQ13
  2629.              = 1  generates terminal count
  2630.          bit 3     = 0  do not start chaining
  2631.              = 1  programming complete
  2632.          bit 2     = 0  disable buffer chaining mode (default)
  2633.              = 1  enable buffer chaining mode
  2634.          bit 1-0      DMA channel select
  2635.  
  2636. 040A    r    channel interrupt (IRQ13) status register
  2637.          bit 7-5  interrupt on channels 7-5
  2638.          bit 4      reserved
  2639.          bit 3-0  interrupt on channels 3-0
  2640.  
  2641. 040B    w    DMA extended mode register for channels 3-0.
  2642.         bit settings same as 04D6
  2643.          bit 7     = 0  enable stop register
  2644.          bit 6     = 0  terminal count is an output for this channel
  2645.                 (default)
  2646.          bit 5-4      DMA cycle timing
  2647.              = 00 ISA-compatible (default)
  2648.              = 01 type A timing mode
  2649.              = 10 type B timing mode
  2650.              = 11 burst DMA mode
  2651.          bit 3-2      Address mode
  2652.              = 00 8-bit I/O, count by bytes (default)
  2653.              = 01 16-bit I/O, count by words, address shifted
  2654.              = 10 32-bit I/O, count by bytes
  2655.              = 11 16-bit I/O, count by bytes
  2656.          bit 1-0      DMA channel select
  2657.  
  2658. -------------------------------------------------------------------------------
  2659. 0461    r/w    Extended NMI status/control register
  2660.          bit 7 = 1  NMI pending from fail-safe timer (read only)
  2661.          bit 6 = 1  NMI pending from bus timeout NMI status (read
  2662. only)
  2663.          bit 5 = 1  NMI pending (read only)
  2664.          bit 4        reserved
  2665.          bit 3 = 1  bus timeout NMI enable (read/write)
  2666.          bit 2 = 1  fail-safe NMI enable (read/write)
  2667.          bit 1 = 1  NMI I/O port enable (read/write)
  2668.          bit 0        RSTDRV. bus reset (read/write)
  2669.                = 0  NORMAL bus reset operation
  2670.                = 1  reset bus asserted
  2671.  
  2672. 0462    w    Software NMI register. writing to this register causes an NMI
  2673.         if NMI's are enabled
  2674.          bit 7 = 1  generates an NMI
  2675.  
  2676. 0464    r    bus master status latch register (slots 1-8). identifies the
  2677.         last bus master that had control of the bus
  2678.          bit 7 = 0  slot 8 had control last
  2679.          bit 6 = 0  slot 7 had control last
  2680.          bit 5 = 0  slot 6 had control last
  2681.          bit 4 = 0  slot 5 had control last
  2682.          bit 3 = 0  slot 4 had control last
  2683.          bit 2 = 0  slot 3 had control last
  2684.          bit 1 = 0  slot 2 had control last
  2685.          bit 0 = 0  slot 1 had control last
  2686.  
  2687. 0465    r    bus master status latch register (slots 9-16)
  2688.          bit 7 = 0  slot 16 had control last
  2689.          bit 6 = 0  slot 15 had control last
  2690.          bit 5 = 0  slot 14 had control last
  2691.          bit 4 = 0  slot 13 had control last
  2692.          bit 3 = 0  slot 12 had control last
  2693.          bit 2 = 0  slot 11 had control last
  2694.          bit 1 = 0  slot 10 had control last
  2695.          bit 0 = 0  slot 9  had control last
  2696.  
  2697. -------------------------------------------------------------------------------
  2698. 0481-048B ---- EISA DMA page registers
  2699.  
  2700. 0481    r/w    DMA channel 2 address byte 3 (high)
  2701. 0482    r/w    DMA channel 3 address byte 3 (high)
  2702. 0483    r/w    DMA channel 1 address byte 3 (high)
  2703. 0487    r/w    DMA channel 0 address byte 3 (high)
  2704. 0489    r/w    DMA channel 6 address byte 3 (high)
  2705. 048A    r/w    DMA channel 7 address byte 3 (high)
  2706. 048B    r/w    DMA channel 5 address byte 3 (high)
  2707.  
  2708. -------------------------------------------------------------------------------
  2709. 04C6-04CF ---- EISA DMA count registers
  2710.  
  2711. 04C6    r/w    DMA channel 5 word count byte 2 (high)
  2712. 04CA    r/w    DMA channel 6 word count byte 2 (high)
  2713. 04CE    r/w    DMA channel 7 word count byte 2 (high)
  2714.  
  2715. -------------------------------------------------------------------------------
  2716. 04D0-04D1 ---- EISA IRQ control
  2717.  
  2718. 04D0    w    IRQ 0-7 interrupt edge/level registers
  2719.          bit 7 = 1  IRQ 7 is level sensitive
  2720.          bit 6 = 1  IRQ 6 is level sensitive
  2721.          bit 5 = 1  IRQ 5 is level sensitive
  2722.          bit 4 = 1  IRQ 4 is level sensitive
  2723.          bit 3 = 1  IRQ 3 is level sensitive
  2724.          bit 2-0    reserved
  2725.  
  2726. 04D1    w    IRQ 8-15 interrupt edge/level registers
  2727.          bit 7 = 1  IRQ 15 is level sensitive
  2728.          bit 6 = 1  IRQ 14 is level sensitive
  2729.          bit 5 = 1  reserved
  2730.          bit 4 = 1  IRQ 12 is level sensitive
  2731.          bit 3 = 1  IRQ 11 is level sensitive
  2732.          bit 2 = 1  IRQ 10 is level sensitive
  2733.          bit 1 = 1  IRQ 9  is level sensitive
  2734.          bit 0        reserved
  2735.  
  2736. -------------------------------------------------------------------------------
  2737. 04D4-04D6 ---- EISA DMA control
  2738.  
  2739. 04D4    r    DMA chaining status
  2740.  
  2741. 04D4    w    extended DMA chaining mode register, channels 4-7
  2742.          bit 7-5 = 0  reserved
  2743.          bit 4     = 0  generates IRQ 13
  2744.              = 1  generates terminal count
  2745.          bit 3     = 0  do not start chaining
  2746.              = 1  programming complete
  2747.          bit 2     = 0  disable buffer chaining mode (default)
  2748.              = 1  enable buffer chaining mode
  2749.          bit 1-0      DMA channel select
  2750.  
  2751. 04D6    w    DMA extended mode register for channels 4-7
  2752.         bit settings same as 04B
  2753.          bit 7     = 0  enable stop register
  2754.          bit 6     = 0  terminal count is an output for this channel
  2755.                 (default)
  2756.          bit 5-4      DMA cycle timing
  2757.              = 00 ISA-compatible (default)
  2758.              = 01 type A timing mode
  2759.              = 10 type B timing mode
  2760.              = 11 burst DMA mode
  2761.          bit 3-2      Address mode
  2762.              = 00 8-bit I/O, count by bytes (default)
  2763.              = 01 16-bit I/O, count by words, address shifted
  2764.              = 10 32-bit I/O, count by bytes
  2765.              = 11 16-bit I/O, count by bytes
  2766.          bit 1-0      DMA channel select
  2767.  
  2768. -------------------------------------------------------------------------------
  2769. 04E0-04FF ---- EISA DMA stop registers
  2770.  
  2771. 04E0-04E2 r/w    channel 0
  2772. 04E4-04E6 r/w    channel 1
  2773. 04E8-04EA r/w    channel 2
  2774. 04EC-04EE r/w    channel 3
  2775. 04F4-04F6 r/w    channel 5
  2776. 04F8-04FA r/w    channel 6
  2777. 04FC-04FE r/w    channel 7
  2778.  
  2779. -------------------------------------------------------------------------------
  2780. 0530-0533 ----    Gravis Ultra Sound Daughter Card by Advanced Gravis
  2781.      The I/O address range is dipswitch selectable from:
  2782.        0530-0533 
  2783.        0604-0607 
  2784.        0E80-0E83 
  2785.        0F40-0F43 
  2786.  
  2787. 0530    r/w    Address Select
  2788. 0531    r/w    Data
  2789. 0532    r/w    Status
  2790. 0533    r/w    PIO
  2791.  
  2792. -------------------------------------------------------------------------------
  2793. 0601    w    System control. Laptop chipset: Headland HL21 & Acer M5105
  2794.          bit 7 = 1  power led on
  2795.          bit 6 = 1  LCD backlight off
  2796.          bit 5
  2797.          bit 4
  2798.          bit 3
  2799.          bit 2 = 1  video chips disabled, screen blanked.
  2800.          bit 1
  2801.          bit 0 = 1  will lock up your machine!
  2802.  
  2803.     r     bit 7 = 0  if screen enabled always these values
  2804.          bit 6 = 0
  2805.          bit 5 = 0
  2806.          bit 4 = 0
  2807.          bit 3 = 0
  2808.          bit 2 = 1  (=0 at low power)
  2809.          bit 1 = 0  power OK
  2810.          bit 0 = 0
  2811.  
  2812. -------------------------------------------------------------------------------
  2813. 0620-0627 ----    PC network (adapter 1)
  2814. 0628-062F ----    PC network (adapter 2)
  2815.  
  2816. -------------------------------------------------------------------------------
  2817. 0680      ----    Microchannel POST Diagnostic (write only)
  2818.  
  2819. -------------------------------------------------------------------------------
  2820. 06E2-06E3 ----    data aquisition (adapter 1)
  2821.  
  2822. -------------------------------------------------------------------------------
  2823. 06E8      ----    S3 86C928 video controller (ELSA Winner 1000)
  2824.  
  2825. -------------------------------------------------------------------------------
  2826. 06E8-06EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  2827.  
  2828. 06E8    w    horizontal displayed
  2829.  
  2830.     See also 02E8-02EF, 0AE8, 96E8, 9AE8
  2831.  
  2832. -------------------------------------------------------------------------------
  2833. 0746      ----    Gravis Ultra Sound by Advanced Gravis
  2834.  
  2835. 0746    r    Board Version (rev 3.7+)
  2836.          FF      Pre 3.6 boards, ICS mixer NOT present
  2837.          05      Rev 3.7 with ICS Mixer. Some R/L: flip problems.
  2838.          06-09      Revision 3.7 and above. ICS Mixer present
  2839.          0A-      UltraMax. CS4231 present, no ICS mixer
  2840.     w    Mixer Control Port
  2841.  
  2842. SeeAlso: 0240-024F, 0340-034F
  2843.  
  2844. -------------------------------------------------------------------------------
  2845. 0790-0793 ----    cluster (adapter 1)
  2846.  
  2847. -------------------------------------------------------------------------------
  2848. 0800-08FF ----    I/O port access registers for extended CMOS RAM or SRAM
  2849.         (256 bytes at a time)
  2850.         Sometimes plain text can be seen here.
  2851.  
  2852. -------------------------------------------------------------------------------
  2853. 0800-08FF ----    reserved for EISA system motherboard
  2854.  
  2855. -------------------------------------------------------------------------------
  2856. 0A20-0A23 ----    Token Ring (adapter 1)
  2857. 0A24-0A27 ----    Token Ring (adapter 2)
  2858.  
  2859. -------------------------------------------------------------------------------
  2860. 0AE2-0AE3 ----    cluster (adapter 2)
  2861.  
  2862. -------------------------------------------------------------------------------
  2863. 0AE8      ----    S3 86C928 video controller (ELSA Winner 1000)
  2864.  
  2865. -------------------------------------------------------------------------------
  2866. 0AE8-0AEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  2867.  
  2868. 0AE8    w    horizontal sync start
  2869.  
  2870. -------------------------------------------------------------------------------
  2871. 0B90-0B93 ----    cluster (adapter 2)
  2872.  
  2873. -------------------------------------------------------------------------------
  2874. 0C00    r/w    page register to write to SRAM or I/O
  2875.  
  2876. -------------------------------------------------------------------------------
  2877. 0C00-0CFF ----    reserved for EISA system motherboard
  2878.  
  2879. -------------------------------------------------------------------------------
  2880. 0C7C        bit 7-4 (Compaq)
  2881.  
  2882. -------------------------------------------------------------------------------
  2883. 0C80-0C83 ----    EISA system board ID registers
  2884.  
  2885. -------------------------------------------------------------------------------
  2886. 0CF8      ----    Intel Pentium motherboard ("Neptune" chipset)
  2887.  
  2888. -------------------------------------------------------------------------------
  2889. 0CFA      ----    Intel Pentium motherboard ("Neptune" chipset)
  2890.  
  2891. -------------------------------------------------------------------------------
  2892. 0EE8      ----    S3 86C928 video controller (ELSA Winner 1000)
  2893.  
  2894. -------------------------------------------------------------------------------
  2895. 0EE8-0EEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  2896.  
  2897. 0EE8    w    horizontal sync width
  2898.  
  2899. -------------------------------------------------------------------------------
  2900. 1000-10FF ----    available for EISA slot 1
  2901.  
  2902. -------------------------------------------------------------------------------
  2903. 12E8-12EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  2904.  
  2905. 12E8    w    vertical total
  2906.  
  2907. -------------------------------------------------------------------------------
  2908. 1390-1393 ----    cluster (adapter 3)
  2909.  
  2910. -------------------------------------------------------------------------------
  2911. 1400-14FF ----    available for EISA slot 1
  2912.  
  2913. -------------------------------------------------------------------------------
  2914. 16E8-16EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  2915.  
  2916. 16E8    w    vertical displayed
  2917.  
  2918. -------------------------------------------------------------------------------
  2919. 1800-18FF ----    available for EISA slot 1
  2920.  
  2921. -------------------------------------------------------------------------------
  2922. 1AE8-1AEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  2923.  
  2924. 1AE8    w    vertical sync start
  2925.  
  2926. -------------------------------------------------------------------------------
  2927. 1C00-1CFF ----    available for EISA slot 1
  2928.  
  2929. -------------------------------------------------------------------------------
  2930. 1C80-1C8F ----    VESA XGA Video in EISA slot 1
  2931.  
  2932. 1C80-1C83 r/w    EISA Video ID
  2933. 1C84    r/w    EISA Video expansion board control    
  2934. 1C85    r/w    EISA Setup control
  2935. 1C88    r/w    EISA Video Programmable Option Select 0
  2936. 1C89-1C8F r/w    EISA Video Programmable Option Select 1-7
  2937.  
  2938. -------------------------------------------------------------------------------
  2939. 1C80-1C83    EISA board product ID (board in slot 1)
  2940.  
  2941. -------------------------------------------------------------------------------
  2942. 1C85        Compaq Qvision EISA - Virtual Controller ID
  2943.  
  2944. -------------------------------------------------------------------------------
  2945. 1EE8-1EEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  2946.  
  2947. 1EE8    w    vertical sync width
  2948.  
  2949. -------------------------------------------------------------------------------
  2950. 2000-20FF ----    available for EISA slot 2
  2951.  
  2952. -------------------------------------------------------------------------------
  2953. 2100-210F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (first installed)
  2954. 2110-211F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (second installed)
  2955. 2120-212F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (third installed)
  2956. 2130-213F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (fourth installed)
  2957. 2140-214F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (fifth installed)
  2958. 2150-215F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (sixth installed)
  2959. 2160-216F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (seventh installed)
  2960. 2170-217F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (eighth installed)
  2961.  
  2962. -------------------------------------------------------------------------------
  2963. 2100      ----    XGA Video Operating Mode Register
  2964.  
  2965. Note:    this port is for the first XGA in the system; 2110-2170 are used for
  2966.       the second through eighth XGAs
  2967.  
  2968. -------------------------------------------------------------------------------
  2969. 2101      ----    XGA VIdeo Aperture Control
  2970.  
  2971. Note:    this port is for the first XGA in the system; 2111-2171 are used for
  2972.       the second through eighth XGAs
  2973.  
  2974. -------------------------------------------------------------------------------
  2975. 2102-2103 ----    XGA ???
  2976.  
  2977. Note:    this port is for the first XGA in the system; 211x-217x are used for
  2978.       the second through eighth XGAs
  2979.  
  2980. -------------------------------------------------------------------------------
  2981. 2104      ----    XGA Video Interrupt Enable
  2982.  
  2983. Note:    this port is for the first XGA in the system; 211x-217x are used for
  2984.       the second through eighth XGAs
  2985.  
  2986. -------------------------------------------------------------------------------
  2987. 2105      ----    XGA Video Interrupt Status
  2988.  
  2989. Note:    this port is for the first XGA in the system; 211x-217x are used for
  2990.       the second through eighth XGAs
  2991.  
  2992. -------------------------------------------------------------------------------
  2993. 2106      ----    XGA Video Virtual Memory Control
  2994.  
  2995. Note:    this port is for the first XGA in the system; 211x-217x are used for
  2996.       the second through eighth XGAs
  2997.  
  2998. -------------------------------------------------------------------------------
  2999. 2107      ----    XGA Video Virtual Memory Interrupt Status
  3000.  
  3001. Note:    this port is for the first XGA in the system; 211x-217x are used for
  3002.       the second through eighth XGAs
  3003.  
  3004. -------------------------------------------------------------------------------
  3005. 2108      ----    XGA Video Aperture Index
  3006.  
  3007. Note:    this port is for the first XGA in the system; 211x-217x are used for
  3008.       the second through eighth XGAs
  3009.  
  3010. -------------------------------------------------------------------------------
  3011. 2109      ----    XGA Video Memory Access Mode
  3012.  
  3013. Note:    this port is for the first XGA in the system; 211x-217x are used for
  3014.       the second through eighth XGAs
  3015.  
  3016. -------------------------------------------------------------------------------
  3017. 210A      ----    XGA Video Index for Data
  3018.  
  3019. Note:    this port is for the first XGA in the system; 211x-217x are used for
  3020.       the second through eighth XGAs
  3021.  
  3022. -------------------------------------------------------------------------------
  3023. 210B      ----    XGA Video Data (byte)
  3024.  
  3025. Note:    this port is for the first XGA in the system; 211x-217x are used for
  3026.       the second through eighth XGAs
  3027.  
  3028. -------------------------------------------------------------------------------
  3029. 210C-210F ----    XGA Video Data (word/dword)
  3030.  
  3031. Note:    this port is for the first XGA in the system; 211x-217x are used for
  3032.       the second through eighth XGAs
  3033.  
  3034. -------------------------------------------------------------------------------
  3035. 2110-217F ----    secondary XGA adapters (see individual entries above)
  3036.  
  3037. -------------------------------------------------------------------------------
  3038. 22E8-22EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3039.  
  3040. 22E8    w    display control
  3041.  
  3042. -------------------------------------------------------------------------------
  3043. 2390-2393 ----    cluster (adapter 4)
  3044.  
  3045. -------------------------------------------------------------------------------
  3046. 23C0-23CF ----    Compaq QVision - BitBLT engine
  3047.  
  3048. -------------------------------------------------------------------------------
  3049. 2400-24FF ----    available for EISA slot 2
  3050.  
  3051. -------------------------------------------------------------------------------
  3052. 27C6    r/w    LCD timeout in minutes (Compaq LTE Lite)
  3053.  
  3054. -------------------------------------------------------------------------------
  3055. 2800-28FF ----    available for EISA slot 2
  3056.  
  3057. -------------------------------------------------------------------------------
  3058. 28E9      ----    8514/A - WD Escape Functions
  3059.  
  3060. -------------------------------------------------------------------------------
  3061. 2C80-2C8F ----    VESA XGA Video in EISA slot 2 (see 1C80-1C8F)
  3062.  
  3063. -------------------------------------------------------------------------------
  3064. 2C80-2C83    EISA board product ID (board in slot 2)
  3065.  
  3066. -------------------------------------------------------------------------------
  3067. 3000-30FF ----    available for EISA slot 3
  3068.  
  3069. -------------------------------------------------------------------------------
  3070. 3220-3227 ----    serial port 3, description same as 03F8
  3071. 3228-322F ----    serial port 4, description same as 03F8
  3072.  
  3073. -------------------------------------------------------------------------------
  3074. 33C0-33CF ----    Compaq QVision - BitBLT engine
  3075.  
  3076. -------------------------------------------------------------------------------
  3077. 3400-34FF ----    available for EISA slot 3
  3078.  
  3079. -------------------------------------------------------------------------------
  3080. 3540-354F ----    IBM SCSI (Small Computer System Interface) adapter
  3081. 3550-355F ----    IBM SCSI (Small Computer System Interface) adapter
  3082. 3560-356F ----    IBM SCSI (Small Computer System Interface) adapter
  3083. 3570-357F ----    IBM SCSI (Small Computer System Interface) adapter
  3084.  
  3085. -------------------------------------------------------------------------------
  3086. 3800-38FF ----    available for EISA slot 3
  3087.  
  3088. -------------------------------------------------------------------------------
  3089. 3C00-3CFF ----    available for EISA slot 3
  3090.  
  3091. -------------------------------------------------------------------------------
  3092. 3C80-3C8F ----    VESA XGA Video in EISA slot 3
  3093.  
  3094. 3C80-3C83 r/w    EISA Video ID
  3095. 3C84    r/w    EISA Video expansion board control    
  3096. 3C85    r/w    EISA Setup control
  3097. 3C88    r/w    EISA Video Programmable Option Select 0
  3098. 3C89-3C8F r/w    EISA Video Programmable Option Select 1-7
  3099.  
  3100. SeeAlso: 1C80-1C8F,2C80-2C8F,7C80-7C8F
  3101.  
  3102. -------------------------------------------------------------------------------
  3103. 3C80-3C83    EISA board product ID (board in slot 3)
  3104.  
  3105. -------------------------------------------------------------------------------
  3106. 4000-40FF ----    available for EISA slot 4
  3107.  
  3108. -------------------------------------------------------------------------------
  3109. 4220-4227 ----    serial port, description same as 03F8
  3110. 4228-422F ----    serial port, description same as 03F8
  3111.  
  3112. -------------------------------------------------------------------------------
  3113. 42E0-42EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  3114.  
  3115. 42E1    r/w    GPIB (adapter 2)
  3116.  
  3117. -------------------------------------------------------------------------------
  3118. 42E8      ----    8514/A and hardware-compatible video cards
  3119.  
  3120. 42E8    r    Subsystem Status
  3121. 42E8    w    Subsystem Control
  3122.  
  3123. -------------------------------------------------------------------------------
  3124. 4400-44FF ----    available for EISA slot 4
  3125.  
  3126. -------------------------------------------------------------------------------
  3127. 46E8      ----    VGA video adapter enable
  3128.  
  3129. 46E8    r/w    enable flags
  3130.         bits 7-5 unused or vendor-specific
  3131.         bit 4: setup for POS registers (MCA)
  3132.         bit 3: enable video I/O ports and video buffer
  3133.         bits 2-0 unused or vendor-specific
  3134.  
  3135. Note:    IBM uses this port for adapter-card VGAs only, and port 03C3 for
  3136.       motherboard VGA only
  3137.  
  3138. SeeAlso: 03C3
  3139.  
  3140. -------------------------------------------------------------------------------
  3141. 46E8      ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3142.  
  3143. 46E8    w    ROM page select
  3144.  
  3145. -------------------------------------------------------------------------------
  3146. 4800-48FF ----    available for EISA slot 4
  3147.  
  3148. -------------------------------------------------------------------------------
  3149. 4AE8-4AEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3150.  
  3151. 4AE8    w    Advanced function control
  3152.         (02h = VGA mode, 03h = 480-line mode, 07h = 768-line mode)
  3153.  
  3154. -------------------------------------------------------------------------------
  3155. 4C00-4CFF ----    available for EISA slot 4
  3156.  
  3157. -------------------------------------------------------------------------------
  3158. 4C80-4C83    EISA board product ID (board in slot 4)
  3159.  
  3160. -------------------------------------------------------------------------------
  3161. 4C80-4C8F ----    VESA XGA Video in EISA slot 4 (see 3C80-3C8F)
  3162.  
  3163. SeeAlso: 1C80-1C8F,6C80-6C8F
  3164.  
  3165. -------------------------------------------------------------------------------
  3166. 5000-50FF ----    available for EISA slot 5
  3167.  
  3168. -------------------------------------------------------------------------------
  3169. 5220-5227 ----    serial port, description same as 03F8
  3170. 5228-522F ----    serial port, description same as 03F8
  3171.  
  3172. -------------------------------------------------------------------------------
  3173. 5400-54FF ----    available for EISA slot 5
  3174.  
  3175. -------------------------------------------------------------------------------
  3176. 5800-58FF ----    available for EISA slot 5
  3177.  
  3178. -------------------------------------------------------------------------------
  3179. 5C00-5CFF ----    available for EISA slot 5
  3180.  
  3181. -------------------------------------------------------------------------------
  3182. 5C80-5C8F ----    VESA XGA Video in EISA slot 5
  3183.  
  3184. 5C80-5C83 r/w    EISA Video ID
  3185. 5C84    r/w    EISA Video expansion board control    
  3186. 5C85    r/w    EISA Setup control
  3187. 5C88    r/w    EISA Video Programmable Option Select 0
  3188. 5C89-5C8F r/w    EISA Video Programmable Option Select 1-7
  3189.  
  3190. SeeAlso: 2C80-2C8F,4C80-4C8F,6C80-6C8F
  3191.  
  3192. -------------------------------------------------------------------------------
  3193. 5C80-5C83    EISA board product ID (board in slot 5)
  3194.  
  3195. -------------------------------------------------------------------------------
  3196. 6000-60FF ----    available for EISA slot 6
  3197.  
  3198. -------------------------------------------------------------------------------
  3199. 62E0-62EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  3200.  
  3201. 62E1    r/w    GPIB (adapter 3)
  3202.  
  3203. -------------------------------------------------------------------------------
  3204. 63C0-63CF ----    Compaq QVision - BitBLT engine
  3205.  
  3206. -------------------------------------------------------------------------------
  3207. 6400-64FF ----    available for EISA slot 6
  3208.  
  3209. -------------------------------------------------------------------------------
  3210. 6800-68FF ----    available for EISA slot 6
  3211.  
  3212. -------------------------------------------------------------------------------
  3213. 6C00-6CFF ----    available for EISA slot 6
  3214.  
  3215. -------------------------------------------------------------------------------
  3216. 6C80-6C83    EISA board product ID (board in slot 6)
  3217.  
  3218. -------------------------------------------------------------------------------
  3219. 6C80-6C8F ----    VESA XGA Video in EISA slot 1
  3220.  
  3221. 6C80-6C83 r/w    EISA Video ID
  3222. 6C84    r/w    EISA Video expansion board control    
  3223. 6C85    r/w    EISA Setup control
  3224. 6C88    r/w    EISA Video Programmable Option Select 0
  3225. 6C89-1C8F r/w    EISA Video Programmable Option Select 1-7
  3226.  
  3227. SeeAlso: 1C80-1C8F,2C80-2C8F,5C80-5C8F
  3228.  
  3229. -------------------------------------------------------------------------------
  3230. 7000-70FF ----    available for EISA slot 7
  3231.  
  3232. -------------------------------------------------------------------------------
  3233. 7400-74FF ----    available for EISA slot 7
  3234.  
  3235. -------------------------------------------------------------------------------
  3236. 7800-78FF ----    available for EISA slot 7
  3237.  
  3238. -------------------------------------------------------------------------------
  3239. 7C00-7CFF ----    available for EISA slot 7
  3240.  
  3241. -------------------------------------------------------------------------------
  3242. 7C80-7C83    EISA board product ID (board in slot 7)
  3243.  
  3244. -------------------------------------------------------------------------------
  3245. 7C80-7C8F ----    VESA XGA Video in EISA slot 7
  3246.  
  3247. 7C80-7C83 r/w    EISA Video ID
  3248. 7C84    r/w    EISA Video expansion board control    
  3249. 7C85    r/w    EISA Setup control
  3250. 7C88    r/w    EISA Video Programmable Option Select 0
  3251. 7C89-7C8F r/w    EISA Video Programmable Option Select 1-7
  3252.  
  3253. SeeAlso: 1C80-1C8F, 6C80-6C8F
  3254.  
  3255. -------------------------------------------------------------------------------
  3256. 8000-80FF ----    available for EISA slot 8
  3257.  
  3258. -------------------------------------------------------------------------------
  3259. 82E0-82EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  3260.  
  3261. 82E1    r/w    GPIB (adapter 4)
  3262.  
  3263. -------------------------------------------------------------------------------
  3264. 82E8-82EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3265.  
  3266. 82E8    w    current Y position
  3267.  
  3268. -------------------------------------------------------------------------------
  3269. 82F8-82FF ----    serial port, description same as 03F8
  3270. 83F8-83FF ----    serial port, description same as 03F8
  3271.  
  3272. -------------------------------------------------------------------------------
  3273. 83C0-83CF ----    Compaq QVision - Line Draw Engine
  3274.  
  3275. -------------------------------------------------------------------------------
  3276. 83C4      ----    Compaq Qvision EISA - Virtual Controller Select
  3277.  
  3278. -------------------------------------------------------------------------------
  3279. 83C6-83C9 ----    Compaq Qvision EISA - DAC color registers
  3280.  
  3281. -------------------------------------------------------------------------------
  3282. 8400-84FF ----    available for EISA slot 8
  3283.  
  3284. -------------------------------------------------------------------------------
  3285. 86E8-86EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3286.  
  3287. 86E8    w    current X position
  3288.  
  3289. -------------------------------------------------------------------------------
  3290. 8800-88FF ----    available for EISA slot 8
  3291.  
  3292. -------------------------------------------------------------------------------
  3293. 8AE8-8AEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3294.  
  3295. 8AE8    w    destination Y position / axial step constant
  3296.  
  3297. -------------------------------------------------------------------------------
  3298. 8C00-8CFF ----    available for EISA slot 8
  3299.  
  3300. -------------------------------------------------------------------------------
  3301. 8C80-8C83    EISA board product ID (board in slot 8)
  3302.  
  3303. -------------------------------------------------------------------------------
  3304. 8EE8-8EEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3305.  
  3306. 8EE8    w    destination X position / axial step constant
  3307.  
  3308. -------------------------------------------------------------------------------
  3309. 9000-90FF ----    available for EISA slot 9
  3310.  
  3311. -------------------------------------------------------------------------------
  3312. 92E8-92EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3313.  
  3314. 92E8    w    error term
  3315.  
  3316. -------------------------------------------------------------------------------
  3317. 9400-94FF ----    available for EISA slot 9
  3318.  
  3319. -------------------------------------------------------------------------------
  3320. 96E8-96EF ----    8514/A and hardware-compatible video cards
  3321.  
  3322. 96E8    r    Enter WD Enhanced Mode
  3323. 96E8    w    major axis pixel count
  3324.  
  3325. -------------------------------------------------------------------------------
  3326. 9800-98FF ----    available for EISA slot 9
  3327.  
  3328. -------------------------------------------------------------------------------
  3329. 9AE8h-9AE9h ----  8514/A Graphics Processor Status
  3330.  
  3331. 9AE8w    r    bit 9: hardware busy
  3332. 9AE8    w    command
  3333.  
  3334. -------------------------------------------------------------------------------
  3335. 9C00-9CFF ----    available for EISA slot 9
  3336.  
  3337. -------------------------------------------------------------------------------
  3338. 9C80-9C83    EISA board product ID (board in slot 9)
  3339.  
  3340. -------------------------------------------------------------------------------
  3341. A220      ????    soundblaster support in AMI Hi-Flex BIOS  ????
  3342.  
  3343. -------------------------------------------------------------------------------
  3344. A2E0-A2EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  3345.  
  3346. A2E1    r/w    GPIB (adapter 5)
  3347.  
  3348. -------------------------------------------------------------------------------
  3349. A2E8-A2EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3350.  
  3351. A2E8    w    background color
  3352.  
  3353. -------------------------------------------------------------------------------
  3354. A6E8-A6EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3355.  
  3356. A6E8    w    foreground color
  3357.  
  3358. -------------------------------------------------------------------------------
  3359. AAE8-AAEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3360.  
  3361. AAE8    w    write mask
  3362.  
  3363. -------------------------------------------------------------------------------
  3364. AEE8-AEEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3365.  
  3366. AEE8    w    read mask
  3367.  
  3368. -------------------------------------------------------------------------------
  3369. AFFF    r/w    plane 0-3 system latch (video register)
  3370.  
  3371. -------------------------------------------------------------------------------
  3372. B220-B227 ----    serial port, description same as 03F8
  3373. B228-B22F ----    serial port, description same as 03F8
  3374.  
  3375. -------------------------------------------------------------------------------
  3376. B2E8-B2EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3377.  
  3378. B2E8    w    color compare
  3379.  
  3380. -------------------------------------------------------------------------------
  3381. B6E8-B6EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3382.  
  3383. B6E8    w    background mix
  3384.  
  3385. -------------------------------------------------------------------------------
  3386. BAE8-BAEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3387.  
  3388. BAE8    w    foreground mix
  3389.  
  3390. -------------------------------------------------------------------------------
  3391. BEE8-BEEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3392.  
  3393. BEE8    w    multi-function control
  3394.  
  3395. -------------------------------------------------------------------------------
  3396. C008      ----    Intel Pentium motherboard ("Neptune" chipset)
  3397.  
  3398. -------------------------------------------------------------------------------
  3399. C050      ----    Intel Pentium motherboard ("Neptune" chipset)
  3400.  
  3401. C050    r/w    bit 2: ???
  3402.  
  3403. -------------------------------------------------------------------------------
  3404. C052      ----    Intel Pentium motherboard ("Neptune" chipset)
  3405.  
  3406. C052    r/???    bits 6,7: ???
  3407.  
  3408. -------------------------------------------------------------------------------
  3409. C220-C227 ----    serial port, description same as 03F8
  3410. C228-C22F ----    serial port, description same as 03F8
  3411.  
  3412. -------------------------------------------------------------------------------
  3413. C2E0-C2EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  3414.  
  3415. C2E1    r/w    GPIB (adapter 6)
  3416.  
  3417. -------------------------------------------------------------------------------
  3418. D220-D227 ----    serial port, description same as 03F8
  3419. D228-D22F ----    serial port, description same as 03F8
  3420.  
  3421. -------------------------------------------------------------------------------
  3422. E2E0-E2EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  3423.  
  3424. E2E1    r/w    GPIB (adapter 7)
  3425.  
  3426. -------------------------------------------------------------------------------
  3427. E2E8-E2EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  3428.  
  3429. E2E8    w    pixel data transfer
  3430.  
  3431. -------------------------------------------------------------------------------
  3432.  
  3433. MEMORY-MAPPED ADDRESSES
  3434.  
  3435. -------------------------------------------------------------------------------
  3436. 80C00000  Compaq Deskpro 386 system memory board register
  3437.  
  3438. 80C00000 w    RAM relocation register
  3439.         bit 7-2       Reserved, always write 1's.
  3440.         bit 1 = 0  Write-protect 128-Kbyte RAM at FE0000.
  3441.               = 1  Do not write-protect RAM at FE0000.
  3442.         bit 0 = 0  Relocate 128-Kbyte block at FE0000 to address 0E0000
  3443.               = 1  128-Kbyte RAM is addressed only at FE0000.
  3444.  
  3445. 80C00000 r    Diagnostics register
  3446.         bit 7    = 0  memory expansion board is installed
  3447.         bit 6    = 0  second 1 MB of system memory board is installed
  3448.         bit 5-4 = 00 base memory set to 640 KB
  3449.               01 invalid
  3450.               10 base memory set to 512 KB
  3451.               11 base memory set to 256 KB
  3452.         bit 3    = 0  parity error in byte 3
  3453.         bit 2    = 0  parity error in byte 2
  3454.         bit 1    = 0  parity error in byte 1
  3455.         bit 0    = 0  parity error in byte 0 (in 32-bit double word)
  3456.  
  3457. -------------------------------------------------------------------------------
  3458. C0000000-C000FFFF    Weitek "Abacus" math coprocessor
  3459.  
  3460. -------------------------------------------------------------------------------
  3461.  
  3462.  
  3463.  
  3464.  
  3465. -------------CREDITS-------------------------
  3466. Chuck Proctor <71534.2302@CompuServe.COM>
  3467. Richard W. Watson  <73042.1420@CompuServe.COM>
  3468.  
  3469. [Some of the information in this list was extracted from Frank van Gilluwe's
  3470. _The_Undocumented_PC_, a must-have book for anyone programming down to the
  3471. "bare metal" of a PC.]
  3472.  
  3473. [Some of the information in this list from the shareware version of Dave
  3474. Williams' DOSREF, v3.0]
  3475.  
  3476. [8514/A hardware ports found in FractInt v18.0 source file FR8514A.ASM]
  3477.  
  3478. [Compaq QVision info from the _COMPAQ_QVision_Graphics_System_Technical_
  3479. _Reference_Guide_, second edition (October 1993).  Compaq part number
  3480. 073A/0693.  Much more to come!]
  3481.