Friday, October 5, 2012

Important System Resources in Vintage Computing

In the beginning, IBM created the PC/XT architecture.  All clone machines tried to adhere to this architecture.  This architecture was based around the Intel 8088 processor, which had an 8-bit data bus and 20-bit data bus.

Then IBM used a 286 in the PC AT and an extension to the architecture, the AT architecture, was born.  This had a 16-bit data bus architecture and a 24-bit address bus.

Around this time, IBM also released the PCjr. and Tandy released the 1000 series, which are very important for vintage PC gaming.  Other important computers include the Amstrad PC-1512 & 1640, the IBM PS/2 Model 25 & 30 (8086 & 80286 Models) and the IBM PS/1 Models 2011, 2121 & 2123.

Since resource conflicts seem inherent to the ISA bus, I do not discuss hardware intended for other bus architectures like EISA, MCA, VLB or PCI.

I.  The XT Architecture

IBM's designated assignments for its common peripherals :

I/O Ports

System Board :

000-01F - Direct Memory Access Controller
020-03F - Interrupt Controller
040-05F - Timer
060-06F - Parallel Peripheral Interface
080-09F - DMA Page Registers
0A0-0AF - Non-maskable Interrupt Mask Register

Expansion Bus :

200-20F - IBM Game Control Adapter

210-217 - IBM Expansion Unit

2B0-2DF - Enhanced Graphics Adapter (EGA Alternate Address)

278-27F - IBM Printer Adapter (Secondary, not officially supported)

2F8-2FF - IBM Asynchronous Communications Adapter (Secondary Serial)

320-32F - IBM Fixed Disk Adapter (Hard Drive, also XT IDE usually 320-323 only)

378-37F - IBM Printer Adapter

3B0-3BF - IBM Monochrome Display and Printer Adapter (MDA, Printer at 3BC-3BF)

3C0-3CF - IBM Enhanced Graphics Adapter (EGA) or IBM PS/2 Display Adapter (VGA)

3D0-3DF - IBM Color/Graphics Display Adapter

3F0-3F7 - IBM 5-1/4" Diskette Drive Adapter (Floppy)

3F8-3FF - IBM Asynchronous Communications Adapter (Primary Serial)

IRQ : 0-7

NMI - Memory Parity, 8087 Coprocessor & I/O Channel Errors

IRQ 0 - System Timer, not available on bus

IRQ1 - Keyboard Controller, not available on bus.

IRQ2 - IBM Enhanced Graphics Adapter (EGA) or IBM PS/2 Display Adapter (VGA)

IRQ3 - IBM Asynchronous Communications Adapter (Secondary Serial)

IRQ4 - IBM Asynchronous Communications Adapter (Primary Serial)

IRQ5 - IBM Fixed Disk Adapter (Hard Drive)

IRQ6 - IBM 5-1/4" Diskette Drive Adapter (Floppy)

IRQ7 - IBM Monochrome Display and Printer Adapter (MDA, Printer only) or IBM Printer Adapter

DMA : 0-3

DMA 0 - (DRAM Refresh) not available on bus.

DMA1 - no particular assignment

DMA2 - IBM 5-1/4" Diskette Drive Adapter (Floppy)

DMA3 - IBM Fixed Disk Adapter (Hard Drive)

Upper Memory :

A0000-AFFFF - IBM Enhanced Graphics Adapter (EGA) or IBM PS/2 Display Adapter (VGA)

B0000-B0FFF - IBM Monochrome Display and Printer Adapter (MDA)

B8000-BBFFF - IBM Color/Graphics Display Adapter (CGA)

C0000-C3FFF - IBM Enhanced Graphics Adapter (EGA)

C0000-C5FFF - IBM PS/2 Display Adapter (VGA) (non-IBM VGA cards typically use C0000-C7FFF)
C6800-C8000 - Ditto
CA000-CA800 - Ditto

C8000-CBFFF - IBM Fixed Disk Adapter (Hard Drive)

F0000-FFFFF - ROM BASIC & BIOS (XT 2nd & 3rd BIOS)

F4000-FFFFF - ROM BASIC & BIOS (PC, Portable, XT 1st BIOS)

II.  The AT Architecture

I/O Ports

Same as XT except :

070-07F - MC146818A Real Time Clock & NMI Mask Register
0A0-0BF - IRQ Controller 2
0C0-0DF - DMA Controller 2
0F0-0FF - 80287 Coprocessor Control

170-177 - IBM Fixed Disk and Diskette Drive Adapter (Hard Drive only, Secondary Controller, unsupported)

1F0-1F8 - IBM Fixed Disk and Diskette Drive Adapter (Hard Drive only, Primary Controller)

278-27F - IBM Serial/Parallel Adapter (Secondary Parallel)

2F8-2FF - IBM Serial/Parallel Adapter (Secondary Serial)

