------------------------------------------------------------------
-- Program to generate DES FSM Proms for Dorado Auxiliary Board --
-- Anthony West --
-- February 18, 1982 5:08 PM --
------------------------------------------------------------------
DIRECTORY
ImageDefsUSING [StopMesa];
PromBlowDefsUSING [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
}.