-- File: AltoRamDefs.mesa, Last Edit: HGM June 10, 1979 9:01 PM
-- Copyright Xerox Corporation 1979, 1980
DIRECTORY
Mopcodes: FROM "Mopcodes" USING [zLIW, zJRAM];
AltoRamDefs: DEFINITIONS =
BEGIN
LoadRamAndBoot: PROCEDURE [filename: STRING];
-- Interface to Taft’s microcode
-- Beware: these routines assume that the stack does not have anything extra on it when they are called. Also, PupChecksum is interruptable. It assumes that the JRAM is alpha aligned which is forced by the preceeding LIW.
ramOffset: CARDINAL = 1400B;
silentBootAddr: CARDINAL = ramOffset+0; -- RAM entry point for SilentBoot
SilentBoot: PROCEDURE [bootLocusVector: WORD] =
MACHINE CODE BEGIN
Mopcodes.zLIW, silentBootAddr/256, silentBootAddr MOD 256;
Mopcodes.zJRAM;
END;
enableEiaAddr: CARDINAL = ramOffset+1; -- RAM entry point for EnableEia
EnableEia: PROCEDURE [p: POINTER] =
MACHINE CODE BEGIN
Mopcodes.zLIW, enableEiaAddr/256, enableEiaAddr MOD 256;
Mopcodes.zJRAM;
END;
setLineTabAddr: CARDINAL = ramOffset+1; -- RAM entry point for SetLineTab
SetLineTab: PROCEDURE [p: POINTER] =
MACHINE CODE BEGIN
Mopcodes.zLIW, setLineTabAddr/256, setLineTabAddr MOD 256;
Mopcodes.zJRAM;
END;
pupChecksumAddr: CARDINAL = ramOffset+2; -- RAM entry point for PupChecksum
PupChecksum: PROCEDURE [
initial: WORD, where: POINTER, length: CARDINAL]
RETURNS [WORD] =
MACHINE CODE BEGIN
Mopcodes.zLIW, pupChecksumAddr/256, pupChecksumAddr MOD 256;
Mopcodes.zJRAM;
END;
changeControlRegAddr: CARDINAL = ramOffset+3; -- RAM entry point for ChangeControlReg
ChangeControlReg: PROCEDURE [lineTimes4: CARDINAL, changeMask: WORD] =
MACHINE CODE BEGIN
Mopcodes.zLIW, changeControlRegAddr/256, changeControlRegAddr MOD 256;
Mopcodes.zJRAM;
END;
END. -- AltoRamDefs