# 16V8 for Rack8 Real Memory Device 16V8 input A11:11, #Address bits from 8008 A12:9, A13:8, Lowram:1, # True if we want RAM in the low 2K, False to get EPROM Midram:2, # True if we want RAM for the next 4K and banks, False to get EPROM Lowapl:3, # True to have APL in the first 2K, False to have Loader in # the first 2K. Used only if we want EPROM in the low 2K, # that is, if lowram is False. Pint:6, # True if we are processing an interrupt Mer.L:4, # True if the CPU is doing a memory read Mew.L:5, # True if the CPU is doing a memory write SS_Read.L:7, # True if the SelfScan is doing a memory read AltWs:14, # True if we want to use the alternate workspace output Ea_Low_SS:12, # High if EA_Low is from the SelfScan, Low if from the CPU Ea_High_0:16, # These two select the EA high: 00 bank, 01 Normal, 10 Low, 11 SelfScan Ea_High_1:15, E_read.L:17, # True if we are reading from eprom R_sel.L:19, # True if we are reading or writing ram R_write.L:18, # True if we are writing ram Ea_14Norm:13, # The EA14 line when in normal mode. This is for implementing # the alternate workspace temp low, # True if accessing low 2K 0000-07FF mid, # True if accessing 4K above low 2K 0800-17FF bank, # True if accessing bank area 1800-1FFF workspace, # True if accessing workspace 2000-7FFF ram, # True if accessing RAM eprom, # True if accessing EPROM EA_SS, # True if we are accessing memory for the SelfScan EA_Normal, # True if we are doing a normal access: not bank, not loader, not SelfScan EA_Loader, # True if we are accessing the loader implementation low equ !A13 & !A12 & !A11 mid equ !A13 & ((!A12 & A11) | (A12 & !A11)) bank equ !A13 & A12 & A11 workspace equ A13 EA_SS equ SS_Read EA_Loader equ low & !LowRam & !LowApl EA_Normal equ !Bank & !EA_Loader & !EA_SS #Low EA comes from the CPU unless we are reading for the SS Ea_Low_SS equ EA_SS Ea_High_0 equ EA_Normal | EA_SS Ea_High_1 equ EA_Loader | EA_SS ram equ !pint & ((low & lowram) | ((mid | bank) & Midram) | workspace) eprom equ !pint & ((low & !lowram) | ((mid | bank) & !Midram)) e_read equ mer & eprom r_sel equ (((mer & !pint) | mew) & ram) | (SS_Read & !pint) r_write equ mew & ram #Make Ea_14Norm high if we are accessing RAM and we want the alternate workspace Ea_14Norm equ ram & AltWs