-- Copyright (C) 1984 by Xerox Corporation. All rights reserved. -- MultibusAddresses.mesa, HGM, 25-Oct-84 2:40:42 DIRECTORY DicentraInputOutput USING [IOAddress]; MultibusAddresses: DEFINITIONS = BEGIN IOAddress: TYPE = DicentraInputOutput.IOAddress; io: IOAddress = NIL; -- Hex Hex -- Byte Word -- 2000 1000 miscBoard: IOAddress = io + 1000H; -- 42000 21000 -- modem0: IOAddress = io + 21000H; -- 82000 41000 -- dialer0: IOAddress = io + 41000H; -- A2000 51000 -- dialer1: IOAddress = io + 51000H; -- C2000 61000 -- dialer2: IOAddress = io + 61000H; -- 12000 9000 -- scc0: IOAddress = io + 09000H; -- 32000 19000 -- scc1: IOAddress = io + 19000H; -- 52000 29000 -- scc2: IOAddress = io + 29000H; -- 72000 39000 -- scc3: IOAddress = io + 39000H; -- 92000 49000 -- timeout: IOAddress = io + 49000H; -- B2000 59000 -- eprom: IOAddress = io + 59000H; -- D2000 69000 -- desByte: IOAddress = io + 69000H; -- F2000 79000 -- desWord: IOAddress = io + 79000H; -- 3E00 1F00 -- controlStore: IOAddress = io + 1F00H; -- 4000 2000 -- firstSunBoard: IOAddress = io + 2000H; -- 4100 2080 secondSunBoard: IOAddress = io + 2080H; -- 4200 2100 thirdSunBoard: IOAddress = io + 2100H; -- 4300 2180 fourthSunBoard: IOAddress = io + 2180H; -- .... -- 5000 2800 -- firstT1Board: IOAddress = io + 2800H; -- 5100 2880 secondT1Board: IOAddress = io + 2880H; -- 5200 2900 thirdT1Board: IOAddress = io + 2900H; -- 5300 2980 fourthT1Board: IOAddress = io + 2980H; -- .... -- 3Com boards use 8K bytes of address space. With 16 bit addressing, you can only get 7 of them on a machine. If the last half of IO addressing is reserved for the future, you can only get 3. 3 seems a bit small, even though 1 machine probably can't keep up with 3 busy nets. Using 20 (or 24) bit addressing looks attractive but that gets complicated because most other boards don't inspect the extra address bits. The trick is to assign the first 3Com board a portion of the normal address range. Additional boards live in hyperspace behind the first one. Thus no other board can have an address where it might get confused if it only responds to 16 bit addresses. -- 6000 3000 -- first3ComBoard: IOAddress = io + 3000H; processorIdLocation: IOAddress = first3ComBoard + 200H; -- 16000 0B000 second3ComBoard: IOAddress = io + 0B000H; -- 26000 13000 third3ComBoard: IOAddress = io + 13000H; -- 08000 4000 Last Half Reserved for non standard additions -- 08000 4000 -- slot: IOAddress = io + 4000H; -- Main memory real address 0 through 1 megaword are reserved for the Emulator. -- That's 2 boards. (There are only 12 bits of page number in the map.) -- The map lives in bank 1. (Only the first 1/4 of it for now.) END..