正在加载……
专注、离线、切勿分心
[This file was provided by Wim Osterholt (2:512/56 or wim@djo.wtm.tudelft.nl).]
Last Change: 11/6/94

XT, AT and PS/2  I/O port addresses
      Do NOT consider this information as complete and accurate.
      If you want to do harware programming check ALWAYS the
      appropriate data sheets. Be aware that erroneously programming
      can put your hardware or your data at risk.
      There is a memory mapped address in use for I/O functions of which I
      think it should be mentioned here. See at the end of this list.
-------------------------------------------------------------------------------
0000-001F ---- DMA 1 (first Direct Memory Access controller 8237)
0000 r/w DMA channel 0  address byte  0, then byte 1.
0001 r/w DMA channel 0 word count byte 0, then byte 1.
0002 r/w DMA channel 1  address byte  0, then byte 1.
0003 r/w DMA channel 1 word count byte 0, then byte 1.
0004 r/w DMA channel 2  address byte  0, then byte 1.
0005 r/w DMA channel 2 word count byte 0, then byte 1.
0006 r/w DMA channel 3  address byte  0, then byte 1.
0007 r/w DMA channel 3 word count byte 0, then byte 1.
0008 r DMA channel 0-3 status register
   bit 7 = 1  channel 3 request
   bit 6 = 1  channel 2 request
   bit 5 = 1  channel 1 request
   bit 4 = 1  channel 0 request
   bit 3 = 1  channel terminal count on channel 3
   bit 2 = 1  channel terminal count on channel 2
   bit 1 = 1  channel terminal count on channel 1
   bit 0 = 1  channel terminal count on channel 0
0008 w DMA channel 0-3 command register
   bit 7 = 1  DACK sense active high
         = 0  DACK sense active low
   bit 6 = 1  DREQ sense active high
         = 0  DREQ sense active low
   bit 5 = 1  extended write selection
         = 0  late write selection
   bit 4 = 1  rotating priority
         = 0  fixed priority
   bit 3 = 1  compressed timing
         = 0  normal timing
   bit 2 = 1  enable controller
         = 0  enable memory-to-memory
0009 w DMA write request register
000A r/w DMA channel 0-3 mask register
   bit 7-3 = 0   reserved
   bit 2  = 0   clear mask bit
    = 1   set mask bit
   bit 1-0 = 00  channel 0 select
    = 01  channel 1 select
    = 10  channel 2 select
    = 11  channel 3 select
000B w DMA channel 0-3 mode register
   bit 7-6 = 00  demand mode
    = 01  single mode
    = 10  block mode
    = 11  cascade mode
   bit 5  = 0   address increment select
    = 1   address decrement select
   bit 3-2 = 00  verify operation
    = 01  write to memory
    = 10  read from memory
    = 11  reserved
   bit 1-0 = 00  channel 0 select
    = 01  channel 1 select
    = 10  channel 2 select
    = 11  channel 3 select
000C w DMA clear byte pointer flip-flop
000D r DMA read temporary register
000D w DMA master clear
000E w DMA clear mask register
000F w DMA write mask register
-------------------------------------------------------------------------------
0010-001F ---- DMA controller (8237) on PS/2 model 60 & 80
-------------------------------------------------------------------------------
0018 w PS/2 extended function register
-------------------------------------------------------------------------------
001A  PS/2 extended function execute
-------------------------------------------------------------------------------
0020-003F ---- PIC 1 (Programmable Interrupt Controller 8259)
0020 w PIC initialization command word ICW1
   bit 7-5 = 0  only used in 80/85 mode
   bit 4  = 1  ICW1 is being issued
   bit 3  = 0  edge triggered mode
    = 1  level triggered mode
   bit 2  = 0  successive interrupt vectors use 8 bytes
    = 1  successive interrupt vectors use 4 bytes
   bit 1  = 0  cascade mode
    = 1  single mode, no ICW3 needed
   bit 0  = 0  no ICW4 needed
    = 1  ICW4 needed
0021 w PIC  ICW2,ICW3,ICW4 after ICW1 to 0020
  ICW2:
   bit 7-3 = address lines A0-A3 of base vector address for PIC
   bit 2-0 = reserved
  ICW3:
   bit 7-0 = 0  slave controller not attached to corresponding
         interrupt pin
    = 1  slave controller attached to corresponding
         interrupt pin
  ICW4:
   bit 7-5 = 0  reserved
   bit 4  = 0  no special fully-nested mode
    = 1  special fully-nested mode
   bit 3-2 = 0x nonbuffered mode
    = 10 buffered mode/slave
    = 11 buffered mode/master
   bit 1  = 0  normal EOI
    = 1  Auto EOI
   bit 0  = 0  8085 mode
    = 1  8086/8088 mode
0021 r/w PIC master interrupt mask register
  OCW1:
   bit 7 = 0  enable parallel printer interrupt
   bit 6 = 0  enable diskette interrupt
   bit 5 = 0  enable fixed disk interrupt
   bit 4 = 0  enable serial port 1 interrupt
   bit 3 = 0  enable serial port 2 interrupt
   bit 2 = 0  enable video interrupt
   bit 1 = 0  enable keyboard, mouse, RTC interrupt
   bit 0 = 0  enable timer interrupt
0020 r PIC  interrupt request/in-service registers by OCW3
  request register:
   bit 7-0 = 0  no active request for the corresponding int. line
    = 1  active request for corresponding interrupt line
  in-service register:
   bit 7-0 = 0  corresponding line not currently being serviced
    = 1  corresponding int. line currently being serviced
