-- DiagnosticsOps.mesa - edited by: -- Poskanzer 9-May-83 18:59:28 -- Paul 13-Jul-84 10:09:16 DIRECTORY CommOnlineDiagnostics USING [PatternType, WordsInPacket], GreenFace USING [Command, Status], OnlineDiagnostics USING [ ErrorHandling, GetConfirmationProc, GetFloppyChoiceProc, GetYesOrNoProc, PutMessageProc, SectorLength], RS232C USING [LineSpeed], Window USING [Handle]; DiagnosticsOps: DEFINITIONS = BEGIN cmdMax: CARDINAL = 100; DataHandle: TYPE = LONG POINTER TO Data; Data: TYPE = MACHINE DEPENDENT RECORD [ -- File subwindow stuff fileSW(0): Window.Handle ← NIL, -- Form subwindow stuff -- Note: enumerateds and booleans must be word boundary -- aligned as addresses for them must be generated confirmSW(2): Window.Handle ← NIL, latestConfirm(4): ConfirmIndex ← confirm, formSW(5): Window.Handle ← NIL, test(7): DiagnosticsOps.Tests ← none, floppyTest(8): FloppyTest ← clean, two90test(9): Two90Test ← command, doubleDensity(10): BOOLEAN ← TRUE, doubleSided(11): BOOLEAN ← FALSE, realFeedBack(12): BOOLEAN ← TRUE, waitResponse(13): BOOLEAN ← TRUE, displayServers(14): BOOLEAN ← TRUE, lineType(15): DiagnosticsOps.RS232LineType ← bitSynchronous, sectorsPerTrack(16): CARDINAL [8..26] ← 15, sectorLength(17): OnlineDiagnostics.SectorLength ← five12, errorHandling(18): OnlineDiagnostics.ErrorHandling ← stopOnError, dataPattern(19): CommOnlineDiagnostics.WordsInPacket ← incrWords, pattern(20): CommOnlineDiagnostics.PatternType ← byteIncr, lineSpeed(21): RS232C.LineSpeed ← bps4800, operation(22): Operation ← initialize, constant(23): CARDINAL ← 0, minPacketSize(24): CARDINAL ← 2, maxPacketSize(25): CARDINAL ← 512, delayBetween(26): CARDINAL ← 100, trackNumber(27): CARDINAL ← 1, startingSector(28): CARDINAL ← 1, sectorCount(29): CARDINAL ← 1, increment(30): INTEGER ← 0, dataWord(31): CARDINAL ← 177777B, loopCount(32): CARDINAL ← 65535, dataDisplayed(33): DataDisplayed ← status, confirming(34): BOOLEAN ← FALSE,--mode switch-only one formSW active at a time reDisplay(35): BOOLEAN ← FALSE, -- used by the enumerated notify procs inALoop(36): BOOLEAN ← FALSE, -- for the floppy command file test cmdCount(37): [0..cmdMax] ← 0, two90Command(38): GreenFace.Command ← null, two90Mode(39): Two90Mode ← plot, two90Plotter(40): DiagnosticsOps.PlotterType ← v80, two90Output(41): Two90Pattern ← plot, two90Status(42): GreenFace.Status ← null, cmdIndexes(43): ARRAY [0..cmdMax] OF CARDINAL ← ALL[0],--note unusual indexing strings(144): ARRAY DiagnosticsOps.StringIndex OF LONG STRING ← ALL[NIL]]; ConfirmIndex: TYPE = {confirm, yes, no, continue, loop, display, exit}; FloppyTest: TYPE = {clean, standard, summary, format, exercise, cmdFile}; Operation: TYPE = { initialize, recalibrate, readStatus, readHeader, readSectors, writeSectors, writeDeletedSectors, verify, loop, displayData, clearLog, log}; DataDisplayed: TYPE = {status, header, sector, summary}; Two90Test: TYPE = {command, output}; Two90Mode: TYPE = {plot, print}; Two90Pattern: TYPE = {plot, print, screen}; toolData: PUBLIC DataHandle; -- Tool's data -- The following procedure is the only "public" entry - when you type "T" to Bye it calls this. DiagnosticsActivate: PROCEDURE; -- The rest are private to the various modules of the diagnostics. Tests: TYPE = {ethernet, RS232C, display, keyboard, floppy, two90, none}; StringIndex: TYPE = { currOrganization, currDomain, thisEthernetID, thisProcessorID, listFS, listPS, listMS, testEthernetID, testProcessorID, cmdFile}; -- Exported by DiagnosticsImplA: running: BOOLEAN; calledByBye: BOOLEAN; confirmation: CONDITION; diagnosticwh: Window.Handle; -- Exported by DiagnosticsImplB: KeyboardAndMouseTest: PROCEDURE; LFDisplayTest: PROCEDURE; -- Exported by DiagnosticsImplC: EchoUserTest: PROCEDURE [ currDomain: LONG STRING, currOrganization: LONG STRING, usernet: LONG STRING, user: LONG STRING, targetnet: LONG STRING, target: LONG STRING, realFeedBack, waitResponse: BOOLEAN, dataPattern: CommOnlineDiagnostics.WordsInPacket, minPacketSize, maxPacketSize, delayBetween: CARDINAL]; -- Exported by DiagnosticsImplD: FloppyStandardTest: PROCEDURE; FloppyCleanReadWriteHeads: PROCEDURE; FloppyCommandFileTest: PROCEDURE [ doubleDensity: BOOLEAN, doubleSided: BOOLEAN, sectorsPerTrack: CARDINAL [8..26], sectorLength: OnlineDiagnostics.SectorLength, errorHandling: OnlineDiagnostics.ErrorHandling, cmdFile: LONG STRING]; FloppyDisplayErrorLog: PROCEDURE; FloppyExerciser: PROCEDURE; FloppyFormatDiskette: PROCEDURE; -- Exported by DiagnosticsImplE: Help: PROCEDURE [test: Tests]; More: PROCEDURE RETURNS [okay: BOOLEAN]; -- Exported by DiagnosticsImplF: HelpToo: PROCEDURE; -- Exported by DiagnosticsImplG: PutChar: PROCEDURE [ch: CHARACTER, minWidth: CARDINAL ← 0]; PutCR: PROCEDURE; PutLine: PROCEDURE [text: LONG STRING]; PutText: PROCEDURE [text: LONG STRING, minWidth: CARDINAL ← 0]; PutMessage: OnlineDiagnostics.PutMessageProc; GetConfirmation: OnlineDiagnostics.GetConfirmationProc; GetYesOrNo: OnlineDiagnostics.GetYesOrNoProc; GetFloppyChoice: OnlineDiagnostics.GetFloppyChoiceProc; CheckForAbort: PROCEDURE; PutNumber: PROCEDURE [ number: UNSPECIFIED, radix: CARDINAL, minWidth: CARDINAL ← 0]; PutLongNumber: PROCEDURE [ number: LONG UNSPECIFIED, radix: CARDINAL, minWidth: CARDINAL ← 0]; PutTextCentered: PROCEDURE [text: LONG STRING, width: CARDINAL ← 0]; AppendServers: PROCEDURE[ strings: LONG DESCRIPTOR FOR ARRAY DiagnosticsOps.StringIndex OF LONG STRING, z: UNCOUNTED ZONE]; -- Exported by DiagnosticsImplH: RS232CLoopBackTest: PROCEDURE [ host: LONG STRING, hostNet: LONG STRING, lineType: RS232LineType, lineSpeed: RS232C.LineSpeed, pattern: CommOnlineDiagnostics.PatternType, constant, minPacketSize, maxPacketSize: CARDINAL]; RS232LineType: TYPE = {bitSynchronous, asynchronous}; -- Exported by DiagnosticsImplI: PlotterType: TYPE = {v80, v8222, v8224, v8236, v8242, v8272, pdq}; PlotPattern: PROCEDURE [plotter: PlotterType]; PlotScreen: PROCEDURE [plotter: PlotterType]; PrintPattern: PROCEDURE [plotter: PlotterType]; SendCommand: PROCEDURE [plotter: PlotterType, cmd: GreenFace.Command]; --GetStatus should be local to this interface only!!!! --GetStatus: PROCEDURE [plotter: PlotterType] RETURNS [GreenFace.Status]; END.