DIRECTORY PrincOps USING [zMISC]; D0InputOutput: DEFINITIONS = BEGIN 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 colorDisplay: ControllerType = 257B; -- Color display controller null: ControllerType = 377B; -- no controller present GetNextController: PROC [type: ControllerType, prev: ControllerNumber _ nullControllerNumber] RETURNS [next: ControllerNumber]; CSB: TYPE = ARRAY [0..16) OF WORD; 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: PROC [IOAddress] RETURNS [WORD] = MACHINE CODE { PrincOps.zMISC, 5 }; Output: PROC [datum: WORD, register: IOAddress] = MACHINE CODE { PrincOps.zMISC, 6 }; 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 θD0InputOutput.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. McJones on: May 15, 1980 10:54 AM) Birrell, November 2, 1983 4:05 pm Russ Atkinson (RRA) February 19, 1985 2:59:34 pm PST Doug Wyatt, February 22, 1985 4:30:00 pm PST Support for D0 heads (device face implementations) 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). Read one word from specified controller register. Write one word to specified controller register. Exported from ProcessorHeadD0 to UserTerminalHeadD0 to set the process tick rate. Κ•˜codešœ™Kšœ Οmœ1™