0020 w OCW2:
   bit 7-5 = 000 rotate in auto EOI mode (clear)
    = 001 nonspecific EOI
    = 010 no operation
    = 011 specific EOI
    = 100 rotate in auto EOI mode (set)
    = 101 rotate on nonspecific EOI command
    = 110 set priority command
    = 111 rotate on specific EOI command
   bit 4  = 0 reserved
   bit 3  = 0 reserved
   bit 2-0 interrupt request to which the command applies
0020 w PIC OCW3
   bit 7  = 0   reserved
   bit 6-5 = 0x  no operation
    = 10  reset special mask
    = 11  set special mask
   bit 4  = 0   reserved
   bit 3  = 1   reserved
   bit 2  = 0   no poll command
    = 1   poll command
   bit 1-0 = 0x  no operation
    = 10  read int.request register on next read at 0020
    = 11  read int.in-service register on next read 0020
-------------------------------------------------------------------------------
0022-002B ---- Intel 82355, part of chipset for 386sx
   initialisation in POST will disable these addresses,
   only a hard reset will enable them again.
0022 r/w 82335 MCR memory configuration register
0024  82335 RC1 roll compare register
0026  82335 RC2 roll compare register
0028  82335 CC0 compare register
002A  82335 CC1 compare register
    values for CC0 and CC1:
    00F9,0000  enable range compare CC0 0-512K  CC1 disable
    00F1,0000  enable range compare CC0 0-1024K CC1 disable
    00F1,10F9  enable range compare CC0 0-1M    CC1 1M-1M5
    00E1,0000  enable range compare CC0 0-2M    CC1 disable
    00E1,0000  enable range compare CC0 0-2M    CC1 disable
    00C1,0000  enable range compare CC0 0-4M    CC1 disable
    00C1,40E1  enable range compare CC0 0-4M    CC1 4M-6M
    0081,0000  enable range compare CC0 0-8M    CC1 disable
-------------------------------------------------------------------------------
0022-0023 ---- Chip Set Data
0022 w index for accesses to data port
0023 r/w chip set data
-------------------------------------------------------------------------------
0022-0023 ---- Cyrix Cx486SLC/DLC processor Cache Configuration Registers
0022 w index for accesses to next port
  C0h CR0
  C1h CR1
  C4h non-cacheable region 1, start address bits 31-24
  C5h non-cacheable region 1, start address bits 23-16
  C6h non-cacheable region 1, start addr 15-12, size (low nibble)
  C7h non-cacheable region 2, start address bits 31-24
  C8h non-cacheable region 2, start address bits 23-16
  C9h non-cacheable region 2, start addr 15-12, size (low nibble)
  CAh non-cacheable region 3, start address bits 31-24
  CBh non-cacheable region 3, start address bits 23-16
  CCh non-cacheable region 3, start addr 15-12, size (low nibble)
  CDh non-cacheable region 4, start address bits 31-24
  CEh non-cacheable region 4, start address bits 23-16
  CFh non-cacheable region 4, start addr 15-12, size (low nibble)
0023 r/w cache configuration register array (indexed by port 0022h)
  non-cacheable region sizes:
   00h  disabled
   01h  4K
   02h  8K
   03h  16K
   04h  32K
   05h  64K
   06h  128K
   07h  256K
   08h  512K
   09h  1M
   0Ah  2M
   0Bh  4M
   0Ch  8M
   0Dh  16M
   0Eh  32M
   0Fh  4G
  Configuration Register 0 format:
   bit 0 "NC0" first 64K of each 1M noncacheable in real/V86
   bit 1 "NC1" 640K-1M noncacheable
   bit 2 "A20M" enables A20M# input pin
   bit 3 "KEN"  enables KEN# input pin
   bit 4 "FLUSH" enables KEN# input pin
   bit 5 "BARB" enables internal cache flushing on bus holds
   bit 6 "C0" cache direct-mapped instead of 2-way associative
   bit 7 "SUSPEND" enables SUSP# input and SUSPA# output pins
  Configuration Register 1 format;
   bit 0 "RPL" enables output pins RPLSET and RPLVAL#
-------------------------------------------------------------------------------
0026-0027 ---- Power Management
0026 w index for data port
0027 r/w power management data
-------------------------------------------------------------------------------
0038-003F ---- PC radio by CoZet Info Systems
  The I/O address range is dipswitch selectable from:
     038-03F and 0B0-0BF
     078-07F and 0F0-0FF
     138-13F and 1B0-1BF
     178-17F and 1F0-1FF
     238-23F and 2B0-2BF
     278-27F and 2F0-2FF
     338-33F and 3B0-3BF
     378-37F and 3F0-3FF
  All of these addresses show a readout of FF in initial state.
  Once started, all of the addresses show  FB, whatever might
  happen.
-------------------------------------------------------------------------------
0040-005F ---- PIT  (Programmable Interrupt Timer  8253, 8254)
   XT & AT uses 40-43    PS/2 uses 40, 42,43,44, 47
0040 r/w PIT  counter 0, counter divisor       (XT, AT, PS/2)
0041 r/w PIT  counter 1, RAM refresh counter   (XT, AT)
0042 r/w PIT  counter 2, cassette & speaker    (XT, AT, PS/2)
0043 r/w PIT  mode port, control word register for counters 0-2
   bit 7-6 = 00  counter 0 select
    = 01  counter 1 select   (not PS/2)
    = 10  counter 2 select
   bit 5-4 = 00  counter latch command
    = 01  read/write counter bits 0-7 only
    = 10  read/write counter bits 8-15 only
    = 11  read/write counter bits 0-7 first, then 8-15
   bit 3-1 = 000 mode 0 select
    = 001 mode 1 select - programmable one shot
    = x10 mode 2 select - rate generator
    = x11 mode 3 select - square wave generator
    = 100 mode 4 select - software triggered strobe
    = 101 mode 5 select - hardware triggered strobe
   bit 0  = 0   binary counter 16 bits
    = 1   BCD counter
