<> <> DIRECTORY BasicTime USING [GMT, nullGMT], ChoiceButtons USING [EnumTypeRef], IO USING [STREAM], LarkPrograms USING [Program], MBQueue USING [Queue], Names USING [GVDetails], PupTypes USING [fillInPupAddress, PupAddress, PupNetID], ReadEvalPrint USING [Handle], Rope USING [ROPE], RPCPkt USING [Machine], TeleLoad USING [Advice, CoreAddress, EventProc, EventRecordObject, Handle, State8086Object, TeleLoadProc], ViewerClasses USING[Viewer]; LarkControl: CEDAR DEFINITIONS = BEGIN cRUNNING: CARDINAL = 0FF00H; cDown: CARDINAL = 0EFFFH; Data: TYPE = REF LarkControlDataObject; LarkControlDataObject: TYPE = RECORD[ mainSwitch: MainSwitchStates _ off, mainSwitchController: ChoiceButtons.EnumTypeRef _ NIL, out: IO.STREAM _ NIL, mbQueue: MBQueue.Queue _ NIL, viewer: ViewerClasses.Viewer _ NIL, -- self larksY: INTEGER _ 0, -- y position and height of the per-lark viewer larksH: INTEGER _ 0, maxW: INTEGER _ 0, buttH: INTEGER _ 0, pleaseStop: BOOL _ FALSE, script: ViewerClasses.Viewer _ NIL, -- typescript eventLark: LarkIndex _ FIRST[LarkIndex], anyEvent: BOOL _ FALSE, net: PupTypes.PupNetID _ [173B], larks: ARRAY LarkIndex OF LarkData _ ALL[NIL] -- per lark data ]; MainSwitchStates: TYPE = {off, manual, auto}; LarkIndex: TYPE = [100B..240B); LarkData: TYPE = REF LarkDataObject; <> LarkDataObject: TYPE = RECORD [ world: Data _ NIL, -- back pointer address: PupTypes.PupAddress _ PupTypes.fillInPupAddress, nameRope: Rope.ROPE _ NIL, -- pup internet name, if any addressRope: Rope.ROPE _ NIL, -- pup internet address, in rope form rName: Rope.ROPE _ NIL, -- typically "173#101#.lark" userRName: Rope.ROPE _ NIL, -- typically "Stewart" program: LarkPrograms.Program _ NIL, -- loaded program slaveProgram: LarkPrograms.Program _ NIL, -- slave memory contents larkMode: CHAR _ 'U, state: TeleLoad.State8086Object, -- really should be [ALL[0]] event: TeleLoad.EventRecordObject, newEvent: BOOL _ FALSE, expectEvent: BOOL _ FALSE, expectedEventType: CARDINAL, h: TeleLoad.Handle _ NIL, eval: ReadEvalPrint.Handle _ NIL, breakList: LIST OF Breakpoint _ NIL, gvDetails: Names.GVDetails _ NIL, lastGV: BasicTime.GMT _ BasicTime.nullGMT, lastBoot: BasicTime.GMT _ BasicTime.nullGMT, lastBootTimeValid: BOOL _ FALSE, <> userRNameViewer: ViewerClasses.Viewer _ NIL, mode: ViewerClasses.Viewer _ NIL, debug: ViewerClasses.Viewer _ NIL, status: ViewerClasses.Viewer _ NIL ]; Breakpoint: TYPE = REF BreakpointObject; BreakpointObject: TYPE = RECORD [ address: TeleLoad.CoreAddress, codeByte: CARDINAL ]; ShortCoreAddress: TYPE = CARDINAL; LoadProgram: PROC [lark: LarkData, go: BOOL, main: BOOL]; <> loadWindowLow: TeleLoad.CoreAddress; loadWindowHigh: TeleLoad.CoreAddress; <<>> <> <<>> <> SetState: PROC [h: TeleLoad.Handle, state: TeleLoad.State8086Object, tp: TeleLoad.TeleLoadProc, print: BOOL _ TRUE] RETURNS [ok: BOOL]; <> FetchState: PROC [h: TeleLoad.Handle, adv: TeleLoad.Advice _ [FALSE, FALSE, 0], print: BOOL _ TRUE] RETURNS [ok: BOOL, state: TeleLoad.State8086Object]; <<>> <> DisplayState: PROC [s: IO.STREAM, state: TeleLoad.State8086Object, indent: NAT _ 0]; <<>> <> SetValue: PROC [lark: LarkData, name: Rope.ROPE, value: CARDINAL, offset: NAT _ 0, print: BOOL _ FALSE] RETURNS [ok: BOOL]; <<>> <> LocalGo: PROC [lark: LarkData]; <<>> <> BootReason: PROC [reason: CARDINAL, BX: CARDINAL _ 0] RETURNS [Rope.ROPE]; <<>> <> DisplayEvent: PROC [lark: LarkData, event: TeleLoad.EventRecordObject, out: IO.STREAM, reasonRope: Rope.ROPE, preRope: Rope.ROPE, short: BOOL _ FALSE]; <<>> <> PollLark: PROC [lark: LarkData, print: BOOL _ FALSE, setPointers: BOOL _ TRUE] RETURNS [reason: Rope.ROPE]; <<>> <> NoteEvents: TeleLoad.EventProc; <<>> <> RepairBreakpoint: PROC [h: TeleLoad.Handle, breakpoint: Breakpoint]; <<>> <> BootLark: PROC [lark: LarkData]; <> LarkGVSet: PROC [lark: LarkControl.LarkData, setMode: BOOL, setProgram: BOOL]; <<>> <> ConsiderActionFurther: PROC [lark: LarkData, event: TeleLoad.EventRecordObject]; <> PaintMode: PROC [lark: LarkData]; <<>> <> StartWatcher: PROC; StopWatcher: PROC; NotifyWatcher: PROC; <> GetInstanceList: PROC RETURNS [LIST OF REF ANY]; <> LogEntry: PROC [lark: LarkData, rope: Rope.ROPE _ NIL, endWithCR: BOOL _ FALSE]; <> GetLogStream: PROC [machine: RPCPkt.Machine] RETURNS [log: IO.STREAM]; <> GetLark: PROC [machine: RPCPkt.Machine] RETURNS [lark: LarkData]; <> VerifyInternal: PROC [lark: LarkControl.LarkData, program: LarkPrograms.Program, startAddress, stopAddress: TeleLoad.CoreAddress]; END. April 25, 1983 12:49 pm, LCS, created June 21, 1983 2:41 pm, LCS, Added GetStream stuff June 21, 1983 2:41 pm, LCS, Changed LarkIndex to 240