-- D0InputOutput.mesa (last edited by: McJones on: May 15, 1980 10:54 AM)
DIRECTORY
Mopcodes: FROM "Mopcodes" USING [zMISC];
D0InputOutput: DEFINITIONS =
BEGIN
-- Support for D0 heads (device face implementations)
ControllerNumber: TYPE = [0..16); -- controller number = task number = CSB number
nullControllerNumber: ControllerNumber = 0; -- not a valid I/O controller number
ControllerType: TYPE = [0..377B];-- Hardware-defined controller type code
iutfp: ControllerType = 001B;-- Interim User Terminal, Full Page
utvfc: ControllerType = 002B;-- User Terminal Variable Format Controller
rdc: ControllerType = 003B;-- Rigid Disk Controller
irdc: ControllerType = 004B;-- Interim Rigid Disk Controller
rdcWithServiceLate: ControllerType = 005B;-- RDC has status bits in ID register!
ethernet1Out: ControllerType = 006B;-- Ethernet-1 output
ethernet1In: ControllerType = 007B;-- Ethernet-1 input
eim: ControllerType = 010B;-- Electronic Input Module (RIS)
idc: ControllerType = 011B;-- Imaginal Disk Controller (CDC disk)
uibScb: ControllerType = 012B;-- User Interface Board / System Control Board
fdc: ControllerType = 013B;-- Floppy Disk Controller
ethernetOut: ControllerType = 014B;-- Ethernet-2 output
ethernetIn: ControllerType = 015B;-- Ethernet-2 input
eomHigh: ControllerType = 016B;-- Electronic Output Module (ROS) - higher priority section
eomLow: ControllerType = 017B;-- Electronic Output Module (ROS) - lower priority section
mioc: ControllerType = 020B;-- Miscellaneous I/O Controller
cmtc: ControllerType = 021B;-- Computer Magnetic Tape Controller
null: ControllerType = 377B;-- no controller present
-- Compatibility (delete someday):
etherOut: ControllerType = ethernet1Out;
etherIn: ControllerType = ethernet1In;
xWireOut: ControllerType = ethernetOut;
xWireIn: ControllerType = ethernetIn;
GetNextController: PROCEDURE [type: ControllerType, prev: ControllerNumber ← nullControllerNumber]
RETURNS [next: ControllerNumber];
-- Stateless enumeration of controllers of given type; enumeration begins and ends with nullControllerNumber.
-- NOTE: When multiple controllers of a given type are present, they are enumerated in order of DECREASING priority (highest controller number first).
CSB: TYPE = ARRAY [0..16) OF UNSPECIFIED;
CSBArray: TYPE = ARRAY[0..16) OF CSB;
IOPage: READONLY LONG POINTER TO CSBArray;
IOAddress: TYPE = MACHINE DEPENDENT RECORD [
zero: [0..377B] ← 0,
controller: ControllerNumber,
register: [0..17B]];
Input: PROCEDURE [IOAddress] RETURNS [UNSPECIFIED] = MACHINE CODE BEGIN Mopcodes.zMISC, 5; END;
-- Read one word from specified controller register.
Output: PROCEDURE [datum: UNSPECIFIED, register: IOAddress] = MACHINE CODE BEGIN Mopcodes.zMISC, 6; END;
-- Write one word to specified controller register.
END.
LOG
Time: August 7, 1979 12:05 PMBy: RedellAction: Create file
Time: February 4, 1980 7:10 PMBy: McJonesAction: Remove RegisterDevice, DeviceHandle, DeviceNumber; change ControllerNumber from 8 to 4 bits; add nullControllerNumber
Time: May 15, 1980 10:54 AMBy: McJonesAction: Add Input, Output, IOAddress; rename Ethernet controller types