-- file OpCodeParams.mesa
-- last edited by Sweet on 26-Oct-81 9:51:25
-- last edited by Satterthwaite on December 16, 1982 8:45 am
DIRECTORY
Mopcodes: TYPE,
PrincOps: TYPE USING [globalbase, localbase];
OpCodeParams: DEFINITIONS =
BEGIN OPEN Mopcodes;
BYTE: TYPE = [0..256);
GlobalBase: CARDINAL = PrincOps.globalbase;
GlobalHB: TYPE = [GlobalBase..GlobalBase+16);
GlobalAddressSlots: TYPE = [GlobalBase..GlobalBase];
GlobalLoadSlots: TYPE = [GlobalBase..GlobalBase+2];
GlobalDoubleLoadSlots: TYPE = [GlobalBase..GlobalBase];
LocalBase: CARDINAL = PrincOps.localbase;
LocalHB: TYPE = [LocalBase..LocalBase+16);
LocalAddressSlots: TYPE = [LocalBase..LocalBase+3];
LocalLoadSlots: TYPE = [LocalBase..LocalBase+11];
LocalDoubleLoadSlots: TYPE = [LocalBase..LocalBase+8]; -- also LocalBase+10
LocalStoreSlots: TYPE = [LocalBase..LocalBase+10];
LocalDoubleStoreSlots: TYPE = [LocalBase..LocalBase+6]; -- also LocalBase+8
LocalPutSlots: TYPE = [LocalBase..LocalBase+3];
LocalDoublePutSlots: TYPE = [LocalBase..LocalBase];
HB: TYPE = [0..16);
LoadImmediateSlots: TYPE = [0..10];
LoadImmediateDoubleSlots: TYPE = [0..0];
ReadSlots: TYPE = [0..1];
ReadLongSlots: TYPE = [0..0];
ReadDoubleSlots: TYPE = [0..0];
ReadDoubleLongSlots: TYPE = [0..0];
-- LABSlots = LocalAddressSlots, LocalBase+6, LocalBase+8
-- GABSlots = GlobalAddressSlots
-- WriteSlots: TYPE = [0..0);
PutSwappedDoubleSlots: TYPE = [0..0];
ReadLocalIndirect0Slots: TYPE = [0..3];
ReadDoubleLocalIndirect0Slots: TYPE = [0..0];
DescriptorSlots: TYPE = [0..0];
MaxFBJumps: INTEGER = 121;
MaxBBJumps: INTEGER = 127;
JumpASlots: TYPE = [2..4]; -- also 6, 8
-- JumpESlots: TYPE = [0..0);
-- JumpNESlots: TYPE = [0..0);
JumpZSlots: TYPE = [3..4];
JumpNZSlots: TYPE = [3..4];
ExternalProcBase: CARDINAL = 0;
LocalProcBase: CARDINAL = 1;
ExternalProcSlots: TYPE = [0..12];
LocalProcSlots: TYPE = [1..5];
RW: TYPE = {read, write};
Amount: TYPE = {single, double, field};
SL: TYPE = {short, long};
GL: TYPE = {global, local};
T: PRIVATE BOOL = TRUE; F: PRIVATE BOOL = FALSE;
RiImplemented: ARRAY RW OF ARRAY GL OF ARRAY SL OF ARRAY Amount OF BOOL = [
[global: [short: [T, F, F], long: [T, F, F]], -- [RGI, RGDI, RGIF], [RGIL, RGDIL, RGILF]
local: [short: [T, T, T], long: [T, T, T]]], -- [RLI, RLDI, RLIF], [RLIL, RLDIL, RLILF]
[global: [short: [F, F, F], long: [F, F, F]], -- [WGI, WGDI, WGIF], [WGIL, WGDIL, WGILF]
local: [short: [T, F, F], long: [T, T, F]]]];-- [WLI, WLDI, WLIF], [WLIL, WLDIL, WLILF]
RiOp: ARRAY RW OF ARRAY GL OF ARRAY SL OF ARRAY Amount OF BYTE = [
[global: [short: [zRGIP, zNOOP, zNOOP], long: [zRGILP, zNOOP, zNOOP]],
local: [short: [zRLIP, zRLDIP, zRLIPF], long: [zRLILP, zRLDILP, zRLILPF]]],
[global: [short: [zNOOP, zNOOP, zNOOP], long: [zNOOP, zNOOP, zNOOP]],
local: [short: [zWLIP, zNOOP, zNOOP], long: [zWLILP, zWLDILP, zNOOP]]]];
zEFCn: BYTE = zEFC0;
zLFCn: BYTE = zLFC1;
zLIn: BYTE = zLI0;
zLIDn: BYTE = zLID0;
zLAn: BYTE = zLA0;
zLLn: BYTE = zLL0;
zLLDn: BYTE = zLLD0;
zSLn: BYTE = zSL0;
zSLDn: BYTE = zSLD0;
zPLn: BYTE = zPL0;
zPLDn: BYTE = zPLD0;
zGAn: BYTE = zGA0;
zLGn: BYTE = zLG0;
zLGDn: BYTE = zLGD0;
-- zSGn: BYTE = zSG0;
zRn: BYTE = zR0;
zRLn: BYTE = zRL0;
zRDn: BYTE = zRD0;
zRDLn: BYTE = zRDL0;
zWnF: BYTE = zW0F;
zWLnF: BYTE = zWL0F;
zWSnF: BYTE = zWS0F;
zPSDn: BYTE = zPSD0;
zPSnF: BYTE = zPS0F;
zRLI0n: BYTE = zRLI00;
zRLDI0n: BYTE = zRLDI00;
zJn: BYTE = zJ2;
zJZn: BYTE = zJZ3;
zJNZn: BYTE = zJNZ3;
END.