-- 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.