DIRECTORY CD, CDVPrivate, CDEvents, CDOps, CDPrivate, CDSequencer, IO, TerminalIO, PrintTV, Process USING [Detach], Rope; CDDebug: CEDAR PROGRAM IMPORTS CDOps, CDPrivate, CDSequencer, IO, TerminalIO, PrintTV, Process, CDEvents, Rope = BEGIN xdesign: CD.Design; -- some design MyGraphicRef: TYPE = CDVPrivate.MyGraphicRef; BreakProc: PROC [comm: CDSequencer.Command] = BEGIN me: MyGraphicRef = NARROW[comm.ref]; design: CD.Design = comm.design; app: CD.ApplicationPtr = CDOps.SelectedApplication[design].first; ob: CD.ObPtr_NIL; type: REF_NIL; spec: REF ANY_NIL; IF app#NIL THEN { ob _ app.ob; IF ob#NIL THEN { type _ ob.p.objectType; spec _ ob.specificRef } }; xdesign _ design; SIGNAL CDPrivate.DebugCall["debug"] END; Debug: PROC [comm: CDSequencer.Command] = BEGIN n: INT_0; n _ TerminalIO.RequestSelection[ label: "Debug options", choice: LIST["detached debug", "monitored debug"]]; SELECT n FROM 1 => TRUSTED {Process.Detach[FORK BreakProc[comm]]}; 2 => BreakProc[comm]; ENDCASE => TerminalIO.WriteRope["skipped\n"]; END; NewDesign: CDEvents.EventProc = BEGIN xdesign _ design END; PrintDesign: PrintTV.RefPrintProc = BEGIN d: REF READONLY CD.DesignRec _ NARROW[ref]; stream.PutF["{Design: %g, technology: %g}", IO.rope[IF Rope.Length[d.name]>0 THEN d.name ELSE "(no name)"], IF d.technology=NIL THEN IO.rope["NIL"] ELSE IF d.technology.name#NIL THEN IO.rope[d.technology.name] ELSE IO.atom[d.technology.key] ]; END; PrintTechnology: PrintTV.RefPrintProc = BEGIN t: REF READONLY CD.TechnologyRec = NARROW[ref]; stream.PutF["{Technology: %g}", IF t=NIL THEN IO.rope["NIL"] ELSE IF t.name#NIL THEN IO.rope[t.name] ELSE IO.atom[t.key] ]; END; Impl: PROC [] = BEGIN CDSequencer.ImplementCommand[$Debug, Debug]; CDEvents.RegisterEventProc[$CreateNewDesign, NewDesign]; PrintTV.RegisterRefPrintProc[referentType: CODE[CD.DesignRec], proc: PrintDesign]; PrintTV.RegisterRefPrintProc[referentType: CODE[CD.TechnologyRec], proc: PrintTechnology]; END; Impl[]; END. ÖCDDebug.mesa (part of ChipNDale) Copyright c 1983, 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, June 29, 1983 4:44 pm last edited Christian Jacobi, April 12, 1985 4:04:34 pm PST Ê‘˜šœ"™"Jšœ Ïmœ7™BJšœ+™+Jšœ;™;J˜—šÏk ˜ Jšžœ˜Jšœ ˜ Jšœ ˜ Jšœ˜Jšœ ˜ J˜ J˜J˜ Jšœ˜Jšœžœ ˜Jšœ˜J˜—šÏnœžœž˜JšžœS˜Z—Jšž˜J˜Jšœ žœ Ïc˜#J˜Jšœžœ˜-J˜šŸ œžœ˜-Jšžœ˜Jšœžœ ˜$Jšœžœ˜ Jšœžœ:˜AJšœžœžœ˜Jšœžœžœ˜Jšœžœžœžœ˜šžœžœžœ˜Jšœ ˜ šžœžœžœ˜Jšœ˜Jšœ˜Jšœ˜—Jšœ˜—Jšœ˜Jšžœ˜#Jšžœ˜J˜—šŸœžœ˜)Jšžœ˜Jšœžœ˜ ˜ J˜Jšœžœ'˜3—šžœž˜ Jšœžœžœ˜4J˜Jšžœ&˜-—Jšžœ˜J˜—šŸ œ˜Jšž˜J˜Jšžœ˜J˜—šÏb œ˜#Jšž˜Jš œžœžœžœ žœ˜+šœ,˜,Jšžœžœžœžœ˜?Jšžœžœžœžœ ˜(Jš žœžœžœžœžœ˜=Jšžœžœ˜Jšœ˜—Jšžœ˜—J™š¡œ˜'Jšž˜Jš œžœžœžœžœ˜/šœ ˜ Jšžœžœžœžœ ˜Jš žœžœžœžœžœ ˜'Jšžœžœ ˜Jšœ˜—Jšžœ˜—J˜šŸœžœ˜Jšž˜J˜,Jšœ8˜8Jšœ+žœžœ ˜RJšœ+žœžœ(˜ZJšžœ˜J˜—J˜Jšžœ˜J˜—…— )