-- DiagnosticsImplE.mesa  -  edited by:
-- Poskanzer	 5-May-83 18:11:25

DIRECTORY
  Cursor USING [Set],
  DiagnosticsOps USING [HelpToo, PutCR, PutLine, Tests],
  UserInput USING [WaitForConfirmation, WaitNoButtons];

DiagnosticsImplE: MONITOR
  IMPORTS Cursor, DiagnosticsOps, UserInput EXPORTS DiagnosticsOps =
  BEGIN

  Help: PUBLIC PROCEDURE [test: DiagnosticsOps.Tests] =
    BEGIN  --Help--
    SELECT test FROM
      display =>
        BEGIN
        DiagnosticsOps.PutCR[];
        DiagnosticsOps.PutLine["Display"L];
        DiagnosticsOps.PutLine[
          "	The display test presents various patterns used to check alignment, focus and intensity on the Large Format Display as follows:"L];
        DiagnosticsOps.PutLine["	1. cross-hairs"L];
        DiagnosticsOps.PutLine["	2. all ""H""'s"L];
        DiagnosticsOps.PutLine["	3. all ""@""'s (bolded)"L];
        DiagnosticsOps.PutLine["	4. all ""@""'s (normal)"L];
        DiagnosticsOps.PutLine["	5. vertical parallel lines"L];
        DiagnosticsOps.PutLine["	6. all white screen"L];
	IF NOT More[] THEN RETURN;
        DiagnosticsOps.PutLine[
          "	To run the test, position the cursor over DISPLAY and press the left mouse button, then position the cursor over START and press the left mouse button.  To advance to the next pattern press Space bar.  To invert video press the ""I"" key.  To exit, test press ""Delete"" key."L];
        END;
      keyboard =>
        BEGIN
        DiagnosticsOps.PutCR[];
        DiagnosticsOps.PutLine["Keyboard"L];
        DiagnosticsOps.PutLine[
          "	This test is used to verify proper operation of the cursor, tone generator, keyboard and mouse buttons.  To run the test position the cursor over KEYBOARD and press the left mouse button, then position the cursor over START and press the left mouse button.  After an initial tone, you can press any button and the corresponding key presented on the display will blacken and then invert as you let up.  A failure is indicated when this action has no affect or when any button remains black.  A failure of mouse electronics can be seen if the mouse icon is continuously black.  To exit the test move the mouse icon into the black box in the upper left hand corner of the screen and press either mouse button."L];
        END;
      ethernet =>
        BEGIN
        DiagnosticsOps.PutCR[];
        DiagnosticsOps.PutLine["Echo Test"L];
        DiagnosticsOps.PutLine[
          "	This test is used to verify proper operation of the Ethernet with any potential test partners by sending/recieving test packet(s) of varying size.  When selected, this test first presents the Processor ID Numbers of all servers with your Network ID Number.  If the Clearinghouse is unavailable or if corresponding electronics are inoperable these ID's will not be shown.  To run the test you must enter a test partner Processor ID Number.  Assuming the Clearinghouse was accessable the default test partner will be one of the servers listed.  If you wish to test with another partner you must edit this ID to the one of your choice."L];
	IF NOT More[] THEN RETURN;
        DiagnosticsOps.PutLine[
          "	Valid ID,s may be entered in decimal (2-852-126-818), octal (25200000142B), hex (AA000062X), or text string corresponding to a valid Clearinghouse name (Tundra).  If you wish to echo with a test partner on another network you must change both the Ethernet ID and Processor ID.  Once these ID's have been properly established you may position the cursor over START and press the left mouse button to begin execution.  To end the test you must press and hold the STOP key."L];
	IF NOT More[] THEN RETURN;
        DiagnosticsOps.PutLine[
          "	Diagnostic feedback is provided to the user on the display by presenting representative symbols of each packet echoed as follows:"L];
        DiagnosticsOps.PutLine[
          "	1. ""!"" represents a successful echo packet"L];
        DiagnosticsOps.PutLine[
          "	2. ""?"" represents an unsuccessful echo packet"L];
        DiagnosticsOps.PutLine["	3. ""#"" represents a late echo packet"L];
        DiagnosticsOps.PutLine[
          "	4. ""-"" represents a CRC error, but good data"L];
        DiagnosticsOps.PutLine[
          "	5. "":"" marks the transmission of the largest packet size"L];
        DiagnosticsOps.PutLine[
          "	After the STOP key has been depressed and held, a percentage of packets echoed successfully will be reported.  Generally, the percentage should be at least 97%."L];
        END;
      floppy =>
        BEGIN
        DiagnosticsOps.PutCR[];
        DiagnosticsOps.PutLine["Floppy Disk Drive"L];
        DiagnosticsOps.PutLine[
          "	To access this menu position the cursor over FLOPPY DISK DRIVE and press the left mouse button.  You can now select any of the utilities shown below by positioning the cursor and pressing the left mouse button."L];
        DiagnosticsOps.PutLine[
          "	Clean Heads-This utility is to be used in conjunction with a floppy drive head cleaning diskette.  The operation is tutorial and can be executed by positioning the cursor over START and pressing the left mouse button."L];
	IF NOT More[] THEN RETURN;
        DiagnosticsOps.PutLine[
          "	Standard- This is a confidence test of the floppy drive subsystem.  Feedback is provided to the user via the Maintenance Panel and the Display.  This facility requires requires use of the Diagnostic Diskette.  The operation is tutorial and can be executed by positioning the cursor over START and pressing the left mouse button."L];
        DiagnosticsOps.PutLine[
          "	Summary-This feature is normally used by service personnel to report detailed status after specific operation.  To display the summary position the cursor over START and press the left mouse button."L];
	IF NOT More[] THEN RETURN;
        DiagnosticsOps.PutLine[
          "	Format-This utility will format a single or double sided diskette for use in this operating environment.  The operation is tutorial and can be executed by positioning the cursor over START and pressing the left mouse button."L];
        DiagnosticsOps.PutLine[
          "	Exerciser-This utility is normally used by service personnel to perform extensive read/write tests on a blank diskette.  Feedback is provided to the user via the Maintenance Panel and the Display.  The operation is tutorial and can be executed by positioning the cursor over START and pressing the left mouse button."L];
 	IF NOT More[] THEN RETURN;
        DiagnosticsOps.PutLine[
          "	Command File-This facility is available for service personnel to create special diagnostic and adjustment routines. This tool is used to build a series of commands which can later be executed as a standalone program.  To build a command file you must utilize the accelerator feature previously described to select command file operations and additionally edit the special fields as reqired.  The steps necessary are as follows;"L];
        DiagnosticsOps.PutLine["	1. select a command file operation"L];
        DiagnosticsOps.PutLine["	2. add command to file"L];
        DiagnosticsOps.PutLine[
          "	3. repeat steps 1 and 2 as required until file is complete"L];
        DiagnosticsOps.PutLine[
          "	4. position cursor over START and click left mouse button."L];
        END;
      none => DiagnosticsOps.HelpToo[];
      ENDCASE;
    END --Help-- ;
  
  More: PUBLIC PROCEDURE RETURNS [okay: BOOLEAN] =
    BEGIN
    DiagnosticsOps.PutLine["---click mouse for more---"L];
    Cursor.Set[mouseRed];
    [, okay] ← UserInput.WaitForConfirmation[];
    Cursor.Set[textPointer];
    UserInput.WaitNoButtons[];
    END;

  END.