0044 r/w PIT  counter 3 (PS/2, EISA)
  used as fail-safe timer. generates an NMI on time out.
  for user generated NMI see at 0462.
0047 w PIT  control word register counter 3 (PS/2, EISA)
   bit 7-6 = 00  counter 3 select
    = 01  reserved
    = 10  reserved
    = 11  reserved
   bit 5-4 = 00  counter latch command counter 3
    = 01  read/write counter bits 0-7 only
    = 1x  reserved
   bit 3-0 = 00
0048  EISA
0049  8254 timer 2, not used (counter 1)
004A  EISA programmable interval timer 2
004B  EISA programmable interval timer 2
-------------------------------------------------------------------------------
0060-006F ---- Keyboard controller 804x (8041, 8042)  (or PPI (8255) on PC,XT)
   XT uses 60-63,  AT uses 60-64
   AT keyboard controller input port bit definitions
    bit 7   = 0  keyboard inhibited
    bit 6   = 0  CGA, else MDA
    bit 5   = 0  manufacturing jumper installed
    bit 4   = 0  system RAM 512K, else 640K
    bit 3-0      reserved
   AT keyboard controller input port bit definitions by Compaq
    bit 7   = 0  security lock is locked
    bit 6   = 0  Compaq dual-scan display, 1=non-Compaq display
    bit 5   = 0  system board dip switch 5 is ON
    bit 4   = 0  auto speed selected, 1=high speed selected
    bit 3   = 0  slow (4MHz), 1 = fast (8MHz)
    bit 2   = 0  80287 installed, 1= no NDP installed
    bit 1-0      reserved
   AT keyboard controller output port bit definitions
    bit 7 =    keyboard data output
    bit 6 =    keyboard clock output
    bit 5 = 0  input buffer full
    bit 4 = 0  output buffer empty
    bit 3 =    reserved (see note)
    bit 2 =    reserved (see note)
    bit 1 =    gate A20
    bit 0 =    system reset
  Note: bits 2 and 3 are the turbo speed switch or password
     lock on Award/AMI/Phoenix BIOSes.  These bits make
     use of nonstandard keyboard controller BIOS
     functionality to manipulate
       pin 23 (8041 port 22) as turbo switch for AWARD
       pin 35 (8041 port 15) as turbo switch/pw lock for
    Phoenix
0060 r/w KB controller data port or keyboard input buffer (ISA, EISA)
  should only be read from after status port bit0 = 1
  should only be written to if status port bit1 = 0
  keyboard commands (data also goes to port 0060):
   E6 sngl  set mouse scaling to 1:1
   E7 sngl  set mouse scaling to 2:1
   E8 dbl   set mouse resolution
    (00h = 1/mm,01h = 2/mm,02h = 4/mm,03h = 8/mm)
   E9 sngl  get mouse information
    read two status bytes:
      byte 0
     bit 7 unused
     bit 6 remote rather than stream mode
     bit 5 mouse enabled
     bit 4 scaling set to 2:1
     bit 3 unused
     bit 2 left button pressed
     bit 1 unused
     bit 0 right button pressed
      byte 1: resolution
   ED dbl   set/reset mode indicators Caps Num Scrl
    bit 2 = CapsLk, bit 1 = NumLk, bit 0 = ScrlLk
   EE sngl  diagnostic echo. returns EE.
   EF sngl  NOP (No OPeration). reserved for future use
   F0 dbl   get/set scan code set
    00h get current set
    01h scancode set 1 (except Type 2 ctrlr)
    02h scancode set 2 (default)
    03h scancode set 3
   F2 sngl  read keyboard ID (read two ID bytes)
   F2 sngl  read mouse ID (read two ID bytes)
   F3 dbl   set typematic rate/delay
   F3 dbl   set mouse sample rate in reports per second
   F4 sngl  enable keyboard
   F4 sngl  enable mouse
   F5 sngl  disable keyboard. set default parameters
   F5 sngl  disable mouse, set default parameters
   F6 sngl  set default parameters
   F7 sngl  [MCA] set all keys to typematic (scancode set 3)
   F8 sngl  [MCA] set all keys to make/release
   F9 sngl  [MCA] set all keys to make only
   FA sngl  [MCA] set all keys to typematic/make/release
   FB sngl  [MCA] set al keys to typematic
   FC dbl   [MCA] set specific key to make/release
   FD dbl   [MCA] set specific key to make only
   FE sngl  resend last scancode
   FF sngl  perform internal power-on reset function
   FF sngl  reset mouse
  Note: must issue command D4h to port 64h first to access
     mouse functions

0060 r KeyBoard or KB controller data output buffer (via PPI on XT)
0061 w KB controller port B (ISA, EISA)   (PS/2 port A is at 0092)
  system control port for compatibility with 8255
   bit 7 (1= IRQ 0 reset )
   bit 6-4    reserved
   bit 3 = 1  channel check enable
   bit 2 = 1  parity check enable
   bit 1 = 1  speaker data enable
   bit 0 = 1  timer 2 gate to speaker enable
0061 r KB controller port B control register (ISA, EISA)
  system control port for compatibility with 8255
   bit 7  parity check occurred
   bit 6  channel check occurred
   bit 5  mirrors timer 2 output condition
   bit 4  toggles with each refresh request
   bit 3  channel check status
   bit 2  parity check status
   bit 1  speaker data status
   bit 0  timer 2 gate to speaker status
