DIRECTORY TargetArchitecture, Shepherd, BreakWorldArchitecture, Rope USING [ROPE]; Breakpoint: CEDAR DEFINITIONS ~ { SetBreakpoint: SetBreakProc; SetBreakProc: TYPE ~ PROCEDURE [ address: BreakWorldArchitecture.Address, clientData: ClientData, breakProc: BreakProc, breakData: BreakData, damages: TargetArchitecture.RegisterClass _ TargetArchitecture.RegisterClass.all] RETURNS [Break]; ClientData: TYPE ~ REF ANY; BreakProc: TYPE ~ BreakWorldArchitecture.Address; BreakData: TYPE ~ CARD32; BreakProcedure: TYPE ~ PROCEDURE [breakData: BreakData] RETURNS []; Break: TYPE ~ REF BreakRep _ nullBreak; nullBreak: Break ~ NIL; BreakRep: TYPE; ClearBreakpoint: ClearBreakProc; ClearBreakProc: TYPE ~ PROCEDURE [break: Break] RETURNS []; EnumerateBreakpoints: EnumerateBreakProc; EnumerateBreakProc: TYPE ~ PROCEDURE [breakWorld: BreakWorldArchitecture.BreakWorld, proc: BreakpointProc] RETURNS [quit: BOOLEAN _ FALSE]; BreakpointProc: TYPE ~ PROCEDURE [clientData: ClientData] RETURNS [quit: BOOLEAN]; IsNullBreak: PROCEDURE [break: Break] RETURNS [BOOLEAN]; AddressFromBreak: PROCEDURE [break: Break] RETURNS [BreakWorldArchitecture.Address]; PatchFromBreak: PROCEDURE [break: Break] RETURNS [Shepherd.Patch]; ClientDataFromBreak: PROCEDURE [break: Break] RETURNS [ClientData]; NewBreakAccess: PROCEDURE [] RETURNS [BreakWorldArchitecture.BreakAccess]; BreakAccess: TYPE ~ REF BreakAccessRep _ nullBreakAccess; nullBreakAccess: BreakAccess ~ NIL; BreakAccessRep: TYPE ~ RECORD [ procs: BreakAccessProcs, data: BreakAccessData ]; BreakAccessProcs: TYPE ~ REF BreakAccessProcsRep _ nullBreakAccessProcs; nullBreakAccessProcs: BreakAccessProcs ~ NIL; BreakAccessProcsRep: TYPE ~ RECORD [ set: SetBreakProc, clear: ClearBreakProc, enumerate: EnumerateBreakProc ]; BreakAccessData: TYPE ~ REF BreakAccessDataRep _ nullBreakAccessData; nullBreakAccessData: BreakAccessData ~ NIL; BreakAccessDataRep: TYPE; RememberBreak: PROCEDURE [break: Break]; ForgetBreak: PROCEDURE [break: Break]; NewBreak: PROCEDURE [ address: BreakWorldArchitecture.Address, patch: Shepherd.Patch, clientData: ClientData] RETURNS [Break]; ErrorCode: TYPE ~ ATOM _ nullErrorCode; nullErrorCode: ErrorCode ~ NIL; ErrorMessage: TYPE ~ Rope.ROPE _ nullErrorMessage; nullErrorMessage: ErrorMessage ~ NIL; CantSet: ERROR [code: ErrorCode, message: ErrorMessage]; CantClear: ERROR [code: ErrorCode, message: ErrorMessage]; Cant: ERROR [code: ErrorCode, message: ErrorMessage]; }.  Breakpoint.mesa Copyright Σ 1989, 1990 by Xerox Corporation. All rights reserved. Peter B. Kessler, April 18, 1990 11:41 am PDT The client's interface to the breakpoint mechanisms. Machine-Dependent Procedures (exported by SPARCBreakpointImpl) Machine-Independent Procedures (exported by BreakpointImpl) Procedures you probably need: Accessors for Breaks: Procedures you probably don't need (but I do): Errors Specifically for errors during setting. Specifically for errors during clearing. For general errors. ΚΓ– "cedar" style•NewlineDelimiter ™code™Kšœ Οrœ7™BKšœ-™-—K™K™4™šΟk ˜ Kšœ˜K˜ K˜Kšœžœžœ˜—K˜—unitšΠln œžœž œ˜!head™>šΟn œ˜šœžœ˜šž œ˜ Kšœ)˜)Kšœ˜Kšœ˜Kšœ˜šœ*˜*Kšœ(˜(——Kšžœ ˜K˜Kšœ žœžœžœ˜Kšœ žœ"˜1Kšœ žœžœ˜Kšœžœž œžœ˜Cšœžœžœ˜'Kšœžœ˜Kšœ žœ˜K˜——K˜—š œ˜ šœžœ˜Kšž œžœ˜$—K˜K˜——™;™š œ˜)šœžœ˜Kšž œG˜PKšžœžœžœ˜ šœžœ˜Kšž œžœžœ˜;—K˜———™š  œž œžœžœ˜8K˜—š œž œžœ"˜TK˜—š œž œžœ˜BK˜—š œž œžœ˜CK˜——™.š œž œžœ&˜Jšœ žœžœ"˜9Kšœžœ˜#šœžœžœ˜Kšœ˜Kšœ˜K˜K˜—šœžœžœ,˜HKšœ)žœ˜-šœžœžœ˜$K˜Kšœ˜K˜K˜K˜——šœžœžœ*˜EKšœ'žœ˜+Kšœžœ˜K˜—K˜——š  œž œ˜(K˜—š  œž œ˜&K˜—š œž œ[žœ ˜~K˜———™šœ žœžœ˜'Kšœžœ˜—šœžœžœ˜2Kšœ!žœ˜%K˜—š œžœ*˜8K™'K˜—š  œžœ*˜:K™(K˜—š œžœ*˜5K™K˜——L˜K™——…— ¦s