// ProcProms.bcpl last updated January 17, 1978
external ProcProms
get "DoradoProms.defs"
let ProcProms(mem) be
[ let DoHi, DoLo = 0, 0
let buff = vec 300
if StEq(mem,"LMASK") % StEq(mem,"RMASK") then [ DoHi = true; DoLo = true ]
if StEq(mem,"ProcH") then DoHi = true
if StEq(mem,"ProcL") then DoLo = true
if StEq(mem,"Proc") then mem!0 = DoAll
if StEq(mem,"LMASK") & ICtype eq MC10139 then // define the write Prom
[
MakeLMask(buff)
Header("LMASK",16,buff,32,0) //command to enter the memory
if DoHi then PromCommand("PrH-b08")// blow the high byte
if DoLo then PromCommand("PrL-b08","8")// blow the low byte
]
if StEq(mem,"RMASK") & ICtype eq MC10139 then // define the write Prom
[
MakeRMask(buff)
Header("RMASK",16,buff,32,0) //command to enter the memory
if DoHi then PromCommand("PrH-b07")// blow the high byte
if DoLo then PromCommand("PrL-b07","8")// blow the low byte
]
]
and MakeLMask(buff) be
[
Zero(buff,32); let Lbit = #100000; let Lmask = 0
for address = 1 to 31 do //address 0 should be zero
[
Lmask = Lmask % Lbit; Lbit = Lbit rshift 1; buff!address = Lmask
]
]
and MakeRMask(buff) be
[
Zero(buff,32); let Rbit = 1; let Rmask = 0
for address = 1 to 31 do //address 0 should be zero
[
Rmask = Rmask % Rbit; Rbit = Rbit lshift 1; buff!address = Rmask
]
]