0061 w PPI  Programmable Peripheral Interface 8255 (XT only)
  system control port
   bit 7 = 1  clear keyboard
   bit 6 = 0  hold keyboard clock low
   bit 5 = 0  I/O check enable
   bit 4 = 0  RAM parity check enable
   bit 3 = 0  read low switches
   bit 2     reserved, often used as turbo switch
   bit 1 = 1  speaker data enable
   bit 0 = 1  timer 2 gate to speaker enable
0062 r/w PPI (XT only)
   bit 7 = 1  RAM parity check
   bit 6 = 1  I/O channel check
   bit 5 = 1  timer 2 channel out
   bit 4     reserved
   bit 3 = 1  system board RAM size type 1
   bit 2 = 1  system board RAM size type 2
   bit 1 = 1  coprocessor installed
   bit 0 = 1  loop in POST
0063 r/w PPI (XT only) command mode register  (read dipswitches)
   bit 7-6 = 00  1 diskette drive
    = 01  2 diskette drives
    = 10  3 diskette drives
    = 11  4 diskette drives
   bit 5-4 = 00  reserved
    = 01  40*25 color (mono mode)
    = 10  80*25 color (mono mode)
    = 11  MDA 80*25
   bit 3-2 = 00  256K (using 256K chips)
    = 01  512K (using 256K chips)
    = 10  576K (using 256K chips)
    = 11  640K (using 256K chips)
   bit 3-2 = 00  64K  (using 64K chips)
    = 01  128K (using 64K chips)
    = 10  192K (using 64K chips)
    = 11  256K (using 64K chips)
   bit 1-0       reserved
0064 r KB controller read status (ISA, EISA)
   bit 7 = 1 parity error on transmission from keyboard
   bit 6 = 1 receive timeout
   bit 5 = 1 transmit timeout
   bit 4 = 0 keyboard inhibit
   bit 3 = 1 data in input register is command
    0 data in input register is data
   bit 2  system flag status: 0=power up or reset  1=selftest OK
   bit 1 = 1 input buffer full (input 60/64 has data for 8042)
   bit 0 = 1 output buffer full (output 60 has data for system)
0064 r KB controller read status (MCA)
   bit 7 = 1 parity error on transmission from keyboard
   bit 6 = 1 general timeout
   bit 5 = 1 mouse output buffer full
   bit 4 = 0 keyboard inhibit
   bit 3 = 1 data in input register is command
    0 data in input register is data
   bit 2  system flag status: 0=power up or reset  1=selftest OK
   bit 1 = 1 input buffer full (input 60/64 has data for 804x)
   bit 0 = 1 output buffer full (output 60 has data for system)
0064 r KB controller read status by Compaq
   bit 7 = 1 parity error detected (11-bit format only). If an
      error is detected, a Resend command is sent to the
      keyboard once only, as an attempt to recover.
   bit 6 = 1 receive timeout. transmission didn't finish in 2mS.
   bit 5 = 1 transmission timeout error
       bit 5,6,7  cause
    1 0 0  No clock
    1 1 0  Clock OK, no response
    1 0 1  Clock OK, parity error
   bit 4 = 0 security lock engaged
   bit 3 = 1 data in OUTPUT register is command
    0 data in OUTPUT register is data
   bit 2  system flag status: 0=power up or reset  1=soft reset
   bit 1 = 1 input buffer full (output 60/64 has data)
   bit 0 = 0 no new data in buffer (input 60 has data)
0064 w KB controller input buffer (ISA, EISA)
  KB controller commands (data goes to port 0060):
   20 read  read byte zero of internal RAM, this is the
         last KB command send to 804x
        Compaq  Put current command byte on port 0060
    command structure:
    bit 7 reserved
    bit 6 = 1 convert KB codes to 8086 scan codes
    bit 5 = 0 use 11-bit codes, 1=use 8086 codes
    bit 4 = 0 enable keyboard, 1=disable keyboard
    bit 3 = 1 ignore security lock state
    bit 2   this bit goes into bit2 status reg.
    bit 1 = 0 reserved
    bit 0 = 1 generate int. when output buffer full
   21-3F read  reads the byte specified in the lower 5 bits of
         the command in the 804x's internal RAM
   60-7F dbl   writes the data byte to the address specified in
         the 5 lower bits of the command.
         Alternate description KB IO command 60 summary:
          bit7 = 0 reserved
          bit6 = IBM PC compatibility mode
          bit5 = IBM PC mode
          bit4 = disable kb
          bit3 = inhibit override
          bit2 = system flag
          bit1 = 0 reserved
          bit0 = enableoutput buffer full interrupt
   60   Compaq  Load new command (60 to [64], command to [60])
   A1   Compaq  unknown speedfunction ??
   A2   Compaq  unknown speedfunction ??
   A3   Compaq  Enable system speed control
   A4 MCA   check if password installed
   A4   Compaq  Toggle speed
   A5 MCA   load password
   A5   Compaq  Special reed. the 8042 places the real values
         of port 2 except for bits 4 and 5 wich are given
         a new definition in the output buffer. No output
         buffer full is generated.
    if bit 5 = 0, a 9-bit keyboard is in use
    if bit 5 = 1, an 11-bit keyboard is in use
    if bit 4 = 0, outp-buff-full interrupt disabled
    if bit 4 = 1, output-buffer-full int. enabled
   A6 MCA   check password
   A6   Compaq  unknown speedfunction ??
   A7 MCA   disable mouse port
   A8 MCA   enable mouse port
   A9 MCA   test mouse port
   AA sngl  initiate self-test. will return 55 to data port
        Compaq  Initializes ports 1 and 2, disables the keyboard
         and clears the buffer pointers. It then places
         55 in the output buffer.
   AB sngl  initiate interface test. result values:
          0 = no error
          1 = keyboard clock line stuck low
          2 = keyboard clock line stuck high
          3 = keyboard data line is stuck low
          4 = keyboard data line stuck high
        Compaq   5 = Compaq diagnostic feature
   AC read  diagnostic dump. the contents of the 804x RAM,
         output port, input port, status word are send.
   AD sngl  disable keyboard (sets bit 4 of commmand byte)
   AE sngl  enable keyboard  (resets bit 4 of commmand byte)
   AF AWARD Enhanced Command: read keyboard version
   C0 read  read input port
        Compaq  Places status of input port in output buffer. use
         this command only when the output buffer is empty
   C1 MCA   Enhanced Command: poll input port Low nibble
   C2 MCA   Enhanced Command: poll input port High nibble
   D0 read  read output port
        Compaq  Places byte in output port in output buffer. use
         this command only when the output buffer is empty
   D1 dbl   write output port. next byte written  to 0060
         will be written to the 804x output port; the
         original IBM AT and many compatibles use bit 1 of
         the output port to control the A20 gate.
        Compaq  The system speed bits are not set by this command
         use commands A1-A6 (!) for speed functions.
   D2 MCA   Enhanced Command: write keyboard output buffer
   D3 MCA   Enhanced Command: write pointing device out.buf.
   D4 MCA   write to mouse
   D4 AWARD Enhanced Command: write to auxiliary device
   DD sngl  disable address line A20 (HP Vectra only???)
         default in Real Mode
   DF sngl  enable address line A20 (HP Vectra only???)
   E0 read  read test inputs.
    bit0 = kbd clock, bit1 = kbd data
   Exxx AWARD Enhanced Command: active output port
   ED   Compaq  This is a two part command to control the state
         of the NumLock CpasLock and ScrollLock LEDs
         The second byte contains the state to set LEDs.
    bit 7-3    reserved. should be set to 0.
    bit 2 = 0  Caps Lock LED off
    bit 1 = 0  Num Lock LED off
    bit 0 = 0  Scroll Lock LED off
   F0-FF sngl  pulse output port low for 6 microseconds.
         bits 0-3 contain the mask for the bits to be
         pulsed. a bit is pulsed if its mask bit is zero.
         bit0=system reset. Don't set to zero. Pulse only!
