DoradoInputOutput.mesa
Last Edited by: Taft, January 14, 1984 4:39 pm
Last Edited by: Levin, April 7, 1983 6:27 pm
Last Edited by: Birrell, August 18, 1983 1:55 pm
DIRECTORY
DisplayFace USING [Cursor],
PrincOps USING [shortPointerSpan, zOR, zLINI, zMISC];
DoradoInputOutput: DEFINITIONS =
BEGIN
Slow I/O system
IOAddress: TYPE = [0..377B];
Input: PROC [IOAddress] RETURNS [UNSPECIFIED] = MACHINE CODE
Read one word from specified slow I/O address
{PrincOps.zMISC, 5};
InputNoPE: PROC [IOAddress] RETURNS [UNSPECIFIED] = MACHINE CODE
Input with parity checking disabled.
{PrincOps.zLINI; PrincOps.zOR; PrincOps.zMISC, 5};
Output: PROC [datum: UNSPECIFIED, register: IOAddress] = MACHINE CODE
Write one word to specified slow I/O address
{PrincOps.zMISC, 6};
Event counter and external I/O system
StartEventCounters: PROC [EventCounterControl] = MACHINE CODE
{PrincOps.zMISC, 240B};
EventCounterControl: TYPE = MACHINE DEPENDENT RECORD [
loadInsSet (0: 0..0): BOOLFALSE,
unused1 (0: 1..3): [0..7] ← 0,
enableA (0: 4..4): BOOL, -- enable event counter A
enableB (0: 5..5): BOOL, -- enable event counter B
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)} ← emuAndFaultOnly];
ReadEventCounters: PROC [LONG POINTER TO EventCounterTable] = MACHINE CODE
{PrincOps.zMISC, 241B};
EventCounterTable: TYPE = MACHINE DEPENDENT RECORD [
eventALo, eventAMid, eventAHi: CARDINAL,
eventBLo, eventBMid, eventBHi: CARDINAL];
StopEventCounters: PROC = MACHINE CODE
{PrincOps.zMISC, 242B};
ExternalInput: PROC RETURNS [UNSPECIFIED] = MACHINE CODE
Read one word from External I/O port (event counter A must be disabled)
{PrincOps.zMISC, 12B};
ExternalOutput: PROC [datum: UNSPECIFIED] = MACHINE CODE
Write one word to External I/O port (event counter B must be disabled)
{PrincOps.zMISC, 13B};
Micro-PC sampling machinery
SetPCHistogram: PROC [LONG POINTER TO PCHistogram --NIL to disable--] = MACHINE CODE
{PrincOps.zMISC, 243B};
PCHistogram: TYPE = ARRAY [0..4095] OF LONG CARDINAL;
Muffler/Manifold system.
RWMufMan: PROC [MufManArg] RETURNS [MufManResult] = MACHINE CODE
{PrincOps.zMISC, 246B};
MufManArg: TYPE = MACHINE DEPENDENT RECORD [
useDMD (0: 0..0): BOOL,
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]];
Miscellaneous machine-dependent opcodes
ResetEther: PROC = MACHINE CODE
Reset Ethernet hardware and tasks
{PrincOps.zMISC, 247B};
GetMemConfig: PROC RETURNS [realPages, virtualBanks: CARDINAL] = MACHINE CODE
Get memory configuration
{PrincOps.zMISC, 251B};
pagesPerBank: CARDINAL = PrincOps.shortPointerSpan; -- wordsPerBank/wordsPerPage
Halt: PROC [data: UNSPECIFIED] = MACHINE CODE
Halt the Dorado, leaving a specified value on the BMux for the BaseBoard to read
{PrincOps.zMISC, 252B};
SetDisplayFieldRate: PROC [sync, topBorder, visible: CARDINAL] = MACHINE CODE
Change the refresh rate on the display
{PrincOps.zMISC, 253B};
ResetDisk: PROC [mode: MACHINE DEPENDENT {normal(0), disable(1)}] = MACHINE CODE
Reset disk hardware and task. mode=disable causes disk task to go catatonic.
{PrincOps.zMISC, 254B};
SetIntervalTimer: PROC [time: CARDINAL] = MACHINE CODE
Set interval timer wakeup time
{PrincOps.zMISC, 255B};
Interface variables
savedCursor: DisplayFace.Cursor;
Exported from ProcessorHeadDorado to UserTerminalHeadDorado for saving cursor across world-swaps.
millisecondsPerTick: CARDINAL;
Exported from ProcessorHeadDorado to UserTerminalHeadDorado to set the process tick rate.
END.