370-377 - IBM Fixed Disk and Diskette Drive Adapter (Floppy & Hard Drive, Secondary Controller, unsupported)

378-37F - IBM Serial/Parallel Adapter (Primary Parallel)

3F0-3F7 - IBM Fixed Disk and Diskette Drive Adapter (Floppy & Hard Drive, Primary Controller, also IDE)

3F8-3FF - IBM Serial/Parallel Adapter (Primary Serial)

IRQ : 0-15

NMI - Memory Parity or I/O Channel Error

IRQ 0 - System Timer, not available on bus

IRQ1 - Keyboard Controller, not available on bus.

IRQ2 - 2nd IRQ Controller Cascade, rerouted to IRQ9.

IRQ3 - IBM Serial/Parallel Adapter (Secondary Serial)

IRQ4 - IBM Serial/Parallel Adapter (Primary Serial)

IRQ5 - IBM Serial/Parallel Adapter (Secondary Parallel only)

IRQ6 -  IBM Fixed Disk & Diskette Drive Adapter (Floppy only)

IRQ7 - IBM Monochrome Display and Printer Adapter (MDA, Printer only) or IBM Serial/Parallel Adapter (Primary Parallel only)

IRQ8 - Real Time Clock, not available on bus.

IRQ9 - IBM Enhanced Graphics Adapter (EGA) or IBM PS/2 Display Adapter (VGA)

IRQ10-12 - no particular assignment

IRQ13 - 80287 Coprocessor

IRQ14 - IBM Fixed Disk & Diskette Drive Adapter (Hard drive only)

IRQ15 - no particular assignment (later secondary Hard Drive controller)

DMA : 0-7

DMA 0 - no particular assignment

DMA1 - no particular assignment

DMA2 - IBM Fixed Disk & Diskette Drive Adapter (Floppy only)

DMA3 - no particular assignment

DMA4 - (2nd DMA Controller Cascade) is not available on bus. 

DMA5-7 - no particular assignment

Upper Memory :

Same as above, except no Fixed Disk at C8000-CBFFF :

E0000-EFFFF : Optional ROM Sockets (AT only)

F0000-FFFFF : BASIC & BIOS ROM

PS/2 Difference :

IRQ12 - PS/2 Mouse

III.  Other System Differences 

PCjr./Tandy 1000 Differences :

I/O Same as XT architecture except :

000-01F - Direct Memory Access Controller (Tandy only, optional on 1000/A/EX/HX)
020-027 - Interrupt Controller
040-047 - Timer
060-067 - Parallel Peripheral Interface
080-083 - DMA Page Registers (Tandy only, optional on 1000/A/HD/EX/HX)
0A0-0A7 - Non-maskable Interrupt Register, Memory Configuration Register (Tandy), Configuration Register (PCjr.)
0C0-0C7 - TI SN76496 Programmable Sound Generator
0C0-0C7 - Tandy PSSJ Sound Chip (except for RSX)
0F0-0F7 - Floppy Interface (PCjr.)
1E0-1E7 - Tandy PSSJ (RSX, also 2500XL, Sensation!)
200-207 - Joystick Interface
2F8-2FF - Serial Interface (PCjr.)
320-323 - XT IDE 8-bit Interface (TL/2, TL/3, RL, RLX)
378-37F - Printer Interface / IBM PCjr. Parallel Printer Attachment
3D0-3DF - Graphics Interface
3F0-3F7 - Floppy Interface (Tandy)
3F8-3FF - IBM PCjr. Internal Modem, Serial Interface (Tandy TX, TL, TL/2, TL/3, RL, RL, RLX, RSX, SL, SL/2)
FFEB-FFEF - Tandy System Programming Options (TL, TL/2, TL/3, RL, RLX, SL, SL/2, RSX)

IRQ Same as XT architecture except :

NMI - Keyboard Controller (PCjr.) or Coprocessor & I/O Channel Error (Note parity memory is not supported on these machines)

IRQ1 - no particular assignment (PCjr.)

IRQ2 - no particular assignment, Alternate Video (Tandy SX, TX, TL, TL/2, TL/3, RL, SL, SL/2)

IRQ3 - Serial (PCjr.), PS/2 Mouse (RL, RLX, TL/3)

IRQ4 - Modem (PCjr.), Serial (Tandy)

IRQ5 - Video (Optional on Tandy SX, TX, TL, TL/2, TL/3, RL, SL, SL/2), otherwise no particular assignment

IRQ6 - Floppy

IRQ7 - Printer

DMA Same as XT architecture except :

DMA1 - Tandy PSSJ Sound Chip

DMA not supported on PCjr.

Upper Memory Same as XT except :