general note:  Keyboard controllers are widely different from each other.
   You cannot generally exchange them between different machines.
note on Award:  Derived from Award's Enhanced KB controller advertising sheet.
note on Compaq:  Derived from the Compaq Deskpro 386 Tech. Ref. Guide.
0065 r communications port (Olivetti M24)
0068 w HP-Vectra  control buffer (HP commands)
0069 r HP-Vectra  SVC (keyboard request SerViCe port)
006A w HP-Vectra  clear processing, done
006C-006F HP-HIL (Human Interface Link = async. serial inputs 0-7)
-------------------------------------------------------------------------------
0065   ---- AT&T 6300+ high/low chip select
-------------------------------------------------------------------------------
0065   ---- ???
0065 r/w ???
  bit 2: A20 gate control (set = A20 enabled, clear = disabled)
-------------------------------------------------------------------------------
0066-0067 ---- AT&T 6300+ system configuration switches
-------------------------------------------------------------------------------
0068   ---- C&T chipsets, turbo mode control
-------------------------------------------------------------------------------
006B-006F ---- SSGA control registers
006B ? RAM enable/remap
006C-006F undocumented
-------------------------------------------------------------------------------
0070-007F ---- CMOS RAM/RTC (Real Time Clock  MC146818)
0070 w CMOS RAM index register port (ISA, EISA)
   bit 7  = 1  NMI disabled
    = 0  NMI enabled
   bit 6-0      CMOS RAM index (64 bytes, sometimes 128 bytes)
  any write to 0070 should be followed by an action to 0071
  or the RTC wil be left in an unknown state.
