------------------------------------------------------------------ -- Program to generate DES FSM Proms for Dorado Auxiliary Board -- -- Anthony West -- -- February 18, 1982 5:08 PM -- ------------------------------------------------------------------ DIRECTORY ImageDefs USING [StopMesa]; PromBlowDefs USING [WritePromData, WritePromList]; AuxProm: PROGRAM IMPORTS ImageDefs, PromBlowDefs = { OPEN PromBlowDefs; --------------------------------------------------- -- Prom Definition, 256 x 12 Prom -- -- This design uses 3 Motorola MC149 PROMS (ECL) -- --------------------------------------------------- memSize: CARDINAL = 256; -- number of prom addresses addrWidth: CARDINAL = 8; -- number of prom address bits dataWidth: CARDINAL = 12; -- number of prom output bits State: TYPE = [0..17B]; -- 4-bit state field Bit: TYPE = [0..1]; -- 1-bit field AddressPad: TYPE = [0..377B]; -- 8 bits fill out 8-bit address to 16 bits DataPad: TYPE = [0..17B]; -- 4 bits fill out 12-bit data to 16 bits ----------------------------------- -- Prom Input - Right Justified! -- ----------------------------------- Address: TYPE = MACHINE DEPENDENT RECORD [ pad1: AddressPad, -- pad to 16 bits input1: Bit, -- data input signal currentState: State -- current state inputs ]; ----------------------------------- -- Prom Output - Left Justified! -- ----------------------------------- Data: TYPE = MACHINE DEPENDENT RECORD [ nextState: State, -- next state outputs output1: Bit, -- data output output2: Bit, -- data output pad2: DataPad -- pad to 16 bits ]; ------------------------------------------------------ -- Prom image - covers all three proms on the board -- ------------------------------------------------------ AuxProm: ARRAY [0..memSize] OF Data; -- Image of Prom padded out to 16 bits --------------------------------------------- -- This procedure generates the Prom image -- --------------------------------------------- GenerateProm: PROCEDURE = { i: CARDINAL; FOR i IN [0..memSize) DO ExampleProm[i] _ GenerateData[LOOPHOLE[i]] ENDLOOP; }; --------------------------------------------------------- -- This procedure generates a single Prom output value -- --------------------------------------------------------- GenerateData: PROCEDURE [input: Address] RETURNS [output: Data] = { }; ------------------ -- Main Program -- ------------------ GenerateProm[]; -- Generate Prom Image WritePromData["AuxProm", addrWidth, dataWidth, @AuxProm[0]]; -- Put image in .prom WritePromList["AuxProm", addrWidth, dataWidth, @AuxProm[0]]; -- Put listing in .pls ImageDefs.StopMesa[]; -- Quit }.(635)\f8