home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / dos / tools / inter47 / ports.lst < prev    next >
File List  |  1995-08-13  |  203KB  |  5,269 lines

  1. PORT LIST            Release 47        Last Change: 8/13/95
  2. [This file was provided by Wim Osterholt (2:512/56 or wim@djo.wtm.tudelft.nl).]
  3.  
  4.         XT, AT and PS/2     I/O port addresses
  5.  
  6.       Do NOT consider this information as complete and accurate.
  7.       If you want to do hardware programming ALWAYS check the
  8.       appropriate data sheets. Be aware that erroneously programming
  9.       can put your hardware or your data at risk. 
  10.  
  11.       There are a few memory mapped addresses in use for I/O functions which
  12.       are listed at the end of this file; see MEMORY.LST for memory-mapped
  13.       I/O accessible from real mode.
  14.  
  15. ---------------------------------------------
  16.  New Format:
  17.  
  18. PPPPw RW  description
  19.  
  20. where:    PPPP    is the four-digit hex port number
  21.     w    is blank for byte-size port, 'w' for word, and 'd' for dword
  22.     R    is blank if not readable, 'r' if sometimes readable, 'R' if
  23.         "always" readable, '?' if readability unknown
  24.     W    is blank if not writable, 'w' if sometimes writable, 'W' if
  25.         "always" writable, '?' if writability unknown
  26. [Note: I have not yet completed the format conversion; the heading lines
  27.  will be changed to a form similar to that used by the main list in INTER48:
  28. PORT 0000-001F - DMA 1 - FIRST DIRECT MEMORY ACCESS CONTROLLER (8237)
  29.  and
  30. PORT 0018 - PS/2 - EXTENDED FUNCTION REGISTER]
  31. ----------P0000001F--------------------------
  32. 0000-001F ----    DMA 1    (first Direct Memory Access controller 8237)
  33.  
  34. 0000  RW  DMA channel 0     address byte  0, then byte 1.
  35. 0001  RW  DMA channel 0 word count byte 0, then byte 1.
  36. 0002  RW  DMA channel 1     address byte  0, then byte 1.
  37. 0003  RW  DMA channel 1 word count byte 0, then byte 1.
  38. 0004  RW  DMA channel 2     address byte  0, then byte 1.
  39. 0005  RW  DMA channel 2 word count byte 0, then byte 1.
  40. 0006  RW  DMA channel 3     address byte  0, then byte 1.
  41. 0007  RW  DMA channel 3 word count byte 0, then byte 1.
  42.  
  43. 0008  R      DMA channel 0-3 status register (see #P001)
  44. 0008   W  DMA channel 0-3 command register (see #P002)
  45. 0009   W  DMA channel 0-3 write request register (see #P003)
  46. 000A  RW  DMA channel 0-3 mask register (see #P004)
  47. 000B   W  DMA channel 0-3 mode register (see #P005)
  48.  
  49. 000C   W  DMA clear byte pointer flip-flop
  50. 000D  R      DMA read temporary register
  51. 000D   W  DMA master clear
  52. 000E   W  DMA clear mask register
  53. 000F   W  DMA write mask register
  54.  
  55. Bitfields for DMA channel 0-3 status register:
  56. Bit(s)    Description    (Table P001)
  57.  7    channel 3 request active
  58.  6    channel 2 request active
  59.  5    channel 1 request active
  60.  4    channel 0 request active
  61.  3    channel terminal count on channel 3
  62.  2    channel terminal count on channel 2
  63.  1    channel terminal count on channel 1
  64.  0    channel terminal count on channel 0
  65. SeeAlso: #P002,#P059
  66.  
  67. Bitfields for DMA channel 0-3 command register:
  68. Bit(s)    Description    (Table P002)
  69.  7    DACK sense active high
  70.  6    DREQ sense active high
  71.  5    =1 extended write selection
  72.     =0 late write selection
  73.  4    rotating priority instead of fixed priority
  74.  3    compressed timing
  75.  2    =1 enable controller
  76.     =0 enable memory-to-memory
  77.  1-0    channel number
  78. SeeAlso: #P001,#P004,#P005,#P060
  79.  
  80. Bitfields for DMA channel 0-3 request register:
  81. Bit(s)    Description    (Table P003)
  82.  7-3    reserved (0)
  83.  2    =0 clear request bit
  84.     =1 set request bit
  85.  1-0    channel number
  86.     00 channel 0 select
  87.     01 channel 1 select
  88.     10 channel 2 select
  89.     11 channel 3 select
  90. SeeAlso: #P004
  91.  
  92. Bitfields for DMA channel 0-3 mask register:
  93. Bit(s)    Description    (Table P004)
  94.  7-3    reserved (0)
  95.  2    =0 clear mask bit
  96.     =1 set mask bit
  97.  1-0    channel number
  98.     00 channel 0 select
  99.     01 channel 1 select
  100.     10 channel 2 select
  101.     11 channel 3 select
  102. SeeAlso: #P001,#P002,#P003,#P061
  103.  
  104. Bitfields for DMA channel 0-3 mode register:
  105. Bit(s)    Description    (Table P005)
  106.  7-6    transfer mode
  107.     00 demand mode
  108.     01 single mode
  109.     10 block mode
  110.     11 cascade mode
  111.  5    direction
  112.     =0 address increment select
  113.     =1 address decrement select
  114.  3-2    operation
  115.     00 verify operation
  116.     01 write to memory
  117.     10 read from memory
  118.     11 reserved
  119.  1-0    channel number
  120.     00 channel 0 select
  121.     01 channel 1 select
  122.     10 channel 2 select
  123.     11 channel 3 select
  124. SeeAlso: #P002,#P062
  125. ----------P0010001F--------------------------
  126. 0010-001F ----    DMA controller (8237) on PS/2 model 60 & 80
  127. ----------P0018------------------------------
  128. 0018      ----    PS/2 EXTENDED FUNCTION REGISTER
  129.  
  130. 0018   W  PS/2 extended function register
  131. ----------P001A------------------------------
  132. 001A      ----    PS/2 extended function execute
  133. ----------P0020003F--------------------------
  134. 0020-003F ----    PIC 1    (Programmable Interrupt Controller 8259A)
  135. SeeAlso: PORT 00A0h-00AFh"PIC 2",INT 08"IRQ0",INT 0F"IRQ7"
  136.  
  137. 0020   W  PIC initialization command word ICW1 (see #P006)
  138. 0020   W  PIC output control word OCW2 (see #P011)
  139. 0020   W  PIC output control word OCW3 (see #P012)
  140. 0020  R      PIC  interrupt request/in-service registers after 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. 0021   W  PIC ICW2,ICW3,ICW4 immed after ICW1 to 0020 (see #P007,#P008,#P009)
  149. 0021  RW  PIC master interrupt mask register OCW1 (see #P010)
  150.  
  151. Bitfields for PIC initialization command word ICW1:
  152. Bit(s)    Description    (Table P006)
  153.  7-5    0 (only used in 8080/8085 mode)
  154.  4    ICW1 is being issued
  155.  3    (LTIM)
  156.     =0  edge triggered mode
  157.     =1  level triggered mode
  158.  2    interrupt vector size
  159.     =0 successive interrupt vectors use 8 bytes (8080/8085)
  160.     =1 successive interrupt vectors use 4 bytes (80x86)
  161.  1    (SNGL)
  162.     =0  cascade mode
  163.     =1  single mode, no ICW3 needed
  164.  0    ICW4 needed
  165. SeeAlso: #P007,#P008,#P009
  166.  
  167. Bitfields for PIC initialization command word ICW2:
  168. Bit(s)    Description    (Table P007)
  169.  7-3    address lines A0-A3 of base vector address for PIC
  170.  2-0    reserved
  171. SeeAlso: #P006,#P008,#P009
  172.  
  173. Bitfields for PIC initialization command word ICW3:
  174. Bit(s)    Description    (Table P008)
  175.  7-0    =0 slave controller not attached to corresponding interrupt pin
  176.     =1 slave controller attached to corresponding interrupt pin
  177. SeeAlso: #P006,#P007,#P009
  178.  
  179. Bitfields for PIC initialization command word ICW4:
  180. Bit(s)    Description    (Table P009)
  181.  7-5    reserved (0)
  182.  4    running in special fully-nested mode
  183.  3-2    mode
  184.     0x nonbuffered mode
  185.     10 buffered mode/slave
  186.     11 buffered mode/master
  187.  1    Auto EOI
  188.  0    =0  8085 mode
  189.     =1  8086/8088 mode
  190. SeeAlso: #P006,#P007,#P008
  191.  
  192. Bitfields for PIC output control word OCW1:
  193. Bit(s)    Description    (Table P010)
  194.  7    disable IRQ7 (parallel printer interrupt)
  195.  6    disable IRQ6 (diskette interrupt)
  196.  5    disable IRQ5 (fixed disk interrupt)
  197.  4    disable IRQ4 (serial port 1 interrupt)
  198.  3    disable IRQ3 (serial port 2 interrupt)
  199.  2    disable IRQ2 (video interrupt)
  200.  1    disable IRQ1 (keyboard, mouse, RTC interrupt)
  201.  0    disable IRQ0 (timer interrupt)
  202. SeeAlso: #P011,#P012,#P058
  203.  
  204. Bitfields for PIC output control word OCW2:
  205. Bit(s)    Description    (Table P011)
  206.  7-5    operation
  207.     000 rotate in auto EOI mode (clear)
  208.     001 (WORD_A) nonspecific EOI
  209.     010 (WORD_H) no operation
  210.     011 (WORD_B) specific EOI
  211.     100 (WORD_F) rotate in auto EOI mode (set)
  212.     101 (WORD_C) rotate on nonspecific EOI command
  213.     110 (WORD_E) set priority command
  214.     111 (WORD_D) rotate on specific EOI command
  215.  4    reserved (0)
  216.  3    reserved (0)
  217.  2-0    interrupt request to which the command applies
  218.     (only used by WORD_B, WORD_D, and WORD_E)
  219. SeeAlso: #P010,#P012
  220.  
  221. Bitfields for PIC output control word OCW3:
  222. Bit(s)    Description    (Table P012)
  223.  7    reserved (0)
  224.  6-5    special mask
  225.     0x  no operation
  226.     10  reset special mask
  227.     11  set special mask
  228.  4    reserved (0)
  229.  3    reserved (1)
  230.  2    poll command
  231.  1-0    function
  232.     0x  no operation
  233.     10  read interrupt request register on next read from port 0020
  234.     11  read interrupt in-service register on next read from port 0020
  235. SeeAlso: #P010,#P011
  236. ----------P00220023--------------------------
  237. 0022-0023 ----    Chip Set Data
  238.  
  239. 0022   W  index for accesses to data port
  240. 0023  RW  chip set data
  241. ----------P00220023--------------------------
  242. 0022-0023 ----    Cyrix Cx486SLC/DLC processor Cache Configuration Registers
  243.  
  244. 0022   W  index for accesses to next port (see #P013)
  245. 0023  RW  cache configuration register array (indexed by port 0022h)
  246.  
  247. (Table P013)
  248. Values for Cyrix Cx486SLC/DLC Cache Configuration register number:
  249.  C0h    CR0 (see #P015)
  250.  C1h    CR1 (see #P016)
  251.  C4h    non-cacheable region 1, start address bits 31-24
  252.  C5h    non-cacheable region 1, start address bits 23-16
  253.  C6h    non-cacheable region 1, start addr 15-12, size (low nibble) (see #P014)
  254.  C7h    non-cacheable region 2, start address bits 31-24
  255.  C8h    non-cacheable region 2, start address bits 23-16
  256.  C9h    non-cacheable region 2, start addr 15-12, size (low nibble) (see #P014)
  257.  CAh    non-cacheable region 3, start address bits 31-24
  258.  CBh    non-cacheable region 3, start address bits 23-16
  259.  CCh    non-cacheable region 3, start addr 15-12, size (low nibble) (see #P014)
  260.  CDh    non-cacheable region 4, start address bits 31-24
  261.  CEh    non-cacheable region 4, start address bits 23-16
  262.  CFh    non-cacheable region 4, start addr 15-12, size (low nibble) (see #P014)
  263.  
  264. (Table P014)
  265. Values for Cyrix Cx486SLC/DLC non-cacheable region sizes:
  266.  00h    disabled
  267.  01h    4K
  268.  02h    8K
  269.  03h    16K
  270.  04h    32K
  271.  05h    64K
  272.  06h    128K
  273.  07h    256K
  274.  08h    512K
  275.  09h    1M
  276.  0Ah    2M
  277.  0Bh    4M
  278.  0Ch    8M
  279.  0Dh    16M
  280.  0Eh    32M
  281.  0Fh    4G
  282. SeeAlso: #P013
  283.  
  284. Bitfields for Cyrix Cx486SLC/DLC Configuration Register 0:
  285. Bit(s)    Description    (Table P015)
  286.  0    "NC0" first 64K of each 1M noncacheable in real/V86
  287.  1    "NC1" 640K-1M noncacheable
  288.  2    "A20M" enables A20M# input pin
  289.  3    "KEN"  enables KEN# input pin
  290.  4    "FLUSH" enables KEN# input pin
  291.  5    "BARB" enables internal cache flushing on bus holds
  292.  6    "C0" cache direct-mapped instead of 2-way associative
  293.  7    "SUSPEND" enables SUSP# input and SUSPA# output pins
  294. SeeAlso: #P013,#P016
  295.  
  296. Bitfields for Cyrix Cx486SLC/DLC Configuration Register 1:
  297. Bit(s)    Description    (Table P016)
  298.  0    "RPL" enables output pins RPLSET and RPLVAL#
  299. SeeAlso: #P013,#P015
  300. ----------P00220023--------------------------
  301. 0022-0023 ----    82359 DRAM controller  from 82358DT 'Mongoose' EISA chipset
  302. Notes:    this chip uses a chip ID of 01
  303.     the LIM register herein use a chip ID of 1A
  304.  
  305. 0022   W  index for accesses to data port (see #P017)
  306. 0023  RW  chip set data
  307.  
  308. (Table P017)
  309. Values for 82359 DRAM contrroller register index:
  310.  00h    bank 0
  311.     bit 7    unknown
  312.     bit 6-4    000 DRAM in bank 0 (standard)
  313.         001 bank 1
  314.         010 bank 2
  315.         011 bank 3
  316.         100 banks 0,1
  317.         101 banks 2,3
  318.         110 banks 0,1,2,3
  319.         111 empty (standard for 1,2,3)
  320.     bit 3-2    unknown
  321.     bit 1-0    00 64K chips used
  322.         01 256K
  323.         10 1M
  324.         11 4M
  325.  01h    bank 1
  326.  02h    bank 2
  327.  03h    bank 3
  328.  21h    chip ID register
  329. ----------P00220023--------------------------
  330. 0022-0023 ----    chipset from Etec Cheetah ET6000 (single chip)
  331.  
  332. 0022  RW  chip set data
  333. 0023  ?W  index for accesses to data port (see #P018)
  334.  
  335. (Table P018)
  336. Values for Etec Cheetah ET6000 chip set register index:
  337.  10h    system configuration register (see #P019)
  338.  11h    cache configuration & non-cacheable block size register (see #P020)
  339.  12h    non-cacheable block address register
  340.     bit 7-1    non-cacheable address, A25-A19
  341.     bit 0    reserved
  342.  13h    DRAM bank & type configuration register (see #P021)
  343.  14h    DRAM configuration register (see #P022)
  344.  15h    shadow RAM configuration register (see #P023)
  345.  
  346. Bitfields for Etec Cheetah ET6000 system configuration register:
  347. Bit(s)    Description    (Table P019)
  348.  7-6    00 turbo/non-turbo
  349.     01 local device supported
  350.     10 suspend mode
  351.     11 illegal
  352.  5    reserved
  353.  4    refresh selection
  354.     0 = AT type refresh
  355.     1 = concurrent refresh
  356.  3    slow refresh  95mSec enabled
  357.  2    fast reset delay
  358.     0 = do not use delay
  359.     1 = wait for 2mSec delay
  360.  1    wait for HALT after KBDRST
  361.  0    RAM at A0000-BFFFF
  362.     0 = AT bus cycle
  363.     1 = local bus cycle
  364. SeeAlso: #P018
  365.  
  366. Bitfields for Etec Cheetah ET6000 cache configuration register:
  367. Bit(s)    Description    (Table P020)
  368.  7-5    000 disabled
  369.     001 512K
  370.     010 1M
  371.     011 2M
  372.     100 4M
  373.     101 8M
  374.     110 16M
  375.     111 32M
  376.  4    DRAM banks
  377.     0 = 2-bank DRAM
  378.     1 = 4-bank DRAM
  379.  3-0    reserved
  380. SeeAlso: #P018
  381.  
  382. Bitfields for Etec Cheetah ET6000 DRAM bank & type configuration register:
  383. Bit(s)    Description    (Table P021)
  384.  7-6    bank 3 DRAM type
  385.     00 none
  386.     01 256K
  387.     10 1M
  388.     11 4M
  389.  5-4    bank 2 DRAM type
  390.  3-2    bank 1 DRAM type
  391.  1-0    bank 0 DRAM type
  392. SeeAlso: #P018
  393.  
  394. Bitfields for Etec Cheetah ET6000 DRAM configuration register:
  395. Bit(s)    Description    (Table P022)
  396.  7    on-board memory range 15M to 16M disabled
  397.  6    on-board memory range 512K-640K disabled
  398.  5    ROM chip select at C0000-DFFFF enabled
  399.  4    RAS to CAS time
  400.     0 = 1 SYSCLCK,    not for R0WS
  401.     1 = 2 SYSCLCK
  402.  3    RAS precharge time
  403.     0 = 1.5 SYSCLCK
  404.     1 = 2.5 SYSCLCK
  405.  2-1    read cycle wait state
  406.     00 = 0 wait state
  407.     01 = 1 ws
  408.     10 = 2 ws
  409.     11 = 3 ws
  410.  0    write cycle wait state
  411.     0 = 0 ws
  412.     1 = 1 ws
  413. SeeAlso: #P018
  414.  
  415. Bitfields for Etec Cheetah ET6000 shadow RAM configuration register:
  416. Bit(s)    Description    (Table P023)
  417.  7    shadow at C0000-FFFFF
  418.     0 = non-cacheable
  419.     1 = cacheable and cache-write-proteced
  420.  6    access ROM/RAM at F0000-FFFFF
  421.     0 = read from ROM, write to RAM
  422.     1 = read from shadow, write is protected
  423.  5    access ROM/RAM at E0000-EFFFF
  424.     0 = access on-board ROM, AT bus cycle
  425.     1 = access shadow E0000-EFFFF enabled
  426.  4    RAM at E0000-EFFFF is read-only
  427.  3    access ROM/RAM at D0000-DFFFF
  428.     0 = access on-board ROM, AT bus cycle
  429.     1 = access shadow D0000-DFFFF enabled
  430.  2    RAM at D0000-DFFFF is read-only
  431.  1    access ROM/RAM at C0000-CFFFF
  432.     0 = access on-board ROM, AT bus cycle
  433.     1 = access shadow C0000-CFFFF enabled
  434.  0    RAM at C0000-CFFFF is read-only
  435. SeeAlso: #P018
  436. ----------P00220024--------------------------
  437. 0022-0024 ----    chipset from Pico Power, UMC or PCChips
  438.  
  439. 0022  ?W  index for accesses to data port
  440. 0024  RW  chip set data
  441. ----------P00220025--------------------------
  442. 0022-0025 ----    Intel 82360SL Chipset (for 386SL)
  443.  
  444. 0022   W  CPU write mode register
  445. 0023  R      configuration status register
  446.         bit 7: 82360 configuration is open
  447. 0024   W  82360 configuration index
  448. 0025  RW  82360 configuration data
  449.  
  450. Bitfields for Intel 82360SL CPU write mode register:
  451. Bit(s)    Description    (Table P024)
  452.  0    unlock configuration space
  453.  1    enable selected unit
  454.  3-2    unit
  455.     00 memory configuration
  456.     01 cache
  457.     10 internal bus
  458.     11 external bus
  459. ----------P0022002B--------------------------
  460. 0022-002B ----    Intel 82355, part of chipset for 386sx
  461. Note:    initialisation in POST will disable these addresses, only a hard
  462.       reset will enable them again.
  463.  
  464. 0022w RW  82335 MCR memory configuration register (if LOCK=0) (see #P025)
  465. 0024w RW  82335 RC1 roll compare register (if LOCK=0) (see #P026)
  466. 0026w RW  82335 RC2 roll compare register (if LOCK=0) (see #P026)
  467. 0028w RW  82335 CC0 address range compare register (if LOCK=0) (see #P027)
  468. 002Aw RW  82335 CC1 address range compare register (if LOCK=0) (see #P027)
  469.  
  470. Bitfields for 82335 MCR memory configuration register:
  471. Bit(s)    Description    (Table P025)
  472.  15-12    reserved
  473.  11    "VRO"    video read only (0=r/w, 1=r/o)
  474.  10    "EN#"
  475.     0=enable video RAM accesses (A0000h-8FFFFh)
  476.     1=disable accesses
  477.  9    "ENADP#"
  478.     0=enable adapter ROM accesses (C0000h-8FFFFh)
  479.     1=disable adapter ROM accesses, shadow enabled
  480.  8    "ROMSIZE" 0=256KB ROM, 1=512KB ROM
  481.  7-6    "INTERL" memory interleaving
  482.     00 = 1 memory bank installed (no interleave)
  483.     01 = 2 memory banks installed
  484.     10 = 3 memory banks installed
  485.     11 = 4 memory banks installed
  486.  5    reserved
  487.  4    "DSIZE"     0=1MBx1DRAMs, 1=256KBx1 or 256KBx4 DRAMs
  488.  3    "S640"     base memory size is 0=512KB, 1=640KB
  489.  2-1    reserved
  490.  0    "ROMEN#" ROM enable
  491.     0 enable BIOS ROM accesses (E0000h-FFFFFh)
  492.     1 disable BIOS ROM accesses, enable shadow
  493. Note:    One of the remaining reserved bits is the LOCK bit, which will be set
  494.       during power on, disabling access to the 82335s registers.
  495.  
  496. Bitfields for 82335 roll compare register:
  497. Bit(s)    Description    (Table P026)
  498.  15-9    selects address range to be remapped (C23-C17)
  499.  8    reserved
  500.  7-1    selects address bits to be included in re-mapping comparision (M23-M17)
  501.  0    "EN" enables roll address mapping
  502.  
  503. Bitfields for 82335 address range compare register:
  504. Bit(s)    Description    (Table P027)
  505.  15-11    specifies top of address range (C23-C19)
  506.  10-8    reserved
  507.  7-3    selects address bits to be included in address range comparision
  508.       (M23-M19)
  509.  2-1    reserved
  510.  0    "EN" enable address range comparision
  511. ----------P00240028--------------------------
  512. 0024-0028 ---- Headland HTK340 Shasta 386/486 Chipset
  513.  
  514. 0024  Rw  data port
  515. 0028  ?W  index port to chipset registers (see #P028,#P029)
  516.  
  517. (Table P028)
  518. Values for Headland HT321 register index:
  519.  00h R    chip/revision,read-only
  520.       bit7-4: reserved (=0)
  521.       bit3-0: chip revision, 0=A, 1=B, 3=D
  522.  01h RW system clocking (default=00h)
  523.       bit7-4: reserved (=0)
  524.       bit3-0: ISA speed set
  525.  02h RW system parameters (default=00h)
  526.       bit7-6: IO recovery time (rev. D+)
  527.       bit5    : parity override
  528.       bit4-3: cycle-width
  529.       bit2    : 0/1 port 92 functionality
  530.       bit1    : IO decode
  531.       bit0    : 0/1 posted backplane MEMWN cycles
  532.  04h RW co-processor (default=00h)
  533.       bit7-3: reserved (=0)
  534.       bit2=1: soft-NPU reset blocked (386 only)
  535.       bit1=1: weitek installed
  536.       bit0=1: 387 installed
  537.  06h RW DMA (default=00h)
  538.       bit7    : reserved (=0)
  539.       bit6    : 1/0 IOCHRDY during master cycle (rev. C+)
  540.       bit5    : 0/1 fast sample DMA
  541.       bit4-3: DMA waitstate 00b=3 .. 11b=0
  542.       bit2    : 0/1 DMA flow-through mode
  543.       bit1    : 0/1 extended DMA page register
  544.       bit0    : DMA clock
  545.  07h RW EPROM (default=00h)
  546.       bit7-6: reserved (=0)
  547.       bit5    : 0/1 EADS CACHE invalidation for EPROM writes (rev. D+)
  548.       bit4    : 0/1 ROMEN for EPROM writes (rev. C+)
  549.       bit3    : 0/1 middle BIOS region of 64KB space below 16MB
  550.       bit2    : ROM-size (0=64KB, 1=128KB)
  551.       bit1    : V-BIOS-add (0=separate, 1=same device)
  552.       bit0    : ROM-access time (0=250ns, 1=125ns)
  553.  08h RW I/O and memory map holes (default=00h)
  554.       bit7-4: reserved (=0)
  555.       bit3    : 0/1 I/O map hole-A
  556.       bit2    : reserved (=0)
  557.       bit1    : 0/1 memory map hole-B
  558.       bit0    : reserved (=0)
  559.  10h RW hole-A low address (default=00h)
  560.  11h RW hole-A high address (default=00h)
  561.  19h RW mem hole-B start address, lower (default=00h)
  562.  1Ah RW mem hole-B start address, higher (default=00h)
  563.       bit7-6: reserved (=0)
  564.       bit5-0: address of mem hole-B start
  565.  1Ch RW mem hole-B end address, lower (default=00h)
  566.  1Dh RW mem hole-B end address, higher (default=00h)
  567.       bit7-6: reserved (=0)
  568.       bit5-0: address of mem hole-B end
  569. SeeAlso: #P029
  570.  
  571. (Table P029)
  572. Values for Headland HT342 register index:
  573.  20h R    identifier port read
  574.       bit7-4: DRAM controller identifier (0010b)
  575.       bit3-0: revision number (0=A)
  576.  21h R    feature port read    (default=00h)
  577.  24h RW DRAM options port #1 (default=00h)
  578.       bit7    : 0/1 staggered refresh
  579.       bit6    : refresh type
  580.       bit5    : 0/1 DRAM paging
  581.       bit4-2: CAS interleave
  582.       bit1-0: banks
  583.  25h    DRAM options port #2 (default=00h)
  584.       bit7-6: DRAM bank 1 type
  585.       bit5-4: DRAM bank 2 type
  586.       bit3-2: DRAM bank 1?? type
  587.       bit1-0: DRAM bank 0 type
  588.  26h RW DRAM options port #3 (default=FFh)
  589.       bit7    : CAS hold on RAS (CAS before RAS refresh)
  590.       bit6    : CAS precharge
  591.       bit5    : CAS burst delay
  592.       bit4    : CAS delay (writes)
  593.       bit3    : CAS delay (reads)
  594.       bit2    : CAS active time (writes)
  595.       bit1-0: CAS active time (reads)
  596.  27h RW DRAM options port #4 (default=FFh)
  597.       bit7    : RAS delay
  598.       bit6-5: RAS active (writes)
  599.       bit4-2: RAS active (reads)
  600.       bit1-0: RAS precharge
  601.  28h RW data transfer control port (default=00h)
  602.     doubled indexed registers (28h-2Ah)
  603.       bit7    : initiate transfer
  604.       bit6    : read/write transfer
  605.       bit5-4: reserved
  606.       bit3-0: transfer/destination
  607.  29h RW RAM address register (default=00h)
  608.     doubled indexed registers (28h-2Ah)
  609.       bit7-5: reserved
  610.       bit4-0: RAM address registers contents
  611.  2Ah RW data transfer port   (default=00h)
  612.     doubled indexed registers (28h-2Ah)
  613.       bit7-6: reserved
  614.       bit5    : EMS translation
  615.       bit4    : reserved
  616.       bit3    : 0/1 cacheing
  617.       bit2    : 0/1 write
  618.       bit1    : 0/1 read
  619.       bit0    : 0/1 shadow
  620.  2Bh RW other options          (default=00h)
  621.       bit7    : reserved
  622.       bit6    : 0/1 middle BIOS
  623.       bit5    : 0/1 data pipeline
  624.       bit4    : 0/1 data pipeline
  625.       bit3    : IO-decode
  626.       bit2    : reserved
  627.       bit1    : 16bit DMA bridge
  628.       bit0    : 0/1 write buffering
  629.  2Dh RW DRAM options port #5 (default=03h)
  630.       bit7-5: reserved
  631.       bit4    : 0/1 10µs RAS timeout
  632.       bit3-2: BUS speed
  633.       bit1-0: BUS recovery for DRAM cycles
  634.            00b=0: 4-1-1-1    10b=0.5
  635.            01b=1: 4-2-2-2    11b=1??
  636.  82h    read transfer
  637.  C2h    write transfer
  638. SeeAlso: #P028
  639. ----------P00260027--------------------------
  640. 0026-0027 ----    Power Management
  641.  
  642. 0026   W  index for data port
  643. 0027  RW  power management data
  644. ----------P002E002F--------------------------
  645. 002E-002F ----    Dell Enhanced Parallel Port
  646. SeeAlso: 015C, 026E, 0398
  647.  
  648. 002E   W  index for data port (see #P030)
  649. 002F  RW  EPP command data
  650.  
  651. (Table P030)
  652. Values for Dell Enhanced Parallel Port register index:
  653.  00h    bit 0: ???
  654.  02h    bit 7: port in bidirectional mode
  655.  04h    bits 0 and 2: ECP/EPP mode control
  656. ----------P0038003F--------------------------
  657. 0038-003F ----    PC radio by CoZet Info Systems
  658.         The I/O address range is dipswitch selectable from:
  659.            038-03F and 0B0-0BF
  660.            078-07F and 0F0-0FF
  661.            138-13F and 1B0-1BF
  662.            178-17F and 1F0-1FF
  663.            238-23F and 2B0-2BF
  664.            278-27F and 2F0-2FF
  665.            338-33F and 3B0-3BF
  666.            378-37F and 3F0-3FF
  667.         All of these addresses show a readout of FF in initial state.
  668.         Once started, all of the addresses show     FB, whatever might
  669.         happen.
  670. ----------P0040005F--------------------------
  671. 0040-005F ----    PIT  (Programmable Interval Timer  8253, 8254)
  672.          XT & AT uses 40-43    PS/2 uses 40, 42,43,44, 47
  673.  
  674. 0040  RW  PIT  counter 0, counter divisor          (XT, AT, PS/2)
  675. 0041  RW  PIT  counter 1, RAM refresh counter    (XT, AT)
  676.             don't set below 3 on PCs (default 12h)
  677. 0042  RW  PIT  counter 2, cassette & speaker    (XT, AT, PS/2)
  678.     During normal operation mode (8253) 40h-42h set the counter values on
  679.     write and get the current counter value on read. In 16bit modes two
  680.     consequtive writes/reads must be issued, first with the low byte,
  681.     followed by the high byte. In 8254 read back modes, all selected
  682.     counters and status are latched and must be read out completely
  683.     before normal operation is valid again.     Each counter switches back
  684.     to normal operation after read out.  In 'get status and counter'
  685.     mode the first byte read is the status, followed by one or two
  686.     counter values. (see #P031)
  687. 0043  RW  PIT  mode port, control word register for counters 0-2 (see #P032)
  688.     Once a control word has been written (43h), it must be followed
  689.     immediately by performing the corresponding action to the counter
  690.     registers (40h-42h), else the system may hang!!
  691. 0044  RW  PIT  counter 3 (PS/2, EISA)
  692.         used as fail-safe timer. generates an NMI on time out.
  693.         for user generated NMI see at 0462.
  694. 0047   W  PIT  control word register counter 3 (PS/2, EISA)
  695.          bit 7-6 = 00  counter 3 select
  696.              = 01  reserved
  697.              = 10  reserved
  698.              = 11  reserved
  699.          bit 5-4 = 00  counter latch command counter 3
  700.              = 01  read/write counter bits 0-7 only
  701.              = 1x  reserved
  702.          bit 3-0 = 00
  703. 0048      EISA
  704. 0049      8254 timer 2, not used (counter 1)
  705. 004A      EISA programmable interval timer 2
  706. 004B      EISA programmable interval timer 2
  707.  
  708. Bitfields for 8254 PIT counter status byte:
  709. Bit(s)    Description    (Table P031)
  710.  7    PIN status of OUTx Pins (1=high, 0=low)
  711.  6    counter start value loaded
  712.     =0: yes, so counter latch is valid to be read
  713.     =1: no, wait for counter latch to be set (may last a while)
  714. 5-0    counter mode, same as bit5-0 at 43h
  715. SeeAlso: #P032
  716.  
  717. Bitfields for 8253/8254 PIT mode control word:
  718. Bit(s)    Description    (Table P032)
  719.  7-6    counter select
  720.     00  counter 0 select
  721.     01  counter 1 select      (not PS/2)
  722.     10  counter 2 select
  723.     11  (8253) reserved
  724.         (8254) read back counter (see #P031)
  725. ---if counter select---
  726.  5-4    counter access
  727.     00  counter latch command
  728.     01  read/write counter bits 0-7 only
  729.     10  read/write counter bits 8-15 only
  730.     11  read/write counter bits 0-7 first, then 8-15
  731.  3-1    counter mode
  732.     000 mode 0 select - zero detection interrupt
  733.     001 mode 1 select - programmable one shot
  734.     x10 mode 2 select - rate generator
  735.     x11 mode 3 select - square wave generator
  736.         divisor factor 3 not allowed!
  737.     100 mode 4 select - software triggered strobe
  738.     101 mode 5 select - hardware triggered strobe
  739.  0    counting style
  740.     0  binary counter 16 bits
  741.     1  BCD counter (4 decades)
  742. ---if read back---
  743.  5-4    what to read
  744.     00 reserved
  745.     01 counter status
  746.     10 counter value
  747.     11 counter status and value
  748.  3    select counter 2
  749.  2    select counter 1
  750.  1    select counter 0
  751.  0    reserved (0)
  752. Note:    after issuing a read back 'get status' command, any new read back
  753.       command is ignored until the status is read from all selected
  754.       counters.
  755. ----------P0060006F--------------------------
  756. 0060-006F ----    KEYBOARD CONTROLLER 804x (8041, 8042)  (or PPI (8255) on PC,XT)
  757. Note:    XT uses 60-63, AT uses 60-64
  758.  
  759. 0060  RW  KB controller data port or keyboard input buffer (ISA, EISA)
  760.         should only be read from after status port bit0 = 1
  761.         should only be written to if status port bit1 = 0
  762. 0060  R      KeyBoard or KB controller data output buffer (via PPI on XT)
  763.         PC: input from port A of 8255, if bit7 in 61h set (see #P045)
  764.         get scancodes, special codes (in PC: with bit7 in 61h cleared)
  765.           (see #P040)
  766.  
  767. 0061  R      KB controller port B control register (ISA, EISA)
  768.         system control port for compatibility with 8255 (see #P042)
  769. 0061   W  KB controller port B (ISA, EISA)   (PS/2 port A is at 0092)
  770.         system control port for compatibility with 8255 (see #P041)
  771. 0061   W  PPI Programmable Peripheral Interface 8255 (XT only)
  772.         system control port (see #P043)
  773. 0062  RW  PPI (XT only) data port C (see #P044)
  774. 0063  RW  PPI (XT only) command mode register (see #P046)
  775.  
  776. 0064  R      keyboard controller read status (see #P047,#P048,#P049)
  777. 0064   W  keyboard controller input buffer (ISA, EISA) (see #P050)
  778.  
  779. 0064   W  (Amstrad/Schneider PC1512) set 'DIP switch S1' setting
  780.       stored in CMOS RAM that PPI should report for compatibility
  781. 0065   W  (Amstrad/Schneider PC1512) set 'DIP switch S2' RAM size setting
  782.       stored in CMOS RAM, that PPI port C (PORT 0064h) should report for
  783.       compatibility
  784.  
  785. 0065  R      communications port (Olivetti M24)
  786.  
  787. 0068   W  (HP-Vectra) control buffer (HP commands) (see #P051)
  788. 0069  R      (HP-Vectra) SVC (keyboard request SerViCe port)
  789. 006A   W  (HP-Vectra) Acknowledge (clear processing, done)
  790. 006C-006F    HP-HIL    (Human Interface Link = async. serial inputs 0-7)
  791.  
  792. Bitfields for AT keyboard controller input port:
  793. Bit(s)    Description    (Table P033)
  794.  7    =0  keyboard inhibited
  795.  6    =0  CGA, else MDA
  796.  5    =0  manufacturing jumper installed
  797.  4    =0  system RAM 512K, else 640K
  798.  3-0    reserved
  799. SeeAlso: #P034,#P036
  800.  
  801. Bitfields for AT keyboard controller input port (Compaq):
  802. Bit(s)    Description    (Table P034)
  803.  7    security lock is unlocked
  804.  6    =0  Compaq dual-scan display, 1=non-Compaq display
  805.  5    system board dip switch 5 is OFF
  806.  4    =0  auto speed selected, 1=high speed selected
  807.  3    =0  slow (4MHz), 1 = fast (8MHz)
  808.  2    no math coprocessor installed
  809.  1-0    reserved
  810. SeeAlso: #P035
  811.  
  812. Bitfields for AT keyboard controller output port:
  813. Bit(s)    Description    (Table P035)
  814.  7    keyboard data output
  815.  6    keyboard clock output
  816.  5    input buffer NOT full
  817.  4    output buffer NOT empty
  818.  3    reserved (see note)
  819.  2    reserved (see note)
  820.  1    gate A20
  821.  0    system reset
  822. Note:    bits 2 and 3 are the turbo speed switch or password lock on
  823.       Award/AMI/Phoenix BIOSes.  These bits make use of nonstandard
  824.       keyboard controller BIOS functionality to manipulate
  825.         pin 23 (8041 port 22) as turbo switch for AWARD
  826.         pin 35 (8041 port 15) as turbo switch/pw lock for Phoenix
  827. SeeAlso: #P033,#P036
  828.  
  829. Bitfields for HP Vectra keyboard controller output port:
  830. Bit(s)    Description    (Table P036)
  831.  7-5    reserved
  832.  4    output buffer full (OBF) interrupt
  833.  3    HP SVC interrupt
  834.  2    HP-HIL controller AutoPoll
  835.  1    A20 gate
  836.  0    system reset
  837. SeeAlso: #P035,#P037
  838.  
  839. Bitfields for HP Vectra command byte:
  840. Bit(s)    Description    (Table P037)
  841.  7    reserved (0)
  842.  6    scancode conversion mode (1 = PC/XT, 0 = PC/AT)
  843.  5    unused
  844.  4    disable keyboard (unless bit 3 set)
  845.  3    override keyboard disable
  846.  2    System Flag (may be read from port 0060h)
  847.  1    reserved
  848.  0    OBF interrupt enable
  849. SeeAlso: #P036
  850.  
  851. (Table P038)
  852. Values for keyboard commands (data also goes to PORT 0060h):
  853. Value    Count    Description
  854.  EDh    double    set/reset mode indicators Caps Num Scrl
  855.         bit 2 = CapsLk, bit 1 = NumLk, bit 0 = ScrlLk
  856.         all other bits must be zero.
  857.  EEh    sngl    diagnostic echo. returns EEh.
  858.  EFh    sngl    NOP (No OPeration). reserved for future use
  859.  EF+26h    double    [Cherry MF2 G80-1501HAD] read 256 bytes of chipcard data
  860.         keyboard must be disabled before this and has to
  861.         be enabled after finished.
  862.  F0h    double    get/set scan code set
  863.         00h get current set
  864.         01h scancode set 1 (PCs and PS/2 mod 30, except Type 2 ctrlr)
  865.         02h scancode set 2 (ATs, PS/2, default)
  866.         03h scancode set 3
  867.  F2h    sngl    read keyboard ID (read two ID bytes)
  868.         AT keyboards returns FA (ACK)
  869.         MF2 returns AB 41 (translation) or
  870.                 AB 83 (pass through)
  871.  F3h    double    set typematic rate/delay
  872.         format of the second byte:
  873.         bit7=0 : reserved
  874.         bit6-5 : typemativ delay
  875.              00b=250ms     10b= 750ms
  876.              01b=500ms     11b=1000ms
  877.         bit4-0 : typematic rate
  878.              00000b=30.0   10000b=7.5
  879.              00001b=26.7   10001b=6.7
  880.              00010b=24.0   10010b=6.0
  881.              00011b=21.8   10011b=5.5
  882.              00100b=20.0   10100b=5.0
  883.              00101b=18.5   10101b=4.6
  884.              00110b=17.1   10110b=4.3
  885.              00111b=16.0   10111b=4.0
  886.              01000b=15.0   11000b=3.7
  887.              01001b=13.3   11001b=3.3
  888.              01010b=12.0   11010b=3.0
  889.              01011b=10.9   11011b=2.7
  890.              01100b=10.0   11100b=2.5
  891.              01101b= 9.2   11101b=2.3
  892.              01110b= 8.5   11110b=2.1
  893.              01111b= 8.0   11111b=2.0
  894.  F4h    sngl    enable keyboard
  895.  F5h    sngl    disable keyboard. set default parameters (no keyboard scanning)
  896.  F6h    sngl    set default parameters
  897.  F7h    sngl    [MCA] set all keys to typematic (scancode set 3)
  898.  F8h    sngl    [MCA] set all keys to make/release
  899.  F9h    sngl    [MCA] set all keys to make only
  900.  FAh    sngl    [MCA] set all keys to typematic/make/release
  901.  FBh    sngl    [MCA] set al keys to typematic
  902.  FCh    double    [MCA] set specific key to make/release
  903.  FDh    double    [MCA] set specific key to make only
  904.  FEh    sngl    resend last scancode
  905.  FFh    sngl    perform internal power-on reset function
  906. Note:    each command is acknowledged by FAh (ACK), if not mentioned otherwise.
  907.       See PORT 0060h-R for details.
  908. SeeAlso: #P039
  909.  
  910. (Table P039)
  911. Values for Mouse functions (for PS/2-like pointing devices):
  912. Value    Count    Description
  913.  E6h    sngl    set mouse scaling to 1:1
  914.  E7h    sngl    set mouse scaling to 2:1
  915.  E8h    double    set mouse resolution
  916.         (00h=1/mm, 01h=2/mm, 02h=4/mm, 03h=8/mm)
  917.  E9h    sngl    get mouse information
  918.         read two status bytes:
  919.           byte 0
  920.             bit 7 unused
  921.             bit 6 remote rather than stream mode
  922.             bit 5 mouse enabled
  923.             bit 4 scaling set to 2:1
  924.             bit 3 unused
  925.             bit 2 left button pressed
  926.             bit 1 unused
  927.             bit 0 right button pressed
  928.           byte 1: resolution
  929.  EAh    sngl    set mouse to stream mode (mouse sends data on any changes)
  930.  EBh    sngl    get mouse data (from mouse to controller)
  931.         on reading, each data packet consists of 8 bytes:
  932.          +0: status
  933.               bit7    : y-data overrun
  934.               bit6    : x-data overrun
  935.               bit5    : y-data negative
  936.               bit4    : x-data negative
  937.               bit3-2=0: reserved
  938.               bit1    : right button pressed
  939.               bit0    : left button pressed
  940.          +1: reserved
  941.          +2: x-data
  942.          +3: reserved
  943.          +4: y-data
  944.          +5: reserved
  945.          +6: z-data (0)
  946.          +7: reserved
  947.  ECh    sngl    reset mouse wrap mode (to normal mode)
  948.  EEh    sngl    set wrap mode
  949.  F0h    sngl    set remote mode (instead of stream mode), mouse sends data
  950.           only on issueing command EBh.
  951.  F2h    sngl    read mouse ID (read one, two?? ID bytes)
  952.         00h=mouse
  953.  F3h    double    set mouse sample rate in reports per second
  954.         0Ah=10/s       50h= 80/s
  955.         14h=20/s       64h=100/s
  956.         28h=40/s       C8h=200/s
  957.         3Ch=60/s
  958.  F4h    sngl    enable mouse (in stream mode)
  959.  F5h    sngl    disable mouse (in steam mode), set default parameters
  960.  F6h    sngl    reset to defaults: 100/s, scaling 1:1, stream-mode, 4/mm,
  961.           disabled
  962.  FEh    sngl    resend last mouse data (8 bytes, see EBh)
  963.  FFh    sngl    reset mouse
  964. Notes:     must issue command D4h to port 64h first to access mouse functions
  965.      all commands except ECh and FFh are acknowledged by FAh (ACK) or
  966.        FEh (Resend); get mouse ID (F2h) returns mouse ID.
  967. SeeAlso: #P038
  968.  
  969. (Table P040)
  970. Values for keyboard special codes:
  971.  00h    (MF2 in codeset2&3 or AT keyboards) keydetection/overrun error
  972.  00h    (mouse) ID
  973.  AAh    BAT completion code (sent after errorfree Basic Assurance Test)
  974.  ABh    first byte of general MF2 keyboard ID
  975.  EEh    Echo command return
  976.  FAh    Acknowledge (all general commands except Resend and Echo)
  977.  FAh    (mouse) Acknowledge (all commands except commands ECh,F2h,FFh)
  978.  FCh    (MF2) BAT Failure Code (error in second half of the power on self test)
  979.  FDh    (AT-keyboard) BAT Failure Code (error in the second half of the
  980.       power-on self test)
  981.  FEh    Resend: CPU to controller should resend last keyboard-command
  982.  FEh    (mouse) CPU to controller should resend last mouse-command
  983.  FFh    (MF2 in codeset1) keydetection/overrun error
  984. Note:    keyboard stops scanning and waits for next command after returning
  985.       code FCh or FDh
  986. SeeAlso: PORT 0060h-R
  987.  
  988. Bitfields for KB controller port B (system control port) [output]:
  989. Bit(s)    Description    (Table P041)
  990.  7    pulse to 1 for IRQ1 reset (PC,XT)
  991.  6-4    reserved
  992.  3    I/O channel parity check disable
  993.  2    RAM parity check disable
  994.  1    speaker data enable
  995.  0    timer 2 gate to speaker enable
  996. SeeAlso: PORT 0061h-W,#P042
  997.  
  998. Bitfields for KB controller port B control register (system control port) [input]:
  999. Bit(s)    Description    (Table P042)
  1000.  7    RAM parity error occurred
  1001.  6    I/O channel parity error occurred
  1002.  5    mirrors timer 2 output condition
  1003.  4    toggles with each refresh request
  1004.  3    NMI I/O channel check status
  1005.  2    NMI parity check status
  1006.  1    speaker data status
  1007.  0    timer 2 clock gate to speaker status
  1008. SeeAlso: PORT 0061h-R,#P041
  1009.  
  1010. Bitfields for Progr. Peripheral Interface (8255) system control port [output]:
  1011. Bit(s)    Description    (Table P043)
  1012.  7    clear keyboard (only pulse, normally kept at 0)
  1013.  6    =0  hold keyboard clock low
  1014.  5    NMI I/O parity check disable
  1015.  4    NMI RAM parity check disable
  1016.  3    =0 read low nybble of switches S2
  1017.     =1 read high nybble of switches S2
  1018.  2    reserved, often used as turbo switch
  1019.     original PC: cassette motor off
  1020.  1    speaker data enable
  1021.  0    timer 2 gate to speaker enable
  1022. Note:    bits 2 and 3 are sometimes used as turbo switch
  1023. SeeAlso: PORT 0061h-W,#P0051,#P044,#P045,#P046
  1024.  
  1025. Bitfields for PPI (XT only) data port C:
  1026. Bit(s)    Description    (Table P044)
  1027.  7    RAM parity error occurred
  1028.  6    I/O channel parity error occurred
  1029.  5    timer 2 channel out
  1030.  4    reserved 
  1031.     original PC: cassette data input
  1032. ---
  1033.  3    system board RAM size type 1
  1034.  2    system board RAM size type 2
  1035.  1    coprocessor installed
  1036.  0    loop in POST
  1037. ---
  1038.  3-0    DIL switch S2 high/low nybble (depending on PORT 0061h bit 3)
  1039. SeeAlso: PORT 0062h-RW,#P043,#P045,#P046
  1040.  
  1041. Bitfields for PPI (PC,XT only) equipment switches [input]:
  1042. Bit(s)    Description    (Table P045)
  1043.  7-6    number of disk drives
  1044.     00  1 diskette drive
  1045.     01  2 diskette drives
  1046.     10  3 diskette drives
  1047.     11  4 diskette drives
  1048.  5-4    initial video
  1049.     00  reserved (video adapter has on-board BIOS)
  1050.     01  40*25 color (mono mode)
  1051.     10  80*25 color (mono mode)
  1052.     11  MDA 80*25
  1053.  3-2    memory size (using 256K chips)
  1054.     00  256K
  1055.     01  512K
  1056.     10  576K
  1057.     11  640K
  1058.  3-2    memory size (using 64K chips)
  1059.     00  64K
  1060.     01  128K
  1061.     10  192K
  1062.     11  256K
  1063.  3-2    memory size (original PC)
  1064.     00  16K
  1065.     01  32K
  1066.     10  48K
  1067.     11  64K
  1068.  1-0    reserved
  1069.  1    NPU (math coprocessor) present
  1070.  0    boot from floppy
  1071. SeeAlso: #P044,#P046,PORT 0060h-R
  1072.  
  1073. Bitfields for PPI (8255) command mode register:
  1074. Bit(s)    Description    (Table P046)
  1075.  7    activation function (0 = bit set/reset, 1 = mode set function)
  1076.  6,5    port A mode: 00 = mode0, 01 = mode1, 1x = mode2
  1077.  4    port A direction: 0 = output, 1 = input
  1078.  3    port C bits 7-4 direction: 0 = output, 1 = input
  1079.  2    port B mode: 0 = mode0, 1 = mode1
  1080.  1    port B direction: 0 = output, 1 = input
  1081.  0    port C bits 3-0 direction: 0 = output, 1 = input
  1082. Note:    Attention: Never write anything other than 99h to this port
  1083.       (better: never write anything to this port, only during BIOS
  1084.       init), as other values may connect multiple output drivers
  1085.       and will cause hardware damage in PC/XTs!  By setting command
  1086.       word to 99h, PPI will be set in input/output modes as it is
  1087.       necessary to support the commonly known IO-ports 60, 61, 62
  1088.       as desired.
  1089. SeeAlso: #P043,#P044,#P045
  1090.  
  1091. Bitfields for keyboard controller read status (ISA, EISA):
  1092. Bit(s)    Description    (Table P047)
  1093.  7    parity error on transmission from keyboard
  1094.  6    receive timeout
  1095.  5    transmit timeout
  1096.  4    keyboard interface inhibited by keyboard lock
  1097.  3    =1 data written to input register is command (PORT 0064h)
  1098.     =0 data written to input register is data (PORT 0060h)
  1099.  2    system flag status: 0=power up or reset     1=selftest OK
  1100.  1    input buffer full (input 60/64 has data for 8042)
  1101.     no write access allowed until bit clears
  1102.  0    output buffer full (output 60 has data for system)
  1103.     bit is cleared after read access
  1104. SeeAlso: PORT 0064h-R,#P048,#P049,#P050
  1105.  
  1106. Bitfields for keyboard controller read status (MCA):
  1107. Bit(s)    Description    (Table P048)
  1108.  7    parity error on transmission from keyboard
  1109.  6    general timeout
  1110.  5    mouse output buffer full
  1111.  4    keyboard interface inhibited by keyboard lock
  1112.  3    =1 data written to input register is command (PORT 0064h)
  1113.     =0 data written to input register is data (PORT 0060h)
  1114.  2    system flag status: 0=power up or reset     1=selftest OK
  1115.  1    input buffer full (60/64 has data for 804x)
  1116.     no write access allowed until bit clears
  1117.  0    output buffer full (output 60 has data for system)
  1118.     bit is cleared after read access
  1119. SeeAlso: #P047,#P049,#P050
  1120.  
  1121. Bitfields for keyboard controller read status (Compaq):
  1122. Bit(s)    Description    (Table P049)
  1123.  7    parity error detected (11-bit format only). If an
  1124.       error is detected, a Resend command is sent to the
  1125.       keyboard once only, as an attempt to recover.
  1126.  6    receive timeout. transmission didn't finish in 2mS.
  1127.  5    transmission timeout error
  1128.     bit 5,6,7  cause
  1129.         1 0 0  No clock
  1130.         1 1 0  Clock OK, no response
  1131.         1 0 1  Clock OK, parity error
  1132.  4    =0 security lock engaged
  1133.  3    =1 data in OUTPUT register is command
  1134.     =0 data in OUTPUT register is data
  1135.  2    system flag status: 0=power up or reset     1=soft reset
  1136.  1    input buffer full (60/64 has data for 804x)
  1137.     no write access allowed until bit clears
  1138.  0    output buffer full (port 60 has data for system)
  1139.     bit is cleared after read access
  1140. SeeAlso: #P047,#P048,#P050
  1141.  
  1142. (Table P050)
  1143. Values for keyboard controller commands (data goes to port 0060)::
  1144. Value        Description
  1145.  20h    read    read byte zero of internal RAM, this is the last KB command
  1146.           sent to the 8041/8042
  1147.     Compaq    put current command byte on port 0060 (see #P052,#P053)
  1148.  21-3F    read    reads the byte specified in the lower 5 bits of the command
  1149.           in the 804x's internal RAM
  1150.  60-7F    double    writes the data byte to the address specified in the 5 lower
  1151.           bits of the command
  1152.  60h    Compaq    Load new command (60 to [64], command to [60]) (see #P053)
  1153.         (also general AT-class machines)
  1154.  A0h    AMI    get ASCIZ copyright message on port 0060
  1155.  A1h    AMI    get controller version byte on port 0060
  1156.  A1h    Compaq    unknown speedfunction ??
  1157.  A2h    Compaq    unknown speedfunction ??
  1158.  A2h    AMI    set keyboard controller pins 22 and 23 low
  1159.  A3h    Compaq    Enable system speed control
  1160.  A3h    AMI    set keyboard controller pins 22 and 23 high
  1161.  A4h    MCA    check if password installed
  1162.  A4h    Compaq    Toggle speed
  1163.  A4h    AMI    set internal system speed flag to low
  1164.  A5h    MCA    load password
  1165.  A5h    AMI    set internal system speed flag to high
  1166.  A5h    Compaq    Special read. the 8042 places the real values of port 2
  1167.           except for bits 4 and 5 wich are given a new definition in
  1168.           the output buffer. No output buffer full is generated.
  1169.             if bit 5 = 0, a 9-bit keyboard is in use
  1170.             if bit 5 = 1, an 11-bit keyboard is in use
  1171.             if bit 4 = 0, output-buff-full interrupt disabled
  1172.             if bit 4 = 1, output-buffer-full interrupt enabled
  1173.  A6h    MCA    check password
  1174.  A6h    AMI    get internal system speed flag on port 0060
  1175.  A6h    Compaq    unknown speedfunction ??
  1176.  A7h    MCA    disable mouse port
  1177.  A7h    AMI    set internal flag indicating bad write cache
  1178.  A8h    MCA    enable mouse port
  1179.  A8h    AMI    set internal flag indicating good write cache
  1180.  A9h    MCA    test mouse port
  1181.  A9h    AMI    get internal flag indicating cache OK to 0060
  1182.  AAh    sngl    initiate self-test. will return 55h to data port if self-test
  1183.           successful, FCh if failed
  1184.  AAh    Compaq    initializes ports 1 and 2, disables the keyboard and clears
  1185.           the buffer pointers. It then places 55h in the output buffer.
  1186.  ABh    sngl    initiate interface test. result values:
  1187.         00h no error
  1188.         01h keyboard clock line stuck low
  1189.         02h keyboard clock line stuck high
  1190.         03h keyboard data line is stuck low
  1191.         04h keyboard data line stuck high
  1192.         05h (Compaq only) diagnostic feature
  1193.  ACh    read    diagnostic dump. the contents of the 804x RAM, output port,
  1194.           input port, status word are sent.
  1195.  ADh    sngl    disable keyboard (sets bit 4 of commmand byte)
  1196.  ADh    Vectra    HP Vectra diagnostic dump
  1197.  AEh    sngl    enable keyboard     (resets bit 4 of commmand byte)
  1198.  AFh    AWARD    Enhanced Command: read keyboard version
  1199.  B1h    AMI    set keyboard controller P11 line low
  1200.  B2h    AMI    set keyboard controller P12 line low
  1201.  B3h    AMI    set keyboard controller P13 line low
  1202.  B4h    AMI    set keyboard controller P22 line low
  1203.  B5h    AMI    set keyboard controller P23 line low
  1204.  B8h    AMI    set keyboard controller P10 line high
  1205.  B9h    AMI    set keyboard controller P11 line high
  1206.  BAh    AMI    set keyboard controller P12 line high
  1207.  BBh    AMI    set keyboard controller P13 line high
  1208.  BCh    AMI    set keyboard controller P22 line high
  1209.  BDh    AMI    set keyboard controller P23 line high
  1210.  C0h    read    read input port and place on PORT 0060h
  1211.         bit 7    keyboard NOT locked
  1212.         bit 6    =0 first video is CGA
  1213.             =1 first video is MDA
  1214.         bit 5    =0 factory testmode
  1215.             =1 normal
  1216.         bit 4    =0 256KB RAM, 1=512KB
  1217.         bit 5,3-0 are used in Intel chipset 386sx machines with
  1218.             AMI/Phoenix BIOSes for BIOS specific hardware settings
  1219.  C0h    Compaq    places status of input port in output buffer.  Use this
  1220.           command only when the output buffer is empty
  1221.  C1h    MCA    Enhanced Command: poll input port Low nibble
  1222.  C2h    MCA    Enhanced Command: poll input port High nibble
  1223.  C8h    AMI    unblock keyboard controller lines P22 and P23
  1224.  C9h    AMI    block keyboard controller lines P22 and P23
  1225.  CAh    AMI    read keyboard mode, return in 0060 bit 0
  1226.           (bit clear if ISA mode, set if PS/2 mode)
  1227.  CBh    AMI    set keyboard mode (write back mode byte returned by CAh,
  1228.           modifying only bit 0)
  1229.  D0h    read    read output port and place on PORT 0060h (see #P054)
  1230.  D0h    Compaq    places byte in output port in output buffer. Use this command
  1231.           only when the output buffer is empty
  1232.  D1h    double    write output port.  The next byte written to port 0060h will
  1233.           be written to the 804x output port; the original IBM AT and
  1234.           many compatibles use bit 1 of the output port to control
  1235.           the A20 gate.
  1236.         Important: bit 0 (system reset) should always be set here, as
  1237.               the system may hang constantly, use pulse output port
  1238.               (FEh) instead.
  1239.  D1h    Compaq    the system speed bits are not set by this command use
  1240.           commands A1-A6 (!) for speed functions.
  1241.  D2h    MCA    Enhanced Command: write keyboard output buffer
  1242.  D3h    MCA    Enhanced Command: write pointing device out.buf.
  1243.  D4h    MCA    write to mouse/pointing device instead of to keyboard; this
  1244.           controller command must precede every PORT 0060h command
  1245.           directed to the mouse, otherwise it will be sent to the
  1246.           keyboard
  1247.  D4h    AWARD    Enhanced Command: write to auxiliary device
  1248.  DDh    sngl    disable address line A20 (HP Vectra only???)
  1249.         default in Real Mode
  1250.  DFh    sngl    enable address line A20 (HP Vectra only???)
  1251.  E0h    read    read test inputs.
  1252.         bit0 = kbd clock, bit1 = kbd data
  1253.  Exxx    AWARD    Enhanced Command: active output port
  1254.  EDh    double    this is a two part command to control the state of the
  1255.           NumLock, CpasLock and ScrollLock LEDs
  1256.         The second byte contains the state to set LEDs.
  1257.             bit 7-3    reserved. should be set to 0.
  1258.             bit 2 = 0    Caps Lock LED off
  1259.             bit 1 = 0    Num Lock LED off
  1260.             bit 0 = 0    Scroll Lock LED off
  1261.  F0-FF    sngl    pulse output port low for 6 microseconds.
  1262.         bits 0-3 contain the mask for the bits to be pulsed.  A bit is
  1263.           pulsed if its mask bit is zero
  1264.         bit0=system reset. Don't set to zero. Pulse only!
  1265. Note:     keyboard controllers are widely different from each other.  You
  1266.        cannot generally exchange them between different machines.
  1267.      (Award) Derived from Award's Enhanced KB controller advertising sheet.
  1268.      (Compaq) Derived from the Compaq Deskpro 386 Tech. Ref. Guide.
  1269.  
  1270. (Table P051)
  1271. Values for HP Vectra control buffer command code:
  1272.  00h-54h insert standard key make code into 8041 scancode buf
  1273.  55h-77h insert HP key make code into 8041 scancode buffer
  1274.  7Ah    pass through next data byte
  1275.  7Bh    set RAM Switch to 0
  1276.  7Ch    set RAM Switch to 1 (default)
  1277.  7Dh    set CRT Switch to 0
  1278.  7Eh    set CRT Switch to 1 (default)
  1279.  7Fh    reserved
  1280.  80h-D4h insert standard key break code into scancode buffer
  1281.  D5h-F7h insert HP key break code into scancode buffer
  1282.  F8h    enable AutoPoll
  1283.  F9h    disable AutoPoll
  1284.  FAh-FEh reserved
  1285.  FFh    keyboard overrun
  1286. SeeAlso: PORT 0068h-W
  1287.  
  1288. Bitfields for Compaq keyboard command byte:
  1289. Bit(s)    Description    (Table P052)
  1290.  7    reserved
  1291.  6    =1 convert KB codes to 8086 scan codes
  1292.  5    =0 use 11-bit codes, 1=use 8086 codes
  1293.  4    =0 enable keyboard, 1=disable keyboard
  1294.  3    ignore security lock state
  1295.  2    this bit goes into bit2 status reg.
  1296.  1    reserved (0)
  1297.  0    generate interrupt when output buffer full
  1298. SeeAlso: #P053
  1299.  
  1300. Bitfields for keyboard command byte (alternate description):
  1301. Bit(s)    Description    (Table P053)
  1302.  7    reserved (0)
  1303.  6    IBM PC compatibility mode
  1304.  5    IBM PC mode
  1305.     no parity, no stop bits, no translation
  1306.     (PS/2) force mouse clock low
  1307.  4    disable keyboard (clock)
  1308.  3    inhibit override
  1309.     (PS/2) reserved
  1310.  2    system flag
  1311.  1    reserved (0)
  1312.     (PS/2) enable mouse output buffer full interrupt
  1313.  0    enable output buffer full interrupt
  1314. SeeAlso: #P052,#P054
  1315.  
  1316. Bitfields for keyboard controller output port:
  1317. Bit(s)    Description    (Table P054)
  1318.  7    keyboard data (output)
  1319.  6    keyboard clock (output)
  1320.  5    input buffer empty
  1321.  4    output buffer empty
  1322.  3    undefined
  1323.  2    undefined
  1324.     used by Intel 386sx Chipset with AMI/Phoenix BIOSes for BIOS-specific
  1325.       configuration of turbo switch
  1326.  1    gate address A20
  1327.  0    system reset
  1328. Note:    bit 0 (system reset) should always be set when writing the output
  1329.       port, as the system may hang constantly; use pulse output port
  1330.       (command FEh) instead.
  1331. SeeAlso: #P053
  1332. ----------P0065------------------------------
  1333. 0065      ----    AT&T 6300+ high/low chip select
  1334. ----------P0065------------------------------
  1335. 0065      ----    ???
  1336.  
  1337. 0065  RW  ???
  1338.         bit 2: A20 gate control (set = A20 enabled, clear = disabled)
  1339. ----------P00660067--------------------------
  1340. 0066-0067 ----    AT&T 6300+ system configuration switches
  1341. ----------P0066------------------------------
  1342. 0066      ----    IBM 4717 Magnetic Stripe Reader - ???
  1343. SeeAlso: PORT 0069h"Magnetic Stripe"
  1344. ----------P0068------------------------------
  1345. 0068      ----    C&T chipsets, turbo mode control
  1346. ----------P0069------------------------------
  1347. 0069      ----    IBM 4717 Magnetic Stripe Reader - ???
  1348. SeeAlso: PORT 0066h"Magnetic Stripe"
  1349. ----------P006B006F--------------------------
  1350. 006B-006F ----    SSGA control registers
  1351.  
  1352. 006B  ??  RAM enable/remap
  1353. 006C  ??  undocumented
  1354. 006D  ??  undocumented
  1355. 006E  ??  undocumented
  1356. 006F  ??  undocumented
  1357. ----------P0070007F--------------------------
  1358. 0070-007F ----    CMOS RAM/RTC (Real Time Clock)
  1359. Note:    the real-time clock may be either a discrete MC146814, MC146818, or
  1360.       an emulation thereof built into the motherboard chipset
  1361.  
  1362. 0070   W  CMOS RAM index register port (ISA, EISA)
  1363.          bit 7    = 1  NMI disabled
  1364.             = 0  NMI enabled
  1365.          bit 6-0     CMOS RAM index (64 bytes, sometimes 128 bytes)
  1366.  
  1367.         any write to 0070 should be followed by an action to 0071
  1368.         or the RTC wil be left in an unknown state.
  1369.  
  1370. 0071  RW  CMOS RAM data port (ISA, EISA) (see #P055)
  1371.  
  1372. (Table P055)
  1373. Values for Real-Time Clock register number (see also CMOS.LST):
  1374.  00h-0Dh clock registers
  1375.  0Eh    diagnostics status byte
  1376.  0Fh    shutdown status byte
  1377.  10h    diskette drive type for A: and B:
  1378.  11h    reserved / IBM fixed disk / setup options
  1379.  12h    fixed disk drive type for drive 0 and drive 1
  1380.  13h    reserved / AMI Extended CMOS setup (AMI Hi-Flex BIOS)
  1381.  14h    equipment byte
  1382.  15h    LSB of system base memory in Kb
  1383.  16h    MSB of system base memory in Kb
  1384.  17h    LSB of total extended memory in Kb
  1385.  18h    MSB of total extended memory in Kb
  1386.  19h    drive C extension byte
  1387.  1Ah    drive D extension byte
  1388.  1Bh-2Dh reserved
  1389.  20h-27h commonly used for first user-configurable drive type
  1390.  2Eh    CMOS MSB checksum over 10-2D
  1391.  2Fh    CMOS LSB checksum over 10-2D
  1392.  30h    LSB of extended memory found above 1Mb at POST
  1393.  31h    MSB of extended memory found above 1Mb at POST
  1394.  32h    date century in BCD
  1395.  33h    information flags
  1396.  34h-3Fh    reserved    
  1397.  35h-3Ch commonly used for second user-configurable drive type
  1398.  3Dh-3Eh word to 82335 MCR memory config register at [22] (Phoenix)
  1399.  42h-4Ch AMI 1990 Hyundai super-NB368S notebook
  1400.     ???
  1401.  54h-57h AMI 1990 Hyundai super-NB368S notebook
  1402.     ???
  1403.  5Ch-5Dh AMI 1990 Hyundai super-NB368S notebook
  1404.     ???
  1405.  60h-61h AMI 1990 Hyundai super-NB368S notebook
  1406.     ???
  1407. ----------P0073------------------------------
  1408. 0073      ----    Intel Pentium motherboard ("Neptune" chipset)
  1409.  
  1410. 0073  RW  ???
  1411.         bit 7: ???
  1412.         bit 6: ???
  1413.         bit 3: ???
  1414. ----------P00740076--------------------------
  1415. 0074-0076 ----  secondary CMOS (Compaq), NVRAM (IBM) access
  1416. Note:    NVRAM may be 2K, 8K, or 16K
  1417. SeeAlso: CMOS.LST
  1418.  
  1419. 0074   W  secondary CMOS RAM (IBM NVRAM) index, low byte
  1420. 0075   W  secondary CMOS RAM (IBM NVRAM) index, high byte
  1421. 0076  RW  secondary CMOS RAM (IBM NVRAM) data byte
  1422. ----------P0078------------------------------
  1423. 0078      ----    HP-Vectra  Hard Reset: NMI enable/disable
  1424.  
  1425. 0078  ?W  NMI enable/disable
  1426.         bit 7 = 0  disable & clear hard reset from HP-HIL controller
  1427.               = 1  enable hard reset from HP-HIL controller chip
  1428.         bit 6-0       reserved
  1429. ----------P0078007F--------------------------
  1430. 0078-007F ----    PC radio by CoZet Info Systems
  1431. Range:  The I/O address range is dipswitch selectable from:
  1432.        038-03F and 0B0-0BF
  1433.        078-07F and 0F0-0FF
  1434.        138-13F and 1B0-1BF
  1435.        178-17F and 1F0-1FF
  1436.        238-23F and 2B0-2BF
  1437.        278-27F and 2F0-2FF
  1438.        338-33F and 3B0-3BF
  1439.        378-37F and 3F0-3FF
  1440. Note:    All of these addresses show a readout of FFh in initial state.
  1441.     Once started, all of the addresses show FBh, whatever might happen.
  1442. ----------P007C007D--------------------------
  1443. 007C-007D ----    HP-Vectra  PIC 3   (Programmable Interrupt Controller 8259)
  1444. Notes:    cascaded to first controller.
  1445.     used for keyboard and input device interface.
  1446. SeeAlso: PORT 0020h-0021h
  1447.  
  1448. 007C  RW  HP-Vectra  PIC 3  see at 0020     PIC 1
  1449. 007D  RW  HP-Vectra  PIC 3  see at 0021     PIC 1
  1450. ----------P0080------------------------------
  1451. 0080      ----    MANUFACTURING DIAGNOSTICS PORT
  1452. Note:    sometimes used for a POST hex display
  1453.  
  1454. 0080   W  Manufacturing Diagnostics port
  1455. ----------P0080008F--------------------------
  1456. 0080-008F ----    DMA page registers   (74612)
  1457.  
  1458. 0080  RW  extra page register (temporary storage)
  1459. 0081  RW  DMA channel 2 address byte 2
  1460. 0082  RW  DMA channel 3 address byte 2
  1461. 0083  RW  DMA channel 1 address byte 2
  1462. 0084  RW  extra page register
  1463. 0085  RW  extra page register
  1464. 0086  RW  extra page register
  1465. 0087  RW  DMA channel 0 address byte 2
  1466. 0088  RW  extra page register
  1467. 0089  RW  DMA channel 6 address byte 2
  1468. 0089  RW  DMA channel 7 address byte 2
  1469. 0089  RW  DMA channel 5 address byte 2
  1470. 008C  RW  extra page register
  1471. 008D  RW  extra page register
  1472. 008E  RW  extra page register
  1473. 008F  RW  DMA refresh page register
  1474. ----------P0080009F--------------------------
  1475. 0080-009F ----    Intel386sx chipset 82231
  1476. Note:    includes the DMA controller functionality on PORT 0080h to PORT 008Fh
  1477. ----------P0084------------------------------
  1478. 0084      ----    Compaq POST Diagnostic
  1479. ----------P0084------------------------------
  1480. 0084      ----    EISA Synchronize Bus Cycle
  1481. ----------P0090009F--------------------------
  1482. 0090-009F ----    PS/2 POS (Programmable Option Select)
  1483.  
  1484. 0090  ??  Central arbitration control port
  1485. 0091  R      Card selection feedback
  1486. 0092  RW  PS/2 system control port A  (port B is at 0061) (see #P056)
  1487. 0094   W  system board enable/setup register (see #P057)
  1488. 0095  --  reserved
  1489. 0096   W  adapter enable / setup register
  1490.          bit 3 = 1  setup adapters
  1491.                = 0  enable registers
  1492. 0097  --  reserved
  1493.  
  1494. Bitfields for PS/2 system control port A:
  1495. Bit(s)    Description    (Table P056)
  1496.  7-6    any bit set to 1 turns activity light on
  1497.  5    reserved
  1498.  4    watchdog timout occurred 
  1499.  3    =0 RTC/CMOS security lock (on password area) unlocked
  1500.     =1 CMOS locked (done by POST)
  1501.  2    reserved
  1502.  1    A20 is active
  1503.  0    =0 system reset or write
  1504.     =1 pulse alternate reset pin (alternate CPU reset)
  1505. SeeAlso: #P057
  1506.  
  1507. Bitfields for PS/2 system board enable/setup register:
  1508. Bit(s)    Description    (Table P057)
  1509.  7    =1  enable functions
  1510.     =0  setup functions
  1511.  5    =1  enables VGA
  1512.     =0  setup VGA
  1513. SeeAlso: #P056
  1514. ----------P00A000AF--------------------------
  1515. 00A0-00AF ----    PIC 2    (Programmable Interrupt Controller 8259A)
  1516. SeeAlso: PORT 0020h-003Fh"PIC 1",INT 70"IRQ8",INT 77"IRQ15"
  1517.  
  1518. 00A0  RW  NMI mask register (XT)
  1519.          bit 7 = 0 disabled
  1520.                = 1 enabled
  1521. 00A0  RW  PIC 2     same as 0020 for PIC 1
  1522. 00A1  RW  PIC 2     same as 0021 for PIC 1 except for OCW1 (see #P058)
  1523.  
  1524. Bitfields for PIC2 output control word OCW2:
  1525. Bit(s)    Description    (Table P058)
  1526.  7    disable IRQ15 (reserved)
  1527.  6    disable IRQ14 (fixed disk interrupt)
  1528.  5    disable IRQ13 (coprocessor exception interrupt)
  1529.  4    disable IRQ12 (mouse interrupt)
  1530.  3    disable IRQ11 (reserved)
  1531.  2    disable IRQ10 (reserved)
  1532.  1    disable IRQ9  (redirect cascade)
  1533.  0    disable IRQ8  (real-time clock interrupt)
  1534. SeeAlso: #P010 
  1535. ----------P00B000BF--------------------------
  1536. 00B0-00BF ----    PC radio by CoZet Info Systems
  1537. Range:     The I/O address range is dipswitch selectable from:
  1538.        038-03F and 0B0-0BF
  1539.        078-07F and 0F0-0FF
  1540.        138-13F and 1B0-1BF
  1541.        178-17F and 1F0-1FF
  1542.        238-23F and 2B0-2BF
  1543.        278-27F and 2F0-2FF
  1544.        338-33F and 3B0-3BF
  1545.        378-37F and 3F0-3FF
  1546. Notes:    All of these addresses show a readout of FFh in initial state.
  1547.     Once started, all of the addresses show    FBh, whatever might happen.
  1548. ----------P00C0------------------------------
  1549. 00C0      ----    TI  SN746496 programmable tone/noise generator    PCjr
  1550. ----------P00C000DF--------------------------
  1551. 00C0-00DF ----    DMA 2    (second Direct Memory Access controller 8237)
  1552.  
  1553. 00C0  RW  DMA channel 4 memory address bytes 1 and 0 (low) (ISA, EISA)
  1554. 00C2  RW  DMA channel 4 transfer count bytes 1 and 0 (low) (ISA, EISA)
  1555. 00C4  RW  DMA channel 5 memory address bytes 1 and 0 (low) (ISA, EISA)
  1556. 00C6  RW  DMA channel 5 transfer count bytes 1 and 0 (low) (ISA, EISA)
  1557. 00C8  RW  DMA channel 6 memory address bytes 1 and 0 (low) (ISA, EISA)
  1558. 00CA  RW  DMA channel 6 transfer count bytes 1 and 0 (low) (ISA, EISA)
  1559. 00CC  RW  DMA channel 7 memory address byte 0 (low), then 1 (ISA, EISA)
  1560. 00CE  RW  DMA channel 7 transfer count byte 0 (low), then 1 (ISA, EISA)
  1561.  
  1562. 00D0  R      DMA channel 4-7 status register (ISA, EISA) (see #P059)
  1563. 00D0   W  DMA channel 4-7 command register (ISA, EISA) (see #P060)
  1564. 00D2   W  DMA channel 4-7 write request register (ISA, EISA)
  1565. 00D4   W  DMA channel 4-7 write single mask register (ISA, EISA) (see #P061)
  1566. 00D6   W  DMA channel 4-7 mode register (ISA, EISA) (see #P062)
  1567. 00D8   W  DMA channel 4-7 clear byte pointer flip-flop (ISA, EISA)
  1568.  
  1569. 00DA  R      DMA channel 4-7 read temporary register (ISA, EISA)
  1570. 00DA   W  DMA channel 4-7 master clear (ISA, EISA)
  1571. 00DC   W  DMA channel 4-7 clear mask register (ISA, EISA)
  1572. 00DE   W  DMA channel 4-7 write mask register (ISA, EISA)
  1573.  
  1574. Bitfields for DMA channel 4-7 status register:
  1575. Bit(s)    Description    (Table P059)
  1576.  7 = 1    channel 7 request
  1577.  6 = 1    channel 6 request
  1578.  5 = 1    channel 5 request
  1579.  4 = 1    channel 4 request
  1580.  3 = 1    terminal count on channel 7
  1581.  2 = 1    terminal count on channel 6
  1582.  1 = 1    terminal count on channel 5
  1583.  0 = 1    terminal count on channel 4
  1584. SeeAlso: #P001,#P060
  1585.  
  1586. Bitfields for DMA channel 4-7 command register:
  1587. Bit(s)    Description    (Table P060)
  1588.  7    DACK sense active high
  1589.  6    DREQ sense active high
  1590.  5    =1  extended write selection
  1591.     =0  late write selection
  1592.  4    rotating priority instead of fixed priority
  1593.  3    compressed timing
  1594.  2    =1  enable controller
  1595.     =0  enable memory-to-memory transfer
  1596.  1-0    channel number (00 = 4 to 11 = 7)
  1597. SeeAlso: #P002,#P059,#P061
  1598.  
  1599. Bitfields for DMA channel 4-7 write single mask register:
  1600. Bit(s)    Description    (Table P061)
  1601.  7-3    reserved
  1602.  2    =0  clear mask bit
  1603.     =1  set mask bit
  1604.  1-0    channel select
  1605.     00 channel 4 select
  1606.     01 channel 5 select
  1607.     10 channel 6 select
  1608.     11 channel 7 select
  1609. SeeAlso: #P004,#P060
  1610.  
  1611. Bitfields for DMA channel 4-7 mode register:
  1612. Bit(s)    Description    (Table P062)
  1613.  7-6    transfer mode
  1614.     00  demand mode
  1615.     01  single mode
  1616.     10  block mode
  1617.     11  cascade mode
  1618.  5    direction
  1619.     0  address increment select
  1620.     1  address decrement select
  1621.  4    autoinitialisation enabled
  1622.  3-2    operation
  1623.     00  verify operation
  1624.     01  write to memory
  1625.     10  read from memory
  1626.     11  reserved
  1627.  1-0    channel number
  1628.     00  channel 4 select
  1629.     01  channel 5 select
  1630.     10  channel 6 select
  1631.     11  channel 7 select
  1632. SeeAlso: #P005,#P061
  1633. ----------P00E000E1--------------------------
  1634. 00E0-00E1 ----    chipset from ACT
  1635.  
  1636. 00E0  ?W  index for accesses to data port
  1637. 00E1  R?  chip set data
  1638. ----------P00E000E7--------------------------
  1639. 00E0-00E7 ----    Microchannel
  1640.  
  1641. 00E0  RW  split address register, memory encoding registers PS/2m80 only
  1642. 00E1  RW  memory register
  1643. 00E3  RW  error trace
  1644. 00E4  RW  error trace
  1645. 00E5  RW  error trace
  1646. 00E7  RW  error trace
  1647. ----------P00EC00ED--------------------------
  1648. 00EC-00ED ----    Compaq LTE Elite
  1649. ---------------------------------------------
  1650. 00ED      ----    ???
  1651. Note:    on a number of machines, the BIOS appears to write a copy of any
  1652.       data sent to numerous other ports to this port as well
  1653.  
  1654. 00EDw  ?W  ???
  1655. ----------P00EF------------------------------
  1656. 00EF      ----    Hyunday Super-NB386S (AMD386sx with Intel chipset)
  1657. Warning: any access to this port causes a cold reset on this machine!
  1658. ----------P00F000F5--------------------------
  1659. 00F0-00F5 ----    PCjr Disk Controller
  1660.  
  1661. 00F0  ??  disk controller
  1662. 00F2  ??  disk controller control port
  1663. 00F4  ??  disk controller status register
  1664. 00F5  ??  disk controller data port
  1665. ----------P00F000FF--------------------------
  1666. 00F0-00FF ----    coprocessor (8087..80387)
  1667.  
  1668. 00F0   W  math coprocessor clear busy latch
  1669. 00F1   W  math coprocessor reset
  1670. 00F8  RW  opcode transfer
  1671. 00FA  RW  opcode transfer
  1672. 00FC  RW  opcode transfer
  1673. ----------P00F9------------------------------
  1674. 00F9      ----    Compaq LTE Elite
  1675. ----------P00F9------------------------------
  1676. 00FB      ----    Compaq LTE Elite
  1677. ----------P00F900FF--------------------------
  1678. 00F9-00FF ----    PC radio by CoZet Info Systems
  1679. Range:    The I/O address range is dipswitch selectable from:
  1680.        038-03F and 0B0-0BF
  1681.        078-07F and 0F0-0FF
  1682.        138-13F and 1B0-1BF
  1683.        178-17F and 1F0-1FF
  1684.        238-23F and 2B0-2BF
  1685.        278-27F and 2F0-2FF
  1686.        338-33F and 3B0-3BF
  1687.        378-37F and 3F0-3FF
  1688. Notes:    All of these addresses show a readout of FFh in initial state.
  1689.     Once started, all of the addresses show    FBh, whatever might happen.
  1690. ----------P0100------------------------------
  1691. 0100      ----    3COM 3C509 Ethernet card - ID port
  1692. Note: this port is present only on the 3C509, not on any other 3COM card
  1693. SeeAlso: 0110, 0120
  1694. ----------P01000107--------------------------
  1695. 0100-0107 ----    PS/2 POS (Programmable Option Select)
  1696. Note:    the default value for PORT 0102h is stored in CMOS 31h
  1697.  
  1698. 0100  R      POS register 0    Low adapter ID byte
  1699. 0101  R      POS register 1    High adapter ID byte
  1700. 0102  RW  POS register 2    option select data byte 1 (see #P063)
  1701. 0103  RW  POS register 3    option select data byte 2
  1702. 0104  RW  POS register 4    option select data byte 3
  1703. 0105  RW  POS register 5    option select data byte 4
  1704.          bit 7    channel active (-CHCK)
  1705.          bit 6    channel status
  1706. 0106  RW  POS register 6    Low subaddress extension
  1707. 0107  RW  POS register 7    High subaddress extension
  1708.  
  1709. Bitfields for PS/2 POS register 2, option select data byte 1:
  1710. Bit(s)    Description    (Table P063)
  1711.  7      0  = unidirectional LPT port
  1712.       1  = bidirectional LPT port
  1713.  6-5    PS/2 Model 50 and higher
  1714.      00b = default LPT port at 3BCh
  1715.      01b = ""           378h
  1716.      10b = ""           278h
  1717.      11b = reserved
  1718.  4    reserved
  1719.  0    card enable (CDEN)
  1720.  0    =1 VGA sleep bit, disconnects output drivers from VGA (usage for VGA
  1721.       without monitor)
  1722. ---ET4000---
  1723.  7-4    reserved???
  1724.  3    video RAM wait enable
  1725.  2    ET4000: ROM BIOS wait enable
  1726.  1    ET4000: I/O wait enable
  1727. Note:    access to this port is only possible when PORT 0094h bit 7 is low.
  1728. ---------------------------------------------
  1729. 0100-010F ----    CompaQ Tape drive adapter. alternate address at 0300
  1730. ---------------------------------------------
  1731. 0108-010F ----    IBM PS/2 - 8 digit LED info panel
  1732.  
  1733. 010F   W  leftmost character on display
  1734. 010E   W  second character
  1735.  ...
  1736. 0108   W  eighth character
  1737. ---------------------------------------------
  1738. 0110      ----    3COM 3C509 Ethernet card - ID port (alternate address)
  1739. Note:    this port is present only on the 3C509, not on any other 3COM card
  1740. SeeAlso: 0100, 0120
  1741. ---------------------------------------------
  1742. 0120      ----    3COM 3C509 Ethernet card - ID port (alternate address)
  1743. Note:    this port is present only on the 3C509, not on any other 3COM card
  1744. SeeAlso: 0100, 0110
  1745. ---------------------------------------------
  1746. 0130-013F ----    CompaQ SCSI adapter. alternate address at 0330
  1747. ---------------------------------------------
  1748. 0130-0133 ----    Adaptec 154xB/154xC SCSI adapter.
  1749. Range:    alternate address at 0134, 0230, 0234, 0330 and 0334
  1750. ---------------------------------------------
  1751. 0134-0137 ----    Adaptec 154xB/154xC SCSI adapter.
  1752. Range:    alternate address at 0130, 0230, 0234, 0330 and 0334
  1753. ---------------------------------------------
  1754. 0138-013F ----    PC radio by CoZet Info Systems
  1755. Range:    The I/O address range is dipswitch selectable from:
  1756.        038-03F and 0B0-0BF
  1757.        078-07F and 0F0-0FF
  1758.        138-13F and 1B0-1BF
  1759.        178-17F and 1F0-1FF
  1760.        238-23F and 2B0-2BF
  1761.        278-27F and 2F0-2FF
  1762.        338-33F and 3B0-3BF
  1763.        378-37F and 3F0-3FF
  1764. Notes:    All of these addresses show a readout of FFh in initial state.
  1765.     Once started, all of the addresses show    FBh, whatever might happen.
  1766. ---------------------------------------------
  1767. 0140-014F ----    SCSI (alternate Small Computer System Interface) adapter
  1768. Note:    first adapter is at 0340-034F
  1769. ---------------------------------------------
  1770. 0140-0157 ----    RTC (alternate Real Time Clock for XT)     (1st at 0340-0357)
  1771. ---------------------------------------------
  1772. 015C-015D ----    Dell Enhanced Parallel Port
  1773. SeeAlso: 002E, 026E, 0398
  1774.  
  1775. 015C   W  index for data port
  1776. 015D  RW  EPP command data
  1777. ---------------------------------------------
  1778. 015F      ----    ARTEC Handyscanner A400Z.  alternate address at 35F.
  1779. ---------------------------------------------
  1780. 0170-0177 ----    HDC 2    (2nd Fixed Disk Controller) (ISA, EISA)
  1781. Range:    01F0-01F7 for primary controller, 0170-0177 for secondary controller
  1782. SeeAlso: PORT 01F0h-01F7h
  1783. ---------------------------------------------
  1784. 0178-0179 ----    Power Management
  1785.  
  1786. 0178   W  index selection for data port
  1787. 0179  RW  power management data
  1788. ---------------------------------------------
  1789. 0178-017F ----    PC radio by CoZet Info Systems
  1790. Range:    The I/O address range is dipswitch selectable from:
  1791.        038-03F and 0B0-0BF
  1792.        078-07F and 0F0-0FF
  1793.        138-13F and 1B0-1BF
  1794.        178-17F and 1F0-1FF
  1795.        238-23F and 2B0-2BF
  1796.        278-27F and 2F0-2FF
  1797.        338-33F and 3B0-3BF
  1798.        378-37F and 3F0-3FF
  1799. Notes:    All of these addresses show a readout of FFh in initial state.
  1800.     Once started, all of the addresses show    FBh, whatever might happen.
  1801. ---------------------------------------------
  1802. 01CE-01CF ----    ATI Mach32 video chipset - ???
  1803.  
  1804. 01CE   W  index register
  1805. 01CF  RW  data register
  1806. ---------------------------------------------
  1807. 01E8-01EF ----    Headland HL21 & Acer M5105 chipsets - SYSTEM CONTROL
  1808.  
  1809. 01ED  RW  select internal register. Data to/from 01EF
  1810. 01EE  R      ???
  1811. 01EF  RW  register value
  1812.     05h  = 1000xxxx for low CPU clock speed (4MHz on Morse/Mitac)
  1813.          = 0xxxxxxx for high CPU clock speed (16MHz on Morse/Mitac)
  1814.     10h memory size
  1815.        bits 2-0 = size
  1816.            (undefined,512K,640K,1024K,2560K,2048K,4096K,undef.)
  1817.     14h ???
  1818.        bit 2: 384K RAM of first 1024K relocated to top of memory
  1819. ---------------------------------------------
  1820. 01F0-01F7 ----    HDC 1    (1st Fixed Disk Controller) (ISA, EISA)
  1821. Range:    01F0-01F7 for primary controller, 0170-0177 for secondary controller
  1822. SeeAlso: PORT 0170h-0177h
  1823.  
  1824. 01F0  RW  data register
  1825. 01F1  R      error register (see #P064)
  1826. 01F1   W  WPC/4     (Write Precompensation Cylinder divided by 4)
  1827. 01F2  RW  sector count
  1828. 01F3  RW  sector number (CHS mode)
  1829.       logical block address, bits 0-7 (LBA mode)
  1830. 01F4  RW  cylinder low (CHS mode)
  1831.       logical block address, bits 15-8 (LBA mode)
  1832. 01F5  RW  cylinder high (CHS mode)
  1833.       logical block address, bits 23-16 (LBA mode)
  1834. 01F6  RW  drive/head (see #P065)
  1835. 01F7  R      status register (see #P066)
  1836. 01F7   W  command register (see #P067)
  1837.  
  1838. Bitfields for Hard Disk Controller error register:
  1839. Bit(s)    Description    (Table P064)
  1840. ---diagnostic mode errors---
  1841.  7    which drive failed (0 = master, 1 = slave)
  1842.  6-3    reserved
  1843.  2-0    error code
  1844.     001    no error detected
  1845.     010    formatter device error
  1846.     011    sector buffer error
  1847.     100    ECC circuitry error
  1848.     101    controlling microprocessor error
  1849. ---operation mode---
  1850.  7    bad block detected
  1851.  6    uncorrectable ECC error
  1852.  5    reserved
  1853.  4    ID found
  1854.  3    reserved
  1855.  2    command aborted prematurely
  1856.  1    track 000 not found
  1857.  0    DAM not found (always 0 for CP-3022)
  1858. SeeAlso: #P065,#P066
  1859.  
  1860. Bitfields for hard disk controller drive/head specifier:
  1861. Bit(s)    Description    (Table P065)
  1862.  7    =1
  1863.  6    LBA mode enabled, rather than default CHS mode
  1864.  5    =1
  1865.  4    drive select (0 = drive 0, 1 = drive 1)
  1866.  3-0    head select bits (CHS mode)
  1867.     logical block address, bits 27-24 (LBA mode)
  1868. SeeAlso: #P064,#P066
  1869.  
  1870. Bitfields for hard disk controller status register:
  1871. Bit(s)    Description    (Table P066)
  1872.  7    controller is executing a command
  1873.  6    drive is ready
  1874.  5    write fault
  1875.  4    seek complete
  1876.  3    sector buffer requires servicing
  1877.  2    disk data read successfully corrected
  1878.  1    index - set to 1 each disk revolution
  1879.  0    previous command ended in an error
  1880. SeeAlso: #P064,#P067
  1881.  
  1882. (Table P067)
  1883. Values for hard disk controller command codes:
  1884. Command                     class: optional:
  1885.  1xh     recalibrate               1      no
  1886.  20h     read sectors with retry       1      no
  1887.  21h     read sectors without retry       1      no
  1888.  22h     read long with retry           1      no
  1889.  23h     read long without retry       1      no
  1890.  30h     write sectors with retry       2      no
  1891.  31h     write sectors without retry       2      no
  1892.  32h     write long with retry           2      no
  1893.  33h     write long without retry       2      no
  1894.  3Ch     write verify        (IDE)       3      yes
  1895.  40h     read verify sectors with retry       1      no
  1896.  41h     read verify sectors without retry 1      no
  1897.  50h     format track               2      no
  1898.  7xh     seek                   1      no
  1899.  8xh     vendor unique 3    (IDE)
  1900.  90h     execute drive diagnostics       1      no
  1901.  91h     initialize drive parameters       1      no
  1902.  94h E0h standby immediate    (IDE)       1      yes
  1903.  95h E1h idle immediate        (IDE)       1      yes
  1904.  96h E2h standby        (IDE)       1      yes
  1905.  97h E3h idle            (IDE)       1      yes
  1906.  98h E5h check power mode    (IDE)       1      yes
  1907.  99h E6h set sleep mode        (IDE)       1      yes
  1908.  9Ah     vendor unique 1    (IDE)
  1909.  C0h-C3h vendor unique 2    (IDE)
  1910.  C4h     read multiplec        (IDE)       1      yes
  1911.  C5h     write multiple        (IDE)       3      yes
  1912.  C6h     set multiple mode    (IDE)       1      yes
  1913.  C8h     read DMA with retry    (IDE)       1      yes
  1914.  C9h     read DMA without retry (IDE)       1      yes
  1915.  CAh     write DMA with retry    (IDE)       3      yes
  1916.  CBh     write DMA with retry    (IDE)       3      yes
  1917.  E4h     read buffer        (IDE)       1      yes
  1918.  E8h     write buffer        (IDE)       2      yes
  1919.  E9h     write same        (IDE)       3      yes
  1920.  ECh     identify drive        (IDE)       1      yes
  1921.  EFh     set features        (IDE)       1      yes
  1922.  F0h-F4h EATA standard        (IDE)
  1923.  F5h-FFh vendor unique 4    (IDE)
  1924. SeeAlso: #P064,#P066
  1925. ---------------------------------------------
  1926. 01F8      ----    ???
  1927.  
  1928. 01F8  RW  ???
  1929.         bit 0: A20 gate control (set = A20 enabled, clear = disabled)
  1930. ---------------------------------------------
  1931. 01F9-01FF ----    PC radio by CoZet Info Systems
  1932. Range:    The I/O address range is dipswitch selectable from:
  1933.        038-03F and 0B0-0BF
  1934.        078-07F and 0F0-0FF
  1935.        138-13F and 1B0-1BF
  1936.        178-17F and 1F0-1FF
  1937.        238-23F and 2B0-2BF
  1938.        278-27F and 2F0-2FF
  1939.        338-33F and 3B0-3BF
  1940.        378-37F and 3F0-3FF
  1941. Notes:    All of these addresses show a readout of FFh in initial state.
  1942.     Once started, all of the addresses show    FBh, whatever might happen.
  1943. ---------------------------------------------
  1944. 0200-020F ----    Game port reserved I/O address space  
  1945. 0200-0207 ----    Game port, eight identical addresses on some boards
  1946.  
  1947. 0201  R      read joystick position and status (see #P068)
  1948. 0201   W  fire joystick's four one-shots
  1949. 0201  RW  gameport on mc-soundmachine, mc 03-04/1992: Adlib-compatible,
  1950.         Covox 'voice master' & 'speech thing' compatible soundcard.
  1951.         (enabled if bit1=1 in PORT 038Fh. Because it is disabled on
  1952.         power-on, it cannot be found by BIOS) (see PORT 0388h-038Fh)
  1953.  
  1954. Bitfields for joystick position and status:
  1955. Bit(s)    Description    (Table P068)
  1956.  7    status B joystick button 2 / D paddle button
  1957.  6    status B joystick button 1 / C paddle button
  1958.  5    status A joystick button 2 / B paddle button
  1959.  4    status A joystick button 1 / A paddle button
  1960.  3    B joystick Y coordinate       / D paddle coordinate
  1961.  2    B joystick X coordinate       / C paddle coordinate
  1962.  1    A joystick Y coordinate       / B paddle coordinate
  1963.  0    A joystick X coordinate       / A paddle coordinate
  1964. ---------------------------------------------
  1965. 0200-02FF ----    Sunshine uPW48, programmer for EPROM version CPU's 8748/8749
  1966. Range:    4 bit DIP switch installable in the range 20x-2Fx
  1967.  
  1968. 0200-0203    adresses of the 8255 on the uPW48
  1969. 0208-020B    adresses of ??? on the uPW48 (all showing zeros)
  1970. ---------------------------------------------
  1971. 0208-0209 ----    Intel 82C212B "Neat" chipset - EMS emulation control
  1972. Range:    may be set to 0208, 0218, 0258, 0268, 02A8, 02B8, 02E8
  1973. ---------------------------------------------
  1974. 020C-020F ----    AIMS LAB PC Radio
  1975. Range:    configurable to 020C or 030C
  1976. ---------------------------------------------
  1977. 0210-0217 ----    Expansion unit (XT)
  1978.  
  1979. 0210   W  latch expansion bus data
  1980. 0210  R      verify expansion bus data
  1981. 0211   W  clear wait, test latch
  1982. 0211  R      High byte data address
  1983. 0212  R      Low byte data address
  1984. 0213   W  0=enable,  1=disable expansion unit
  1985. 0214   W  latch data  (receiver card port)
  1986. 0214  R      read data   (receiver card port)
  1987. 0215  R      High byte of address, then Low byte    (receiver card port)
  1988. ---------------------------------------------
  1989. 0218-0219 ----    Intel 82C212B "Neat" chipset - EMS emulation control
  1990. Range:    base address may be set to 0208, 0218, 0258, 0268, 02A8, 02B8, or 02E8
  1991. ---------------------------------------------
  1992. 0220-0223 ---- Sound Blaster / Adlib port (Stereo)
  1993. SeeAlso: 0388-0389
  1994.  
  1995. 0220  R      Left speaker -- Status port
  1996. 0220   W  Left speaker -- Address port
  1997. 0221   W  Left speaker -- Data port
  1998. 0222  R      Right speaker -- Status port
  1999. 0222   W  Right speaker -- Address port
  2000. 0223   W  Right speaker -- Data port
  2001. ---------------------------------------------
  2002. 0220-0227 ----    Soundblaster PRO and SSB 16 ASP
  2003. ---------------------------------------------
  2004. 0220-022F ----    Soundblaster PRO 2.0
  2005. ---------------------------------------------
  2006. 0220-022F ----    Soundblaster PRO 4.0
  2007. Note:    the FM music is accessible on 0388/0389 for compatibility.
  2008.  
  2009. 0220  R      left FM status port
  2010. 0220   W  left FM music register address port (index)
  2011. 0221  RW  left FM music data port
  2012. 0222  R      right FM status port
  2013. 0222   W  right FM music register address port (index)
  2014. 0223  RW  right FM music data port
  2015. 0224   W  mixer register address port (index)
  2016. 0225  RW  mixer data port
  2017. 0226   W  DSP reset
  2018. 0228  R      FM music status port
  2019. 0228   W  FM music register address port (index)
  2020. 0229   W  FM music data port
  2021. 022A  R      DSP read data (voice I/O and Midi)
  2022. 022C   W  DSP write data / write command
  2023. 022C  R      DSP write buffer status (bit 7)
  2024. 022E  R      DSP data available status (bit 7)
  2025. ---------------------------------------------
  2026. 022F      ----    mc-soundmachine, mc 03-04/1992 - SPEECH I/O
  2027. Note:    An Adlib-compatible Covox 'voice master' & 'speech thing' compatible
  2028.       soundcard
  2029. SeeAlso: PORT 0378h"Covox",PORT 0388h-038Fh"soundmachine"
  2030.  
  2031. 022F  RW  Covox compatible speech I/O  (via internal A/D converter,
  2032.         each read access starts a new conversion cycle)
  2033.         register enabled if bit7=1 in PORT 038Fh
  2034. ---------------------------------------------
  2035. 0230-0233 ----    Adaptec 154xB/154xC SCSI adapter.
  2036.         alternate address at 0130, 0134, 0230, 0330 and 0334
  2037. ---------------------------------------------
  2038. 0234-0237 ----    Adaptec 154xB/154xC SCSI adapter.
  2039.         alternate address at 0130, 0134, 0230, 0330 and 0334
  2040. ---------------------------------------------
  2041. 0238-023F ----    COM port addresses on UniRAM card by German magazine c't
  2042.         selectable from 238, 2E8, 2F8, 338, 3E0, 3E8, 3F8
  2043. ---------------------------------------------
  2044. 0238-023x ----    Bus Mouse Port (secondary address)
  2045. Note:    secondary address for bus mice from MS and Logitech, and the ATI
  2046.       video adapter mouse
  2047. ---------------------------------------------
  2048. 023C-023x ----    Bus Mouse Port (primary address)
  2049. Note:    primary address for bus mice from MS and Logitech, the ATI video
  2050.       adapter mouse, and the Commodore PC30III bus mouse
  2051. ---------------------------------------------
  2052. 0240-024F ----    Gravis Ultra Sound by Advanced Gravis
  2053. Range:    The I/O address range is dipswitch selectable from:
  2054.        0200-020F and 0300-030F
  2055.        0210-021F and 0310-031F
  2056.        0220-022F and 0320-032F
  2057.        0230-023F and 0330-033F
  2058.        0240-024F and 0340-034F
  2059.        0250-025F and 0350-035F
  2060.        0260-026F and 0360-036F
  2061.        0270-027F and 0370-037F
  2062. SeeAlso: 0340-034F, 0746
  2063.  
  2064. 0240   W  Mix Control register (see #P069)
  2065. 0241  R      Read Data
  2066. 0241   W  Trigger Timer
  2067. 0246  R      IRQ Status Register (see #P070)
  2068. 0248  RW  Timer Control Reg
  2069.       Same as ADLIB Board (see PORT 0200h)
  2070. 0249   W  Timer Data (see #P071)
  2071. 024B   W  IRQ Control Register (0240 bit 6 = 1) (see #P072)
  2072. 024B   W  DMA Control Register (0240 bit 6 = 0) (see #P073)
  2073. 024F  RW  Register Controls (rev 3.4+)
  2074.  
  2075. Bitfields for Gravis Ultra Sound mix control register:
  2076. Bit(s)    Description    (Table P069)
  2077.  6       Control Register Select (see 024B)
  2078.  5       Enable MIDI Loopback
  2079.  4       Combine GF1 IRQ with MIDI IRQ
  2080.  3       Enable Latches
  2081.  2       Enable MIC IN
  2082.  1       Disable LINE OUT
  2083.  0       Disable LINE IN
  2084. SeeAlso: #P070
  2085.  
  2086. Bitfields for Gravis Ultra Sound IRQ status register:
  2087. Bit(s)    Description    (Table P070)
  2088.  7       DMA TC IRQ
  2089.  6       Volume Ramp IRQ
  2090.  5       WaveTable IRQ
  2091.  3       Timer 2 IRQ
  2092.  2       Timer 1 IRQ
  2093.  1       MIDI Receive IRQ
  2094.  0       MIDI Transmit IRQ
  2095. SeeAlso: #P069,#P072,#P073
  2096.  
  2097. Bitfields for Gravis Ultra Sound timer data:
  2098. Bit(s)    Description    (Table P071)
  2099.  7       Reset Timr IRQ
  2100.  6       Mask Timer 1
  2101.  5       Mask Timer 2
  2102.  1       Timer 2 Start
  2103.  0       Timer 1 Start
  2104. SeeAlso: #P070,#P072
  2105.  
  2106. Bitfields for Gravis Ultra Sound IRQ control register:
  2107. Bit(s)    Description    (Table P072)
  2108.  6    Combine Both IRQ
  2109.  5-3    MIDI IRQ Selector
  2110.     000  No IRQ
  2111.     001  IRQ 2
  2112.     010  IRQ 5
  2113.     011  IRQ 3
  2114.     100  IRQ 7
  2115.     101  IRQ 11
  2116.     110  IRQ 12
  2117.     111  IRQ 15
  2118.  2-0    GF1 IRQ Selector
  2119.     000  No IRQ
  2120.     001  IRQ 2
  2121.     010  IRQ 5
  2122.     011  IRQ 3
  2123.     100  IRQ 7
  2124.     101  IRQ 11
  2125.     110  IRQ 12
  2126.     111  IRQ 15
  2127. SeeAlso: #P070,#P073
  2128.  
  2129. Bitfields for Gravis Ultra Sound DMA Control Register:
  2130. Bit(s)    Description    (Table P073)
  2131.  6    Combine Both DMA
  2132.  5-3    DMA Select Register 2
  2133.     000  No DMA
  2134.     001  DMA 1
  2135.     010  DMA 3
  2136.     011  DMA 5
  2137.     100  DMA 6
  2138.     101  DMA 7 
  2139.  2-0    DMA Select Register 1
  2140.     000  No DMA
  2141.     001  DMA 1
  2142.     010  DMA 3
  2143.     011  DMA 5
  2144.     100  DMA 6
  2145.     101  DMA 7 
  2146. SeeAlso: #P070,#P072,#P075
  2147. ---------------------------------------------
  2148. 0240-0257 ----    RTC (alternate Real Time Clock for XT)     (1st at 0340-0357)
  2149.         (used by TIMER.COM v1.2 which is the 'standard' timer program)
  2150. ---------------------------------------------
  2151. 0258-0259 ----    Intel 82C212B "Neat" chipset - EMS emulation control
  2152. Range:    base address may be set to 0208, 0218, 0258, 0268, 02A8, 02B8, or 02E8
  2153. ---------------------------------------------
  2154. 0258-0259 ---- AT RAMBANK Memory Expansion Board - EXT. MEMORY AND EMS-SUPPORT
  2155. Range:    base address may be set to 0218h, 0228h, 0238h, 0258h, 0268h, 0298h,
  2156.       or 02A8h
  2157. ---------------------------------------------
  2158. 0258-025F ----    Intel Above Board
  2159. ---------------------------------------------
  2160. 0260-0268  ----     LPT port address on the UniRAM card by German magazine c't
  2161.         selectable from 260, 2E0, 2E8, 2F0, 3E0, 3E8.
  2162. ---------------------------------------------
  2163. 0268-0269 ----    Intel 82C212B "Neat" chipset - EMS emulation control
  2164. Range:    base address may be set to 0208, 0218, 0258, 0268, 02A8, 02B8, or 02E8
  2165. ---------------------------------------------
  2166. 026E-026F ----    Dell Enhanced Parallel Port
  2167. SeeAlso: 002E, 015C, 0398
  2168.  
  2169. 026E   W  index for data port
  2170. 026F  RW  EPP command data
  2171. ---------------------------------------------
  2172. 0278      ----    Covox 'Speech Thing' COMPATIBLES
  2173. SeeAlso: PORT 022Fh"Covox",PORT 0388h-038Fh"soundmachine"
  2174.  
  2175. 0278   W  speech data output via printer data port
  2176.         (with mc-soundmachine, enabled if bit5=1 in 38F)
  2177. ---------------------------------------------
  2178. 0278-027E ----    parallel printer port, same as 0378 and 03BC
  2179.  
  2180. 0278   W  data port
  2181. 0279  RW  status port
  2182. 027A  RW  control port
  2183. ---------------------------------------------
  2184. 0280       ----    LCD display on Wyse 2108 PC
  2185. ---------------------------------------------
  2186. 0280-0288  ----    non-standard COM port addresses (V20-XT by German magazine c't)
  2187.         selectable from 0280, 0288, 0290, 0298, 6A0, 6A8
  2188. ---------------------------------------------
  2189. 0288-028F  ----    non-standard COM port addresses (V20-XT by German magazine c't)
  2190. 0280-0288    selectable from 0280, 0288, 0290, 0298, 06A0, 06A8
  2191. 0290-0298
  2192. 0298-029F
  2193. ---------------------------------------------
  2194. 02A0-02A7 ----    Sunshine EW-901BN, EW-904BN
  2195.         EPROM writer card (release 1986) for EPROMs up to 27512
  2196. 02A0-02A3    adresses of the 8255 on the EW-90xBN
  2197. ---------------------------------------------
  2198. 02A2-02A3 ----    MSM58321RS clock
  2199. ---------------------------------------------
  2200. 02A8-02A9 ----    Intel 82C212B "Neat" chipset - EMS emulation control
  2201. Range:    base address may be set to 0208, 0218, 0258, 0268, 02A8, 02B8, or 02E8
  2202. ---------------------------------------------
  2203. 02B0-02BF ----    Trantor SCSI adapter
  2204. ---------------------------------------------
  2205. 02B0-02DF ----    alternate EGA,    primary EGA at 03C0
  2206. ---------------------------------------------
  2207. 02B8-02B9 ----    Intel 82C212B "Neat" chipset - EMS emulation control
  2208. Range: base address may be set to 0208, 0218, 0258, 0268, 02A8, 02B8, or 02E8
  2209. ---------------------------------------------
  2210. 02C0-02Cx ----    AST-clock
  2211. ---------------------------------------------
  2212. 02C0-02DF ----    XT-Real Time Clock 2 (default jumpered address)
  2213. ---------------------------------------------
  2214. 02E0-02E8 ----    LPT port address on the UniRAM card by German magazine c't
  2215. Range:    base address selectable from 0260, 02E0, 02E8, 02F0, 03E0, and 03E8.
  2216. ---------------------------------------------
  2217. 02E0-02EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  2218.         (GAB 0 on XT)
  2219. 02E1  ??  GPIB (adapter 0)
  2220. 02E2
  2221. 02E3
  2222. ---------------------------------------------
  2223. 02E0-02EF ----    data aquisition     (AT)
  2224.  
  2225. 02E2  ??  data aquisition (adapter 0)
  2226. 02E3  ??  data aquisition (adapter 0)
  2227. ---------------------------------------------
  2228. 02E8      ----    S3 86C928 video controller (ELSA Winner 1000)
  2229. ---------------------------------------------
  2230. 02E8-02E9 ----    Intel 82C212B "Neat" chipset - EMS emulation control
  2231. Range:    base address may be set to 0208, 0218, 0258, 0268, 02A8, 02B8, or 02E8
  2232. ---------------------------------------------
  2233. 02E8-02EF ----    serial port, same as 02F8, 03E8 and 03F8 (COM4)
  2234. ---------------------------------------------
  2235. 02E8-02EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  2236.  
  2237. 02E8  R      display status
  2238. 02E8   W  horizontal total
  2239. 02EA  RW  Lookup: DAC mask
  2240. 02EB   W  Lookup: DAC read index
  2241. 02EC   W  Lookup: DAC write index
  2242. 02ED  RW  Lookup: DAC data
  2243. ---------------------------------------------
  2244. 02EA      ----    S3 86C928 video controller (ELSA Winner 1000)
  2245. ---------------------------------------------
  2246. 02F0-2F8  ----    LPT port address on the UniRAM card by German magazine c't
  2247.         selectable from 260, 2E0, 2E8, 2F0, 3E0, 3E8.
  2248. ---------------------------------------------
  2249. 02F8-02FF ----    serial port, same as 02E8, 03E8 and 03F8 (COM2)
  2250.  
  2251. 02F8   W  transmitter holding register
  2252. 02F8  R      receiver buffer register
  2253. 02F8  RW  divisor latch, low byte    when DLAB=1
  2254. 02F9  RW  divisor latch, high byte    when DLAB=1
  2255. 02F9  RW  interrupt enable register when DLAB=0
  2256. 02FA  R      interrupt identification register
  2257. 02FB  RW  line control register
  2258. 02FC  RW  modem control register
  2259. 02FD  R      line status register
  2260. 02FF  RW  scratch register
  2261. ---------------------------------------------
  2262. 0300      ----    Award POST Diagnostic
  2263. ---------------------------------------------
  2264. 0300-0301 ----    Soundblaster 16 ASP MPU-Midi
  2265. ---------------------------------------------
  2266. 0300-???? ----    HP IEC/HP-IB adapter (e.g. for use with tape streamer HP9142)
  2267. ---------------------------------------------
  2268. 0300-031F ----    3com Ethernet adapters (default address)
  2269. ---------------------------------------------
  2270. 0300-???? ----    NE2000 compatible Ethernet adapters
  2271. Range:    may be placed at 0300h, 0320h, 0340h, or 0360h
  2272. ---------------------------------------------
  2273. 0300-0303 ----    Panasonic 52x CD-ROM SCSI Miniport
  2274.         Alternate addresses at 0320, 0340, 0360, and 0380
  2275. ---------------------------------------------
  2276. 0300-030F ----    Philips CD-ROM player CM50
  2277. ---------------------------------------------
  2278. 0300-030F ----    CompaQ Tape drive adapter. alternate address at 0100
  2279. ---------------------------------------------
  2280. 0300-031F ----    prototype cards
  2281.         Periscope hardware debugger
  2282. ---------------------------------------------
  2283. 030C-030F ----    AIMS LAB PC Radio
  2284.  
  2285.     configurable to 020C or 030C
  2286. ---------------------------------------------
  2287. 0310-031F ----    Philips CD-ROM player CM50
  2288. ---------------------------------------------
  2289. 0320-0323 ----    XT HDC 1   (Hard Disk Controller)
  2290. SeeAlso: PORT 01F0h-01F7h
  2291.  
  2292. 0320  RW  data register
  2293. 0321   W  reset controller
  2294. 0321  R      read controller hardware status (see #P074)
  2295. 0322  R      read DIPswitch setting on XT controller card
  2296. 0322   W  generate controller-select pulse
  2297. 0323   W  write pattern to DMA and INT mask register
  2298.  
  2299. Bitfields for XT hard disk controller hardware status:
  2300. Bit(s)    Description    (Table P074)
  2301.  7-6    always 0
  2302.  5    logical unit number
  2303.  4-2    always 0
  2304.  1    error occurred
  2305.  0    always 0 
  2306. ---------------------------------------------
  2307. 0324-0327 ----    XT HDC 2   (Hard Disk Controller)
  2308. ---------------------------------------------
  2309. 0328-032B ----    XT HDC 3   (Hard Disk Controller)
  2310. ---------------------------------------------
  2311. 032C-032F ----    XT HDC 4   (Hard Disk Controller)
  2312. ---------------------------------------------
  2313. 0330-0331 ----    MIDI interface
  2314. ---------------------------------------------
  2315. 0330-0333 ----    Adaptec 154xB/154xC SCSI adapter. default address.
  2316. Range:    alternate address at 0130, 0134, 0230, 0234 and 0334
  2317. ---------------------------------------------
  2318. 0330-033F ----    CompaQ SCSI adapter. alternate address at 0130
  2319. ---------------------------------------------
  2320. 0330-033F ----    Philips CD-ROM player CM50
  2321. ---------------------------------------------
  2322. 0334-0337 ----    Adaptec 154xB/154xC SCSI adapter.
  2323. Range:    alternate address at 0130, 0134, 0230, 0234 and 0330
  2324. ---------------------------------------------
  2325. 0338      ----    AdLib soundblaster card
  2326. ---------------------------------------------
  2327. 0338-033F ----    COM port addresses on UniRAM card by German magazine c't
  2328. Range:    selectable from 0238, 02E8, 02F8, 0338, 03E0, 03E8, 03F8
  2329. ---------------------------------------------
  2330. 0340-034F ----    Philips CD-ROM player CM50
  2331. ---------------------------------------------
  2332. 0340-034F ----    SCSI (1st Small Computer System Interface) adapter
  2333. Note:    alternate address at 0140-014F
  2334. ---------------------------------------------
  2335. 0340-034F ----    Gravis Ultra Sound by Advanced Gravis
  2336. Range: The I/O address range is dipswitch selectable from:
  2337.        0200-020F and 0300-030F
  2338.        0210-021F and 0310-031F
  2339.        0220-022F and 0320-032F
  2340.        0230-023F and 0330-033F
  2341.        0240-024F and 0340-034F
  2342.        0250-025F and 0350-035F
  2343.        0260-026F and 0360-036F
  2344.        0270-027F and 0370-037F
  2345. SeeAlso: 0240-024F, 0746
  2346.    
  2347. 0340   W  MIDI Control (see #P075)
  2348. 0340  R      MIDI Status (see #P076)
  2349. 0341   W  MIDI Transmit Data
  2350. 0341  R      MIDI Receive Data
  2351. 0342  RW  GF1 Page Register / Voice Select
  2352. 0343  RW  GF1/Global Register Select (see #P077)
  2353. 0344  RW  GF1/Global Data Low Byte (16 bits)
  2354. 0345  RW  GF1/Global Data High Byte (8 bits)
  2355. 0346   W  Mixer Data Port
  2356. 0347  RW  GF1 DRAM
  2357.          Direct Read Write at Loction pointed with regs 43 and 44
  2358.  
  2359. Bitfields for Gravis Ultra Sound MIDI control register:
  2360. Bit(s)    Description    (Table P075)
  2361.  7       Receive IRQ (1 = enabled)
  2362.  5-6   Xmit IRQ
  2363.  0-1   Master Reset (1 = enabled)
  2364. SeeAlso: #P070,#P072,#P076
  2365.  
  2366. Bitfields for Gravis Ultra Sound MIDI status register:
  2367. Bit(s)    Description    (Table P076)
  2368.  7    Interrupt pending
  2369.  5    Overrun Error
  2370.  4    Framing Error
  2371.  1    Transmit Register Empty
  2372.  0    Receive Register Empty
  2373. SeeAlso: #P075,#P077
  2374.    
  2375. (Table P077)
  2376. Values for Gravis Ultra Sound GF1/Global Registers:
  2377. ---Voice specific registers---
  2378.  00h  w        Voice Control (see #P078)
  2379.  01h  w        Frequency Control
  2380.          bit 15-10     Integer Portion
  2381.          bit 9-1     Fractional Portion
  2382.  02h  w        Start Address HIGH
  2383.          bit 12-0     Address Lines 19-7
  2384.  03h  w        Start Address LOW
  2385.          bit 15-9     Address Lines 6-0
  2386.          bit 8-5     Fractional Part of Start Address
  2387.  04h  w        End Address HIGH
  2388.          bit 12-0     Address Lines 19-7
  2389.  05h  w        End Address LOW
  2390.          bit 15-9     Address Lines 6-0
  2391.          bit 8-5     Fractional Part of End Address
  2392.  06h  w        Volume Ramp Rate
  2393.          bit 5-0     Amount added
  2394.          bit 7-6     Rate
  2395.  07h  w        Volume Ramp Start
  2396.          bit 7-4     Exponent
  2397.          bit 3-0     Mantissa
  2398.  08h  w        Volume Ramp End
  2399.          bit 7-4     Exponent
  2400.          bit 3-0     Mantissa
  2401.  09h  w        Current Volume
  2402.          bit 15-12     Exponent
  2403.          bit 11-4     Mantissa
  2404.  0Ah  w        Current Address HIGH
  2405.          bit 12-0     Address Lines 19-7
  2406.  0Bh  w        Current Address LOW
  2407.          bit 15-9     Address Lines 6-0
  2408.          bit 8-0     Fractional Position
  2409.  0Ch  w        Pan Position
  2410.          bit 3-0     Pan Postion
  2411.  0Dh  w        Volume Control (see #P079)
  2412.  0Eh  w        Active Voices
  2413.          bit 5-0     #Voices -1  (allowed 13 - 31)
  2414.  0Fh  w        IRQ Source Register (see #P080)
  2415. ---NOT voice specific---
  2416.  41h  r/w   DRAM DMA Control (see #P081)
  2417.  42h  w        DMA Start Address
  2418.          bits 15-0     DMA Address Lines 19-4
  2419.  43h  w        DRAM I/O Address LOW
  2420.  44h  w        DRAM I/O Address HIGH
  2421.          bits 0-3     Upper 4 Address Lines
  2422.  45h  r/w   Timer Control
  2423.          bit 3     Enable Timer 2
  2424.          bit 2     Enable Timer 1
  2425.  46h  w        Timer 1 Count (granularity of 80 micro sec)
  2426.  47h  w        Timer 2 Count (granulatity of 320 micro sec)
  2427.  48h  w        Sampling Frequency
  2428.          rate = 9878400 / (16 * (FREQ + 2))
  2429.  49h  r/w   Sampling Control (see #P082)
  2430.  4Bh  w        Joystick Trim DAC
  2431.  4Ch  r/w   RESET
  2432.          bit 2     GF1 Master IRQ Enable
  2433.          bit 1     DAC Enable
  2434.          bit 0     Master Reset
  2435. ---Voice specific registers---
  2436.  80h  r        Voice Control (see 00h)
  2437.  81h  r        Frequency Control (see 01h)
  2438.  82h  r        Start Address HIGH (see 02h)
  2439.  83h  r        Start Address LOW (see 03h)
  2440.  84h  r        End Address HIGH (see 04h)
  2441.  85h  r        End Address LOW (see 05h)
  2442.  86h  r        Volume Ramp Rate (see 06h)
  2443.  87h  r        Volume Ramp Start (see 07h)
  2444.  88h  r        Volume Ramp End (see 08h)
  2445.  89h  r        Current Volume (see 09h)
  2446.  8Ah  r        Current Address HIGH (see 0Ah)
  2447.  8Bh  r        Current Address LOW (see 0Bh)
  2448.  8Ch  r        Pan Position (see 0Ch)
  2449.  8Dh  r        Volume Control (see 0Dh)
  2450.  8Eh  r        Active Voices (see 0Eh)
  2451.  8Fh  r        IRQ Status (see 0Fh)
  2452. SeeAlso: #P076
  2453.  
  2454. Bitfields for Gravis Ultra Sound voice control global register:
  2455. Bit(s)    Description    (Table P078)
  2456.  7     IRQ pending
  2457.  6     Direction
  2458.  5     Enable WAVE IRQ
  2459.  4     Enable bi-directional Looping
  2460.  3     Enable Looping
  2461.  2     Size data (8/16 bits)
  2462.  1     Stop Voice
  2463.  0     Voice Stopped
  2464. SeeAlso: #P077,#P079
  2465.  
  2466. Bitfields for Gravis Ultra Sound volume control global register:
  2467. Bit(s)    Description    (Table P079)
  2468.  7     IRQ Pending
  2469.  6     Direction
  2470.  5     Enable Volume Ramp IRQ
  2471.  4     Enable bi-directional Looping
  2472.  3     Enable Looping
  2473.  2     Rollover Condition
  2474.  1     Stop Ramp
  2475.  0     Ramp Stopped
  2476. SeeAlso: #P077,#P078
  2477.  
  2478. Bitfields for Gravis Ultra Sound IRQ source register:
  2479. Bit(s)    Description    (Table P080)
  2480.  7     WaveTable IRQ pending
  2481.  6     Volume Ramp IRQ pending
  2482.  4-0     Voice Number
  2483. SeeAlso: #P077,#P078,#P081
  2484.  
  2485. Bitfields for Gravis Ultra Sound DRAM DMA control register:
  2486. Bit(s)    Description    (Table P081)
  2487.  7     Invert MSB
  2488.  6     Data Size (8/16 bits)
  2489.  5     DMA Pending
  2490.  3-4     DMA Rate Divider
  2491.  2     DMA Channel Width (8/16 bits)
  2492.  1     DMA Direction (1 = read)
  2493.  0     DMA Enable
  2494. SeeAlso: #P077,#P080
  2495.  
  2496. Bitfields for Gravis Ultra Sound sampling control register:
  2497. Bit(s)    Description    (Table P082)
  2498.  7     Invert MSB
  2499.  6     DMA IRQ pending
  2500.  5     DMA IRQ enable
  2501.  2     DMA width (8/16 bits)
  2502.  1     Mode (mone/stereo)
  2503.  0     Start Sampling
  2504. SeeAlso: #P077
  2505. ---------------------------------------------
  2506. 0340-0357 ----    RTC (1st Real Time Clock for XT)
  2507.         (used by TIMER.COM v1.2 which is the 'standard' timer program)
  2508. Range:    alternate at 0240-0257
  2509. SeeAlso:  PORT 0240h-0257h
  2510.  
  2511. 0340  RW  0.001 seconds        0-99
  2512. 0341  RW  0.1 and 0.01 seconds    0-99
  2513. 0342  RW  seconds        0-59
  2514. 0343  RW  minutes        0-59
  2515. 0343  RW  hours            0-23
  2516. 0345  RW  day of week        1-7
  2517. 0346  RW  day of month        1-31
  2518. 0347  RW  month            1-12
  2519. 0348  RW  RAM (upper nybble only)
  2520. 0349  RW  year            0-99
  2521. 034A  RW  RAM last month storage
  2522. 034B  RW  RAM year storage (-80)
  2523. 034C  RW  RAM reserved
  2524. 034D  RW  RAM not used
  2525. 034E  RW  RAM not used
  2526. 034F  RW  RAM not used
  2527. 0350  R      interrupt status register
  2528. 0351   W  interrupt control register
  2529. 0352   W  counter reset
  2530. 0353   W  RAM reset
  2531. 0354  R      status bit
  2532. 0355   W  GO command
  2533. 0356  ??  standby interrupt
  2534. 0357  ??  test mode
  2535. ---------------------------------------------
  2536. 0348-0357 ----    DCA 3278
  2537. ---------------------------------------------
  2538. 034C-034F ----    Gravis UltraMax by Advanced Gravis
  2539. Range:    The I/O address range is dipswitch selectable from:
  2540.        0200-020F and 0300-030F
  2541.        0210-021F and 0310-031F
  2542.        0220-022F and 0320-032F
  2543.        0230-023F and 0330-033F
  2544.        0240-024F and 0340-034F
  2545.        0250-025F and 0350-035F
  2546.        0260-026F and 0360-036F
  2547.        0270-027F and 0370-037F
  2548. ---------------------------------------------
  2549. 035A-035B ----    Adaptec AH1520 jumper settings
  2550.  
  2551. 035A  R      I/O channel setup (see #P083)
  2552. 035B  R      transfer mode setup (see #P084)
  2553.  
  2554. Bitfields for Adaptec AH1520 channel setup jumper settings:
  2555. Bit(s)    Description    (Table P083)
  2556.  7    SCSI parity disabled
  2557.  6-5    DMA channel (00 = channel 0, 01 = 5, 10 = 6, 11 = 7)
  2558.  4-3    IRQ number (00 = IRQ9, 01 = IRQ10, 10 = IRQ11, 11 = IRQ12)
  2559.  2-0    SCSI ID
  2560. SeeAlso: #P084
  2561.  
  2562. Bitfields for Adaptec AH1520 transfer mode setup jumper settings:
  2563. Bit(s)    Description    (Table P084)
  2564.  7    DMA transfer mode (clear for PIO)
  2565.  6    boot enabled
  2566.  5-4    boot type
  2567.     00 ???
  2568.     01 boot from floppy
  2569.     10 print configured options
  2570.     11 boot from hard disk
  2571.  3    enable sync negotiation
  2572.  2    enable target disconnection
  2573.  1-0    unused???
  2574. SeeAlso: #P083
  2575. ---------------------------------------------
  2576. 035F      ----    ARTEC Handyscanner A400Z.  alternate address at 15F.
  2577. ---------------------------------------------
  2578. 0360-036F ----    PC network (AT)
  2579. 0360-0367 ----    PC network (XT only)
  2580. ---------------------------------------------
  2581. 0360-036F ----    National Semiconductor DP8390(1)C/NS3249C network chipset
  2582. Note:    cards based on this IEEE 802.3 networking chipset can use any range
  2583.       of 16 consecutive addresses, and provide a total of four pages of
  2584.       sixteen registers (see #P085,#P086,#P087,#P098
  2585.  
  2586. (Table P085)
  2587. Values for NS DP8390C/NS3249C network chipset Page 0 registers:
  2588. Number    Read Register                Write Register
  2589.  00h    Command reg. (see #P089)    CR    Command reg.        CR
  2590.  01h    current local DMA address 0    CLDA0    page start reg.        PSTART
  2591.  02h    current local DMA address 1    CLDA1    page stop reg.        PSTOP
  2592.  03h    boundary pointer        BNRY    boundary pointer    BNRY
  2593.  04h    transmit status reg.        TSR    Tx page start address    TPSR
  2594.  05h    number of collisions reg.    NCR    Tx byte count reg.0    TBCR0 
  2595.  06h    FIFO                    Tx byte count reg.1    TBCR1
  2596.  07h    interrupt status reg.        ISR    interrupt status reg.    ISR
  2597.  08h    current remote DMA address 0    CRDA0    remote start addr.reg.0 RSAR0
  2598.  09h    current remote DMA address 1    CRDA1    remote start addr.reg.1 RSAR1
  2599.  0Ah    reserved                remote byte count reg.0 RBCR0
  2600.  0Bh    reserved                remote byte count reg.1 RBCR1
  2601.  0Ch    receive status reg.        RSR    Rx configuration reg.    RCR
  2602.  0Dh    tally counter 0 (frame errors)    CNTR0    Tx configuration reg.    TCR
  2603.  0Eh    tally counter 1 (CRC errors)    CNTR1    data configuration reg. DCR
  2604.  0Fh    tally counter 2 (missed pkt)    CNTR2    interrupt mask reg.    IMR
  2605. SeeAlso: #P086,#P087,#P088
  2606.  
  2607. (Table P086)
  2608. Values for NS DP8390C/NS3249C network chipset Page 1 registers:
  2609. Number    Read/Write
  2610.  00h    Command            CR (see #P089)
  2611.  01h    physical address reg.0    PAR0
  2612.  02h    physical address reg.1    PAR1        
  2613.  03h    physical address reg.2    PAR2        
  2614.  04h    physical address reg.3    PAR3        
  2615.  05h    physical address reg.4    PAR4        
  2616.  06h    physical address reg.5    PAR5        
  2617.  07h    current page reg.    CURR            
  2618.  08h    multicast address reg.0 MAR0        
  2619.  09h    multicast address reg.1 MAR1        
  2620.  0Ah    multicast address reg.2 MAR2        
  2621.  0Bh    multicast address reg.3 MAR3        
  2622.  0Ch    multicast address reg.4 MAR4        
  2623.  0Dh    multicast address reg.5 MAR5        
  2624.  0Eh    multicast address reg.6 MAR6        
  2625.  0Fh    multicast address reg.7 MAR7        
  2626. SeeAlso: #P085,#P087,#P088
  2627.  
  2628. (Table P087)
  2629. Values for NS DP8390C/NS3249C network chipset Page 2 registers:
  2630. Number    Read Register                Write Register
  2631.  00h    Command                CR    Command             CR
  2632.  01h    page start reg.            PSTART    current local DMA addr.0 CLDA0
  2633.  02h    page stop reg.            BPSTOP    current local DMA addr.1 CLDA1
  2634.  03h    remote next packet pointer        remote next packet pointer
  2635.  04h    Tx page start address        TPSR    reserved
  2636.  05h    local next packet pointer        local next packet pointer
  2637.  06h    address counter (upper)            address counter (upper)
  2638.  07h    address counter (lower)            address counter (lower)
  2639.  08h    reserved                reserved
  2640.  09h    reserved                reserved
  2641.  0Ah    reserved                reserved
  2642.  0Bh    reserved                reserved
  2643.  0Ch    Rx configuration reg.        RCR    reserved
  2644.  0Dh    Tx configuration reg.        TCR    reserved
  2645.  0Eh    data configuration reg.        DCR    reserved
  2646.  0Fh    interrupt mask reg.        IMR    reserved
  2647. Note:    this is a diagnostics page, and should never be modfied under normal
  2648.       operation.
  2649. SeeAlso: #P085,#P086,#P088
  2650.  
  2651. (Table P088)
  2652. Values for NS DP8390C/NS3249C network chipset Page 3 registers:
  2653. Number    Read Register                Write Register
  2654.  00h    Command CR (see #P089)            Command CR
  2655. Note:    Test Page - should never be modified!
  2656. SeeAlso: #P085,#P086,#P087
  2657.  
  2658. Bitfields for NS DP8390C/NS3249C network chipset command register (00h):
  2659. Bit(s)    Description    (Table P089)
  2660.  0    software reset command (1=offline, 0=online)
  2661.  1    do not activate NIC after reset command
  2662.  2    start transmision of a packet
  2663.  3-5    remote DMA command
  2664.     000 not allowed
  2665.     001 remote read
  2666.     010 remote write
  2667.     011 send packet
  2668.     1xx abort/complete rmote DMA
  2669.  6-7    page select
  2670.     00 register page 0
  2671.     01 register page 1
  2672.     10 register page 2
  2673.     11 register page 3
  2674. SeeAlso: #P088 
  2675. ---------------------------------------------
  2676. 0370-0377 ----    FDC 2  (2nd Floppy Disk Controller)    first FDC at 03F0
  2677. Note:    floppy disk controller is usually an 8272, 8272A, NEC765 (or
  2678.       compatible), or an 82072 or 82077AA for perpendicular recording at
  2679.       2.88M
  2680. SeeAlso: PORT 03F0h-03F7h
  2681.  
  2682. 0370  R      diskette Extra High Density controller board jumpers (AT)
  2683. 0370  R      diskette controller status A (PS/2, PS/2 model 30)
  2684. 0371  R      diskette controller status B (PS/2, PS/2 model 30)
  2685. 0372   W  diskette controller DOR (Digital Output Register)
  2686. 0374  R      diskette controller main status register
  2687. 0374   W  diskette controller datarate select register
  2688. 0375  RW  diskette controller command/data register
  2689. 0376  RW  (2nd FIXED disk controller status/data register)
  2690. 0377  RW  (2nd FIXED disk controller drive address register)
  2691. 0377  R      diskette controller DIR (Digital Input Register)
  2692. 0377   W  select register for diskette data transfer rate
  2693. ---------------------------------------------
  2694. 0378      ----    Covox 'Speech Thing' COMPATIBLE SPEECH OUTPUT
  2695. SeeAlso: PORT 022Fh"mc-soundmachine",PORT 0388h-038Fh"soundmachine"
  2696.  
  2697. 0378   W  speech output via printer port
  2698.       (with mc-soundmachine, enabled if bit4=1 in 38F)
  2699. ---------------------------------------------
  2700. 0378-037A ----    parallel printer port, same as 0278 and 03BC
  2701.  
  2702. 0378   W  data port
  2703. 0379  RW  status port
  2704. 037A  RW  control port
  2705.  
  2706. 037B  ??  bit 7: shadow RAM on/off (UniRAM adapter,according to c't 7/90)
  2707. ---------------------------------------------
  2708. 0380-038F ----    2nd Binary Synchronous Data Link Control adapter (see 03A0)
  2709.  
  2710. 0380  RW   on board 8255 port A, internal/external sense
  2711. 0381  RW   on board 8255 port B, external modem interface
  2712. 0382  RW   on board 8255 port C, internal control and gating
  2713. 0383  RW   on board 8255 mode register
  2714. 0384  RW   on board 8253 channel square wave generator
  2715. 0385  RW   on board 8253 channel 1 inactivity time-out
  2716. 0386  RW   on board 8253 channel 2 inactivity time-out
  2717. 0387  RW   on board 8253 mode register
  2718. 0388  RW   on board 8273 read: status  write: command
  2719. 0389  RW   on board 8273 read: response     write: parameter
  2720. 038A  RW   on board 8273 transmit interrupt status
  2721. 038B  RW   on board 8273 receiver interrupt status
  2722. 038C  RW   on board 8273 data
  2723. ---------------------------------------------
  2724. 0388-0389 ---- Sound Blaster / Adlib port - MONO OUTPUT
  2725. SeeAlso: PORT 0220h-0223h,PORT 0388h-038Fh"soundmachine"
  2726.  
  2727. 0388  R      both speakers -- Status
  2728.         bit7  : interrupt request (IRQ)
  2729.         bit6  : timer 1 overflow
  2730.         bit5  : timer 2 overflow
  2731.         bit4-0: reserved
  2732. 0388   W  both speakers -- Address port (see #P090)
  2733.     index in OPL2 (YMF3812), OPL3 (YMF262), OPL4 (YF278-F)
  2734. 0389   W  data port
  2735.  
  2736. (Table P090)
  2737. Values for Sound Blaster dual-speaker address port index:
  2738.  01h    Enable waveform control
  2739.     bit 7-6: (OPL4, OPL3 in OPL2 mode only) lsi test
  2740.     bit 5: (OPL2 only) wave select enable (WS)
  2741.            (OPL4, OPL3) lsi test
  2742.     bit 4-0: lsi test
  2743.  02h    Timer #1 data (OPL2 and OPL3 in OPL2 mode only)
  2744.  03h    Timer #2 data (OPL2 and OPL3 in OPL2 mode only)
  2745.  04h    Timer control flags (OPL2 and OPL3 in OPL2 mode only)
  2746.     bit 7  : reset interrupt (RST)
  2747.     bit 6  : timer 1 mask (MASK1)
  2748.     bit 5  : timer 2 mask (MASK2)
  2749.     bit 4-2: reserved
  2750.     bit 1  : start timer 2 (ST2)
  2751.     bit 0  : start timer 1 (ST1)
  2752.  04h    (OPL3 in OPL3 mode only) connection select
  2753.     bit 7-6: reserved
  2754.     bit 5-0: connection selection
  2755.  05h    (OPL3) compatibility register
  2756.     bit 7-1: reserved
  2757.     bit 0: enable OPL3 mode (NEW), default disabled
  2758.  08h    Speech synthesis mode
  2759.     bit 7: (OPL2 only) speech synthesis or FM music mode (CSM)
  2760.     bit 6: select keyboard split point (SEL/NTS)
  2761.     bit 5-0: reserved
  2762.  20h-35h Amplitude Modulation / Vibrato
  2763.     bit 7: AM modulation (AM)
  2764.     bit 6: vibrato (VIB)
  2765.     bit 5: sustain (EG)
  2766.     bit 4: keyboard scaling rate (KSR)
  2767.     bit 3-0: multi (MF)
  2768.  40h-55h Level key scaling / Total level
  2769.     bit 7-6: key scale level (KSL)
  2770.     bit 5-0: total level (TL)
  2771.  60h-75h Attack / Decay rate
  2772.     bit 7-4: attack rate
  2773.     bit 3-0: decay rate
  2774.  80h-95h Sustain / Release rate
  2775.     bit 7-4: sustain level
  2776.     bit 3-0: release rate
  2777.  A0h-A8h Octave / Frequency (LSB)
  2778.  A9h-AFh ???
  2779.  B0h-B8h Octave / Frequency Number
  2780.     bit 7-6: reserved
  2781.     bit 5  : key on, mute
  2782.     bit 4-2: block, octave
  2783.     bit 1-0: f-number (MSB)
  2784.  BDh    percussion, vibrato, AM    (OPL2, OPL3 in OPL2 mode only)
  2785.     bit 7: amplitude modulation (AM)
  2786.     bit 6: vibrato (VIB)
  2787.     bit 5: ryhthm, percussion on/off (R)
  2788.     bit 4: bass drum on/off (BD)
  2789.     bit 3: snare drum on/off (SD)
  2790.     bit 2: tom-tom on/off (TOM)
  2791.     bit 1: top cymbal on/off (TC)
  2792.     bit 0: hi hat on/off (HH)
  2793.  C0h-C8h Feedback / Algorithm
  2794.     bit 7-4: OPL3: channel D-A
  2795.     bit 3-1: feedback
  2796.     bit 0: connection
  2797.  E0h-F5h Waveform Selection
  2798.     bit 7-3: reserved
  2799.     bit 2  : (OPL3) waveform bit2
  2800.     bit 1-0: waveform
  2801. SeeAlso: #P091
  2802.  
  2803. (Table P091)
  2804. Values for Sound Blaster registers inside groups:
  2805. Offset
  2806.  +00..+02: operators 1-3    modulator channel 1-3
  2807.  +03..+05: operators 4-6    carrier channel 1-3
  2808.  +08..+0A: operators 7-9    modulator channel 4-6
  2809.  +0B..+0D: operators 10-12  carrier channel 4-6
  2810.  +10..+12: operators 13-15  modulator channel 7-9
  2811.  +13..+15: operators 16-18  carrier channel 7-9
  2812.  +06, +07, +0E, +0F: reserved
  2813. SeeAlso: #P090
  2814. ---------------------------------------------
  2815. 0388-0389 ---- Soundblaster PRO FM-Chip
  2816. ---------------------------------------------
  2817. 0388-038B ---- Soundblaster 16 ASP FM-Chip
  2818. ---------------------------------------------
  2819. 0388-038F ----    mc-soundmachine, mc 03-04/1992 - SPEECH I/O
  2820. Note:    Adlib-compatible, Covox 'voice master' & 'speech thing' compatible
  2821.       soundcard
  2822. SeeAlso: PORT 022Fh"soundmachine",PORT 0278h"Covox"
  2823.  
  2824. 0388   W  Covox 'speech thing'compatible speech output via printer port?
  2825.         enabled if bit 6 set in PORT 038Fh
  2826. 0388  RW  Adlib compatible (YM3812), enabled if bit 0 set in PORT 038Fh
  2827.         (see PORT 0388h-0389h"Sound Blaster"
  2828. 0389   W  Adlib compatible (YM3812), enabled if bit 0 set in PORT 038Fh
  2829.         (see PORT 0388h-0389h"Sound Blaster"
  2830. 038A   W  I²C control for TDA7302 NF-MUX and X24C04 EEPROM
  2831.         bit 7: I²C bus SDA out (data),  enabled if bit2=1 in PORT 038Fh
  2832.         bit 0: I²C bus SCL out (clock), enabled if bit2=1 in PORT 038Fh
  2833. 038B  R      I²C status for TDA7302 NF-MUX and X24C04 EEPROM
  2834.         bit 7: I²C bus SDA in (data),  enabled if bit2=1 in PORT 038Fh
  2835.         bit 0: I²C bus SCL in (clock), enabled if bit2=1 in PORT 038Fh
  2836. 038F  RW  configuration port (power on default=0, all features disabled)
  2837.         bit 7 Covox 'voice master' enabled at PORT 022Fh
  2838.         bit 6  ""   'speech thing' enabled at PORT 03BCh
  2839.         bit 5  ""           enabled at PORT 0278h
  2840.         bit 4  ""           enabled at PORT 0378h
  2841.         bit 3  not used (0388???)
  2842.         bit 2  I²C bus enabled (PORT 038Ah,PORT 038Bh)
  2843.         bit 1  gameport enabled (PORT 0201h)
  2844.         bit 0  AdLib registers (PORT 0388h,PORT 0389h) enabled
  2845. ---------------------------------------------
  2846. 0390-0397 ----    Sunshine EW-901B, EW-904B
  2847.         EPROM writer card for EPROMs up to 27512
  2848. 0390-0393  ??  adresses of the 8255 on the EW-90xB
  2849. ---------------------------------------------
  2850. 0390-039F ----    Cluster adapter (AT)
  2851.  
  2852. 0390  ??  (adapter 0)    (XT)
  2853. 0391  ??  (adapter 0)    (XT)
  2854. 0392  ??  (adapter 0)    (XT)
  2855. 0393  ??  (adapter 0)    (XT)
  2856. ---------------------------------------------
  2857. 0398-0399 ----    Dell Enhanced Parallel Port
  2858. SeeAlso: 002E, 015C, 026E
  2859.  
  2860. 0398   W  index for data port
  2861. 0399  RW  EPP command data
  2862. ---------------------------------------------
  2863. 03A0-03AF ----    1st SDLC (Binary Synchronous Data Link Control adapter)
  2864.  
  2865. 03A0  RW   on board 8255 port A, internal/external sense
  2866. 03A1  RW   on board 8255 port B, external modem interface
  2867. 03A2  RW   on board 8255 port C, internal control and gating
  2868. 03A3  RW   on board 8255 mode register
  2869. 03A4  RW   on board 8253 counter 0 unused
  2870. 03A5  RW   on board 8253 channel 1 inactivity time-out
  2871. 03A6  RW   on board 8253 channel 2 inactivity time-out
  2872. 03A7  RW   on board 8253 mode register
  2873. 03A8  RW   on board 8251 data
  2874. 03A9  RW   on board 8251 command/mode/status register
  2875. ---------------------------------------------
  2876. 03B0-03BF ----    MDA  (Monochrome Display Adapter based on 6845)
  2877.  
  2878. 03B0   W  same as 03B4
  2879. 03B1  RW  same as 03B5
  2880. 03B2   W  same as 03B4
  2881. 03B3  RW  same as 03B5
  2882. 03B4   W  MDA CRT index register     (MDA/mono EGA/mono VGA)
  2883.         selects which register (0-11h) is to be accessed through 03B5h
  2884.         Note: this port is read/write on some VGAs
  2885.         bit7-6: VGA: reserved (0)
  2886.         bit5  : VGA: reserved for testing (0)
  2887.         bit4-0: selects which register is to be accessed through 03B5h
  2888. 03B5  RW  MDA CRT data register     (MDA/mono EGA/mono VGA)
  2889.         selected by port 3B4. registers 0C-0F may be read
  2890.         Color adapters are at 3D4/3D5, but are mentioned here for
  2891.           better overview.
  2892.         There are differences in names and some bits functionality
  2893.           on EGA, VGA in their native modes, but clones in their
  2894.           emulation modes emulate the original 6845 at bit level. The
  2895.           default values are for MDA, HGC, CGA only, if not otherwise
  2896.           mentioned.
  2897. 03B6   W  same as 03B4h
  2898. 03B7  RW  same as 03B5h
  2899. 03B8  rW  MDA mode control register (see #P093)
  2900. 03B9  ?W  reserved for color select register on color adapter
  2901. 03B9   W  MDA/HGC: set lightpen flipflop (value written is ignored)
  2902.         cannot be found on native mono EGA, mono VGA (without
  2903.           translation ROM)
  2904. 03BA  R      CRT status register (see #P094)
  2905.         (EGA/VGA) input status 1 register
  2906. 03BA   W  (mono EGA/mono VGA) feature control register
  2907.         (see PORT 03DAh-W for details; VGA, see PORT 03CAh-R)
  2908. 03BB   W  light pen strobe reset (on any value)
  2909.  
  2910. (Table P092)
  2911. Values for mono video adapter CRT data register index:
  2912.                   defaults:    MDA/HGC    HGC   CGA   CGA      CGA
  2913.                          text  graph text1 text2 graph
  2914.                            7  720x348  1     3      5,6
  2915.  00h    horizontal total              61h    35h   38h   71h      38h
  2916.           ET4000: in VGA mode scanlines-5
  2917.               in EGA mode scanlines-2
  2918.  01h    horizontal displayed              50h    2Dh   28h   50h      28h
  2919.           horizontal display end-1 (EGA,VGA)
  2920.  02h    horizontal sync position          52h    2Eh   2Dh 5Ah/5Ch 2Dh
  2921.  03h    sync pulse width              0Fh 07h/0Fh 0Ah   0Ah      0Ah
  2922.            bit7-4 vsync, bit3-0 hsync
  2923.           end horizontal blanking (EGA,VGA)
  2924.            VGA    : bit7=1      : enable read access to regs
  2925.                     10h, 11h (otherwise VGA clones
  2926.                     may show lightpen values)
  2927.            EGA,VGA: bit6-5=0-3: display enable skew control
  2928.             bit4-0      : end blanking
  2929.  04h    vertical total (vcycle-1)          19h    5Bh   1Fh   1Fh      7Fh
  2930.            bit7 only used on MCGA
  2931.           start horizontal retrace (EGA, VGA)
  2932.           Genoa SuperEGA only???:
  2933.            bit7  : start at odd memory address
  2934.            bit6-5: horizontal sync skew
  2935.            bit4-0: start retrace+ retrace width
  2936.  05h    vertical total adjust              06h    02h   06h   06h      06h
  2937.            bit7-5 only used on MCGA
  2938.           end horizontal retrace (EGA, VGA)
  2939.            bit7  : EGA: start at odd memory address
  2940.                VGA: bit5 of end horizontal retrace
  2941.            bit6-5: horizontal sync skew
  2942.            bit4-0: end horizontal retrace
  2943.  06h    vertical displayed              19h    57h   19h   19h      64h
  2944.            bit7 only used on MCGA
  2945.           EGA: vertical total-1
  2946.           VGA: vertical total-2
  2947.  07h    vertical sync pulse width-1          19h    57h   1Ch   1Ch 70h/66h
  2948.            bit7  only used on MCGA
  2949.           controller overflow (EGA,VGA)
  2950.            bit7: VGA: bit9 of start vertical retrace (10h)
  2951.            bit6: VGA: bit9 of vertical display end (12h)
  2952.            bit5: VGA: bit9 of vertical total (06h)
  2953.              EGA: bit5 of cursor-position (0Ah)
  2954.            bit4: bit8 of line compare (18h)
  2955.            bit3: bit8 of start vertical blanking (15h)
  2956.            bit2: bit8 of vertical retrace start (10h)
  2957.            bit1: bit8 of vertical display end (12h)
  2958.            bit0: bit8 of vertical total (06h)
  2959.  08h    interlace mode (not MCGA)          02h    02h   02h   02h      02h
  2960.            bit7-2: reserved
  2961.            bit1  : delay
  2962.            bit0=1: interlace on
  2963.           preset row scan (EGA, VGA)
  2964.            bit7  : reserved
  2965.            bit6-5: VGA: byte panning
  2966.            bit4-0: start row scan after retrace
  2967.  09h    maximum scan lines              0Dh    03h   07h   07h      01h
  2968.            bit7  : VGA: double scan active
  2969.            bit6  : VGA: bit9 of line compare (18h)
  2970.            bit5  : VGA: bit9 of start vertical blanking (15h)
  2971.            bit4-0: maximum scan line 00..31 (height-1)
  2972.  0Ah    cursor start                  0Bh    00h   06h   06h 06h/00h
  2973.            bit7  : reserved
  2974.            bit6-5: original 6845: cursor on/off, blink intervall
  2975.                (not on all adapters, as original MDA, CGA have
  2976.                extra circuitrity to avoid this!!)
  2977.            bit6-5: native EGA: not used
  2978.            bit6  : VGA: not used
  2979.            bit5=0: VGA: cursor on
  2980.            bit4-0: first cursor scanline
  2981.  0Bh    cursor end                  0Ch    00h   07h   07h 07h/00h
  2982.            bit7  : reserved
  2983.            bit6-5: EGA, VGA: cursor skew control
  2984.            bit4-0: end cursor row
  2985.  0Ch    start address high              00h    00h   00h   00h      00h
  2986.            bit7-6 not used by original 6845 (MDA,HGC,CGA)
  2987.  0Dh    start address low              00h    00h   00h   00h      00h
  2988.  0Eh RW    cursor location high              00h    00h   00h   00h      00h
  2989.            bit7-4 not used by original 6845 (MDA,HGC,CGA)
  2990.            bit5-4 reserved on MCGA
  2991.  0Fh RW cursor location low              00h    00h   00h   00h      00h
  2992. ---for 10h-14h MCGA registers see at 3D4h/3D5h---
  2993.  10h R-    light pen high (MDA/CGA/EGA only, some HGC, few VGA
  2994.            clones in emulation, not with ET4000)
  2995.  10h R-    native VGA with bit7=1 in end horizontal blanking (03h) and ET4000:
  2996.            start vertical retrace
  2997.  10h R- MCGA at 3D5h only: mode control status register
  2998.  10h -W EGA, VGA: start vertical retrace
  2999.  10h -W MCGA at 3D5h only: mode control register
  3000.  11h R- light pen low (MDA/CGA/EGA only, some HGC, few VGA
  3001.            clones in emulation, not with ET4000)
  3002.  1xh    according to a info paper by Quarterdeck three extra
  3003.          write-only registers are available in HGC+ for controlling
  3004.          two extra RAMfont modes. No more info available.
  3005.          This might conflict with MCGA/EGA/VGA registers.
  3006.  11h R- native VGA with bit7=1 in end horizontal blanking (03h):
  3007.            end vertical retrace
  3008.  11h -W EGA, VGA: end vertical retrace
  3009.            bit7  : VGA: protection bit
  3010.                 =0 enable write access to 00h-07h
  3011.                 =1 read only regs 00h-07h with the exception
  3012.                    of bit4 in 07h. ET4000: protect 35h also.
  3013.            bit6  : VGA: =0 three, =1 five refreshcycles/line
  3014.                ET4000: reserved
  3015.            bit5=0: (MCGA also) enable vertical interrupt
  3016.            bit4=0: (MCGA also) clear vertical interrupt
  3017.            =1:           no effect
  3018.            bit3-0: (MCGA also) vertical retrace end
  3019.  11h RW MCGA at 3D5h only: interrupt control register
  3020.  12h    EGA, VGA: vertical display end register
  3021.  12h RW MCGA at 3D5h only: character generator/sync pol. register
  3022.  12h R- MCGA at 3D5h only: display sense register
  3023.            (with bit7=1 in 11h only)
  3024.  13h    EGA, VGA: row offset register
  3025.            logical screen line width in
  3026.         byte mode : bytes/(line/2)
  3027.         word mode : bytes/(line/4)
  3028.         dword mode: bytes/(line/8)
  3029.  13h -W MCGA at 3D5h only: character font pointer register
  3030.  14h    EGA, VGA: underline location register
  3031.            bit7=0: reserved
  3032.            bit6  : VGA: 0=word-mode, 1=dword-mode (see 17h, bit6)
  3033.            bit5  : VGA: 0=standard address counter clock
  3034.                 1=address counter clock/4 (see 17h, bit3)
  3035.            bit4-0: horizontal underline row scan
  3036.  14h -W MCGA at 3D5h only: number of characters to load during
  3037.            vretrace period
  3038.  15h    EGA, VGA: start vertical blanking-1
  3039.  16h    EGA, VGA: end vertical blanking register
  3040.            bit7-5 : EGA: reserved, but used on original EGA???
  3041.            bit4-0 : end vertical blanking
  3042.  17h    EGA, VGA: mode control register (see #P095)
  3043.  18h    EGA, VGA: line compare register
  3044.  19h    Genoa SuperEGA only: double scan control
  3045.            at 3B5h only in MDA, HGC emulation, but at 3D5h even in
  3046.            mono EGA modes.
  3047.            bit7-5 : reserved
  3048.            bit4   : HR/VR width adjust flag for double scan mode
  3049.            bit3-1 : 1=test, 0=normal
  3050.            bit0   : double scan enable
  3051.  1Bh    ET3000 only: x-zoom start register
  3052.           The existence of this register is often used to decide
  3053.            between ET3000 and ET4000, as the ET4000 does not offer
  3054.            hardware-zoom features.
  3055.  1Ch    ET3000 only: x-zoom end register
  3056.  1Dh    ET3000 only: y-zoom start register low
  3057.  1Eh    ET3000 only: y-zoom end register low
  3058.  1Fh    ET3000 only: y-zoom start & end high register
  3059.  20h    ET3000 only: zoom start address register low
  3060.  21h    ET3000 only: zoom start address register medium
  3061.  23h    ET3000 only: extended start address (see 33h)
  3062.  24h    ET3000 only: compatibility register (see 34h)
  3063.  25h    ET3000 only: overflow high register (see 35h, 07h)
  3064.  32h    ET4000: RAS/CAS configuration ('key' protected) (see #P096)
  3065.  33h    ET4000: extended start address
  3066.           This register is often used to decide between ET4000
  3067.           and ET3000, when bit3-0 can be reread after write.
  3068.            bit7-4 : reserved
  3069.            bit3-2 : cursor address bit 17-16
  3070.            bit1-0 : linear start address bits 17-16
  3071.  34h    ET4000: 6845 compatibility control register ('key' protected)
  3072.       (see #P097)
  3073.  35h    ET4000: overflow high register (protected by 11h, bit7) (see #P098)
  3074.  36h    ET4000: video system configuration 1 ('key' protected) (see #P099)
  3075.  37h    ET4000: video system configuration 2 ('key' protected) (see #P100)
  3076. Notes:    MDA, HGC, CGA: 6845 registers 00h-0Dh are write only, 0Eh, 0Fh
  3077.            are r/w, and 10h-11h are read only.
  3078.            The alternative initial defaults may be used
  3079.            sometimes on modern adapters.
  3080.     HGC+(RamFont): as with HGC, but 3 (unknown) registers more for
  3081.            font control
  3082.     emulations   : more registers may be r/w, but most often it's
  3083.            the same as with native 6845.
  3084.     MCGA (CGA+)  : Though this is a mixture of CGA and VGA, most
  3085.            registers are same as with CGA, but with some
  3086.            enhancements and incompatibilities to EGA, VGA.
  3087.     native EGA   : registers 00h-0Bh are write only, 0Ch-0Fh are
  3088.            r/w, 10h-11h are read/write, 12h-18h are write
  3089.            only. More regs may be r/w on enhanced clones.
  3090.     GenoaSuperEGA: adapter with chips SEQCRT GN006001 and GRAT
  3091.            GN006002, e.g. c't Super-EGA adapter. Is EGA
  3092.            clone with up to 800x600 and full 6845 emulation.
  3093.     native VGA   : all registers 00-18h are r/w, but 00h-07h are
  3094.            write-locked if bit7 in 11h is set.
  3095.     ET4000         : same as VGA, but with additional r/w registers
  3096.            32h-37h, protected by 'key' except 33h, 35h
  3097.            (see 3BFh for details). 35h is protected by
  3098.            bit7 in 11h. The 'key' must be issued at least
  3099.            after each power on or synchronous reset.
  3100. SeeAlso: #P093,#P094
  3101.  
  3102. Bitfields for mono video adapter mode control register:
  3103. Bit(s)    Description    (Table P093)
  3104.  7 not used by MDA, page number on HGC
  3105.  6    not used
  3106.  6  R-O    (mono ET4000 only) report status of bit 1 (enable 2nd page) of
  3107.       Hercules compatibility register (PORT 03BFh)
  3108.  5    enable blink (0 = intense background, 1 = blink)
  3109.  4    not used
  3110.  3    video enable
  3111.  2    not used
  3112.  1    (MDA) not used
  3113.     (HGC) graphics enable
  3114.     the 6845 has to be reprogrammed completely, if this bit is
  3115.       changed, otherwise the TTL-monitor may be damaged by wrong
  3116.       sync impulses!
  3117.  0    high resolution mode (always set on MDA)
  3118. ---mono ET4000 only, W-O ---
  3119.  7-0    =A0h: second part of 'key', see Hercules compatibility register
  3120.       (PORT 03BFh) for details
  3121. Note:    this port might be completely or partially readable on very few MDA,
  3122.       HGC clones or emulations (e.g. Genoa SuperEGA), but not with the
  3123.       majority of original and clone chips.  It cannot be found on
  3124.       native mono EGA, mono VGA, but on most clones, where it is usually
  3125.       R/W.
  3126. SeeAlso: #P092,#P094
  3127.  
  3128. Bitfields for mono video adapter CRT status register:
  3129. Bit(s)    Description    (Table P094)
  3130.  7    HGC: vertical sync pulse in progress
  3131.  6-4    adapter identification
  3132.     (MSD says) if bit 7 changes within 8000h reads then
  3133.         =000 adapter is Hercules or compatible
  3134.         =001 adapter is Hercules+
  3135.         =101 adapter is Hercules InColor
  3136.         else: adapter is unknown
  3137.  6-4    =111 on MDA and some HGC clones
  3138.  5-4    (mono EGA, mono ET4000) diagnose video display feedback
  3139.     select from color plane enable
  3140.  3    (MDA,HGC) pixel stream (0=currently black, 1=currently white)
  3141.     (mono EGA, mono VGA) vertical retrace in progress
  3142.  2-1    (MDA) reserved
  3143.  2    (HGC, mono EGA) lightpen flipflop set
  3144.     (mono ET4000) reserved (0)
  3145.  1    (HGC) lightpen input stream (if set, current value to get from
  3146.       PORT 03B5h/10h-11h)
  3147.     (mono ET4000) reserved (0)
  3148.  0    horizontal drive enabled
  3149. SeeAlso: #P092,#P093
  3150.  
  3151. Bitfields for EGA,VGA mode control register:
  3152. Bit(s)    Description    (Table P095)
  3153.  7    0=CRTC reset and stop, 1=resume reset
  3154.  6    0=word-mode, 1=byte-mode (VGA: see 14h, bit6)
  3155.  5    0=14bit, 1=16bit address wrap
  3156.  4    (native VGA only) reserved (0)
  3157.  4    (EGA and most VGA clones) output control
  3158.     0: video driver active
  3159.     1: video driver not active
  3160.  3    linear address counter clock (0 = standard, 1 = clock/2)
  3161.     (VGA: see register 14h, bit 5)
  3162.  2    horizontal retrace clock (0 = standard, 1 = clock/2)
  3163.  1    row scan counter
  3164.     0: address bit 14 = scan bit 1
  3165.     1: address bit 14 not altered
  3166.  0    6845 compatibility mode
  3167.     0: address bit 13 = scan bit 0 (as with 6845)
  3168.     1: address bit 13 not altered
  3169. SeeAlso: #P092
  3170.  
  3171. Bitfields for ET4000 RAS/CAS configuration register:
  3172. Bit(s)    Description    (Table P096)
  3173.  7    static column memory
  3174.     ET4000/W32i: interleave mode
  3175.  6    RAL RAS&CAS column setup time
  3176.  5    RCD RAS & CAS time
  3177.  4-3    RSP, RAS pre-charge time
  3178.  2    CPS, CAS pre-charge time
  3179.  1-0    CSW, CAS low pulse width
  3180. SeeAlso: #P092,#P097
  3181.  
  3182. Bitfields for ET4000 compatibility control register:
  3183. Bit(s)    Description    (Table P097)
  3184.  7    6845 compatibility enabled
  3185.  6    ENBA enable double scan/underline in AT&T mode
  3186.  5    ENXL enable translation ROM on writing
  3187.  4    ENXR enable translation ROM on reading
  3188.  3    ENVS VSE register port address
  3189.  2    TRIS tristate ET4000 output pins
  3190.  1    CS2 MCLCK clock select 2
  3191.  0    EMCK enable translation of CS0 bit
  3192. SeeAlso: #P092,#P096,#P098
  3193.  
  3194. Bitfields for ET4000 overflow high register:
  3195. Bit(s)    Description    (Table P098)
  3196.  7    vertical interlace mode
  3197.  6    alternate RMW control
  3198.  5    external sync reset (gen-lock) the line/chr counter
  3199.  4    line compare bit10
  3200.  3    vertical sync start bit10
  3201.  2    vertical display end bit10
  3202.  1    vertical total bit10
  3203.  0    vertical blank start bit10
  3204. SeeAlso: #P092,#P097,#P099
  3205.  
  3206. Bitfields for ET4000 video system configuration 1 register:
  3207. Bit(s)    Description    (Table P099)
  3208.  7    enable 16bit I/O read/write
  3209.  6    enable 16bit display memory read/write
  3210.  5    addressing mode (0=IBM, 1=TLI)
  3211.  4    0=segment / 1=linear system configuration
  3212.  3    font width control (1=up to 16bit, 0=8bit)
  3213.  2-0    refresh count per line-1
  3214. SeeAlso: #P092,#P098,#P100
  3215.  
  3216. Bitfields for ET4000 video system configuration 2 register:
  3217. Bit(s)    Description    (Table P100)
  3218.  7    DRAM display memory type (1=VRAM, 0=DRAM)
  3219.  6    test (1=TLI interal test mode)
  3220.  5    priority threshold control (0=more mem BW)
  3221.  4    disable block read-ahead
  3222.  3    display memory data depth
  3223.  2    bus read data latch control
  3224.  1-0    display memory data bus width
  3225. SeeAlso: #P092,#P099
  3226. ---------------------------------------------
  3227. 03BC-03BF ----    PARALLEL PRINTER PORT (MDA's LPT1)
  3228. Range:    PORT 0278h, PORT 0378h, or PORT 03BCh
  3229.  
  3230. 03BC   W  data port
  3231. 03BC  R      bidirectional port: input from connector
  3232.       unidirectional port: last value written to port
  3233. 03BD  RW  status port (see #P101)
  3234. 03BE  RW  control port (see #P102)
  3235.  
  3236. Bitfields for parallel interface status port:
  3237. Bit(s)    Description    (Table P101)
  3238.  7    busy
  3239.  6    NOT acknowledge (approx. 5us low pulse)
  3240.  5    out of paper
  3241.  4    printer is selected
  3242.  3    *no* error
  3243.  2     IRQ has *not* occurred
  3244.     (PS/2) printer returned -ACK
  3245.  1-0    reserved
  3246. SeeAlso: #P102
  3247.  
  3248. Bitfields for parallel interface control port:
  3249. Bit(s)    Description    (Table P102)
  3250.  7-5    reserved
  3251.  7    (see PORT 037Bh bit 7)
  3252.  5    enable bidirectional port
  3253.     (PS/2 also requires enabling via port 0102h)
  3254.  4    enable IRQ (via -ACK)
  3255.  3    select printer (SLCT IN line)
  3256.  2    =0 initialize printer (-RESET line)
  3257.  1    automatic line feed
  3258.  0    strobe (must be set for minimum of 5 microseconds)
  3259. SeeAlso: #P101
  3260. ---------------------------------------------
  3261. 03BF      ----    Hercules configuration switch register
  3262. Note:    can also be found on EGA and VGA clones in Hercules emulation
  3263.  
  3264. 03BF   W  configuration switch register (see #P103)
  3265. 03BF   W  (ET4000) Hercules compatibility register (see #P104)
  3266. 03BF  RW  (Genoa SuperEGA) miscellaneous register
  3267.     Note: only available in MDA, HGC, and CGA emulation; should be
  3268.       compatible with Hercules configuration register, but may contain
  3269.       additional features
  3270.  
  3271. Bitfields for Hercules configuration switch register:
  3272. Bit(s)    Description    (Table P103)
  3273.  7-2    reserved
  3274.  1    =0  disables upper 32K of graphics mode buffer
  3275.     =1  enables upper 32K of graphics mode buffer
  3276.  0    =0  prevents graphics mode
  3277.     =1  allows graphics mode
  3278. SeeAlso: #P104
  3279.  
  3280. Bitfields for ET4000 compatibility register:
  3281. Bit(s)    Description    (Table P104)
  3282.  1    =0 disables upper 32K of graphics mode buffer
  3283.     =1 enables upper 32K of graphics mode buffer
  3284.  0    reserved (not needed for HGC graphics)
  3285.  7-0    =03h: first part of 'key' for access to some extra
  3286.          ET4000 regs. To issue the 'key', the following
  3287.          code must be executed:
  3288.           MOV DX, 3BFh
  3289.           MOV AL, 3
  3290.           OUT DX, AL
  3291.           MOV DX, 3D8h  (3B8h in mono mode)
  3292.           MOV AL, 0A0h
  3293.           OUT DX, AL
  3294. SeeAlso: #P103 
  3295. ---------------------------------------------
  3296. 03C0-03C7 ----    Sunshine EW-901, EW-901A, EW-904, EW-904A
  3297.         EPROM writer card for EPROMs up to 27512
  3298. 03C0-03C3    adresses of the 8255 on the EW-90x
  3299. ---------------------------------------------
  3300. 03C0-03CF ----    EGA  (1st Enhanced Graphics Adapter)    alternate at 02C0
  3301.  
  3302. !!!
  3303. 03C0  rW  EGA VGA ATC index/data register
  3304.          Every write access to this register will toggle an internal
  3305.          index/data selection flipflop, so that consequtive writes to
  3306.          index & data is possible through this port. To get a defined
  3307.          start condition, each read access to the input status register
  3308.          #1 (3BAh in mono / 3DAh in color) resets the flipflop to load
  3309.          index. If values are changed during the vertical retrace
  3310.          period only no flicker will occur.
  3311.  
  3312.         index register (flipflop reset to 'index'): (default 20h)
  3313.          bit7-6: reserved
  3314.          bit5  : 0=CPU access (screen dark),
  3315.              1=video access to registers
  3316.          bit4-0: index in ATC (0..31)
  3317.  
  3318.         indexed registers in ATC (flipflop set to 'data'):
  3319.          00h..0Fh 16 palette registers, each:
  3320.              bit7-6: reserved
  3321.              bit5  : secondary red video
  3322.              bit4  : secondary green/intensity video
  3323.              bit3  : secondary blue/mono video
  3324.              bit2  : primary red video
  3325.              bit1  : primary green video
  3326.              bit0  : primary blue video
  3327.          10h    mode control register
  3328.              bit7  : VGA: SB/SG select
  3329.                  (0=4 pages á 64 regs, 1=16 pages á 16 regs)
  3330.              bit6  : VGA: PELCLK/2 (0=4bit color, 1=8bit color)
  3331.              bit5  : VGA: enable pixel panning
  3332.                  (0=all, 1=up to line compare register value)
  3333.              bit4  : reserved
  3334.              bit3  : background intensity (0=16 colors, 1=blink)
  3335.              bit2  : line graphics enable (0=background, 1=line 8=9)
  3336.              bit1  : 1=mono, 0=color select
  3337.              bit0  : 1=graphics, 0=text select
  3338.          11h    EGA: overscan color register (see VGA: 11h) (default: 00h)
  3339.              bit7-6: reserved
  3340.              bit5  : secondary red (SR)
  3341.              bit4  : secondary green (SR) / intensity
  3342.              bit3  : secondary blue (SB)
  3343.              bit2  : primary red (PR)
  3344.              bit1  : primary green (PG)
  3345.              bit0  : primary blue (PB)
  3346.          11h    VGA: overscan color register (see EGA: 11h) (default: 00h)
  3347.              bit7  : secondary intensity border color (SI)
  3348.              bit6  : secondary red (SR)
  3349.              bit5  : secondary green (SG)
  3350.              bit4  : secondary blue (SB)
  3351.              bit3  : intensity border color (PI)
  3352.              bit2  : primary red (PR)
  3353.              bit1  : primary green (PG)
  3354.              bit0  : primary blue (PB)
  3355.          12h    color enable register
  3356.              bit7-6: reserved
  3357.              bit5-4: diagnose / video status select
  3358.                     EGA:      VGA, ET4000:
  3359.                   00b = PR/PB         PR/PB
  3360.                   01b = SB/PG         SG/SB
  3361.                   10b = SR/SG         PI/PG
  3362.                   11b = reserved     SI/SR
  3363.              bit3  : enable plane 3
  3364.              bit2  : enable plane 2
  3365.              bit1  : enable plane 1
  3366.              bit0  : enable plane 0
  3367.          13h    horizontal pixel panning register
  3368.              bit7-4: reserved
  3369.              bit3-0: horizontal pixel panning
  3370.          14h    VGA: color select register (default: 00h)
  3371.              bit7-4: reserved
  3372.              bit3  : s-color 7
  3373.              bit2  : s-color 6
  3374.              bit1  : s-color 5 (only with 16 pages á 16 regs)
  3375.              bit0  : s-color 4 (only with 16 pages á 16 regs)
  3376.          16h    ET3000, ET4000 only: ATC miscellanenous
  3377.              (at least on ET4000 'key' protected)
  3378.              This register is also supported by ET3000, but the
  3379.              description is proved for ET4000 only.
  3380.              bit7  : bypass the internal palette
  3381.                  (e.g. for HiColor modes with Sierra RAMDACs)
  3382.              bit6  : reserved
  3383.              bit5-4: select high resolution / color mode
  3384.              bit3-0: reserved
  3385. 03C1  R      VGA    ATC index/data read register
  3386. 03C2  R      EGA VGA input status 0 register
  3387.              (Genoa SuperEGA in all emulation modes)
  3388.              bit6-5 are 'key' protected on ET4000.
  3389.              bit7  : CRT interrupt occured
  3390.                  EGA: 0=vertical retrace in progress, 1=display
  3391.              bit6  : EGA and ET4000: feature control 1 (pin17)
  3392.              bit5  : EGA and ET4000: feature control 0 (pin19)
  3393.              bit4  : DIP switch sense
  3394.                 (0=closed, 1=open/switches readable)
  3395.              bit3-0: reserved
  3396. 03C2   W  EGA VGA miscellaneous output register
  3397.              (Genoa SuperEGA in all emulation modes)
  3398.              bit7-6: vertical resolution
  3399.                   00b= 200 lines (EGA)
  3400.                   01b= 400 lines (VGA)
  3401.                   10b= 350 lines (EGA/VGA)
  3402.                   11b= 480 lines (VGA)
  3403.                  vsync (bit7) / hsync (bit6) polarity
  3404.                   (0=positive, 1=negative)
  3405.              bit5  : odd/even pagebit
  3406.              bit4  : EGA: 0=video driver on,
  3407.                       1=video driver off (feature connector used)
  3408.              bit3-2: pixelclock
  3409.                   00b= 14/25MHz (EGA/VGA)
  3410.                   01b= 16/28Mhz (EGA/VGA)
  3411.                   10b= EGA, VGA: external clock (EGA)
  3412.                   11b= EGA, VGA: reserved
  3413.                   10b= Genoa SuperEGA: 39Mhz
  3414.                   11b= Genoa SuperEGA: 26,824Mhz
  3415.              bit1=1: enable CPU RAM access
  3416.              bit0  : CRTC port address
  3417.                   0=3B4 mono
  3418.                   1=3D4 color
  3419.                     (color EGA: enable feature control at 3DAh,
  3420.                         status reg 1 at 3D2h)
  3421. 03C3  RW  VGA    video subsystem enable (see also port 46E8h)
  3422.         for IBM, motherboard VGA only
  3423.              bit7-4=0: reserved
  3424.              bit3     : select video subsystem (address 46E8h)
  3425.              bit2-1     : reserved
  3426.              bit0     : select video subsystem (address 03C3)
  3427. 03C4   W  EGA    TS index register
  3428. 03C4  RW  VGA    sequencer index register
  3429.              bit7-3     : reserved
  3430.              bit2-0     : current TS index
  3431. 03C5   W  EGA    TS data register
  3432. 03C5  RW  VGA    sequencer data register
  3433.         EGA, VGA indexed TS registers:
  3434.             00h reset register
  3435.              bit7-2 : reserved
  3436.              bit1 =0: synchronous reset (EGA/VGA)
  3437.              bit0 =0: asynchronous reset (EGA, ET4000)
  3438.                   synchronous reset, also (VGA)
  3439.             01h clocking mode register / TS mode
  3440.              bit7-6 : reserved
  3441.              bit5 =1: VGA: screen refresh off
  3442.              bit4    : VGA: shift load (0=4x8, 1=1x32)
  3443.              bit3    : dot clock (0=normal, 1=clock/2)
  3444.              bit2    : serial shift video load (0=4x8, 1=2x16)
  3445.              bit1    : EGA: CRTC bandwidth (0=4/5, 1=2/5)
  3446.              bit0    : dot clocks (0=9, 1=8) (ET4000: see 06h)
  3447.             02h map mask register
  3448.              bit7-4 : reserved
  3449.              bit4    : Genoa SuperEGA only: plane4 ???
  3450.              bit3    : write enable display memory plane 3
  3451.              bit2    : write enable display memory plane 2
  3452.              bit1    : write enable display memory plane 1
  3453.              bit0    : write enable display memory plane 0
  3454.             03h character map select register / font select
  3455.              bit7-6 : reserved
  3456.              bit5    : VGA: bit3 for 2nd text-font
  3457.              bit4    : VGA: bit3 for 1st text-font
  3458.              bit3-2 : 2nd text-font (attr bit3=1)
  3459.              bit1-0 : 1st text-font (attr bit3=0)
  3460.                   offset in font memory (4-7: VGA only)
  3461.                    0 00b =  0KB
  3462.                    0 01b = 16KB
  3463.                    0 10b = 32KB
  3464.                    0 11b = 48KB
  3465.                    1 00b =  8KB
  3466.                    1 01b = 24KB
  3467.                    1 10b = 40KB
  3468.                    1 11b = 56KB
  3469.             04h memory mode register
  3470.              bit7-4 : reserved
  3471.              bit3 =1: VGA: enable chain 4 linear graphics mode
  3472.              bit2    : 0=odd/even mode, 1=sequencial mode
  3473.              bit1 =1: extended memory (0=64KB, 1=more)
  3474.              bit0    : EGA: 1=textmode, 0=graphics mode
  3475.             06h ET3000 only: Zoom control register
  3476.             06h ET4000 only: TS state control (protected by 'key')
  3477.              bit7-3 : reserved
  3478.              bit2-1 : timing sequencer state bit2-1
  3479.                    (bit0 is bit0 TS mode register)
  3480.                    00 0b=  9 dots
  3481.                    00 1b=  8 dots
  3482.                    01 0b= 10      (10-16 are ET4000 only)
  3483.                    01 1b= 11
  3484.                    10 0b= 12
  3485.                    11 1b= 16
  3486.              bit0    : reserved
  3487.             07h ET3000/ET4000 only: TS auxiliary mode
  3488.              (at least on ET4000 protected by 'key')
  3489.              This register is also supported by ET3000, but
  3490.              the description is proved on ET4000 only:
  3491.              bit7    : 1=VGA, 0=EGA compatibility mode
  3492.              bit6    : select MCLK/2 (with bit0=0)
  3493.              bit5    : BIOS ROM address map 2
  3494.              bit4    : reserved
  3495.              bit3    : BIOS ROM address map 1
  3496.              bit2 =1: reserved
  3497.              bit1    : select SCLK input from MCLK
  3498.              bit0    : select MCLK/4 (with bit6=1)
  3499.              bit5/3: ROM address
  3500.                   00b=C0000-C3FFF
  3501.                   01b=disabled
  3502.                   10b=C0000-C5FFF, C6800-C7FFF
  3503.                   11b=C0000-C7FFF (default)
  3504. 03C6  RW  (VGA, MCGA) PEL mask register (default FFh)
  3505.          VGA:    AND mask for color-register address.
  3506.          MCGA:    Never change from the default FFh.
  3507. 03C6  RW  HiColor ET4000 (Sierra RAMDACs e.g. SC11486, SC11481, SC11488):
  3508.          Enable HiColor feature: beside other assignments,
  3509.          consequtive read 3C6h 4 times and write magic value 80h to it.
  3510. 03C7   W  (VGA,MCGA,CEG-VGA) PEL address register (read mode)
  3511.          Sets DAC in read mode and assign start of color register
  3512.          index (0..255) for following read accesses to 3C9h.
  3513.          Don't write to 3C9h while in read mode. Next access to
  3514.          03C8h will stop pending mode immediatly.
  3515. 037C   W  (CEG-Color VGA w/ Edun Labs RAMDACs)
  3516.          Enable and set Countinous Edge Graphics Mode:
  3517.          Consecutive write the following three key sequences in read
  3518.          mode (!) to 3C9h register DEh : 'CEG', 'EDS', 'UNx' (x see
  3519.          below). Current CEG mode can be read from palette register
  3520.          BFh 'blue', write access to that register will disable CEG
  3521.          features.
  3522.          In CEG modes by combining old with new colors and dynamically
  3523.          changing palette values, the effective colors displayable
  3524.          are enhanced dramatically (in EDP modes up to virtually 32bit
  3525.          truecolor) on standard 16/256 color VGA. Also, effective
  3526.          resolution enhancement takes effect by anti-aliasing.
  3527.          Neccessary EDP escape sequences should be moved to image
  3528.          border or single colored areas, if possible.
  3529.  
  3530.          REP-mode: if pixel are doubled in current video mode
  3531.          EDP-mode: pseudo-truecolor with Edsun dynamic palette
  3532.  
  3533.          CEG modes:
  3534.            x:  mode:     colors:  mix:    pixel depth:  effective colors:
  3535.            0 = disabled       256       -         8            256
  3536.            1 = A        16      16         8           1920
  3537.            2 = A+REP        16      16      8 dblscn       1920
  3538.            3 = A+EDP        15      16            truecolor
  3539.            4 = reserved         -       -         -             -
  3540.            5 = B        16       8         8            960
  3541.            6 = B+REP        16       8      8 dblscn        960
  3542.            7 = B+EDP        15       8            truecolor
  3543.            8 = reserved         -       -         -             -
  3544.            9 = C         8       8         4            224
  3545.           10 = C+REP         8       8      4 dblscn        224
  3546.           11 = C+EDP         7       8            truecolor
  3547.           12 = reserved         -       -         -             -
  3548.           13 = D       223      32         8         792096
  3549.           14 = D+REP       223      32      8 dblscn     792096
  3550.           15 = D+EDP       223      32            truecolor
  3551.  
  3552.          Codes for mixes:
  3553.  
  3554.           Mode A:           |  Mode C:
  3555.            mix: new:    old:   |   mix: new:   old:   colorcode:
  3556.             0 = 32/32    0/32   |    0 =      -     -     0
  3557.             1 = 30/32    2/32   |    1 =      -     -     1
  3558.             2 = 28/32    4/32   |    2 =      -     -     2
  3559.             3 = 26/32    6/32   |    3 =      -     -     3
  3560.             4 = 24/32    8/32   |    4 =      -     -     4
  3561.             5 = 22/32  10/32   |    5 =      -     -     5
  3562.             6 = 20/32  12/32   |    6 =      -     -     6
  3563.             7 = 18/32  14/32   |    7 =      -     -     7/EDP
  3564.             8 = 16/32  16/32   |    8 = 30/32    2/32   -
  3565.             9 = 14/32  18/32   |    9 = 28/32    4/32   -
  3566.            10 = 12/32  20/32   |   10 = 26/32    6/32   -
  3567.            11 = 10/32  22/32   |   11 = 24/32    8/32   -
  3568.            12 =     8/32  24/32   |   12 = 22/32  10/32   -
  3569.            13 =     6/32  26/32   |   13 = 20/32  12/32   -
  3570.            14 =     4/32  28/32   |   14 = 18/32  14/32   -
  3571.            15 =     2/32  30/32   |   15 = 16/32  16/32   -
  3572.  
  3573.           Mode B:           |  Mode D:
  3574.            mix: new:    old:   |   mix:          new:   old:  description:
  3575.             0 = 30/32    2/32   |   00h..BEh =    -      -   normal color
  3576.             1 = 26/32    6/32   |   BFh        =    -      -   EDP
  3577.             2 = 22/32  10/32   |   C0h        = 32/32   0/32
  3578.             3 = 18/32  14/32   |   C1h        = 31/32   1/32
  3579.             4 = 14/32  18/32   |   C2h        = 30/32   2/32
  3580.             5 = 10/32  22/32   |   ...        =  ...    ...
  3581.             6 =     6/32  26/32   |   DFh        =  0/32  32/32
  3582.             7 =     2/32  30/32   |   E0h-FFh  =    -      -   normal color
  3583.  
  3584.          Palette-color-register single-byte-format (each 3 times):
  3585.  
  3586.           Mode A:          Mode C:
  3587.            bit7-4: mix code       bit3     : 0=color, 1=code
  3588.            bit3-0: color code       bit2-0: color / mix code
  3589.  
  3590.           Mode B:          Mode D:
  3591.            bit7-5: mix code       bit7-0: see mix code table
  3592.            bit4     : 0=new, 1=old      Non-CEG modes:
  3593.            bit3-0: color code       bit7-0: as usual
  3594.  
  3595.          In EDP modes, video-memory-palette-changing escape-sequences:
  3596.  
  3597.           Mode A:     Mode B:      Mode C:     Mode D:
  3598.            7/escape    7/escape       7/escape    0BFh
  3599.            red           red       red7-4      red
  3600.            green       green       red3-0      green
  3601.            blue           blue       green7-4    blue
  3602.            address     address       green3-0    address
  3603.                        blue7-4
  3604.                        blue3-0
  3605.                        address
  3606. 03C7  R      VGA    DAC state register
  3607.         bit7-2 reserved
  3608.         bit1-0: 00b write palette cycle (write mode)
  3609.             01h reserved
  3610.             10b reserved
  3611.             11b read palette cycle (read mode)
  3612. 03C8  RW  (VGA,MCGA) PEL address register (write mode)
  3613.          Sets DAC in write mode and assign start of color register
  3614.          index (0..255) for following write accesses to 3C9h.
  3615.          Don't read from 3C9h while in write mode. Next access to
  3616.          03C8h will stop pending mode immediatly.
  3617. 03C8  RW  (Genoa SuperEGA) SuperEGA control register (all emulation modes)
  3618.           bit7-2: reserved
  3619.           bit1    : 0=EGA mode, 1=backward compatibility mode
  3620.           bit0    : not used
  3621. 03C9  RW  (VGA,MCGA) PEL data register
  3622.          Three consequtive reads (in read mode) or writes (in write
  3623.          mode) in the order: red, green, blue. The internal DAC index
  3624.          is incremented each 3rd access.
  3625.           bit7-6: HiColor VGA DACs only: color-value bit7-6
  3626.           bit5-0:             color-value bit5-0
  3627. 03CA   W  EGA    graphics 2 position register
  3628. 03CA  R      VGA    feature control register (see PORT 03BAh,PORT 03DAh-W)
  3629. 03CB  RW  (ET4000/W32) GDC segment select register 2 ('key' protected?)
  3630.         The existence of this r/w register 0..255 is often
  3631.          used to decide between ET4000 and ET4000/W32.
  3632.          bit7-6: reserved, but existent
  3633.          bit5-4: bits 5-4 of read segment pointer
  3634.          bit3-2: reserved, but existent
  3635.          bit1-0: bits 5-4 of write segment pointer
  3636. 03CC   W  EGA    graphics 1 position register
  3637. 03CC  R      VGA    miscellaneous output register (see PORT 03C2h-W)
  3638. 03CD  RW  (ET3000, ET4000, ET4000/W32) GDC segment select ('key' protected)
  3639.         The existence of this r/w register is often used as
  3640.         detection of ET3000, ET4000 and ET4000/W32 chips.
  3641.          bit7-4: read segment pointer for mapping to A0000h
  3642.          bit3-0: write segment pointer for mapping to A0000h
  3643. 03CE   W  EGA    GDC index register
  3644. 03CE  RW  VGA    graphics address register / GDC index
  3645.               bit7-4: reserved
  3646.               bit3-0: index
  3647. 03CF   W  EGA    GDC data register
  3648. 03CF  RW  VGA    other graphics register
  3649.         (EGA,VGA) indexed registers in GDC:
  3650.          00h set/reset register (default 00h)
  3651.               functionality depending on write mode (see 05h)
  3652.               bit7-4: reserved
  3653.               bit3  : 0=write 00h, 1=write FFh in plane 3
  3654.               bit2  : 0=write 00h, 1=write FFh in plane 2
  3655.               bit1  : 0=write 00h, 1=write FFh in plane 1
  3656.               bit0  : 0=write 00h, 1=write FFh in plane 0
  3657.          01h enable set/reset register (default 00h)
  3658.               bit7-4: reserved (used on Genoa SuperEGA???)
  3659.               bit3  : enable set/reset plane 3
  3660.               bit2  : enable set/reset plane 2
  3661.               bit1  : enable set/reset plane 1
  3662.               bit0  : enable set/reset plane 0
  3663.               bit3-0: 0=CPU access, 1=set/reset access to plane
  3664.          02h color compare register (default 00h)
  3665.               bit7-4: reserved
  3666.               bit3  : color compare 3
  3667.               bit2  : color compare 2
  3668.               bit1  : color compare 1
  3669.               bit0  : color compare 0
  3670.               bit3-0: color number
  3671.          03h data rotate register (default 00h)
  3672.               bit7-5: reserved
  3673.               bit4-3: logical function select
  3674.                    00b= CPU-data overwrites
  3675.                    01b= CPU-data AND with latch-register
  3676.                    10b= CPU-data OR with latch-register
  3677.                    11b= CPU-data XOR with latch-register
  3678.               bit2-0: rotate count
  3679.          04h read map select register (default 00h)
  3680.               bit7-3: reserved
  3681.               bit2  : EGA?? & Genoa SuperEGA: map select bit2
  3682.               bit1-0: map select (0..3)
  3683.          05h mode register
  3684.               bit7  : reserved
  3685.               bit6  : VGA: 0=standard, 1=enable 256 colors
  3686.               bit5  : shift register mode, 0=standard, 1=CGA-graphics
  3687.                   (not used on Genoa SuperEGA???)
  3688.               bit4=1: enable odd/even address mode
  3689.               bit3  : read mode, 0=mode0, 1=mode1
  3690.               bit2  : EGA: test condition, 0=standard, 1=output tristate
  3691.               bit1-0: write mode
  3692.                    00b = mode0, plane source is CPU or set/reset
  3693.                    01b = mode1, plane source is latch-register
  3694.                    10b = mode2, plane source is CPU as set/reset
  3695.                    11b = VGA: mode3, CPU as set/reset AND bitmask
  3696.          06h miscellaneous register
  3697.               bit7-4: reserved (=0)
  3698.               bit3-2: memory map
  3699.                    00b = A0000..BFFFF (128KB)
  3700.                    01b = A0000..AFFFF (64KB)
  3701.                    10b = B0000..B7FFF (32KB)
  3702.                    11b = B8000..BFFFF (32KB)
  3703.               bit1  : chain odd maps to even, 1=subst addess bit0
  3704.               bit0  : 0=testmode, 1=graphics mode
  3705.          07h color don't care register
  3706.               bit7-4: reserved
  3707.               bit3=1: color plane 3 don't care (ignore bit3)
  3708.               bit2=1: color plane 2 don't care (ignore bit2)
  3709.               bit1=1: color plane 1 don't care (ignore bit1)
  3710.               bit0=1: color plane 0 don't care (ignore bit0)
  3711.          08h bit mask register (default FFh)
  3712.               bit7-0: bitmask for latch/databyte
  3713.                   (bit set=change allowed)
  3714.          0Fh Paradise SuperVGA only: lock register
  3715.              The ability to write and reread 00h..07h to this register
  3716.              is often used as detection of Paradise chips.
  3717.               bit7-0 = 01h lock/hide Paradise specific registers
  3718.                  = 05h unlock Paradise specific registers
  3719.               bit7-3: reserved
  3720.               bit2-0: flipflops, reserved
  3721. ---------------------------------------------
  3722. 03CE-03CF ----    Compaq Qvision - Functionality Level
  3723.  
  3724. 03CE   W  graphics address register (index for next port)
  3725. 03CF  RW  other graphics register
  3726.     Index
  3727.      0Ch  RO    controller version
  3728.             2Fh Advanced VGA
  3729.             37h early QVision 1024
  3730.             71h QVision 1280 or later QVision 1024
  3731.      0Dh        extended controller version
  3732.      0Eh        extended controller capabilities
  3733.      0Fh        environment info
  3734.      54h        available memory
  3735.      55h        phase-locked-loop clock
  3736.      56h-57h    controller capabilities
  3737. ---------------------------------------------
  3738. 03D0-03DF ----    CGA   (Color Graphics Adapter)
  3739.  
  3740. 03D0   W  same as 03D4
  3741. 03D1  RW  same as 03D5
  3742. 03D2   W  same as 03D4
  3743. 03D3  RW  same as 03D5
  3744. 03D4  rW  CRT (6845) index register   (CGA/MCGA/color EGA/color VGA)
  3745.     selects which register (0-11h) is to be accessed through 03D5
  3746.     this port is r/w on some VGA, e.g. ET4000
  3747.         bit 7-6 =0: VGA: reserved
  3748.         bit 5   =0: VGA: reserved for testage
  3749.         bit 4-0   : selects which register is to be accessed through 03D5
  3750. 03D5   W  CRT (6845) data register    (CGA/MCGA/color EGA/color VGA)
  3751.         selected by port 03D4h. registers 0C-0F may be read
  3752.          (see also PORT 03B5h)
  3753.         MCGA, native EGA and VGA use very different defaults from
  3754.         those mentioned for the other adapters.
  3755.         (for additionally notes and registers 00h-0Fh and EGA, VGAs
  3756.         10h-18h and ET4000 32h-37h see at 3B5)
  3757.         10h-11h on CGA, EGA, VGA and 12h-14h on EGA, VGA are
  3758.         conflictive with MCGA:
  3759.         w 10h MCGA only: mode control register (defaults 18h, 1Ah, 19h)
  3760.               bit7 = 1: suppress hsync/vsync
  3761.               bit6 = 0: reserved
  3762.               bit5    : reserved
  3763.               bit4 = 1: dot clock rate
  3764.               bit3 = 1: refresh calculations in 80x25 modes
  3765.               bit2    : reserved
  3766.               bit1 = 1: videomode 11h active
  3767.               bit0 = 1: videomode 13h active
  3768.         r 10h MCGA only: mode control status register
  3769.               bit7    : status bit0 CGA mode control register
  3770.               bit6    : reserved
  3771.               bit5 =1    clockrate 640 pixel, =0: clockrate/2 320 pixel
  3772.               bit4 =1 : clock rate is 25,175Mhz
  3773.               bit3 =1 : currently in textmode
  3774.               bit2 =1 : double-scan activated
  3775.               bit1 =1 : videomode 11h active
  3776.               bit0 =1 : videomode 13h active
  3777.           r/w 11h MCGA only: interrupt control register (default 30h)
  3778.               bit7 =1 : set output driver to tristate
  3779.                 =0: for reading of character generator reg (12h)
  3780.                 =1: for reading of display sense register (12h)
  3781.               bit6    : read only: intr generated by memory controller
  3782.               bit5 =0 : requested intr ok to handle
  3783.               bit4 =0 : free interrupt latch register
  3784.               bit3-0  : reserved
  3785.           r/w 12h MCGA only: character generator/sync polarity register
  3786.               default 46h in all modes, except 04h in mode 11h.
  3787.               bit7 =1 : character generator active
  3788.               bit6 =1 : load codepage during display
  3789.                =0 : load codepage during retrace
  3790.               bit5    : codepage number (0,1)
  3791.               bit4 =1 : 512 characters active
  3792.                =0 : 256 characters active
  3793.               bit3 =0 : reserved
  3794.               bit2 =1 : enable hsync/vsync
  3795.               bit1 =1 : positive vsync polarity
  3796.               bit0 =1 : positive hsync polarity
  3797.         r 12h MCGA only: display sense register (11h, bit7=1)
  3798.               bit7-2  : not used
  3799.               bit1-0  : pins 11 & 12 in monitor cable
  3800.                 00b = reserved
  3801.                 01b = analogue monochrom monitor
  3802.                 10b = analogue color graphics monitor
  3803.                 11b = no monitor
  3804.         w 13h MCGA only: character font pointer register
  3805.               only 00h, 10h, 20h, 30h (default 00h) are allowed here
  3806.               for textmode fonts at A0000, A2000, A4000, A6000
  3807.         w 14h MCGA only: number of characters to load during vretrace
  3808.               period (default FFh).
  3809. 03D6   W  same as 03D4
  3810.         (under OS/2, reads return 0 if full-screen DOS session,
  3811.         nonzero if windowed DOS session)
  3812. 03D7  RW  same as 03D5
  3813. 03D8  RW  CGA mode control register  (except PCjr)
  3814.         cannot be found on native color EGA, color VGA, but on most
  3815.         clones
  3816.          bit7-0=A0h color ET4000: second part of 'key',
  3817.                    see hercules compatibility reg (3BFh) for
  3818.                    details. For reseting the key, e.g. write
  3819.                    01h to 3BFh and 29h to 3D8h.
  3820.          bit 7-6      not used
  3821.          bit 6     color ET4000 only, read-only: report status of
  3822.                    bit1 (enable 2nd page) of hercules compatibility
  3823.                    register (3BFh)
  3824.          bit 5     = 1  blink enabled instead of foreground high-int.
  3825.          bit 4     = 1  640*200 graphics mode
  3826.          bit 3     = 1  video enabled (HZ309, see PORT 03DAh bit 0)
  3827.          bit 2     = 1  monochrome signal
  3828.                    MCGA: in mode 6 and 11h color comes from pal-
  3829.                    regs 00 (black) and 07 (white), and can be
  3830.                    changed there.
  3831.          bit 1     = 0  text mode
  3832.              = 1  320*200 graphics mode
  3833.          bit 0     = 0  40*25 text mode
  3834.              = 1  80*25 text mode
  3835. 03D9  RW  CGA palette register
  3836.       (MCGA) CGA border control register
  3837.         Cannot be found on native EGA, VGA (without translation ROM)
  3838.         but only most clones. Read access on Genoa SuperEGA is
  3839.         'reset'???
  3840.          bit 7-6      not used
  3841.          bit 5     = 0 active 320x200x4 color set: red, green brown
  3842.              = 1 active 320x200x4 color set: cyan, magenta, white
  3843.          bit 4         intense colors in graphics, background colors text
  3844.          bit 3         intense border in 40*25, intense background in
  3845.                  320*200, intense foreground in 640*200
  3846.          bit 2         red border in 40*25, red background in 320*200,
  3847.                  red foreground in 640*200
  3848.          bit 1         green border in 40*25, green background in
  3849.                  320*200, green foreground in 640*200
  3850.          bit 0         blue border in 40*25, blue background in 320*200,
  3851.                  blue foreground in 640*200
  3852. 03DA  R      CGA status register    color EGA/VGA: input status 1 register
  3853.          bit 7-6     not used
  3854.          bit 5-4     color EGA, color ET4000: diagnose video display
  3855.                   feedback, select from color plane enable
  3856.          bit 3 = 1   in vertical retrace
  3857.          bit 2 = 1  (CGA,color EGA) light pen switch is off
  3858.                 (MCGA,color ET4000) reserved (0)
  3859.          bit 1 = 1  (CGA,color EGA) positive edge from light pen has
  3860.                 set trigger
  3861.                 (MCGA,color ET4000) reserved (0)
  3862.          bit 0        horizontal retrace in progress
  3863.                = 0   do not use memory
  3864.                = 1   memory access without interfering with display
  3865.                 (Genoa SuperEGA) horizontal or vertical retrace
  3866. 03DA   W  color EGA/color VGA feature control register
  3867.          (at 3BAh w in mono mode, VGA: 3CAh r)
  3868.          bit7     : ET4000 only: enable NMI generation ('key' protected)
  3869.          bit6-4     : not used
  3870.          bit3     : VGA: 0 = normal vsync, 1 = vsync OR display enable
  3871.          bit2     : reserved
  3872.          bit1     : EGA and ET4000 only:
  3873.                 FEAT1 control bit1 (pin17 feature connector)
  3874.          bit0     : EGA and ET4000 only:
  3875.                 FEAT0 control bit0 (pin19 feature connector)
  3876. 03DA   W  HZ309 (MDA/HGC/CGA clone) card from in Heath/Zenith HZ150 PC
  3877.          bit7-1=0: unknown, zero is default and known to function
  3878.                properly at least in CGA modes.
  3879.          bit 0 = 1 override 3x8h bit3 control register that switches
  3880.                CRT beam off if bit3 is cleared. So screens always
  3881.                stays on.
  3882.          bit 0 = 0 3x8h bit3 indicates if CRT beam is on or off.
  3883.                No more info available. Might conflict with EGA/VGA.
  3884. 03DB  rW  clear light pen latch    (not MCGA)
  3885.           (R/W only with Genoa SuperEGA)
  3886. 03DC  RW  (not MCGA) preset light pen latch
  3887. 03DC   W  (CGA) set light pen latch
  3888. 03DD   W  (MCGA)  Extended mode control register
  3889.       (Plantronics & Genoa SuperEGA: Plantronics ColorPlus control,
  3890.                   compatible with MCGA???)
  3891.         (default is 00h, in mode 13h: 04h)
  3892.          bit7 =1: DAC active, cannot be read
  3893.               =0: DAC not active, read allowed
  3894.          bit6-3 : reserved
  3895.          bit2 =1: videomode 13h with 256 colors active
  3896.          bit1    : reserved
  3897.          bit0 =0: reserved
  3898. 03DE  --  (MCGA) reserved
  3899. 03DE   W  AT&T & color ET4000 in AT&T compatibility mode:
  3900.         AT&T mode control register
  3901.           (register enabled in ET4000, if bit7=1 in CRTC 3D4h/34h.)
  3902.          bit7: reserved
  3903.          bit6: underline color attribute enable
  3904.                ET4000: enabled, if bit6=1 in CRTC 3D4h/34h.
  3905.          bit5: reserved
  3906.          bit4: reserved
  3907.          bit3: alternate page select (=1: 2nd 16KB page, with bit0=0)
  3908.          bit2: alternate font select (0=default font block)
  3909.          bit1: reserved
  3910.          bit0: double scan line mode
  3911.             (0=IBM 200, 1=AT&T 400 line graphics)
  3912.             ET4000: enabled, if bit7-6=11b in CRTC 3D4h/34h.
  3913. 03DF  --  MCGA: reserved
  3914. 03DF  ?W  CRT/CPU page register     (PCjr only)
  3915. ---------------------------------------------
  3916. 03E0-03E8  ----    LPT port address on the UniRAM card by German magazine c't
  3917. Range:    selectable from 260, 2E0, 2E8, 2F0, 3E0, 3E8.
  3918. ---------------------------------------------
  3919. 03E0-03EF ----    COM port addresses on UniRAM card by German magazine c't
  3920. Range:    selectable from 238, 2E8, 2F8, 338, 3E0, 3E8, 3F8
  3921. ---------------------------------------------
  3922. 03E8-03EF ----    serial port, same as 02E8, 02F8 and 03F8 (COM3)
  3923. SeeAlso: 03F8-03FF
  3924. ---------------------------------------------
  3925. 03E8-03EF  ----     LPT port address on the UniRAM card by German magazine c't
  3926. Range:    selectable from 260, 2E0, 2E8, 2F0, 3E0, 3E8.
  3927. ---------------------------------------------
  3928. 03F0-03F7 ----    FDC 1  (1st Floppy Disk Controller)    second FDC at 0370
  3929. Note:    floppy disk controller is usually an 8272, 8272A, NEC765 (or
  3930.       compatible), or an 82072 or 82077AA for perpendicular recording at
  3931.       2.88M
  3932. SeeAlso: PORT 0370h-0377h
  3933.  
  3934. 03F0  R      diskette EHD controller board jumper settings (82072AA)
  3935.          bit 7-6      drive 3
  3936.          bit 5-4      drive 2
  3937.          bit 3-2      drive 1
  3938.          bit 1-0      drive 0
  3939.              = 00  1.2Mb
  3940.              = 01  720Kb
  3941.              = 10  2.8Mb
  3942.              = 11  1.4Mb
  3943. 03F0  R      diskette controller status A (PS/2)
  3944.          bit 7     interrupt pending
  3945.          bit 6     -DRV2    second drive installed
  3946.          bit 5     step
  3947.          bit 4     -track 0
  3948.          bit 3     head 1 select
  3949.          bit 2     -index
  3950.          bit 1     -write protect
  3951.          bit 0     +direction
  3952. 03F0  R      diskette controller status A (PS/2 model 30)
  3953.          bit 7     interrupt pending
  3954.          bit 6     DRQ
  3955.          bit 5     step F/F
  3956.          bit 4     -track 0
  3957.          bit 3     head 1 select
  3958.          bit 2     +index
  3959.          bit 1     +write protect
  3960.          bit 0     -direction
  3961. 03F1  R      diskette controller status B (PS/2)
  3962.          bit 7-6  =1 reserved
  3963.          bit 5      drive select (0=A:, 1=B:)
  3964.          bit 4      write data
  3965.          bit 3      read data
  3966.          bit 2      write enable
  3967.          bit 1      motor enable 1
  3968.          bit 0      motor enable 0
  3969. 03F1  R      diskette controller status B (PS/2 model 30)
  3970.          bit 7      -DRV2 second drive installed
  3971.          bit 6      -DS1
  3972.          bit 5      -DS0
  3973.          bit 4      write data F/F
  3974.          bit 3      read data F/F
  3975.          bit 2      write enable F/F
  3976.          bit 1      -DS3
  3977.          bit 0      -DS2
  3978. 03F2   W  diskette controller DOR (Digital Output Register)
  3979.          bit 7-6    reserved on PS/2
  3980.          bit 7 = 1  drive 3 motor enable
  3981.          bit 6 = 1  drive 2 motor enable
  3982.          bit 5 = 1  drive 1 motor enable
  3983.          bit 4 = 1  drive 0 motor enable
  3984.          bit 3 = 1  diskette DMA enable (reserved PS/2)
  3985.          bit 2 = 1  FDC enable    (controller reset)
  3986.                = 0  hold FDC at reset
  3987.          bit 1-0    drive select (0=A 1=B ..)
  3988. 03F3  ?W  tape drive register (on the 82077AA)
  3989.          bit 7-2      reserved, tri-state
  3990.          bit 1-0      tape select
  3991.              = 00  none, drive 0 cannot be a tape drive.
  3992.              = 01  drive1
  3993.              = 10  drive2
  3994.              = 11  drive3
  3995. 03F4  R      diskette controller main status register
  3996.          bit 7 = 1  RQM     data register is ready
  3997.              0  no access is permitted
  3998.          bit 6 = 1  transfer is from controller to system
  3999.              0  transfer is from system to controller
  4000.          bit 5 = 1  non-DMA mode
  4001.          bit 4 = 1  diskette controller is busy
  4002.          bit 3 = 1  drive 3 busy (reserved on PS/2)
  4003.          bit 2 = 1  drive 2 busy (reserved on PS/2)
  4004.          bit 1 = 1  drive 1 busy (= drive is in seek mode)
  4005.          bit 0 = 1  drive 0 busy (= drive is in seek mode)
  4006.         Note:    in non-DMA mode, all data transfers occur through
  4007.               port 03F5h and the status registers (bit 5 here
  4008.               indicates data read/write rather than than
  4009.               command/status read/write)
  4010. 03F4   W  diskette controller data rate select register
  4011.          bit 7-2      reserved on 8272
  4012.          bit 7     = 1  software reset (self clearing)    82072/82077AA
  4013.          bit 6     = 1  power down            82072/82077AA
  4014.          bit 5     = 0  reserved on 8272 and 82077AA
  4015.                   PLL select bit on 82072
  4016.          bit 4-2      write precompensation value, 000 default
  4017.          bit 1-0      data rate select
  4018.              = 00  500 Kb/S MFM    250 Kb/S FM
  4019.              = 01  300 Kb/S MFM    150 Kb/S FM
  4020.              = 10  250 Kb/S MFM    125 Kb/S FM
  4021.              = 11  1Mb/S    MFM    illegal     FM on 8207x
  4022. 03F5  R      diskette command/data register 0 (ST0)
  4023.          bit 7-6      last command status
  4024.              = 00  command terminated successfully
  4025.              = 01  command terminated abnormally
  4026.              = 10  invalid command
  4027.              = 11  terminated abnormally by change in ready signal
  4028.          bit 5     = 1  seek completed
  4029.          bit 4     = 1  equipment check occurred after error
  4030.          bit 3     = 1  not ready
  4031.          bit 2     = 1  head number at interrupt
  4032.          bit 1-0 = 1  unit select (0=A 1=B .. )
  4033.                   (on PS/2    01=A  10=B)
  4034.  
  4035.         status register 1 (ST1)
  4036.          bit 7        end of cylinder; sector# greater then sectors/track
  4037.          bit 6 = 0
  4038.          bit 5 = 1  CRC error in ID or data field
  4039.          bit 4 = 1  overrun
  4040.          bit 3 = 0
  4041.          bit 2 = 1  sector ID not found
  4042.          bit 1 = 1  write protect detected during write
  4043.          bit 0 = 1  ID address mark not found
  4044.  
  4045.         status register 2 (ST2)
  4046.          bit 7 = 0
  4047.          bit 6 = 1  deleted Data Address Mark detected
  4048.          bit 5 = 1  CRC error in data
  4049.          bit 4 = 1  wrong cylinder detected
  4050.          bit 3 = 1  scan command equal condition satisfied
  4051.          bit 2 = 1  scan command failed, sector not found
  4052.          bit 1 = 1  bad cylinder, ID not found
  4053.          bit 0 = 1  missing Data Address Mark 
  4054.  
  4055.         status register 3 (ST3)
  4056.          bit 7        fault status signal
  4057.          bit 6        write protect status
  4058.          bit 5        ready status
  4059.          bit 4        track zero status
  4060.          bit 3        two sided status signal
  4061.          bit 2        side select (head select)
  4062.          bit 1-0    unit select (0=A 1=B .. )
  4063.  
  4064. 03F5   W  diskette command register.  The commands summarized here are
  4065.         mostly multibyte commands. This is for brief recognition only.
  4066.  
  4067.             MFM = MFM mode selected, opposite to MF mode.
  4068.             HDS = head select
  4069.             DS  = drive select
  4070.             MT  = multi track operation
  4071.             SK  = skip deleted data address mark
  4072.  
  4073.            Command         # bytes    D7  6    5   4    3   2    1   0
  4074.          read track        9    0  MFM    0   0    0   0    1   0
  4075.                         0   0    0   0    0 HDS DS1 DS0
  4076.          specify        3    0   0    0   O    O   O    1   1
  4077.          sense drive status    2    0   0    0   0    0   1    0   0
  4078.                         0   0    0   0    0 HDS DS1 DS0
  4079.          write data        9    MT MFM    0   0    0   1    0   1
  4080.                         0   0    0   0    0 HDS DS1 DS0
  4081.          read data        9    MT MFM SK   0    0   1    1   0
  4082.                         0   0    0   0    0 HDS DS1 DS0
  4083.          recalibrate        2    0   0    0   0    0   1    1   1
  4084.                         0   0    0   0    0   0 DS1 DS0
  4085.          sense interrupt status 1    0   0    0   0    1   0    0   0
  4086.          write deleted data    9    MT MFM    0   0    1   0    0   1
  4087.                         0   0    0   0    0 HDS DS1 DS0
  4088.          read ID        2    0  MFM    0   0    1   0    1   0
  4089.                         0   0    0   0    0 HDS DS1 DS0
  4090.          read deleted data    9    MT MFM SK   0    1   1    0   0
  4091.                         0   0    0   0    0 HDS DS1 DS0
  4092.          format track        10    0  MFM    0   0    1   1    0   1
  4093.                         0   0    0   0    0 HDS DS1 DS0
  4094.          dumpreg **        1    0   0    0   0    1   1    1   0
  4095.          seek            3    0   0    0   0    1   1    1   1
  4096.                         0   0    0   0    0 HDS DS1 DS0
  4097.          version **        1    0   0    0   1    0   0    0   0
  4098.          scan equal *        9    MT MFM SK   1    0   0    0   1
  4099.                         0   0    0   0    0 HDS DS1 DS0
  4100.          perpendicular mode **    2    0   0    0   1    0   0    1   0
  4101.                         0   0    0   0    0   0 WGATE GAP
  4102.          configure **        4    0   0    0   1    0   0    1   1
  4103.                         0   0    0   0    0   0    0   0
  4104.          verify            9    MT MFM SK   1    0   1    1   0
  4105.                         EC  0    0   0    0 HDS DS1 DS0
  4106.          scan low or equal *    9    MT MFM SK   1    1   0    0   1
  4107.                         0   0    0   0    0 HDS DS1 DS0
  4108.          scan high or equal *    9    MT MFM SK   1    1   1    0   1
  4109.                         0   0    0   0    0 HDS DS1 DS0
  4110.          relative seek **    3    1  DIR    0   0    1   1    1   1
  4111.                         0   0    0   0    0 HDS DS1 DS0
  4112.  
  4113.          BEWARE: not every invalid command is treated as invalid!
  4114.          *  Note: the scan commands aren't mentioned for the 82077AA.
  4115.          ** Note: EHD controller commands.
  4116.  
  4117. 03F6  --  reserved on FDC
  4118. 03F6  rW  FIXED disk controller data register
  4119.          bit 7-4    reserved
  4120.          bit 3 = 0  reduce write current
  4121.              1  head select 3 enable
  4122.          bit 2 = 1  disk reset enable
  4123.              0  disk reset disable
  4124.          bit 1 = 0  disk initialization enable
  4125.              1  disk initialization disable
  4126.          bit 0        reserved
  4127. 03F7  RW  harddisk controller
  4128.          bit 6       FIXED DISK write gate
  4129.          bit 5       FIXED DISK head select 3 / reduced write current
  4130.          bit 4       FIXED DISK head select 2
  4131.          bit 3       FIXED DISK head select 1
  4132.          bit 2       FIXED DISK head select 0
  4133.          bit 1       FIXED DISK drive 1 select
  4134.          bit 0       FIXED DISK drive 0 select
  4135. 03F7  R      diskette controller DIR (Digital Input Register, PC/AT mode)
  4136.          bit 7 = 1 diskette change
  4137.          bit 6-0   tri-state on FDC
  4138. 03F7  R      diskette controller DIR (Digital Input Register, PS/2 mode)
  4139.          bit 7     = 1 diskette change
  4140.          bit 6-3 = 1
  4141.          bit 2         datarate select1
  4142.          bit 1         datarate select0
  4143.          bit 0     = 0 high density select (500Kb/s, 1Mb/s)
  4144.  
  4145.  conflicts with     bit 0       FIXED DISK drive 0 select
  4146.  
  4147. 03F7  R      diskette controller DIR (Digital Input Register, PS/2 model 30)
  4148.          bit 7     = 0 diskette change
  4149.          bit 6-4 = 0
  4150.          bit 3         -DMA gate (value from DOR register)
  4151.          bit 2         NOPREC (value from CCR register)
  4152.          bit 1         datarate select1
  4153.          bit 0         datarate select0
  4154.  
  4155.  conflicts with     bit 0       FIXED DISK drive 0 select
  4156.  
  4157. 03F7   W  configuration control register (PC/AT, PS/2)
  4158.          bit 7-2       reserved, tri-state
  4159.          bit 1-0 = 00  500 Kb/S mode (MFM)
  4160.              = 01  300 Kb/S mode (MFM)
  4161.              = 10  250 Kb/S mode (MFM)
  4162.              = 11  1   Mb/S mode (MFM) (on 82072/82077AA)
  4163.  
  4164.  conflicts with     bit 0       FIXED DISK drive 0 select
  4165.  
  4166. 03F7   W  configuration control register (PS/2 model 30)
  4167.          bit 7-3       reserved, tri-state
  4168.          bit 2           NOPREC (has no function. set to 0 by hardreset)
  4169.          bit 1-0 = 00  500 Kb/S mode (MFM)
  4170.              = 01  300 Kb/S mode (MFM)
  4171.              = 10  250 Kb/S mode (MFM)
  4172.              = 11  1   Mb/S mode (MFM) (on 82072/82077AA)
  4173.  
  4174.  conflicts with     bit 0       FIXED DISK drive 0 select
  4175. ---------------------------------------------
  4176. 03F8-03FF ----    serial port (8250,8250A,8251,16450,16550,16550A,etc.) COM1
  4177.         same as 02E8, 02F8 and 03E8
  4178.  
  4179.          chips overview:
  4180.          8250  original PC, specified up to 56Kbd, but mostly runs
  4181.                only 9600Bd, no scratchregister, bug: sometimes shots
  4182.                ints without reasons
  4183.          8250A, 16450, 16C451: ATs, most chips run up to 115KBd,
  4184.                no bug: shots no causeless ints
  4185.          8250B: PC,XT,AT, pseudo bug: shots one causeless int for
  4186.             compatibility with 8250, runs up to 56KBd
  4187.          16550, 16550N, 16550V: early PS/2, FIFO bugs
  4188.          16550A,16550AF,16550AFN,16550C,16C551,16C552: PS/2, FIFO ok
  4189.          82510: laptops & industry, multi emulation mode
  4190.             (default=16450), special-FIFO.
  4191.          8251: completely different synchronous SIO chip, not
  4192.             compatible!
  4193.  
  4194. 03F8   W  serial port, transmitter holding register (THR), which contains the
  4195.       character to be sent. Bit 0 is sent first.
  4196.         bit 7-0      data bits when DLAB=0 (Divisor Latch Access Bit)
  4197. 03F8  R      receiver buffer register (RBR), which contains the received
  4198.       character. Bit 0 is received first
  4199.          bit 7-0   data bits when DLAB=0 (Divisor Latch Access Bit)
  4200. 03F8  RW  divisor latch low byte (DLL) when DLAB=1
  4201.  
  4202. 03F9  RW  divisor latch high byte (DLM) when DLAB=1
  4203.           some baudrates (using standard 1.8432 Mhz clock)
  4204.                baudrate       divisor     DLM  DLL
  4205.                 50       2304          09h 00h
  4206.                 75       1536          06h 00h
  4207.                110       1047          04h 17h
  4208.                134,5    857          03h 59h
  4209.                150        768          03h 00h
  4210.                300        384          01h 80h
  4211.                600        192          00h C0h
  4212.               1200         96          00h 60h
  4213.               1800         64          00h 40h
  4214.               2000         58          00h 3Ah
  4215.               2400         48          00h 30h
  4216.               3600         32          00h 20h
  4217.               4800         24          00h 18h
  4218.               7200         16          00h 10h
  4219.               9600         12          00h 0Ch
  4220.              19200          6          00h 06h
  4221.              38400          3          00h 03h
  4222.              57600          2          00h 02h
  4223.             115200          1          00h 01h
  4224.  
  4225.          MIDI baudrate 32250Bd with 4Mhz quarz for c't MIDI interface
  4226.          following c't 01/1991
  4227.             '14400'              00h 08h
  4228.  
  4229. 03F9  RW  interrupt enable register (IER) when DLAB=0
  4230.          bits 7-4   reserved (0)
  4231.          bit 3 = 1  modem-status interrupt enable
  4232.          bit 2 = 1  receiver-line-status interrupt enable
  4233.          bit 1 = 1  transmitter-holding-register empty interrupt enable
  4234.          bit 0 = 1  received-data-available interrupt enable
  4235.                 (also 16550(A) timeout interrupt)
  4236.  
  4237.           - 16550(A) will interrupt with a timeout if data exists in the
  4238.         FIFO and isn't read within the time it takes to receive four
  4239.         bytes or if no data is received within the time it takes to
  4240.         receive four bytes
  4241.  
  4242. 03FA  R      interrupt identification register. Information about a pending
  4243.         interrupt is stored here. When the ID register is addressed,
  4244.         the highest priority interrupt is held, and no other interrupts
  4245.         are acknowledged until the CPU services that interrupt.
  4246.          bit 7-6 = 00  reserved on 8250, 8251, 16450
  4247.              = 01  if FIFO queues enabled but unusable (16550 only)
  4248.              = 11  if FIFO queues are enabled (16550A only)
  4249.          bit 5-4 = 0 reserved
  4250.          bit 3     = 0 reserved  8250, 16450
  4251.              = 1 16550  timeout int. pending
  4252.          bit 2-1 identify pending interrupt with the highest priority
  4253.           = 11    receiver line status interrupt. priority=highest
  4254.           = 10    received data available register interrupt. pr.=second
  4255.           = 01    transmitter holding register empty interrupt. pr.=third
  4256.           = 00    modem status interrupt. priority=fourth
  4257.          bit 0 = 0  interrupt pending. contents of register can be used
  4258.                 as a pointer to the appropriate int.service routine
  4259.              1  no interrupt pending
  4260.  
  4261.           - interrupt pending flag uses reverse logic, 0=pending, 1=none
  4262.           - interrupt will occur if any of the line status bits are set
  4263.           - THRE bit is set when THRE register is emptied into the TSR
  4264.  
  4265. 03FA   W  16650 FIFO Control Register (FCR)
  4266.          bit 7-6 = received data available interrupt trigger level
  4267.             00  1 byte
  4268.             01  4 bytes
  4269.             10  8 bytes
  4270.             11 14 bytes
  4271.          bit 5-4 = 00 reserved
  4272.          bit 3     = 1  change RXRDY  TXRDY pins from mode 0 to mode 1
  4273.          bit 2     = 1  clear XMIT FIFO
  4274.          bit 1     = 1  clear RCVR FIFO
  4275.          bit 0     = 1  enable clear XMIT and RCVR FIFO queues
  4276.  
  4277.           - bit 0 must be set in order to write to other FCR bits
  4278.           - bit 1 when set    the RCVR FIFO is cleared and this bit is reset
  4279.          the receiver shift register is not cleared
  4280.           - bit 2 when set    the XMIT FIFO is cleared and this bit is reset
  4281.          the transmit shift register is not cleared
  4282.           - due to a hardware bug, 16550 FIFOs don't work correctly (this
  4283.         was fixed in the 16550A)
  4284. 03FB  RW  line control register (LCR)
  4285.          bit 7 = 1  divisor latch access bit (DLAB)
  4286.              0  receiver buffer, transmitter holding, or interrupt
  4287.                 enable register access
  4288.          bit 6 = 1  set break enable. serial ouput is forced to spacing
  4289.                 state and remains there.
  4290.          bit 5-3 =  PM2 PM1 PM0
  4291.                  x     x   0     = no parity
  4292.                  0     0   1     = odd parity
  4293.                  0     1   1     = even parity
  4294.                  1     0   1     = high parity (sticky)
  4295.                  1     1   1     = low parity (sticky)
  4296.                  x     x   1     = software parity
  4297.          bit 2 = stop bit length (STB/SBL)
  4298.              0  one stop bit 
  4299.              1  2 stop bits with (word length 6, 7, 8)
  4300.                 1.5 stop bits with word length 5
  4301.          bit 1-0 (WLS1-0, CL1-0)
  4302.              00 word length is 5 bits
  4303.              01 word length is 6 bits
  4304.              10 word length is 7 bits
  4305.              11 word length is 8 bits
  4306. 03FC  RW  modem control register
  4307.          bit 7-5 = 0  reserved
  4308.          bit 4 = 1  loopback mode for diagnostic testing of serial port
  4309.                 output of transmitter shift register is looped back
  4310.                 to receiver shift register input. In this mode
  4311.                 transmitted data is received immediately so that
  4312.                 the CPU can verify the transmit data/receive data
  4313.                 serial port paths.
  4314.                 If OUT2 is disabled, there is no officially
  4315.                 way to generate an IRQ during loopback mode.
  4316.          bit 3 = 1  auxiliary user-designated output 2 (OUT2)
  4317.                 because of external circuity OUT2 must be 1 to
  4318.                 master-intr-enableing. Bug: Some Toshiba Laptops
  4319.                 utilize this bit vice versa, newer Toshiba machines
  4320.                 allow to assign the bits polarity in system setup.
  4321.                 82050: This bit is only effective, if the chip is
  4322.                 being used with an externally generated clock.
  4323.          bit 2 = 1/0  auxiliary user-designated output 1 (OUT1)
  4324.                 should generally be cleared!!
  4325.                 Some external hardware, e.g. c't MIDI interface
  4326.                 (and compatibles) uses this bit to change the 8250
  4327.                 input clock from 1,8432 MHz to 4Mhz (enableing
  4328.                 MIDI conform baudrates) and switching to MIDI
  4329.                 compatible current loop connectors.
  4330.          bit 1 = 1  force request-to-send active (RTS)
  4331.          bit 0 = 1  force data-terminal-ready active (DTR)
  4332. 03FD  R      line status register
  4333.          bit 7 = 0  reserved
  4334.                = 1  on some chips produced by UMC
  4335.          bit 6 = 1  transmitter shift and holding registers empty
  4336.          bit 5 = 1  transmitter holding register empty (THRE)
  4337.             Controller is ready to accept a new character to send.
  4338.          bit 4 = 1  break interrupt. the received data input is held in
  4339.                 in the zero bit state longer than the time of start
  4340.                 bit + data bits + parity bit + stop bits.
  4341.          bit 3 = 1  framing error (FE). the stop bit that follows the
  4342.                 last parity or data bit is a zero bit.
  4343.          bit 2 = 1  parity error (PE). Character has wrong parity
  4344.          bit 1 = 1  overrun error (OE). a character was sent to the
  4345.                 receiver buffer before the previous character in
  4346.                 the buffer could be read. This destroys the
  4347.                 previous character.
  4348.          bit 0 = 1  data ready. a complete incoming character has been
  4349.                 received and sent to the receiver buffer register.
  4350. 03FE  R      modem status register (MSR)
  4351.          bit 7 = 1  data carrier detect (-DCD)
  4352.          bit 6 = 1  ring indicator (-RI)
  4353.          bit 5 = 1  data set ready (-DSR)
  4354.          bit 4 = 1  clear to send (-CTS)
  4355.          bit 3 = 1  delta data carrier detect (DDCD)
  4356.          bit 2 = 1  trailing edge ring indicator (TERI)
  4357.          bit 1 = 1  delta data set ready (DDSR)
  4358.          bit 0 = 1  delta clear to send (DCTS)
  4359.  
  4360.           - bits 0-3 are reset when the CPU reads the MSR
  4361.           - bit 4 is the Modem Control Register RTS during loopback test
  4362.           - bit 5 is the Modem Control Register DTR during loopback test
  4363.           - bit 6 is the Modem Control Register OUT1 during loopback test
  4364.           - bit 7 is the Modem Control Register OUT2 during loopback test
  4365. 03FF  RW  scratch register (SCR)
  4366.         (not used for serial I/O; available to any application using
  4367.         16450,16550) (not present on original 8250)
  4368. ---------------------------------------------
  4369.  
  4370.     Adresses above 03FF generally apply to EISA machines only !
  4371.  
  4372.          1000-1FFF    slot 1 EISA
  4373.          2000-2FFF    slot 2 EISA
  4374.          3000-3FFF    slot 3 EISA
  4375.          4000-4FFF    slot 4 EISA
  4376.          5000-5FFF    slot 5 EISA
  4377.          6000-6FFF    slot 6 EISA
  4378.          7000-7FFF    slot 7 EISA
  4379. ---------------------------------------------
  4380. 0401-04D6 ----    used by EISA systems only
  4381.  
  4382. 0401  RW  DMA channel 0 word count byte 2 (high)
  4383. 0403  RW  DMA channel 1 word count byte 2 (high)
  4384. 0405  RW  DMA channel 2 word count byte 2 (high)
  4385. 0407  RW  DMA channel 3 word count byte 2 (high)
  4386.  
  4387. 040A   W  extended DMA chaining mode register, channels 0-3
  4388.          bit 7-5      reserved
  4389.          bit 4     = 0  generates IRQ13
  4390.              = 1  generates terminal count
  4391.          bit 3     = 0  do not start chaining
  4392.              = 1  programming complete
  4393.          bit 2     = 0  disable buffer chaining mode (default)
  4394.              = 1  enable buffer chaining mode
  4395.          bit 1-0      DMA channel select
  4396.  
  4397. 040A  R      channel interrupt (IRQ13) status register
  4398.          bit 7-5  interrupt on channels 7-5
  4399.          bit 4      reserved
  4400.          bit 3-0  interrupt on channels 3-0
  4401.  
  4402. 040B   W  DMA extended mode register for channels 3-0.
  4403.         bit settings same as 04D6
  4404.          bit 7     = 0  enable stop register
  4405.          bit 6     = 0  terminal count is an output for this channel
  4406.                 (default)
  4407.          bit 5-4      DMA cycle timing
  4408.              = 00 ISA-compatible (default)
  4409.              = 01 type A timing mode
  4410.              = 10 type B timing mode
  4411.              = 11 burst DMA mode
  4412.          bit 3-2      Address mode
  4413.              = 00 8-bit I/O, count by bytes (default)
  4414.              = 01 16-bit I/O, count by words, address shifted
  4415.              = 10 32-bit I/O, count by bytes
  4416.              = 11 16-bit I/O, count by bytes
  4417.          bit 1-0      DMA channel select
  4418. ---------------------------------------------
  4419. 0461-0462 ----    NMI CONTROL
  4420.  
  4421. 0461  RW  Extended NMI status/control register
  4422.          bit 7 = 1  NMI pending from fail-safe timer (read only)
  4423.          bit 6 = 1  NMI pending from bus timeout NMI status (read only)
  4424.          bit 5 = 1  NMI pending (read only)
  4425.          bit 4        reserved
  4426.          bit 3 = 1  bus timeout NMI enable (read/write)
  4427.          bit 2 = 1  fail-safe NMI enable (read/write)
  4428.          bit 1 = 1  NMI I/O port enable (read/write)
  4429.          bit 0        RSTDRV. bus reset (read/write)
  4430.                = 0  NORMAL bus reset operation
  4431.                = 1  reset bus asserted
  4432.  
  4433. 0462   W  Software NMI register. writing to this register causes an NMI
  4434.         if NMI's are enabled
  4435.          bit 7 = 1  generates an NMI
  4436. ---------------------------------------------
  4437. 0464-0465 ----    EISA BUS MASTER STATUS
  4438.  
  4439. 0464  R      bus master status latch register (slots 1-8). identifies the
  4440.         last bus master that had control of the bus
  4441.          bit 7 = 0  slot 8 had control last
  4442.          bit 6 = 0  slot 7 had control last
  4443.          bit 5 = 0  slot 6 had control last
  4444.          bit 4 = 0  slot 5 had control last
  4445.          bit 3 = 0  slot 4 had control last
  4446.          bit 2 = 0  slot 3 had control last
  4447.          bit 1 = 0  slot 2 had control last
  4448.          bit 0 = 0  slot 1 had control last
  4449.  
  4450. 0465  R      bus master status latch register (slots 9-16)
  4451.          bit 7 = 0  slot 16 had control last
  4452.          bit 6 = 0  slot 15 had control last
  4453.          bit 5 = 0  slot 14 had control last
  4454.          bit 4 = 0  slot 13 had control last
  4455.          bit 3 = 0  slot 12 had control last
  4456.          bit 2 = 0  slot 11 had control last
  4457.          bit 1 = 0  slot 10 had control last
  4458.          bit 0 = 0  slot 9  had control last
  4459. ---------------------------------------------
  4460. 0481-048B ---- EISA DMA page registers
  4461.  
  4462. 0481  RW  DMA channel 2 address byte 3 (high)
  4463. 0482  RW  DMA channel 3 address byte 3 (high)
  4464. 0483  RW  DMA channel 1 address byte 3 (high)
  4465. 0487  RW  DMA channel 0 address byte 3 (high)
  4466. 0489  RW  DMA channel 6 address byte 3 (high)
  4467. 048A  RW  DMA channel 7 address byte 3 (high)
  4468. 048B  RW  DMA channel 5 address byte 3 (high)
  4469. ---------------------------------------------
  4470. 04C6-04CF ---- EISA DMA count registers
  4471.  
  4472. 04C6  RW  DMA channel 5 word count byte 2 (high)
  4473. 04CA  RW  DMA channel 6 word count byte 2 (high)
  4474. 04CE  RW  DMA channel 7 word count byte 2 (high)
  4475. ---------------------------------------------
  4476. 04D0-04D1 ---- EISA IRQ control
  4477.  
  4478. 04D0   W  IRQ 0-7 interrupt edge/level registers
  4479.          bit 7 = 1  IRQ 7 is level sensitive
  4480.          bit 6 = 1  IRQ 6 is level sensitive
  4481.          bit 5 = 1  IRQ 5 is level sensitive
  4482.          bit 4 = 1  IRQ 4 is level sensitive
  4483.          bit 3 = 1  IRQ 3 is level sensitive
  4484.          bit 2-0    reserved
  4485.  
  4486. 04D1   W  IRQ 8-15 interrupt edge/level registers
  4487.          bit 7 = 1  IRQ 15 is level sensitive
  4488.          bit 6 = 1  IRQ 14 is level sensitive
  4489.          bit 5 = 1  reserved
  4490.          bit 4 = 1  IRQ 12 is level sensitive
  4491.          bit 3 = 1  IRQ 11 is level sensitive
  4492.          bit 2 = 1  IRQ 10 is level sensitive
  4493.          bit 1 = 1  IRQ 9  is level sensitive
  4494.          bit 0        reserved
  4495. ---------------------------------------------
  4496. 04D4-04D6 ---- EISA DMA control
  4497.  
  4498. 04D4  R      DMA chaining status
  4499.  
  4500. 04D4   W  extended DMA chaining mode register, channels 4-7
  4501.          bit 7-5 = 0  reserved
  4502.          bit 4     = 0  generates IRQ 13
  4503.              = 1  generates terminal count
  4504.          bit 3     = 0  do not start chaining
  4505.              = 1  programming complete
  4506.          bit 2     = 0  disable buffer chaining mode (default)
  4507.              = 1  enable buffer chaining mode
  4508.          bit 1-0      DMA channel select
  4509.  
  4510. 04D6   W  DMA extended mode register for channels 4-7
  4511.         bit settings same as 04B
  4512.          bit 7     = 0  enable stop register
  4513.          bit 6     = 0  terminal count is an output for this channel
  4514.                 (default)
  4515.          bit 5-4      DMA cycle timing
  4516.              = 00 ISA-compatible (default)
  4517.              = 01 type A timing mode
  4518.              = 10 type B timing mode
  4519.              = 11 burst DMA mode
  4520.          bit 3-2      Address mode
  4521.              = 00 8-bit I/O, count by bytes (default)
  4522.              = 01 16-bit I/O, count by words, address shifted
  4523.              = 10 32-bit I/O, count by bytes
  4524.              = 11 16-bit I/O, count by bytes
  4525.          bit 1-0      DMA channel select
  4526. ---------------------------------------------
  4527. 04E0-04FF ---- EISA DMA stop registers
  4528.  
  4529. 04E0-04E2  RW    channel 0
  4530. 04E4-04E6  RW    channel 1
  4531. 04E8-04EA  RW    channel 2
  4532. 04EC-04EE  RW    channel 3
  4533. 04F4-04F6  RW    channel 5
  4534. 04F8-04FA  RW    channel 6
  4535. 04FC-04FE  RW    channel 7
  4536. ---------------------------------------------
  4537. 0530-0533 ----    Gravis Ultra Sound Daughter Card by Advanced Gravis
  4538. Range:    dipswitch selectable from 0530-0533, 0604-0607, 0E80-0E83, and
  4539.       0F40-0F43 
  4540.  
  4541. 0530  RW  address select
  4542. 0531  RW  data
  4543. 0532  RW  status
  4544. 0533  RW  PIO
  4545. ---------------------------------------------
  4546. 0601      ----    Headland HL21, Acer M5105 chipsets - SYSTEM CONTROL
  4547.  
  4548. 0601   W  system control
  4549.         bit 7 = 1  power led on
  4550.         bit 6 = 1  LCD backlight off
  4551.         bit 5
  4552.         bit 4
  4553.         bit 3
  4554.         bit 2 = 1  video chips disabled, screen blanked.
  4555.         bit 1
  4556.         bit 0 = 1  will lock up your machine!
  4557. 0601  R      status
  4558.         bit 7 = 0  if screen enabled always these values
  4559.         bit 6 = 0
  4560.         bit 5 = 0
  4561.         bit 4 = 0
  4562.         bit 3 = 0
  4563.         bit 2 = 1  (=0 at low power)
  4564.         bit 1 = 0  power OK
  4565.         bit 0 = 0
  4566. ---------------------------------------------
  4567. 0620-0627 ----    PC network (adapter 1)
  4568. 0628-062F ----    PC network (adapter 2)
  4569. ---------------------------------------------
  4570. 0680-0681 ----    Microchannel POST Diagnostic (write only)
  4571.  
  4572. 0680   W  Microchannel POST Diagnostic (write only)
  4573. 0681   W  secondary MCA POST diagnostic
  4574. ---------------------------------------------
  4575. 06A0-06A8  ----    non-standard COM port addresses (V20-XT by German magazine c't)
  4576. 06A8-06AF    selectable from 0280, 0288, 0290, 0298, 06A0, 06A8
  4577. ---------------------------------------------
  4578. 06E2-06E3 ----    data aquisition (adapter 1)
  4579. ---------------------------------------------
  4580. 06E8      ----    S3 86C928 video controller (ELSA Winner 1000)
  4581. ---------------------------------------------
  4582. 06E8-06EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4583. SeeAlso: 02E8-02EF, 0AE8, 96E8, 9AE8
  4584.  
  4585. 06E8   W  CRT control: horizontal displayed
  4586. ---------------------------------------------
  4587. 0746      ----    Gravis Ultra Sound by Advanced Gravis
  4588. SeeAlso: 0240-024F, 0340-034F
  4589.  
  4590. 0746  R      board version (rev 3.7+)
  4591.          FF      Pre 3.6 boards, ICS mixer NOT present
  4592.          05      Rev 3.7 with ICS Mixer. Some R/L: flip problems.
  4593.          06-09      Revision 3.7 and above. ICS Mixer present
  4594.          0A-      UltraMax. CS4231 present, no ICS mixer
  4595. 0746   W  Mixer Control Port
  4596. ---------------------------------------------
  4597. 0790-0793 ----    cluster (adapter 1)
  4598. ---------------------------------------------
  4599. 0800-08FF ----    I/O port access registers for extended CMOS RAM or SRAM
  4600.         (256 bytes at a time)
  4601.         Sometimes plain text can be seen here.
  4602. ---------------------------------------------
  4603. 0800-08FF ----    reserved for EISA system motherboard
  4604. ---------------------------------------------
  4605. 0A20-0A23 ----    Token Ring (adapter 1)
  4606. 0A24-0A27 ----    Token Ring (adapter 2)
  4607. ---------------------------------------------
  4608. 0AE2-0AE3 ----    cluster (adapter 2)
  4609. ---------------------------------------------
  4610. 0AE8      ----    S3 86C928 video controller (ELSA Winner 1000)
  4611. ---------------------------------------------
  4612. 0AE8-0AEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4613.  
  4614. 0AE8   W  CRT control: horizontal sync start
  4615. ---------------------------------------------
  4616. 0B90-0B93 ----    cluster (adapter 2)
  4617. ---------------------------------------------
  4618. 0C00      ----    EISA??? - PAGE REGISTER
  4619.  
  4620. 0C00  RW  page register to write to SRAM or I/O
  4621. ---------------------------------------------
  4622. 0C00-0CFF ----    reserved for EISA system motherboard
  4623. ---------------------------------------------
  4624. 0C7C        bit 7-4 (Compaq)
  4625. ---------------------------------------------
  4626. 0C80-0C83 ----    EISA system board ID registers
  4627. ---------------------------------------------
  4628. 0CF8      ----    Intel Pentium motherboard ("Neptune" chipset)
  4629.  
  4630.         SeeAlso: C008
  4631. ---------------------------------------------
  4632. 0CFA      ----    Intel Pentium motherboard ("Neptune" chipset)
  4633.  
  4634.         SeeAlso: C008
  4635. ---------------------------------------------
  4636. 0EE8      ----    S3 86C928 video controller (ELSA Winner 1000)
  4637. ---------------------------------------------
  4638. 0EE8-0EEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4639.  
  4640. 0EE8   W  CRT control: horizontal sync width
  4641. ---------------------------------------------
  4642. 1000-10FF ----    available for EISA slot 1
  4643. ---------------------------------------------
  4644. 12E8-12EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4645.  
  4646. 12E8   W  CRT control: vertical total
  4647. ---------------------------------------------
  4648. 1390-1393 ----    cluster (adapter 3)
  4649. ---------------------------------------------
  4650. 1400-14FF ----    available for EISA slot 1
  4651. ---------------------------------------------
  4652. 16E8-16EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4653.  
  4654. 16E8   W  CRT control: vertical displayed
  4655. ---------------------------------------------
  4656. 1800-18FF ----    available for EISA slot 1
  4657. ---------------------------------------------
  4658. 1AE8-1AEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4659.  
  4660. 1AE8   W  CRT cotnrol: vertical sync start
  4661. ---------------------------------------------
  4662. 1C00-1CFF ----    available for EISA slot 1
  4663. ---------------------------------------------
  4664. 1C65      ----    Compaq Contura Aero
  4665. SeeAlso: 2065
  4666.  
  4667. 1C65  R?  bit 6: operating on battery power
  4668. ---------------------------------------------
  4669. 1C80-1C8F ----    VESA XGA Video in EISA slot 1
  4670.  
  4671. 1C80-1C83  RW    EISA Video ID
  4672. 1C84  RW    EISA Video expansion board control    
  4673. 1C85  RW    EISA Setup control
  4674. 1C88  RW    EISA Video Programmable Option Select 0
  4675. 1C89-1C8F  RW    EISA Video Programmable Option Select 1-7
  4676. ---------------------------------------------
  4677. 1C80-1C83    EISA board product ID (board in slot 1)
  4678. ---------------------------------------------
  4679. 1C85        Compaq Qvision EISA - Virtual Controller ID
  4680. ---------------------------------------------
  4681. 1EE8-1EEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4682.  
  4683. 1EE8   W  CRT control: vertical sync width
  4684. ---------------------------------------------
  4685. 2000-20FF ----    available for EISA slot 2
  4686. ---------------------------------------------
  4687. 2065      ----    Compaq Contura Aero
  4688. SeeAlso: 1C65, 2465
  4689.  
  4690. 2065   W  ??? (84h seen)
  4691. ---------------------------------------------
  4692. 2100      ----    XGA Video Operating Mode Register
  4693. Note:    this port is for the first XGA in the system; 2110-2170 are used for
  4694.       the second through eighth XGAs
  4695. ---------------------------------------------
  4696. 2101      ----    XGA VIdeo Aperture Control
  4697. Note:    this port is for the first XGA in the system; 2111-2171 are used for
  4698.       the second through eighth XGAs
  4699. ---------------------------------------------
  4700. 2102-2103 ----    XGA ???
  4701. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4702.       the second through eighth XGAs
  4703. ---------------------------------------------
  4704. 2104      ----    XGA Video Interrupt Enable
  4705. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4706.       the second through eighth XGAs
  4707. ---------------------------------------------
  4708. 2105      ----    XGA Video Interrupt Status
  4709. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4710.       the second through eighth XGAs
  4711. ---------------------------------------------
  4712. 2106      ----    XGA Video Virtual Memory Control
  4713. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4714.       the second through eighth XGAs
  4715. ---------------------------------------------
  4716. 2107      ----    XGA Video Virtual Memory Interrupt Status
  4717. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4718.       the second through eighth XGAs
  4719. ---------------------------------------------
  4720. 2108      ----    XGA Video Aperture Index
  4721. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4722.       the second through eighth XGAs
  4723. ---------------------------------------------
  4724. 2109      ----    XGA Video Memory Access Mode
  4725. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4726.       the second through eighth XGAs
  4727. ---------------------------------------------
  4728. 210A      ----    XGA Video Index for Data
  4729. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4730.       the second through eighth XGAs
  4731. ---------------------------------------------
  4732. 210B      ----    XGA Video Data (byte)
  4733. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4734.       the second through eighth XGAs
  4735. ---------------------------------------------
  4736. 210C-210F ----    XGA Video Data (word/dword)
  4737. Note:    this port is for the first XGA in the system; 211x-217x are used for
  4738.       the second through eighth XGAs
  4739. ---------------------------------------------
  4740. 2110-211F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (second installed)
  4741. 2120-212F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (third installed)
  4742. 2130-213F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (fourth installed)
  4743. 2140-214F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (fifth installed)
  4744. 2150-215F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (sixth installed)
  4745. 2160-216F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (seventh installed)
  4746. 2170-217F ----    IBM XGA (eXtended Graphics Adapter  8514/A) (eighth installed)
  4747.  
  4748. Notes:    see individual 210x entries above
  4749.     c't says default instance number is 6, i.e. addresses 216x
  4750. ---------------------------------------------
  4751. 217A-217B ---- ET4000/W32 CRTC-B/Sprite
  4752.         Alternative addresses may depend on adapter manufacturer,
  4753.         Tseng claims 21xA with x=three address bits, selected by
  4754.         IOD2..0 during power up reset.
  4755.  
  4756. 21xA  RW  ET4000/W32(i) CRTC-B/Sprite index register
  4757.            bit7-0: index
  4758. 21xB  RW  ET4000/W32(i) CRTC-B/Sprite data register
  4759.          indexed registers:
  4760.           E0h CRTC-B / Sprite Horizontal Pixel Position, Low
  4761.            bit7-0: horizontal pixel position bit7-0
  4762.           E1h CRTC-B / Sprite Horizontal Pixel Position, High
  4763.            bit7-4: reserved
  4764.            bit3-0: horizontal pixel position bit11-8
  4765.           E2h CRTC-B Width Low / Sprite Horizontal Preset
  4766.            bit7-0: width of CRTC-B bit7-0
  4767.            bit5-0: horizontal preset for sprite
  4768.           E3h CRTC-B Width High / Sprite Horizontal Preset
  4769.            bit7-4: reserved
  4770.            bit3-0: width of CRTC-B bit11-8
  4771.           E4h CRTC-B / Sprite Vertical Pixel Position, Low
  4772.            bit7-0: vertical pixel position bit7-0
  4773.           E5h CRTC-B / Sprite Vertical Pixel Position, High
  4774.            bit7-4: reserved
  4775.            bit3-0: vertical pixel position bit11-8
  4776.           E6h CRTC-B Height Low / Sprite Vertical Preset
  4777.            bit7-0: height of CRTC-B bit7-0
  4778.            bit5-0: vertical preset for sprite
  4779.           E7h CRTC-B Height High / Sprite Vertical Preset
  4780.            bit7-4: reserved
  4781.            bit3-0: height of CRTC-B bit11-8
  4782.           E8h CRTC-B / Sprite Starting Address Low
  4783.            pointer to CRTC-B / sprite image in display memory.
  4784.            (maximum size of sprites 64x64x4=1KB with 4 colors:
  4785.             00b=color-0, 01b=color-255, 10b=transparent, 11b=reserved)
  4786.            bit7-0: startaddress bit7-0
  4787.           E9h CRTC-B / Sprite Starting Address Middle
  4788.            bit7-0: startaddress bit15-8
  4789.           EAh CRTC-B / Sprite Starting Address High
  4790.            bit7-4: reserved
  4791.            bit3-0: startaddress bit19-16
  4792.           EBh CRTC-B / Sprite Row Offset Low
  4793.            bit7-0: offset bit7-0
  4794.           ECh CRTC-B / Sprite Row Offset High
  4795.            bit7-4: revision ID (any ET4000/W32)
  4796.                 0000b=W32         0100b-1111b reserved
  4797.                 0001b=W32i
  4798.                 0010b=W32p
  4799.                 0011b=W32i, new
  4800.            bit3-0: offset bit11-8
  4801.           EDh CRTC-B Pixel Panning
  4802.            bit7-3: reserved
  4803.            bit2-0: CRTC-B pixel panning
  4804.           EEh CRTC-B Color-Depth-Register / Hardware-Zoom
  4805.            bit7-4: reserved (concerning databook ET4000/W32)
  4806.            bit7-6: vertical zoom (undocumented)
  4807.                (original ET4000/W32 ok, doesn't work properly
  4808.                 with some ET4000/W32i)
  4809.                 00b=zoomx1       10b=zoomx3
  4810.                 01b=zoomx2       11b=zoomx4
  4811.            bit5-4: horizontal zoom (undocumented)
  4812.                (original ET4000/W32 ok, doesn't work properly
  4813.                 with some ET4000/W32i)
  4814.                 00b=zoomx1       10b=zoomx3
  4815.                 01b=zoomx2       11b=zoomx4
  4816.            bit3-0: bit/pixel
  4817.                 0000b=1       0011b=8
  4818.                 0001b=2       0100b=16
  4819.                 0010b=4
  4820.           EFh CRTC-B / Sprite Control
  4821.            bit7-2: reserved
  4822.            bit1     : 1=2nd CRTC-B image overlays main CRTC-A image
  4823.                0=CRTC-B image at pin SP1/0
  4824.            bit0     : 1=enable CRTC-B
  4825.                0=enable sprite (see F7h)
  4826.           F7h Image Port Control
  4827.            bit7     : 1=CRTC-B or sprite active
  4828.                0=CRTC-B and sprite not active
  4829.            bit6-0: reserved
  4830. ---------------------------------------------
  4831. 22E8-22EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4832.  
  4833. 22E8   W  CRT control: display control
  4834. ---------------------------------------------
  4835. 2390-2393 ----    cluster (adapter 4)
  4836. ---------------------------------------------
  4837. 23C0-23CF ----    Compaq QVision - BitBLT engine
  4838. ---------------------------------------------
  4839. 2400-24FF ----    available for EISA slot 2
  4840. ---------------------------------------------
  4841. 2465      ----    Compaq Contura Aero
  4842. SeeAlso: 1C65, 2065
  4843.  
  4844. 2465  R      current battery power level
  4845.         (166 fully-charged, 130 = LowBat1)
  4846. ---------------------------------------------
  4847. 27C6      ----    Compaq LTE Lite - LCD TIMEOUT
  4848.  
  4849. 27C6  RW  LCD timeout in minutes
  4850. ---------------------------------------------
  4851. 2800-28FF ----    available for EISA slot 2
  4852. ---------------------------------------------
  4853. 28E9      ----    8514/A - WD Escape Functions
  4854. ---------------------------------------------
  4855. 2C80-2C8F ----    VESA XGA Video in EISA slot 2 (see 1C80-1C8F)
  4856. ---------------------------------------------
  4857. 2C80-2C83 ----    EISA board product ID (board in slot 2)
  4858. ---------------------------------------------
  4859. 3000-30FF ----    available for EISA slot 3
  4860. ---------------------------------------------
  4861. 3220-3227 ----    serial port 3, description same as 03F8
  4862. 3228-322F ----    serial port 4, description same as 03F8
  4863. ---------------------------------------------
  4864. 33C0-33CF ----    Compaq QVision - BitBLT engine
  4865. ---------------------------------------------
  4866. 3400-34FF ----    available for EISA slot 3
  4867. ---------------------------------------------
  4868. 3510-3513 ----    ESDI primary harddisk controller
  4869.  
  4870. 3510  R      status word
  4871. 3510   W  command word
  4872. 3512  R      basic status
  4873. 3512   W  basic control
  4874. 3513  R      interrupt status
  4875. 3513   W  attention
  4876. ---------------------------------------------
  4877. 3518-351B ----    ESDI secondary harddisk controller
  4878.  
  4879. 3518  R      status word
  4880. 3518   W  command word
  4881. 351A  R      basis status
  4882. 351A   W  basic control
  4883. 351B  R      interrupt status
  4884. 351B   W  attention
  4885. ---------------------------------------------
  4886. 3540-354F ----    IBM SCSI (Small Computer System Interface) adapter
  4887. 3550-355F ----    IBM SCSI (Small Computer System Interface) adapter
  4888. 3560-356F ----    IBM SCSI (Small Computer System Interface) adapter
  4889. 3570-357F ----    IBM SCSI (Small Computer System Interface) adapter
  4890. ---------------------------------------------
  4891. 3800-38FF ----    available for EISA slot 3
  4892. ---------------------------------------------
  4893. 3C00-3CFF ----    available for EISA slot 3
  4894. ---------------------------------------------
  4895. 3C80-3C8F ----    VESA XGA Video in EISA slot 3
  4896.  
  4897. 3C80-3C83  RW    EISA Video ID
  4898. 3C84  RW    EISA Video expansion board control    
  4899. 3C85  RW    EISA Setup control
  4900. 3C88  RW    EISA Video Programmable Option Select 0
  4901. 3C89-3C8F  RW    EISA Video Programmable Option Select 1-7
  4902.  
  4903. SeeAlso: 1C80-1C8F,2C80-2C8F,7C80-7C8F
  4904. ---------------------------------------------
  4905. 3C80-3C83 ----    EISA board product ID (board in slot 3)
  4906. ---------------------------------------------
  4907. 4000-40FF ----    available for EISA slot 4
  4908. ---------------------------------------------
  4909. 4220-4227 ----    serial port, description same as 03F8
  4910. 4228-422F ----    serial port, description same as 03F8
  4911. ---------------------------------------------
  4912. 42E0-42EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  4913.  
  4914. 42E1  RW  GPIB (adapter 2)
  4915. ---------------------------------------------
  4916. 42E8      ----    8514/A and hardware-compatible video cards
  4917.  
  4918. 42E8  R      Misc. control: Subsystem Status
  4919. 42E8   W  Misc. control: Subsystem Control
  4920. ---------------------------------------------
  4921. 4400-44FF ----    available for EISA slot 4
  4922. ---------------------------------------------
  4923. 46E8      ----    VGA video adapter enable
  4924. Note:    IBM uses this port for adapter-card VGAs only, and port 03C3 for
  4925.       motherboard VGA only (see 03C3 for details)
  4926. SeeAlso: 03C3
  4927.  
  4928. 46E8  rW  Misc. control: enable flags / select ROM page (8514/A)
  4929.         bits 7-5 unused or vendor-specific
  4930.         bit 4: setup for POS registers (MCA)
  4931.         bit 3: enable video I/O ports and video buffer
  4932.         bits 2-0 unused or vendor-specific
  4933. ---------------------------------------------
  4934. 46E8      ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4935.  
  4936. 46E8   W  ROM page select
  4937. ---------------------------------------------
  4938. 4800-48FF ----    available for EISA slot 4
  4939. ---------------------------------------------
  4940. 4AE8-4AEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  4941.  
  4942. 4AE8   W  CRT control: Advanced function control
  4943.         (02h = VGA mode, 03h = 480-line mode, 07h = 768-line mode)
  4944. ---------------------------------------------
  4945. 4C00-4CFF ----    available for EISA slot 4
  4946. ---------------------------------------------
  4947. 4C80-4C83    EISA board product ID (board in slot 4)
  4948. ---------------------------------------------
  4949. 4C80-4C8F ----    VESA XGA Video in EISA slot 4 (see 3C80-3C8F)
  4950.  
  4951. SeeAlso: 1C80-1C8F,6C80-6C8F
  4952. ---------------------------------------------
  4953. 5000-50FF ----    available for EISA slot 5
  4954. ---------------------------------------------
  4955. 5220-5227 ----    serial port, description same as 03F8
  4956. 5228-522F ----    serial port, description same as 03F8
  4957. ---------------------------------------------
  4958. 5400-54FF ----    available for EISA slot 5
  4959. ---------------------------------------------
  4960. 5800-58FF ----    available for EISA slot 5
  4961. ---------------------------------------------
  4962. 5C00-5CFF ----    available for EISA slot 5
  4963. ---------------------------------------------
  4964. 5C80-5C8F ----    VESA XGA Video in EISA slot 5
  4965. SeeAlso: 2C80-2C8F,4C80-4C8F,6C80-6C8F
  4966.  
  4967. 5C80-5C83 r/w    EISA Video ID
  4968. 5C84  RW    EISA Video expansion board control    
  4969. 5C85  RW    EISA Setup control
  4970. 5C88  RW    EISA Video Programmable Option Select 0
  4971. 5C89-5C8F r/w    EISA Video Programmable Option Select 1-7
  4972. ---------------------------------------------
  4973. 5C80-5C83    EISA board product ID (board in slot 5)
  4974. ---------------------------------------------
  4975. 6000-60FF ----    available for EISA slot 6
  4976. ---------------------------------------------
  4977. 62E0-62EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  4978.  
  4979. 62E1  RW  GPIB (adapter 3)
  4980. ---------------------------------------------
  4981. 63C0-63CF ----    Compaq QVision - BitBLT engine
  4982. ---------------------------------------------
  4983. 6400-64FF ----    available for EISA slot 6
  4984. ---------------------------------------------
  4985. 6800-68FF ----    available for EISA slot 6
  4986. ---------------------------------------------
  4987. 6C00-6CFF ----    available for EISA slot 6
  4988. ---------------------------------------------
  4989. 6C80-6C83 ----    EISA board product ID (board in slot 6)
  4990. ---------------------------------------------
  4991. 6C80-6C8F ----    VESA XGA Video in EISA slot 1
  4992. SeeAlso: 1C80-1C8F,2C80-2C8F,5C80-5C8F
  4993.  
  4994. 6C80-6C83 r/w    EISA Video ID
  4995. 6C84  RW  EISA Video expansion board control    
  4996. 6C85  RW  EISA Setup control
  4997. 6C88  RW  EISA Video Programmable Option Select 0
  4998. 6C89-1C8F r/w    EISA Video Programmable Option Select 1-7
  4999. ---------------------------------------------
  5000. 7000-70FF ----    available for EISA slot 7
  5001. ---------------------------------------------
  5002. 7400-74FF ----    available for EISA slot 7
  5003. ---------------------------------------------
  5004. 7800-78FF ----    available for EISA slot 7
  5005. ---------------------------------------------
  5006. 7C00-7CFF ----    available for EISA slot 7
  5007. ---------------------------------------------
  5008. 7C80-7C83 ----    EISA board product ID (board in slot 7)
  5009. ---------------------------------------------
  5010. 7C80-7C8F ----    VESA XGA Video in EISA slot 7
  5011. SeeAlso: 1C80-1C8F, 6C80-6C8F
  5012.  
  5013. 7C80-7C83  RW    EISA Video ID
  5014. 7C84  RW    EISA Video expansion board control    
  5015. 7C85  RW    EISA Setup control
  5016. 7C88  RW    EISA Video Programmable Option Select 0
  5017. 7C89-7C8F  RW    EISA Video Programmable Option Select 1-7
  5018. ---------------------------------------------
  5019. 8000-80FF ----    available for EISA slot 8
  5020. ---------------------------------------------
  5021. 82E0-82EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  5022.  
  5023. 82E1  RW  GPIB (adapter 4)
  5024. ---------------------------------------------
  5025. 82E8-82EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5026.  
  5027. 82E8   W  drawing control: current Y position
  5028. ---------------------------------------------
  5029. 82F8-82FF ----    serial port, description same as 03F8
  5030. 83F8-83FF ----    serial port, description same as 03F8
  5031. ---------------------------------------------
  5032. 83C0-83CF ----    Compaq QVision - Line Draw Engine
  5033. ---------------------------------------------
  5034. 83C4      ----    Compaq Qvision EISA - Virtual Controller Select
  5035. ---------------------------------------------
  5036. 83C6-83C9 ----    Compaq Qvision EISA - DAC color registers
  5037. ---------------------------------------------
  5038. 8400-84FF ----    available for EISA slot 8
  5039. ---------------------------------------------
  5040. 86E8-86EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5041.  
  5042. 86E8   W  drawing control: current X position
  5043. ---------------------------------------------
  5044. 8800-88FF ----    available for EISA slot 8
  5045. ---------------------------------------------
  5046. 8AE8-8AEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5047.  
  5048. 8AE8   W  drawing control: destination Y position / axial step constant
  5049. ---------------------------------------------
  5050. 8C00-8CFF ----    available for EISA slot 8
  5051. ---------------------------------------------
  5052. 8C80-8C83 ----    EISA board product ID (board in slot 8)
  5053. ---------------------------------------------
  5054. 8EE8-8EEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5055.  
  5056. 8EE8   W  drawing control: destination X position / axial step constant
  5057. ---------------------------------------------
  5058. 9000-90FF ----    available for EISA slot 9
  5059. ---------------------------------------------
  5060. 92E8-92EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5061.  
  5062. 92E8   W  drawing control: error term
  5063. ---------------------------------------------
  5064. 9400-94FF ----    available for EISA slot 9
  5065. ---------------------------------------------
  5066. 96E8-96EF ----    8514/A and hardware-compatible video cards
  5067.  
  5068. 96E8  R      enter WD Enhanced Mode
  5069. 96E8   W  drawing control: major axis pixel count
  5070. ---------------------------------------------
  5071. 9800-98FF ----    available for EISA slot 9
  5072. ---------------------------------------------
  5073. 9AE8-9AE9 ----    8514/A Graphics Processor Status
  5074.  
  5075. 9AE8w R      drawing control: graphic processor status
  5076.          bit15-10: reserved
  5077.          bit9 =1 : hardware busy
  5078.          bit8 =1 : data ready
  5079.          bit7-0     : status of queue (0=empty, 1=filled)
  5080.                (each bit represents a position in queue)
  5081. 9AE8w  W  drawing control: command register
  5082.          bit15-13: command
  5083.                000b = no operation
  5084.                001b = draw vector
  5085.                010b = fast rectangle fill
  5086.                011b = rectangle fill vertical #1
  5087.                100b = rectangle fill vertical #2 (4 pixels)
  5088.                101b = draw vector, 1 pixel/scanline
  5089.                110b = copy rectangle
  5090.                111b = reserved
  5091.          bit12     : 0=high byte first, 1=low byte first (BYTSEQ)
  5092.          bit11-10: reserved
  5093.          bit9  =1: enable 16bit write access (16BIT)
  5094.          bit8     : 0=use 8514/A data, 1=pixel data trans reg (PCDATA)
  5095.          bit7     : 0=draw vector above, 1=draw vector below (INC_Y)
  5096.          bit6     : 0=x is maj. axis, 1=y is maj. axis (YMAJAXIS)
  5097.          bit5     : 0=draw vector left, 1=draw vector right (INC_X)
  5098.          bit4     : 0=move only, 1=draw and move (DRAW)
  5099.          bit3     : 0=Bresenham line, 1=direct vector (LINETYPE)
  5100.          bit2     : 0=draw last pixel, 1=don't draw last pixel (LASTPIX)
  5101.          bit1     : 0=single pixel, 1=4pixel (PLANAR)
  5102.          bit0     : 0=read data, 1=write data (RD/WR)
  5103. ---------------------------------------------
  5104. 9C00-9CFF ----    available for EISA slot 9
  5105. ---------------------------------------------
  5106. 9C80-9C83 ----    EISA board product ID (board in slot 9)
  5107. ---------------------------------------------
  5108. 9EE8      ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5109.  
  5110. 9EE8   W  short line vector transfer
  5111. ---------------------------------------------
  5112. A220      ----    soundblaster support in AMI Hi-Flex BIOS  ????
  5113. ---------------------------------------------
  5114. A2E0-A2EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  5115.  
  5116. A2E1  RW  GPIB (adapter 5)
  5117. ---------------------------------------------
  5118. A2E8-A2EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5119.  
  5120. A2E8   W  drawing control: background color
  5121. ---------------------------------------------
  5122. A6E8-A6EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5123.  
  5124. A6E8   W  drawing control: foreground color
  5125. ---------------------------------------------
  5126. AAE8-AAEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5127.  
  5128. AAE8   W  drawing control: write mask
  5129. ---------------------------------------------
  5130. AEE8-AEEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5131.  
  5132. AEE8   W  drawing control: read mask
  5133. ---------------------------------------------
  5134. AFFF      ----    VIDEO REGISTER
  5135.  
  5136. AFFF  RW  plane 0-3 system latch (video register)
  5137. ---------------------------------------------
  5138. B220-B227 ----    serial port, description same as 03F8
  5139. B228-B22F ----    serial port, description same as 03F8
  5140. ---------------------------------------------
  5141. B2E8-B2EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5142.  
  5143. B2E8   W  drawing control: color compare
  5144. ---------------------------------------------
  5145. B6E8-B6EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5146.  
  5147. B6E8   W  drawing control: background mix
  5148. ---------------------------------------------
  5149. BAE8-BAEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5150.  
  5151. BAE8   W  drawing control: foreground mix
  5152. ---------------------------------------------
  5153. BEE8-BEEF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5154.  
  5155. BEE8   W  drawing control: multi-function control
  5156. ---------------------------------------------
  5157. C000-C004 ----    Intel Pentium motherboard ("Neptune" chipset)
  5158. ---------------------------------------------
  5159. C008      ----    Intel Pentium motherboard ("Neptune" chipset)
  5160.  
  5161.         SeeAlso: 0CF8,0CFA
  5162. ---------------------------------------------
  5163. C050      ----    Intel Pentium motherboard ("Neptune" chipset)
  5164.  
  5165. C050  RW  bit 2: ???
  5166. ---------------------------------------------
  5167. C052      ----    Intel Pentium motherboard ("Neptune" chipset)
  5168. SeeAlso: 0CF8,0CFA
  5169.  
  5170. C052  R?  bits 6,7: ???
  5171. ---------------------------------------------
  5172. C059      ----    Intel Pentium motherboard ("Neptune" chipset)
  5173. ---------------------------------------------
  5174. C065      ----    Intel "Neptune" chipset - MEMORY SIZE???
  5175. SeeAlso: INT 15/AX=DA88h
  5176.  
  5177. C065  R      system memory in MB??? (10h on a 16MB machine)
  5178. ---------------------------------------------
  5179. C200-C204 ----    Intel Pentium motherboard ("Neptune" chipset)
  5180. ---------------------------------------------
  5181. C220-C227 ----    serial port, description same as 03F8
  5182. C228-C22F ----    serial port, description same as 03F8
  5183. ---------------------------------------------
  5184. C244      ----    Intel Pentium motherboard ("Neptune" chipset)
  5185. ---------------------------------------------
  5186. C2E0-C2EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  5187.  
  5188. C2E1  RW  GPIB (adapter 6)
  5189. ---------------------------------------------
  5190. D220-D227 ----    serial port, description same as 03F8
  5191. D228-D22F ----    serial port, description same as 03F8
  5192. ---------------------------------------------
  5193. E2E0-E2EF ----    GPIB (General Purpose Interface Bus, IEEE 488 interface)
  5194.  
  5195. E2E1  RW  GPIB (adapter 7)
  5196. ---------------------------------------------
  5197. E2E8-E2EF ----    8514/A and compatible video cards (e.g. ATI Graphics Ultra)
  5198.  
  5199. E2E8   W  drawing control: pixel data transfer
  5200. ---------------------------------------------
  5201.  
  5202. MEMORY-MAPPED ADDRESSES
  5203. ---------------------------------------------
  5204. 80C00000  Compaq Deskpro 386 system memory board register
  5205.  
  5206. 80C00000  R   Diagnostics register
  5207.         bit 7    = 0  memory expansion board is installed
  5208.         bit 6    = 0  second 1 MB of system memory board is installed
  5209.         bit 5-4 = 00 base memory set to 640 KB
  5210.               01 invalid
  5211.               10 base memory set to 512 KB
  5212.               11 base memory set to 256 KB
  5213.         bit 3    = 0  parity error in byte 3
  5214.         bit 2    = 0  parity error in byte 2
  5215.         bit 1    = 0  parity error in byte 1
  5216.         bit 0    = 0  parity error in byte 0 (in 32-bit double word)
  5217.  
  5218. 80C00000   W  RAM relocation register
  5219.         bit 7-2       Reserved, always write 1's.
  5220.         bit 1 = 0  Write-protect 128-Kbyte RAM at FE0000.
  5221.               = 1  Do not write-protect RAM at FE0000.
  5222.         bit 0 = 0  Relocate 128-Kbyte block at FE0000 to address 0E0000
  5223.               = 1  128-Kbyte RAM is addressed only at FE0000.
  5224. ---------------------------------------------
  5225. C0000000-C000FFFF    Weitek "Abacus" math coprocessor
  5226. ---------------------------------------------
  5227.  
  5228. --------!----CREDITS-------------------------
  5229. Chuck Proctor        <71534.2302@CompuServe.COM>
  5230. Richard W. Watson    <73042.1420@CompuServe.COM>
  5231. Matthias Paul        <mpaul@ibh.rwth-aachen.de>
  5232.  
  5233. [Some of the information in this list was extracted from Frank van Gilluwe's
  5234. _The_Undocumented_PC_, a must-have book for anyone programming down to the
  5235. "bare metal" of a PC.]
  5236.  
  5237. [Some of the information in this list from the shareware version of Dave
  5238. Williams' DOSREF, v3.0]
  5239.  
  5240. [8514/A hardware ports found in FractInt v18.0 source file FR8514A.ASM]
  5241.  
  5242. [Compaq QVision info from the _COMPAQ_QVision_Graphics_System_Technical_
  5243. _Reference_Guide_, second edition (October 1993).  Compaq part number
  5244. 073A/0693.  Much more to come!]
  5245.  
  5246. [AMI keyboard controller port 0064 commands from the American Megatrends, Inc.
  5247. _Version_KF_and_KH_Keyboard_Controller_BIOS_Reference_, available on the
  5248. AMI BBS and american.megatrends.com as KFKHMAN.ZIP.]
  5249.  
  5250. [Various chipset infos from "Het BIOS Boekje" 2nd edition, by Alle Metzlar,
  5251. ISBN 90-72260-59-7 (1995).]
  5252. --------!---Admin----------------------------
  5253. Highest Table Number = P104
  5254. --------!---FILELIST-------------------------
  5255. Please redistribute all of the files comprising the interrupt list (listed at
  5256. the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
  5257. quartet of archives named INTER47A through INTER47D (preferably the original
  5258. authenticated PKZIP archives), and the utility programs in a two additional
  5259. archives called INTER47E.ZIP and INTER47F.ZIP
  5260.  
  5261. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  5262. --------!---CONTACT_INFO---------------------
  5263. Internet: ralf@telerama.lm.com
  5264. UUCP: {uunet,harvard}!telerama.lm.com!ralf
  5265. FIDO: Ralf Brown 1:129/26.1
  5266.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  5267.     unless you address it to me)
  5268. CIS:  >INTERNET:ralf@telerama.lm.com
  5269.