0071 r/w CMOS RAM data port (ISA, EISA)
  RTC registers:
  00    current second in BCD
  01    alarm second   in BCD
  02    current minute in BCD
  03    alarm minute   in BCD
  04    current hour in BCD
  05    alarm hour   in BCD
  06    day of week  in BCD
  07    day of month in BCD
  08    month in BCD
  09    year  in BCD (00-99)
  0A    status register A
         bit 7 = 1  update in progress
         bit 6-4 divider that identifies the time-based
    frequency
         bit 3-0 rate selection output  frequency and int. rate
  0B    status register B
         bit 7 = 0  run
        = 1  halt
         bit 6 = 1  enable periodic interrupt
         bit 5 = 1  enable alarm interrupt
         bit 4 = 1  enable update-ended interrupt
         bit 3 = 1  enable square wave interrupt
         bit 2 = 1  calendar is in binary format
        = 0  calendar is in BCD format
         bit 1 = 1  24-hour mode
        = 0  12-hour mode
         bit 0 = 1  enable daylight savings time. only in USA.
      useless in Europe. Some DOS versions clear
      this bit when you use the DAT/TIME command.
  0C    status register C
         bit 7 =   interrupt request flag
         bit 6 =   peridoc interrupt flag
         bit 5 =   alarm interrupt flag
         bit 4 =   update interrupt flag
         bit 3-0   reserved
  0D    status register D
         bit 7 = 1  Real-Time Clock has power
         bit 6-0   reserved
  0E    diagnostics status byte
         bit 7 = 0  RTC lost power
         bit 6 = 1  CMOS RAM checksum bad
         bit 5 = 1  invalid configuration information at POST
         bit 4 = 1  memory size error at POST
         bit 3 = 1  fixed disk/adapter failed initialization
         bit 2 = 1  CMOS RAM time found invalid
         bit 1 = 1  adapters do not match configuration (EISA)
         bit 0 = 1  time out reading an adapter ID (EISA)
  0F    shutdown status byte
         00 = normal execution of POST
         01 = chip set initialization for real mode reentry
         04 = jump to bootstrap code
         05 = issue an EOI an JMP to Dword ptr at 40:67
         06 = JMP to Dword ptrv at 40:67 without EOI
         07 = return to INT15/87 (block move)
         08 = return to POST memory test
         09 = return to INT15/87 (block move)
         0A = JMP to Dword ptr at 40:67 without EOI
         0B = return IRETS through 40:67
  10    diskette drive type for A: and B:
         bit 7-4 drive type of drive 0
         bit 3-0 drive type of drive 1
          = 0000    no drive
          = 0001    360K
          = 0010    1M2
          = 0011    720K
          = 0100    1M44
          = 0101-1111 reserved
  11    reserved / AMI Extended CMOS setup (AMI Hi-Flex BIOS)
         bit 7   = 1     Typematic Rate Programming
         bit 6-5 = 00    Typematic Rate Delay 250 mSec
         bit 4-0 = 00011 Typematic Rate 21.8 Chars/Sec
  12    fixed disk drive type for drive 0 and drive 1
         bit 7-4 drive type of drive 0
         bit 3-0 drive type of drive 1
    if either of the nibbles equals 0F, then bytes
    19 an 1A are valid
  13    reserved / AMI Extended CMOS setup (AMI Hi-Flex BIOS)
         bit 7 = 1  Mouse Support Option
         bit 6 = 1  Above 1 MB Memory Test disable
         bit 5 = 1  Memory Test Tick Sound disable
         bit 4 = 1  Memory Parity Error Check enable
         bit 3 = 1  Hit <ESC> Message Display disabled
         bit 2 = 1  Hard Disk Type 47 Data Area at address 0:300
         bit 1 = 1  Wait For <F1> If Any Error enabled
         bit 0 = 1  System Boot Up Num Lock is On
  14    equipment byte
         bit 7-6  diskette drives installed
          = 00  1 drive installed
          = 01  2 drives installed
          = 10  reserved
          = 11  reserved
         bit 5-4  primary display
          = 00  adapter card with option ROM
          = 01  40*25 color
          = 10  80*25 color
          = 11  monochrome
         bit 3-2  reserved
         bit 1   = 1  coprocessor installed (non-Weitek)
         bit 0     diskette drive avaliable for boot
  15    LSB of systemn base memory in Kb
  16    MSB of systemn base memory in Kb
  17    LSB of total extended memory in Kb
  18    MSB of total extended memory in Kb
  19    drive C extension byte
  1A    drive D extension byte
  1B-27 reserved
  1B/1C word to 82335 RC1 roll compare register at [24]
   (Phoenix)
  1D/1E word to 82335 RC2 roll compare register at [26]
   (Phoenix)
  28    HP-Vectra checksum over 29-2D
  29-2D reserved
  29/2A word to Intel 82335 CC0 compare register at
   [28](Phoenix)
  2B/2C word send to 82335 CC1 compare register at [2A]
   (Phoenix)
  2D    AMI Extended CMOS setup (AMI Hi-Flex BIOS)
        (Phoenix BIOS checks for the values AA or CC)
         bit 7 = 1  Weitek Processor Absent
         bit 6 = 1  Floppy Drive Seek At Boot disabled
         bit 5 = 1  System Boot Up Sequence  C:, A:
         bit 4 = 1  System Boot Up Speed is high
         bit 3 = 1  Cache Memory enabled
         bit 2 = 1  Internal Cache Memory  <1>
         bit 1-0   reserved
  2E    CMOS MSB checksum over 10-2D
  2F    CMOS LSB checksum over 10-2D
  30    LSB of extended memory found above 1Mb at POST
  31    MSB of extended memory found above 1Mb at POST
  32    date century in BCD
  33    information flags
         bit4 = bit4 from CPU register CR0   (Phoenix)
         this bit is only known as INTEL RESERVED
  34-3F reserved
  34     bit4 bit5 (Phoenix BIOS)
  3D/3E word to 82335 MCR memory config register at
   [22](Phoenix)
  3D     bit3  base memsize 512/640  (Phoenix)
  3E     bit7 = 1  relocate enable       (Phoenix)
         bit1 = 1  shadow video enable   (Phoenix)
         bit0 = 1  shadow BIOS enable    (Phoenix)

  User Definable Drive Parameters are also stored in CMOS RAM:
  AMI (386sx BIOS 1989) first user definable drive (type 47)
   1B  L cylinders
   1C  H cylinders
   1D  heads
   1E  L Write Precompensation Cylinder
   1F  H Write Precompensation Cylinder
   20  ??
   21  L cylinders parking zone
   22  H cylinders parking zone
   23  sectors
  AMI (386sx BIOS 1989) second user definable drive (type 48)
   24  L cylinders
   25  H cylinders
   26  heads
   27  L Write Precompensation Cylinder
   28  H Write Precompensation Cylinder
   29  ??
   2A  L cylinders parking zone
   2B  H cylinders parking zone
   2C  sectors
  Phoenix (386BIOS v1.10.03 1988) 1st user definable drv (type48)
   20  L cylinders
   21  H cylinders
   22  heads
   23  L Write Precompensation Cylinder
   24  H Write Precompensation Cylinder
   25  L cylinders parking zone
   26  H cylinders parking zone
   27  sectors
  Phoenix (386BIOS v1.10.03 1988) 2nd user definable drv (type49)
  (when PS/2-style password option is not used)
   35  L cylinders
   36  H cylinders
   37  heads
   38  L Write Precompensation Cylinder
   39  H Write Precompensation Cylinder
   3A  L cylinders parking zone
   3B  H cylinders parking zone
   3C  sectors
