Small PC System Layout author Neil Franklin, last modification 2004.09.28 For 8bit, 8/16bit, 16/8bit and 16bit small PC systems Typical CPUs 8080/8085/Z80, 6800/6809/6502, 8086/8088 For PC with IO cards, no card config, no DIP switches, no driver configs Using geographic addressing, no address conflicts like on todays PCs All cards with own driver ROMs, only calls, so free development of IO devices Basics: - RAM gets 3/4 of space (or possibly 7/8 in small system), more than 5/8 of PC - all IO cards use the same address spaces for mem map IO, normal IO and driver ROM, reducing space reserved for these, more for RAM - drivers can be written with fixed addresses for IO, no determining addresses or config needed - driver code ROM and IO access are all 3 selected by the same IO register in system IO section, 3bit (or 4bit) register for 8 (or 16) cards, no conflict - bus has per slot 3 lines for MemIO, IO and ROM, 1 or 2 74183 per type this reduces circuits on cards for selecting, and no jumpers etc - driver code only sees its own IO devices as others are not addressable when one is running, no config to avoid others, no interference all cards are multi capable, as no conflicts, only driver list needs to know - each slot has one privete interrupt line to systems master PIC chip so no interrupt configuration or conflicts because of this motherboard or CPU card IO appears as on of the 8 cards - multiple interrupt sources on one card can use their own slave PICs or their driver can poll its IO chips, driver knows all devices on its card - interrupts to BIOS ROM, which switches card selector, then to fixed ROM addr - no DMA, always user memory mapped IO RAM on cards and copy loops 64k nonexpanded Memory (8080/8085/Z80 or 6800/6809/6502 box): 0000..BFFF 48k RAM (4..8bank*8*4kbit, 3bank*8*16kbit or 3/4bank*8*64k) C000..CFFF 4k all cards memory mapped IO, such as video RAM D000..DFFF 4k all cards drivers ROM E000..EFFF 4k reserved, Monitor/BASIC/etc, ... IO if 6800/6809/6502 style proc, 2k card IO, 2k system IO F000..FFFF 4k boot/BIOS/OS/CLI/Monitor ROM IO00..IO7F 128b card IO IO80..IOFF 128b system IO, card selection switch, ev timer 1024k expanded Memory (8086/8088 box): 00000..BFFFF 768k RAM (4..8bank*8*64kbit, 3bank*8*256kbit or 3/4bank*8*1024k) C0000..CFFFF 64k all cards memory mapped IO, such as video RAM D0000..DFFFF 64k all cards drivers ROM E0000..EFFFF 64k reserved, Monitor/BASIC/etc, ... F0000..FFFFF 64k boot/BIOS/OS/CLI/Monitor ROM IO0000..IO7FFF 32k card IO IO8000..IOFFFF 32k system IO, card selection switch, ev timer Mechanical form: - PC-like with CPU and bus on motherboard good for slot specific lines but bad for swapping CPU - Backplane with CPU card style, CPU card larger slot for all lines to slots CPU exchangable like IO cards - Backplane with CPU card style, all slots same connector requires slots to have ID pins and address decoder with XORs on cards - Base module with CPU and expansion "slices" stacked on top case originally only CPU, "grows" when slices with card/drives stacked on no slot IDs possible, so select lines wandering left each slice - Base module only CPU, external IO Bus over cable, SCSI-like IDs on devices - Base module only CPU, multiple external IO ports for cables, select before Example Cards (or Devices): Disk controlllers with boot support in driver ROM also have data and power cables to drive(s), power supply only to bus driver ROM implements full hd* block and char drivers RS232 adapter 1 or multiple ports driver ROM implements full ttyS* char driver Video/Console controllers with video output and sound and keyboard in sound out on same connector as video, speaker in monitor with amp and volume driver ROM implements full ANSI terminal, identical looking ttyC* as RS232 if bitmapped video, implement escape sequences in ttyC* for bitmaps any IO on motherboard or CPU card appears also as card 0 or 7, with driver ROMs