-- CGenDebugInterface.mesa Edited by Bruce, October 14, 1980 4:49 PM DIRECTORY CGenDebugCommandDefs USING [ParamIndex, Params], CGenDebugDefs USING [ccInfo, handle, ParamNotify], CodeDefs USING [CCInfoType], FormSW USING [ AllocateItemDescriptor, BooleanItem, ClientItemsProcType, CommandItem, Enumerated, EnumeratedItem, line0, line1, line2, line3, nextPlace, StringItem], ImageDefs USING [BcdTime], RESOut USING [WindowsObject], STDebugDefs USING [depthString, showLinks, STDebugMisc, STDebugSymbols, STDebugTrees], Storage USING [Expand], String USING [AppendString], Time USING [Append, Unpack], Tool USING [Create, MakeFileSW, MakeFormSW, MakeMsgSW, MakeSWsProc], ToolWindow USING [TransitionProcType], Window USING [Place]; CGenDebugInterface: PROGRAM IMPORTS CGenDebugDefs, --CGenDebugVWDefs,-- FormSW, ImageDefs, STDebugDefs, Storage, String, Time, Tool EXPORTS CGenDebugDefs = BEGIN OPEN FormSW, CGenDebugDefs; Init: PRIVATE PROCEDURE = BEGIN title: STRING = "CGen Debug 6.0 of "L; herald: STRING _ [60]; String.AppendString[to: herald, from: title]; Time.Append[herald, Time.Unpack[ImageDefs.BcdTime[]]]; herald.length _ herald.length - 3; windows.main _ Tool.Create[ makeSWsProc: MakeMySWs, clientTransition: StateChanged, name: herald]; CGenDebugDefs.handle _ @windows; END; StateChanged: ToolWindow.TransitionProcType = BEGIN IF new = inactive THEN windows.msgSW _ windows.formSW _ windows.fileSW _ NIL; END; windows: RESOut.WindowsObject _ [NIL, NIL, NIL, NIL]; MakeMySWs: Tool.MakeSWsProc = BEGIN windows.msgSW _ Tool.MakeMsgSW[window: window]; windows.formSW _ Tool.MakeFormSW[window: window, formProc: MakeParameterArray]; windows.fileSW _ Tool.MakeFileSW[window: window, name: "CGenDebug.log"L]; END; TreeCol: CARDINAL = 0*7; FirstCol: CARDINAL = TreeCol + 14*7; TempCol: CARDINAL = FirstCol + 13*7; MTCol: CARDINAL = TempCol + 12*7; FopCol: CARDINAL = MTCol + 9*7; BodyCol: CARDINAL = FopCol + 6*7; SourceCol: CARDINAL = BodyCol + 7*7; treePlace: Window.Place = [x: TreeCol+0*7, y: line0]; asCCPlace: Window.Place = [x: TreeCol+9*7, y: line0]; varPlace: Window.Place = [x: TreeCol+0*7, y: line1]; vcompPlace: Window.Place = [x: TreeCol+6*7, y: line1]; linksPlace: Window.Place = [x: TreeCol+0*7, y: line2]; depthPlace: Window.Place = [x: TreeCol+6*7, y: line2]; mdiPlace: Window.Place = [x: MTCol+0*7, y: line0]; htiPlace: Window.Place = [x: MTCol+4*7, y: line0]; ctiPlace: Window.Place = [x: MTCol+0*7, y: line1]; btiPlace: Window.Place = [x: MTCol+4*7, y: line1]; seiPlace: Window.Place = [x: MTCol+0*7, y: line2]; nextsePlace: Window.Place = [x: MTCol+4*7, y: line2]; firstPlace: Window.Place = [x: FirstCol+0*7, y: line0]; curPlace: Window.Place = [x: FirstCol+7*7, y: line0]; rcntPlace: Window.Place = [x: FirstCol+0*7, y: line1]; fwdPlace: Window.Place = [x: FirstCol+7*7, y: line1]; prevPlace: Window.Place = [x: FirstCol+0*7, y: line2]; nextPlace: Window.Place = [x: FirstCol+6*7, y: line2]; infoPlace: Window.Place = [x: FirstCol+0*7, y: line3]; tempPlace: Window.Place = [x: TempCol+0*7, y: line0]; allStackPlace: Window.Place = [x: TempCol+6*7, y: line0]; stackPlace: Window.Place = [x: TempCol+0*7, y: line1]; tosPlace: Window.Place = [x: TempCol+6*7, y: line1]; downPlace: Window.Place = [x: TempCol+0*7, y: line2]; upPlace: Window.Place = [x: TempCol+7*7, y: line2]; lblPlace: Window.Place = [x: TempCol+0*7, y: line3]; liiPlace: Window.Place = [x: TempCol+6*7, y: line3]; fopPlace: Window.Place = [x: FopCol+0*7, y: line0]; mopPlace: Window.Place = [x: FopCol+0*7, y: line1]; repPlace: Window.Place = [x: FopCol+0*7, y: line2]; bodyPlace: Window.Place = [x: BodyCol+0*7, y: line0]; stmtPlace: Window.Place = [x: BodyCol+0*7, y: line1]; exprPlace: Window.Place = [x: BodyCol+0*7, y: line2]; sourcePlace: Window.Place = [x: SourceCol + 0*7, y: line0]; srcbkPlace: Window.Place = [x: SourceCol + 0*7, y: line1]; srcfwdPlace: Window.Place = [x: SourceCol + 4*7, y: line1]; MakeParameterArray: FormSW.ClientItemsProcType = BEGIN OPEN FormSW; infoEnumRec: ARRAY CodeDefs.CCInfoType OF Enumerated _ [ [string: "gen"L, value: CodeDefs.CCInfoType[generating]], [string: "bind"L, value: CodeDefs.CCInfoType[binding]], [string: "code"L, value: CodeDefs.CCInfoType[coding]]]; nParams: CARDINAL = LOOPHOLE[LAST[CGenDebugCommandDefs.ParamIndex], CARDINAL] + 1; params: CGenDebugCommandDefs.Params _ LOOPHOLE[ AllocateItemDescriptor[nParams]]; params[tree] _ CommandItem[ tag: "Tree"L, place: treePlace, proc: ParamNotify]; params[asCC] _ CommandItem[ tag: "CC"L, place: asCCPlace, proc: ParamNotify]; params[var] _ CommandItem[ tag: "Var"L, place: varPlace, proc: ParamNotify]; params[vcomp] _ CommandItem[ tag: "VComp"L, place: vcompPlace, proc: ParamNotify]; params[links] _ BooleanItem[ tag: "lnks"L, place: linksPlace, switch: @STDebugDefs.showLinks]; params[depth] _ StringItem[ tag: "d"L, place: depthPlace, string: @STDebugDefs.depthString, inHeap: TRUE]; params[first] _ CommandItem[ tag: "first"L, place: firstPlace, proc: ParamNotify]; params[cur] _ CommandItem[ tag: "cur"L, place: curPlace, proc: ParamNotify]; params[rcnt] _ CommandItem[ tag: "rcnt"L, place: rcntPlace, proc: ParamNotify]; params[fwd] _ CommandItem[ tag: "fwd"L, place: fwdPlace, proc: ParamNotify]; params[prev] _ CommandItem[ tag: "prev"L, place: prevPlace, proc: ParamNotify]; params[next] _ CommandItem[ tag: "next"L, place: nextPlace, proc: ParamNotify]; params[info] _ EnumeratedItem[ tag: "info"L, place: infoPlace, feedback: one, choices: LOOPHOLE[DESCRIPTOR[infoEnumRec]], value: @ccInfo]; params[temp] _ CommandItem[ tag: "temp"L, place: tempPlace, proc: ParamNotify]; params[allStack] _ CommandItem[ tag: "Stk"L, place: allStackPlace, proc: ParamNotify]; params[stack] _ CommandItem[ tag: "sti"L, place: stackPlace, proc: ParamNotify]; params[tos] _ CommandItem[ tag: "TOS"L, place: tosPlace, proc: ParamNotify]; params[down] _ CommandItem[ tag: "down"L, place: downPlace, proc: ParamNotify]; params[up] _ CommandItem[ tag: "up"L, place: upPlace, proc: ParamNotify]; params[lbl] _ CommandItem[ tag: "lbl"L, place: lblPlace, proc: ParamNotify]; params[lii] _ CommandItem[ tag: "lii"L, place: liiPlace, proc: ParamNotify]; params[mdi] _ CommandItem[ tag: "mt"L, place: mdiPlace, proc: ParamNotify]; params[hti] _ CommandItem[ tag: "ht"L, place: htiPlace, proc: ParamNotify]; params[cti] _ CommandItem[ tag: "ct"L, place: ctiPlace, proc: ParamNotify]; params[bti] _ CommandItem[ tag: "bt"L, place: btiPlace, proc: ParamNotify]; params[sei] _ CommandItem[ tag: "se"L, place: seiPlace, proc: ParamNotify]; params[nextse] _ CommandItem[ tag: "nx"L, place: nextsePlace, proc: ParamNotify]; params[fop] _ CommandItem[ tag: "fop"L, place: fopPlace, proc: ParamNotify]; params[mop] _ CommandItem[ tag: "mop"L, place: mopPlace, proc: ParamNotify]; params[rep] _ CommandItem[ tag: "rep"L, place: repPlace, proc: ParamNotify]; params[body] _ CommandItem[ tag: "Body"L, place: bodyPlace, proc: ParamNotify]; params[stmt] _ CommandItem[ tag: "Stmt"L, place: stmtPlace, proc: ParamNotify]; params[expr] _ CommandItem[ tag: "Expr"L, place: exprPlace, proc: ParamNotify]; params[source] _ CommandItem[ tag: "Source"L, place: sourcePlace, proc: ParamNotify]; params[srcbk] _ CommandItem[ tag: "<-"L, place: srcbkPlace, proc: ParamNotify]; params[srcfwd] _ CommandItem[ tag: "->"L, place: srcfwdPlace, proc: ParamNotify]; RETURN[items: LOOPHOLE[params], freeDesc: TRUE]; END; -- Mainline code Storage.Expand[8]; -- lots of heap space taken up by FormSW START STDebugDefs.STDebugMisc; START STDebugDefs.STDebugTrees; START STDebugDefs.STDebugSymbols; Init[]; END.