D0InputOutput.mesa
last edited by: McJones on: May 15, 1980 10:54 AM)
Last Edited by: Birrell, November 2, 1983 4:05 pm
DIRECTORY
PrincOps 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 PrincOps.zMISC, 5; END;
Read one word from specified controller register.
Output: PROCEDURE [datum: UNSPECIFIED, register: IOAddress] = MACHINE CODE BEGIN PrincOps.zMISC, 6; END;
Write one word to specified controller register.
Exported from ProcessorHeadD0 to UserTerminalHeadD0 to set the process tick rate.
millisecondsPerTick: CARDINAL;
END.
LOG
Time: August 7, 1979 12:05 PM By: Redell Action: Create file
Time: February 4, 1980 7:10 PM By: McJones Action: Remove RegisterDevice, DeviceHandle, DeviceNumber; change ControllerNumber from 8 to 4 bits; add nullControllerNumber
Time: May 15, 1980 10:54 AM By: McJones Action: Add Input, Output, IOAddress; rename Ethernet controller types
Time: November 2, 1983 4:05 pm By: Birrell Action: conversion to 5.0