// MemProms.bcpl Last Updated: September 26, 1979
// change change tomemx-16k-j13 from -j14. comment-out the memx-4k option.September 26, 1979 4:21 PM
external MemProms
get "DoradoProms.defs"
let MemProms(mem) be
[
let buff = vec 300
if StEq(mem,"Mem") then mem!0 = DoAll
if StEq(mem,"ST") & ICtype eq MC10139 then // define the write Prom
[
MakeST(buff)
Header("ST",16,buff,32,0)
PromCommand("MemX-h11") //command to blow the left half
PromCommand("MemX-i12","8") //command to blow the right half
]
if StEq(mem,"EC-1") & ICtype eq MC10139 then // define the EC-1 Prom
[
MakeEC1(buff)
Header("EC-1",8,buff,32,8)
PromCommand("MemX-l12")
]
if StEq(mem,"EC-2") & ICtype eq MC10139 then // define the EC-2 Prom
[
MakeEC2(buff)
Header("EC-2",8,buff,32,8)
PromCommand("MemX-l11")
]
if StEq(mem,"Map-Mem") & ICtype eq MC10139 then // define the Map-Mem Prom
[
MakeMapMem(buff)
Header("Map-Mem",8,buff,32,10)
PromCommand("MemX-i14")
]
if StEq(mem,"Map-Map") & ICtype eq MC10139 then // define the Map-Map Prom
[
MakeMapMap(buff)
Header("Map-Map",8,buff,32,8)
PromCommand("MemX-g15")
]
// if StEq(mem,"4k-Mem") & ICtype eq MC10139 then // define the Mem-4k Prom
// [
// MakeMem4(buff)
// Header("4k-Mem",8,buff,32,8)
// PromCommand("MX4k-j14")
// ]
if StEq(mem,"16k-Mem") & ICtype eq MC10139 then // define the Mem-16k Prom
[
MakeMem16(buff)
Header("16k-Mem",8,buff,32,8)
PromCommand("MX16k-j13")
]
]
and MakeST(buff) =valof //first specify the STate memory contents.
[
let TableDef = table
[ //11 cycles IO store
#052600; #012600; #052600; #012600; #056600; #016600; #056200; #136000
#177000; #175000; #063600; #063600; #177000; #177000; #177000; #177000
//12 cycles Victim store
#063406; #052406; #012406; #052406; #012406; #056406; #016406; #056404
#136000; #177000; #175000; #173002; #177000; #177000; #177000; #177000
]
MoveBlock(buff,TableDef,32)
]
and MakeEC1(buff) be //now specify the EC-1 memory contents.
[
let TableDef = table
[
#003; #207; #203; #203; #203; #202; #201; #203 //Write
#003; #207; #313; #313; #313; #312; #201; #203 //Cache Load
#003; #207; #203; #223; #223; #222; #201; #203 //Clean or miss IO fetch
#003; #207; #303; #343; #363; #362; #201; #203 //Dirty hit IO fetch
]
MoveBlock(buff,TableDef,32)
]
and MakeEC2(buff) be //now specify the EC-2 memory contents.
[
let TableDef = table
[
#005; #001; #001; #001; #001; #001; #011; #001 //Write
#226; #222; #222; #002; #000; #000; #011; #222 //Cache Load
#045; #041; #041; #041; #001; #001; #011; #041 //Clean or miss IO fetch
#347; #343; #343; #143; #041; #001; #011; #343 //Dirty hit IO fetch
]
MoveBlock(buff,TableDef,32)
]
and MakeMapMem(buff) be //now specify the Map-Mem memory contents.
[
let TableDef = table
[
#12; #12; #12; #46; #12; #12; #10; #12 // Refresh
#12; #12; #13; #07; #12; #12; #10; #12 // Read
#12; #12; #13; #07; #12; #12; #10; #12 // Write
#12; #12; #13; #13; #12; #12; #10; #12 // Map write
]
MoveBlock(buff,TableDef,32)
]
and MakeMapMap(buff) be //now specify the Map-Map memory contents.
[
let TableDef = table
[
#037; #037; #037; #235; #275; #337; #327; #007 // Refresh
#007; #007; #007; #005; #045; #107; #127; #007 // Read
#007; #007; #007; #004; #044; #107; #127; #007 // Write
#007; #007; #007; #000; #040; #107; #127; #007 // Map write
]
MoveBlock(buff,TableDef,32)
]
and MakeMem4(buff) be //now specify the Mem-4 timing memory contents.
[
let TableDef = table
[
#303; #313; #113; #153; #153; #053; #153; #363 // Read or write
#302; #302; #302; #306; #303; #306; #306; #306
#303; #303; #303; #343; #343; #343; #343; #343 // Refresh
#302; #302; #302; #306; #303; #306; #306; #306
]
MoveBlock(buff,TableDef,32)
]
and MakeMem16(buff) be //now specify the Mem-16 timing memory contents.
[
let TableDef = table
[
#353; #053; #153; #373; #352; #340; #306; #303 // Read or write
#306; #306; #306; #306; #306; #306; #306; #306 // Idle state
#303; #303; #303; #303; #302; #300; #306; #303 // Refresh
#306; #306; #306; #306; #306; #306; #306; #306 // Idle state
]
MoveBlock(buff,TableDef,32)
]