B8000-BBFFF - PCjr. Video Memory Window (CGA compatibility)
B8000-BFFFF - Tandy Video Memory Window
D0000-DFFFF - IBM PCjr. Cartridge
E0000-EFFFF -  IBM PCjr. Cartridge
E0000-EFFFF - DOS-in-ROM Paging (Tandy HX, TL, TL/2, TL/3, SL, SL/2, RL, RLX, RSX)
F0000-FFFFF - BASIC & BIOS (PCjr.) BIOS (Tandy)

Amstrad PC-1512 Differences :

I/O 70-77 - Real Time Clock (functions like AT)
I/O 78-7F - Amstrad Mouse Movement

IRQ2 - Real Time Clock (can be used with EGA)

PS/2 & PS/1 Differences :

I/O 3B0-3DF - IBM Video Graphics Array (Model PS/2 25 & 30 286, PS/1)

I/O 3C0-3DF - IBM Multicolor Graphics Array (MCGA) (Model 25 & 30 8086 only)

IRQ2 - MCGA, VGA

I/O 320-327 XT IDE 8-bit Interface (Model 25 & 30, PS/1 Model 2011)

IV.  ISA Expansion Cards


Hercules Graphics Differences (from MDA) :

Upper Memory - B0000-B7FFF - Half-Graphics Mode
Upper Memory - B0000-BFFFF - Full Graphics Mode (CGA Emulation)

Adlib Music Feature Card :
I/O - 388-389

Game Blaster
I/O - 210-21F, 220-22F, 230-23F, 240-24F, 250-25F, 260-26F

Sound Blaster 1.0-1.5, Mediavision Thunderboard :
I/O - 210-21F, 220-22F, 230-23F, 240-24F, 250-25F, 260-26F; 200-207 (Joystick); 388-389 (Adlib)
IRQ - 2, 3, 5, 7
DMA1

Sound Blaster 2.0 :
Same as Sound Blaster above except :
I/O - 220-23F, 240-24F; 200-207 (Joystick)

Sound Blaster Pro 1.0-2.0
I/O - 220-23F, 240-24F; 200-207 (Joystick)
IRQ - 2, 5, 7, 10
DMA - 0, 1, 3

Sound Blaster 16, AWE32, AWE64
I/O - 220-23F, 240-24F, 260-27F. 280-29F (DSP); 330-331, 300-301 (MIDI); 200-207 (Joystick); 388-38B (Adlib); 620-623 & A20-A23 & E20-E23 (Advanced WavEffects Synthesizer, AWE32, SB32 & AWE64 only); 100 (3D Stereo Enhancement device, AWE64 only)
IRQ - 2, 5, 7, 10
DMA - 0, 1, 3 (Low); 5, 6, 7 (High)
SCSI Port - 140, 340 (certain models only)
IDE Port - 1E8-1EF, 170-177, 168-16F (certain models only)

Roland MPU-401 w/MIF-IPC & MIF-IPC-A:
I/O - 330-337
IRQ2

Roland MPU-IPC & IPC-T
I/O - 330-331 (MPU-IPC), 330-331, 300-301, 320-321 (MPU-IPC-T)
IRQ - 2 (MPU-IPC), 2, 3, 4, 5, 6, 7 (MPU-IPC-T)

Roland LAPC-I, SCC-1, MPU-401AT
I/O - 330-331, 332-333, 334-335, 336-337; 300-301, 320-321 (MPU-401AT only)
IRQ -  2, 3, 4, 5, 6, 7

Innovation SSI-2001
I/O - 280-29F, 2A0-2BF, 2C0-2DF, 2E0-2FF; 200-20F (Joystick)

IBM Music Feature Card
I/O - 2A20-2A2F, 2A30-2A3F (alias of 220-22F, 230-23F)

Gravis Ultrasound
I/O - 210-21F & 310-31F, 220-22F & 320-32F, 230-23F &  & 330-33F, 240-24F & 340-34F, 250-25F &  & 350-35F, 260-26F & 360-36F (Ultrasound); 388-389 (Adlib); 30C. 31C, 32C, 33C, 34C, 35C, 36C (16-bit Base Port Address, CS4231 cards only, GUS MAX, GUS w/daughterboard)
IRQ - 2, 3, 5, 7, 11, 12, 15 (GUS IRQ & MIDI IRQ can use two different IRQs)
DMA - 1, 3, 5, 6, 7 (Playback & Record DMA can use two different DMAs)

Novell NE1000 & NE2000
I/O & ROM : 300-31F & C8000-CBFFF, 320-33F & CC000-CFFFF, 340-35F, D0000-D3FFF, 360-37F & Disabled or D4000-D7FFF.(some cards will go all the way up to the F segment.)
IRQ : 2, 3, 4, 5
DMA (Some Cards Only) : 1, 3 (NE1000), 3, 5, 6, 7 (NE2000)

AST Six Pak Plus Real Time Clock
I/O - 2C0-2DF
IRQ - 2, 4, 5, 7 (optional)

No comments: