DIRECTORY CirioThings, Rope, UXProcs; CirioThingsImpl: CEDAR PROGRAM IMPORTS UXProcs EXPORTS CirioThings ~ { SymEntry: TYPE = REF SymEntryBody; -- copied from CirioNubAccess for temporary fix. SymEntryBody: TYPE = RECORD[ name: Rope.ROPE, type: CARD, value: CARD, size: CARD, fileSeqNum: CARD]; DoIncludes: PROC = TRUSTED MACHINE CODE { "*"; "#include \n"; "#include \n"; "." }; CallDebugger: PUBLIC PROC [key: CARD32] ~ { XRCallDebugger: PROCEDURE [key: CARD32] RETURNS [CirioThings.XRDBReply] ~ TRUSTED MACHINE CODE { "XR_CallDebugger" }; LookupCallDebugger3: PROCEDURE RETURNS [SymEntry] ~ TRUSTED MACHINE CODE { "+static word LookupCallDebugger3 () {\n"; " return XR_ILGetMatchingSymEntryByName(0, \"_XR_CallDebugger3\", 0xffffffff, 4, 1, 0);\n"; " };\n"; ".LookupCallDebugger3"; }; result: CirioThings.XRDBReply; proc: PROC[key: CARD32, msg: CirioThings.XRDBRequest, stopall: CARD32] RETURNS [CirioThings.XRDBReply]; entry: SymEntry ¬ LookupCallDebugger3[]; IF entry # NIL THEN { proc ¬ LOOPHOLE[UXProcs.ToCedarProc[entry.value]]; -- XR¬CallDebugger3 result ¬ proc[key: 0, msg: CirioThings.XRDBRequest.break, stopall: key]; } ELSE result ¬ XRCallDebugger[key: 0]; SELECT result FROM CirioThings.XRDBReply.proceed => { NULL; }; ENDCASE => { ERROR ABORTED; }; RETURN; }; DebugNubStart: PROC = TRUSTED MACHINE CODE {"XR_run_CirioNub"}; CedarCirioNubStart: PROC = TRUSTED MACHINE CODE {"XR_run_CedarCirioNub"}; DebugNubStart[]; CedarCirioNubStart[]; }. Κ CirioThingsImpl.mesa Copyright Σ 1989, 1990, 1991 by Xerox Corporation. All rights reserved. Peter B. Kessler, September 21, 1989 2:51:19 pm PDT Willie-s, April 7, 1992 1:40 pm PDT These are things that Cirio needs in the target world that can be dynamically loaded. That is, they don't have to be in the debug nub, and they don't have well-known addresses. We also use this module, which lives in CedarCore, to start the DebugNub early, so that one can debug the startup of packaged worlds, and get a port number for cirio early. Udagawa, March 19, 1991 11:47 am PST Types Procedures. Calls XR_CallDebugger with key and raises ABORTED if anything other than CirioThings.XRDBReply.proceed is returned. Κ!–(cedarcode) style•NewlineDelimiter ™code™Kšœ Πerœ=™HK™3K™#K™K™UK™ZK™¬K™$K™šΟk ˜ K˜ K˜K˜—K˜—unitšΠlnœžœž˜Kšžœžœ ˜#Kšœ˜—˜™Kšœ žœžœ@˜Tšœžœžœ˜Kšœ žœ˜Kšœžœ˜ Kšœžœ˜ Kšœžœ˜ Kšœ žœ˜——head™ š Οn œžœžœžœžœ˜)Kšœ˜Kšœ˜Kšœ$˜$K˜K˜K˜—š  œžœžœžœ˜+J• CharPropsPostfixXeroxCharCodesjšœ*žœB™sJ™Kš œž œžœžœžœžœžœ˜a–PostfixXeroxCharCodes ˜Kšœ˜K˜—š  œž œžœžœžœžœ˜JK˜+Kšœ[˜[K˜Kšœ˜Kšœ˜K˜—Kšœ˜Kš œžœžœ)žœžœ˜gKšœ(˜(šžœ ž˜K˜Kšœ4Οc˜GKšœH˜HK˜—šž˜Kšœ ˜ —K˜šžœž˜šœ"˜"Kšžœ˜Kšœ˜—šžœ˜ Kšžœžœ˜Kšœ˜——Kšžœ˜Kšœ˜K˜—Kš   œžœžœžœžœ˜?K˜š  œžœžœžœžœ˜IJ˜—Kšœ˜Jšœ˜—L˜——…—β Ν