- - - - - - - - ---------------------------------------------------------------
0073   ---- Intel Pentium motherboard ("Neptune" chipset)
0073 r/w bit 7: ???
- - - - - - - - ---------------------------------------------------------------
0074-0076 secondary CMOS (Compaq)
0074 w secondary CMOS RAM index (Compaq)
0076 r/w secondary CMOS RAM (Compaq)
- - - - - - - - ---------------------------------------------------------------
0078  HP-Vectra  Hard Reset: NMI enable/disable
   bit 7 = 0  disable & clear hard reset from HP-HIL controller
         = 1  enable hard reset from HP-HIL controller chip
   bit 6-0    reserved
-------------------------------------------------------------------------------
0078-007F ---- PC radio by CoZet Info Systems
  The I/O address range is dipswitch selectable from:
     038-03F and 0B0-0BF
     078-07F and 0F0-0FF
     138-13F and 1B0-1BF
     178-17F and 1F0-1FF
     238-23F and 2B0-2BF
     278-27F and 2F0-2FF
     338-33F and 3B0-3BF
     378-37F and 3F0-3FF
  All of these addresses show a readout of FF in initial state.
  Once started, all of the addresses show  FB, whatever might
  happen.
-------------------------------------------------------------------------------
007C-007D ---- HP-Vectra  PIC 3   (Programmable Interrupt Controller 8259)
  cascaded to first controller.
  used for keyboard and input device interface.
007C r/w HP-Vectra  PIC 3  see at 0020  PIC 1
007D r/w HP-Vectra  PIC 3  see at 0021  PIC 1
-------------------------------------------------------------------------------
0080 w Manufacturing Diagnostics port
-------------------------------------------------------------------------------
0080-008F ---- DMA page registers   (74612)
0080 r/w extra page register (temporary storage)
0081 r/w DMA channel 2 address byte 2
0082 r/w DMA channel 3 address byte 2
0083 r/w DMA channel 1 address byte 2
0084 r/w extra page register
0085 r/w extra page register
0086 r/w extra page register
0087 r/w DMA channel 0 address byte 2
0088 r/w extra page register
0089 r/w DMA channel 6 address byte 2
0089 r/w DMA channel 7 address byte 2
0089 r/w DMA channel 5 address byte 2
008C r/w extra page register
008D r/w extra page register
008E r/w extra page register
008F r/w DMA refresh page register
-------------------------------------------------------------------------------
0084   ---- Compaq POST Diagnostic
-------------------------------------------------------------------------------
0084   ---- EISA Synchronize Bus Cycle
-------------------------------------------------------------------------------
0090-009F ---- PS/2 POS (Programmable Option Select)
0090  Central arbitration control port
0091 r Card selection feedback
0092 r/w PS/2 system control port A  (port B is at 0061)
   bit 7-6   any bit set to 1 turns activity light on
   bit 5    reserved
   bit 4 = 1 watchdog timout occurred
   bit 3 = 0 RTC/CMOS security lock (on password area) unlocked
         = 1 CMOS locked (done by POST)
   bit 2    reserved
   bit 1 = 1 indicates A20 active
   bit 0 = 0 system reset or write
    1 pulse alternate reset pin (alternate CPU reset)
0094 w system board enable/setup register
   bit 7 = 1  enable functions
         = 0  setup functions
   bit 5 = 1  enables VGA
         = 0  setup VGA
0095  reserved
0096 w adapter enable /setup register
   bit 3 = 1  setup adapters
         = 0  enable registers
0097  reserved
-------------------------------------------------------------------------------
00A0-00AF ---- PIC 2 (Programmable Interrupt Controller 8259)
00A0 r/w NMI mask register (XT)
00A0 r/w PIC 2  same as 0020 for PIC 1
00A1 r/w PIC 2  same as 0021 for PIC 1 except for OCW1:
   bit 7 = 0  reserved
   bit 6 = 0  enable fixed disk interrupt
   bit 5 = 0  enable coprocessor exception interrupt
   bit 4 = 0  enable mouse interrupt
   bit 3 = 0  reserved
   bit 2 = 0  reserved
   bit 1 = 0  enable redirect cascade
   bit 0 = 0  enable real-time clock interrupt
-------------------------------------------------------------------------------
00B0-00BF ---- PC radio by CoZet Info Systems
  The I/O address range is dipswitch selectable from:
     038-03F and 0B0-0BF
     078-07F and 0F0-0FF
     138-13F and 1B0-1BF
     178-17F and 1F0-1FF
     238-23F and 2B0-2BF
     278-27F and 2F0-2FF
     338-33F and 3B0-3BF
     378-37F and 3F0-3FF
  All of these addresses show a readout of FF in initial state.
  Once started, all of the addresses show  FB, whatever might
  happen.
-------------------------------------------------------------------------------
00C0   ---- TI  SN746496 programmable tone/noise generator PCjr
-------------------------------------------------------------------------------
00C0-00DF ---- DMA 2 (second Direct Memory Access controller 8237)
00C0 r/w DMA channel 4 memory address bytes 1 and 0 (low) (ISA, EISA)
00C2 r/w DMA channel 4 transfer count bytes 1 and 0 (low) (ISA, EISA)
00C4 r/w DMA channel 5 memory address bytes 1 and 0 (low) (ISA, EISA)
00C6 r/w DMA channel 5 transfer count bytes 1 and 0 (low) (ISA, EISA)
00C8 r/w DMA channel 6 memory address bytes 1 and 0 (low) (ISA, EISA)
00CA r/w DMA channel 6 transfer count bytes 1 and 0 (low) (ISA, EISA)
00CC r/w DMA channel 7 memory address byte 0 (low), then 1 (ISA, EISA)
00CE r/w DMA channel 7 transfer count byte 0 (low), then 1 (ISA, EISA)
00D0 r DMA channel 4-7 status register (ISA, EISA)
   bit 7 = 1  channel 7 request
   bit 6 = 1  channel 6 request
   bit 5 = 1  channel 5 request
   bit 4 = 1  channel 4 request
   bit 3 = 1  terminal count on channel 7
   bit 2 = 1  terminal count on channel 6
   bit 1 = 1  terminal count on channel 5
   bit 0 = 1  terminal count on channel 4
