-- File: CoreSwapDefs.mesa
-- Last edited by Sandman; June 30, 1980 4:50 PM
-- Copyright Xerox Corporation 1979, 1980
DIRECTORY
AltoFileDefs USING [CFA, CFP],
ControlDefs USING [GlobalFrameHandle, StateVector, SVPointer, WordPC];
CoreSwapDefs: DEFINITIONS =
BEGIN
SVPointer: TYPE = ControlDefs.SVPointer;
ExternalStateVector: TYPE = MACHINE DEPENDENT RECORD [
state: SVPointer,
reason: CoreSwapDefs.SwapReason,
level: [0..3777B],
tables: POINTER,
drumFile: POINTER,
parameter: POINTER TO CoreSwapDefs.DebugParameter,
versionident: CARDINAL,
loadstateCFA: AltoFileDefs.CFA,
lspages: CARDINAL,
mds: CARDINAL,
bitmap: LONG POINTER,
bitmapPages: CARDINAL,
fill: ARRAY [17..19) OF WORD];
VersionID: CARDINAL = 04140;
SwapReason: TYPE = {
-- handled by debugnub
proceed, -- THIS MUST BE FIRST !!
start, call, resume, quit, showscreen, kill, -- handled by external debugger
install, breakpoint, worrybreak, worrycall, uncaughtsignal, explicitcall,
return, punt, interrupt, cleanmaplog};
DebugParameter: TYPE = MACHINE DEPENDENT RECORD [
string: STRING,
body:
SELECT OVERLAID SwapReason FROM
uncaughtsignal => [msg: UNSPECIFIED, signal: UNSPECIFIED],
return => [value: UNSPECIFIED],
start => [frame: ControlDefs.GlobalFrameHandle],
call => [sv: ControlDefs.StateVector],
ENDCASE];
UncaughtSignalDP: TYPE = POINTER TO uncaughtsignal DebugParameter;
ReturnDP: TYPE = POINTER TO return DebugParameter;
StartDP: TYPE = POINTER TO start DebugParameter;
CallDP: TYPE = POINTER TO call DebugParameter;
level: INTEGER;
FreeDebuggerBitmap: PROCEDURE;
CoreSwap: PROCEDURE [why: SwapReason, sp: SVPointer];
CantSwap: SIGNAL;
CAbort: SIGNAL;
-- Conditional Breakpoint Stuff
BBArray: TYPE = RECORD [
length: CARDINAL, blocks: ARRAY [0..0) OF UserBreakBlock];
BBHandle: TYPE = POINTER TO BBArray;
UserBreakBlock: TYPE = RECORD [
frame: ControlDefs.GlobalFrameHandle,
pc: ControlDefs.WordPC,
ptrL: POINTER,
ptrR: POINTER,
posnL: [0..16),
posnR: [0..16),
sizeL: [1..16],
sizeR: [1..16],
inst: [0..377B],
relation: Relations,
immediateR: BOOLEAN,
counterL: BOOLEAN,
localL: BOOLEAN,
localR: BOOLEAN,
stackRelative: BOOLEAN];
UBBPointer: TYPE = POINTER TO UserBreakBlock;
Relations: TYPE = {eq, ne, lt, ge, gt, le};
-- Punt and Swapping Information
CFP: TYPE = AltoFileDefs.CFP;
PuntTable: TYPE = MACHINE DEPENDENT RECORD [
pDebuggerFP: POINTER TO CFP,
pCoreFP: POINTER TO CFP,
puntESV: ExternalStateVector,
debuggerFP: CFP,
coreFP: CFP,
other: UNSPECIFIED];
PuntInfo: POINTER TO POINTER TO PuntTable = LOOPHOLE[456B];
END...