-- DoradoInputOutput.mesa -- Last Edited by: Taft, April 16, 1983 12:56 pm DIRECTORY DisplayFace USING [Cursor], Mopcodes USING [zOR, zLINI, zMISC]; DoradoInputOutput: DEFINITIONS = BEGIN IOAddress: TYPE = [0..377B]; -- Read one word from specified slow I/O address Input: PROCEDURE [IOAddress] RETURNS [UNSPECIFIED] = MACHINE CODE BEGIN Mopcodes.zMISC, 5; END; -- Input with parity checking disabled. InputNoPE: PROCEDURE [IOAddress] RETURNS [UNSPECIFIED] = MACHINE CODE BEGIN Mopcodes.zLINI; Mopcodes.zOR; Mopcodes.zMISC, 5; END; -- Write one word to specified slow I/O address Output: PROCEDURE [datum: UNSPECIFIED, register: IOAddress] = MACHINE CODE BEGIN Mopcodes.zMISC, 6; END; -- Read one word from External IO port (event counter A must be disabled) ExternalInput: PROCEDURE RETURNS [UNSPECIFIED] = MACHINE CODE BEGIN Mopcodes.zMISC, 12B; END; -- Write one word to External IO port (event counter B must be disabled) ExternalOutput: PROCEDURE [datum: UNSPECIFIED] = MACHINE CODE BEGIN Mopcodes.zMISC, 13B; END; -- Operate the event counters StartEventCounters: PROCEDURE [EventCounterControl] = MACHINE CODE BEGIN Mopcodes.zMISC, 240B; END; EventCounterControl: TYPE = MACHINE DEPENDENT RECORD [ loadInsSet (0: 0..0): BOOLEAN _ FALSE, unused1 (0: 1..3): [0..7] _ 0, enableA (0: 4..4): BOOLEAN, -- enable event counter A enableB (0: 5..5): BOOLEAN, -- enable event counter A unused2 (0: 6..7): [0..3] _ 0, eventTypeA (0: 8..10): { true(0), hold(1), procRef(2), ifuJump(3), miss(4), backPanelA(5), backPanelC(6), backPanelE(7)} _ true, unused3 (0: 11..11): [0..1] _ 0, eventTypeB (0: 12..14): { true(0), hold(1), ifuRef(2), ifuNotReady(3), miss(4), backPanelB(5), backPanelC(6), backPanelD(7)} _ true, tasks (0: 15..15): {emuAndFaultOnly(0), all(1)}]; ReadEventCounters: PROCEDURE [LONG POINTER TO EventCounterTable] = MACHINE CODE BEGIN Mopcodes.zMISC, 241B; END; EventCounterTable: TYPE = MACHINE DEPENDENT RECORD [ eventALo, eventAMid, eventAHi: CARDINAL, eventBLo, eventBMid, eventBHi: CARDINAL]; StopEventCounters: PROCEDURE = MACHINE CODE BEGIN Mopcodes.zMISC, 242B; END; -- Operate the micro-PC sampling machinery SetPCHistogram: PROCEDURE [LONG POINTER TO PCHistogram --NIL to disable--] = MACHINE CODE BEGIN Mopcodes.zMISC, 243B; END; PCHistogram: TYPE = ARRAY [0..4095] OF LONG CARDINAL; -- Operate the Dorado muffler/manifold system. RWMufMan: PROCEDURE [MufManArg] RETURNS [MufManResult] = MACHINE CODE BEGIN Mopcodes.zMISC, 246B; END; MufManArg: TYPE = MACHINE DEPENDENT RECORD [ useDMD (0: 0..0): BOOLEAN, unused (0: 1..3): [0..7] _ NULL, dMuxAddr (0: 4..15): DMuxAddr]; DMuxAddr: TYPE = [0..7777B]; MufManResult: TYPE = MACHINE DEPENDENT RECORD [ dMuxData (0: 0..0): [0..1], unused (0: 1..15): [0..77777B]]; -- Reset Ethernet hardware and tasks ResetEther: PROCEDURE = MACHINE CODE BEGIN Mopcodes.zMISC, 247B; END; -- Get memory configuration GetMemConfig: PROC RETURNS [realPages, virtualBanks: CARDINAL] = MACHINE CODE BEGIN Mopcodes.zMISC, 251B; END; pagesPerBank: CARDINAL = 256; -- wordsPerBank/wordsPerPage -- Halt the Dorado, leaving a specified value on the BMux for the BaseBoard to read Halt: PROC [data: UNSPECIFIED] = MACHINE CODE { Mopcodes.zMISC, 252B }; -- Change the refresh rate on the display SetDisplayFieldRate: PROCEDURE [sync, topBorder, visible: CARDINAL] = MACHINE CODE BEGIN Mopcodes.zMISC, 253B; END; -- Reset disk hardware and task -- mode=disable causes disk task to go catatonic. ResetDisk: PROCEDURE [mode: MACHINE DEPENDENT {normal(0), disable(1)}] = MACHINE CODE BEGIN Mopcodes.zMISC, 254B; END; -- Set interval timer wakeup time SetIntervalTimer: PROCEDURE [time: CARDINAL] = MACHINE CODE BEGIN Mopcodes.zMISC, 255B; END; -- Exported from ProcessorHeadDorado to UserTerminalHeadDorado for saving cursor -- across world-swaps. savedCursor: DisplayFace.Cursor; END.