00D0 w DMA channel 4-7 command register (ISA, EISA)
   bit 7 = 1  DACK sense active high
         = 0  DACK sense active low
   bit 6 = 1  DREQ sense active high
         = 0  DREQ sense active low
   bit 5 = 1  extended write selection
         = 0  late write selection
   bit 4 = 1  rotating priority
         = 0  fixed priority
   bit 3 = 1  compressed timing
         = 0  normal timing
   bit 2 = 0  enable controller
   bit 1 = 1  enable memory-to-memory transfer
   bit 0     .....
00D2 w DMA channel 4-7 write request register (ISA, EISA)
00D4 w DMA channel 4-7 write single mask register (ISA, EISA)
   bit 7-3      reserved
   bit 2  = 0  clear mask bit
    = 1  set mask bit
   bit 1-0 = 00 channel 4 select
    = 01 channel 5 select
    = 10 channel 6 select
    = 11 channel 7 select
00D6 w DMA channel 4-7 mode register (ISA, EISA)
   bit 7-6 = 00  demand mode
    = 01  single mode
    = 10  block mode
    = 11  cascade mode
   bit 5  = 0   address increment select
    = 1   address decrement select
   bit 4  = 0   autoinitialisation disable
    = 1   autoinitialisation enable
   bit 3-2 = 00  verify operation
    = 01  write to memory
    = 10  read from memory
    = 11  reserved
   bit 1-0 = 00  channel 4 select
    = 01  channel 5 select
    = 10  channel 6 select
    = 11  channel 7 select
00D8 w DMA channel 4-7 clear byte pointer flip-flop (ISA, EISA)
00DA r DMA channel 4-7 read temporary register (ISA, EISA)
00DA w DMA channel 4-7 master clear (ISA, EISA)
00DC w DMA channel 4-7 clear mask register (ISA, EISA)
00DE w DMA channel 4-7 write mask register (ISA, EISA)
-------------------------------------------------------------------------------
00E0-00E7 ---- Microchannel
00E0 r/w split address register, memory encoding registers PS/2m80 only
00E1 r/w memory register
00E3 r/w error trace
00E4 r/w error trace
00E5 r/w error trace
00E7 r/w error trace
-------------------------------------------------------------------------------
00F0-00F5 ---- PCjr Disk Controller
00F0  disk controller
00F2  disk controller control port
00F4  disk controller status register
00F5  disk controller data port
-------------------------------------------------------------------------------
00F0-00FF ---- coprocessor (8087..80387)
00F0 w math coprocessor clear busy latch
00F1 w math coprocessor reset
00F8 r/w opcode transfer
00FA r/w opcode transfer
00FC r/w opcode transfer
-------------------------------------------------------------------------------
00F9-00FF ---- PC radio by CoZet Info Systems
  The I/O address range is dipswitch selectable from:
     038-03F and 0B0-0BF
     078-07F and 0F0-0FF
     138-13F and 1B0-1BF
     178-17F and 1F0-1FF
     238-23F and 2B0-2BF
     278-27F and 2F0-2FF
     338-33F and 3B0-3BF
     378-37F and 3F0-3FF
  All of these addresses show a readout of FF in initial state.
  Once started, all of the addresses show  FB, whatever might
  happen.
-------------------------------------------------------------------------------
0100-010F ---- CompaQ Tape drive adapter. alternate address at 0300
-------------------------------------------------------------------------------
0100-0107 ---- PS/2 POS (Programmable Option Select)
0100 r POS register 0 Low adapter ID byte
0101 r POS register 1 High adapter ID byte
0102 r/w POS register 2 option select data byte 1
   bit 0 is card enable (CDEN)
0103 r/w POS register 3 option select data byte 2
0104 r/w POS register 4 option select data byte 3
0105 r/w POS register 5 option select data byte 4
   bit 7 channel active (-CHCK)
   bit 6 channel status
0106 r/w POS register 6 Low subaddress extension
0107 r/w POS register 7 High subaddress extension
-------------------------------------------------------------------------------
0108-010F ---- 8 digit LED info panel on IBM PS/2
010F w leftmost character on display
010E w second character
.... w
0108 w eighth character
-------------------------------------------------------------------------------
0130-013F ---- CompaQ SCSI adapter. alternate address at 0330
-------------------------------------------------------------------------------
0130-0133 ---- Adaptec 154xB/154xC SCSI adapter.
  alternate address at 0134, 0230, 0234, 0330 and 0334
-------------------------------------------------------------------------------
0134-0137 ---- Adaptec 154xB/154xC SCSI adapter.
  alternate address at 0130, 0230, 0234, 0330 and 0334
-------------------------------------------------------------------------------
0138-013F ---- PC radio by CoZet Info Systems
  The I/O address range is dipswitch selectable from:
     038-03F and 0B0-0BF
     078-07F and 0F0-0FF
     138-13F and 1B0-1BF
     178-17F and 1F0-1FF
     238-23F and 2B0-2BF
     278-27F and 2F0-2FF
     338-33F and 3B0-3BF
     378-37F and 3F0-3FF
  All of these addresses show a readout of FF in initial state.
  Once started, all of the addresses show  FB, whatever might
  happen.

posted on 2017-11-30 19:59  正在加载……  阅读(929)  评论(0编辑  收藏  举报