-- CGenDebugCons.mesa Edited by Sweet, 15-Oct-80 9:41:48 DIRECTORY CGenDebugDefs USING [], CodeDefs USING [ConsDestination], FormSW USING [ AllocateItemDescriptor, BooleanItem, ClientItemsProcType, Display, ItemHandle, line0, line1, line2, NumberItem, StringItem], Symbols USING [ContextLevel, lG, lL, lZ], Tool USING [Create, MakeFormSW, MakeSWsProc], ToolWindow USING [SetTinyName, TransitionProcType], Window USING [Handle, Place]; CGenDebugCons: PROGRAM IMPORTS FormSW, Tool, ToolWindow EXPORTS CGenDebugDefs = BEGIN OPEN FormSW, CGenDebugDefs; window: Window.Handle; h: Window.Handle; windowIsActive: BOOLEAN _ FALSE; MakeMySWs: Tool.MakeSWsProc = BEGIN h _ Tool.MakeFormSW[window: window, formProc: MakeParameterArray]; END; Init: PRIVATE PROCEDURE = BEGIN window _ Tool.Create[ makeSWsProc: MakeMySWs, name: "Constructor Destination"L, clientTransition: Transit]; ToolWindow.SetTinyName[window, "Cons"L, "Dest"L] END; Transit: ToolWindow.TransitionProcType = {windowIsActive _ new = active}; ConsParamIndex: TYPE = {bd, inFrame, pLoaded, pLink, ignSafen, wSize, fOff, pSti, pLvl, pDel, bSize, fLvl, pLen, pOff, rem}; ConsParams: TYPE = DESCRIPTOR FOR ARRAY ConsParamIndex OF FormSW.ItemHandle; Col1: CARDINAL = 0*7; Col2: CARDINAL = Col1 + 12*7; Col3: CARDINAL = Col2 + 13*7; Col4: CARDINAL = Col3 + 13*7; Col5: CARDINAL = Col4 + 13*7; bdPlace: Window.Place = [x: Col1, y: line0]; wSizePlace: Window.Place = [x: Col1, y: line1]; bSizePlace: Window.Place = [x: Col1, y: line2]; inFramePlace: Window.Place = [x: Col2, y: line0]; fOffPlace: Window.Place = [x: Col2, y: line1]; fLvlPlace: Window.Place = [x: Col2, y: line2]; pLoadedPlace: Window.Place = [x: Col3, y: line0]; pStiPlace: Window.Place = [x: Col3, y: line1]; pLenPlace: Window.Place = [x: Col3, y: line2]; pLinkPlace: Window.Place = [x: Col4, y: line0]; pLvlPlace: Window.Place = [x: Col4, y: line1]; pOffPlace: Window.Place = [x: Col4, y: line2]; ignSafenPlace: Window.Place = [x: Col5, y: line0]; pDelPlace: Window.Place = [x: Col5, y: line1]; remPlace: Window.Place = [x: Col5, y: line2]; MakeParameterArray: FormSW.ClientItemsProcType = BEGIN OPEN FormSW; nParams: CARDINAL = LOOPHOLE[LAST[ConsParamIndex], CARDINAL] + 1; params: ConsParams _ LOOPHOLE[ AllocateItemDescriptor[nParams]]; params[bd] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "bd"L, place: bdPlace, value: @bdWord]; params[wSize] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "wSize"L, place: wSizePlace, value: @cd.wSize]; params[bSize] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "bSize"L, place: bSizePlace, value: @bSizeWord]; params[inFrame] _ BooleanItem[ tag: "inFrame"L, place: inFramePlace, switch: @inFrame]; params[fOff] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "fOff"L, place: fOffPlace, value: @cd.fOffset]; params[fLvl] _ StringItem[ tag: "fLvl"L, place: fLvlPlace, readOnly: TRUE, string: @fLvlString]; params[pLoaded] _ BooleanItem[ tag: "pLoaded"L, place: pLoadedPlace, switch: @pLoaded]; params[pSti] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "pSti"L, place: pStiPlace, value: @pStiWord]; params[pLen] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "pLen"L, place: pLenPlace, value: @pLenWord]; params[pLink] _ BooleanItem[ tag: "pLink"L, place: pLinkPlace, switch: @pLink]; params[pLvl] _ StringItem[ tag: "pLvl"L, place: pLvlPlace, readOnly: TRUE, string: @pLvlString]; params[pOff] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "pOff"L, place: pOffPlace, value: @pOffWord]; params[ignSafen] _ BooleanItem[ tag: "ignSafen"L, place: ignSafenPlace, switch: @ignSafen]; params[pDel] _ NumberItem[readOnly: TRUE, tag: "pDel"L, place: pDelPlace, value: @cd.pDelta]; params[rem] _ NumberItem[readOnly: TRUE, signed: FALSE, tag: "rem"L, place: remPlace, value: @cd.remaining]; RETURN[items: LOOPHOLE[params], freeDesc: TRUE]; END; cd: PUBLIC CodeDefs.ConsDestination; UpdateConstDest: PUBLIC PROCEDURE = BEGIN DoLvl: PROC [s: STRING, l: Symbols.ContextLevel] = BEGIN s.length _ 1; s[0] _ SELECT l FROM Symbols.lZ => 'Z, Symbols.lG => 'G, Symbols.lL => 'L, > LAST[Symbols.ContextLevel] => '?, ENDCASE => '0 + l; END; inFrame _ IF cd.inFrame THEN TRUE ELSE FALSE; pLoaded _ IF cd.pLoaded THEN TRUE ELSE FALSE; pLink _ IF cd.pLink THEN TRUE ELSE FALSE; ignSafen _ IF cd.ignoreSafen THEN TRUE ELSE FALSE; bdWord _ cd.bd; DoLvl[pLvlString, cd.pLevel]; bSizeWord _ cd.bSize; DoLvl[fLvlString, cd.fLevel]; pLenWord _ cd.pLength; pOffWord _ cd.pOffset; pStiWord _ LOOPHOLE[cd.pSti]; IF windowIsActive THEN FormSW.Display[h]; END; inFrame, pLoaded, pLink, ignSafen: BOOLEAN; bdWord: CARDINAL; bSizeWord: CARDINAL; pLenWord: CARDINAL; pOffWord: CARDINAL; pStiWord: CARDINAL; pLvlString: STRING _ [1]; fLvlString: STRING _ [1]; Init[]; END.