image of READY prompt

Wang2200.org

Listing of file='7BDEFBI' on disk='vmedia/mvp-diag-2.6.2.wvd.zip'

# Sector 4043, program filename = '7BDEFBI'
0010 REM % 2228 D/E/F 7 BOARD BURN-IN MONITOR LAST MODIFIED 07/08/83
0020 DIM A$(1,7)3,A1$(1,7)3,A2$(1,7)1,A3$(1,7)1,B1$2,B2$10,C$1,D1$8,E$(1,7)48,
     H$5,J$5,K$(4)60,R$15,R1$1,T$1,V$1,W$5,Y$5,F$(24)80,F1$(1,7)1,F2$2,F3$2,F4
     $4,F5$4,F6$4,N,M$(24)80,M1$96,S$1,S1$3,S2$1,S3$1
0030 X,S=0
0040 INIT(" ")F$()
   : INIT(FF)R$
   : A$()="01901A01B01C01D01E01F"
   : A1$()="09909A09B09C09D09E09F"
   : A2$()=HEX(00000000000000)
   : F1$()="1234567"
   : INIT(00)E$()
   : A3$()=HEX(00000000000000)
0050 REM % VARIABLES
   : REM R$ = $GIO REGISTER STRING
   : REM A$ = 3 DIGIT DEVICE ADDRESS ARRAY
   : REM B$ = ERROR STRING
   : REM C$ = SINGLE CHAR KEYIN VARIABLE
0060 PRINT HEX(0306);AT(12,10);"CHECKING STATUS AND INITIALIZING CONTROLLER AD
     DRESS "
0070 STR(F$(1),14,49)= HEX(0E)&"2228 D/E/F TC 7 BOARD BURN-IN MONITOR  REV.437
     0"
   : STR(F$(3),,73)=HEX(200E)&"UNIT #    D/A  SIZE   STATUS     TOTAL -> ITERA
     TIONS    &    FAILURES"
0080 S = 1
   : I = 5
0090 SELECT #1 <A$(1,S)>
   : PRINT HEX(06);AT(12,62);A$(1,S);
   : GOTO 110
0100 REM % SET UP $GIO TIMEOUT (MAX VALUE FOR INPUT ON MVP SYSTEM)
0110 STR(R$,3,2)=HEX(000D)
0120 REM % SELECT DEVICE AND TIMEOUT READY
0130 $GIO SELECT #1 (1232 1020,R$)
   : ERROR X = ERR
   : GOTO 190
0140 $GIO RESET #1(4580,R$)
   : FOR I8 = 1 TO 2000
   : NEXT I8
0150 REM %^ PRINT RESULT OF SELECTION ROUTINE
0160 STR(R$,8,1)=AND HEX(10)
   : IF STR(R$,8,1)=HEX(10) THEN 170
   : SELECT #2<A1$(1,S)>
   : GOTO 240
0170 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,21)="BUSY (Unable to test)"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0180 REM % ERROR HANDLING ROUITNE FOR NON CONFIGURED ADDRESS
0190 IF X<>48  THEN 200
   : STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,15)="Undefined in DT"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0200 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,6)="ERROR "
   : STR(F$(I),31,2)=BIN(X,2)
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0210 REM % '40 SUBROUTINE ( SIMPLE DELAY ROUTINE )
0220 DEFFN'40
   : FOR J = 1 TO 5000
   : NEXT J
   : RETURN
0230 REM %^ DMA / PIO TEST
0240 $GIO DUMMY READ #1(1232 8602 1200,R$)
0250 STR(R$,1,2)=HEX(0000)
   : STR(H$,1,5)=HEX(0001000900)
   : STR(R$,3,2)=HEX(0004)
   : $GIO WRITE #1(1232 A000 1200,R$)H$
   : V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 270
0260 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),23,47)="CPU timed out during DMA/PIO Data transfer test"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0270 STR(R$,1,1)=HEX(00)
   : GOTO 290
0280 $GIO #1(1910,R$)
0290 $GIO SEND DATA #1(1232 4210 1200,R$)
   : IF STR(R$,8,1)<> HEX(00) THEN 260
0300 IF STR(R$,1,1) <> HEX(FF) THEN 280
   : STR(H$,1,5)=HEX(0101000900)
   : STR(R$,3,2)= HEX(0004)
   : $GIO READ #1(1232 A000 1200,R$)H$
   : V$=STR(R$,8,1) AND HEX(10)
   : IF V$ = HEX(10) THEN 260
0310 STR(R$,1,1)=HEX(00)
   : GOTO 330
0320 $GIO #1(1910,R$)
0330 STR(R$,3,2)=HEX(0004)
   : $GIO READ DATA #1(1232 8312 1200,R$)
   : STR(R$,8,1)=STR(R$,8,1) AND HEX(14)
0340 T$=STR(R$,8,1) AND HEX(10)
   : IF T$=HEX(10) THEN 360
   : V$=STR(R$,8,1) AND HEX(04)
   : IF V$=HEX(04) THEN 370
0350 IF STR(R$,1,1) <> HEX(FF) THEN 320
   : GOTO 400
0360 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),22,53)="CPU timed out before getting a IBS during Data test"
   : V$=STR(R$,8,1) AND HEX(04)
   : IF V$=HEX(04) THEN 370
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0370 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),22,33)="Data error during DMA/PIO test.."
0380 HEXUNPACK STR(R$,1,1)TO F2$
   : HEXUNPACK STR(R$,2,1)TO F3$
   : STR(F$(I),54,5)="Sent "
   : STR(F$(I),60,2)=F2$
   : STR(F$(I),62,10)=" Received "
   : STR(F$(I),73,2)=F3$
   : A2$(1,S)= HEX(FF)
   : GOTO 910
0390 REM % GET MEMORY SIZE BYTE FROM CONTROLLER
0400 STR(W$,1,5) = HEX(01000107FE)
   : STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)W$
0410 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 430
0420 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during SIZE request"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0430 $GIO #1(7510 8702 ,R$)
   : T = 1
0440 S1$="64k"
   : S2$=HEX(80)
   : S3$=HEX(40)
   : IF STR(R$,2,1)= HEX(7F) THEN S1$ ="32k"
   : IF STR(R$,2,1)= HEX(BF) THEN S1$ = "48k"
   : IF STR(R$,2,1)= HEX(28) THEN S1$="128k"
0450 IF STR(R$,2,1)= HEX(28) THEN T = 1
   : IF STR(R$,2,1)= HEX(BF) THEN S3$ = HEX(20)
   : IF STR(R$,2,1)= HEX(7F) THEN S3$=HEX(20)
   : IF STR(R$,2,1)= HEX(7F) THEN S2$=HEX(40)
   : STR(F$(I),18,3)=S1$
0460 REM %  DMA ADDRESS MULTIPLEXER CHECK
0470 STR(H$,1,5)=HEX(0000018000)
   : STR(J$,1,5)=HEX(0000018001)
   : STR(W$,1,5)=HEX(0100018000)
   : STR(Y$,1,5)=HEX(0100018001)
   : STR(H$,4,1)=S2$
   : STR(J$,4,1)=S2$
   : STR(W$,4,1)=S2$
   : STR(Y$,4,1)=S2$
0480 GOSUB 580
   : $GIO WRITE FF IN FIRST LOCATION #1(40FF,R$)
   : GOSUB 610
   : STR(R$,1,2)=HEX(0000)
0490 GOSUB 710
   : $GIO WRITE 00 TO MEMORY #1(4000,R$)
   : GOSUB 660
   : GOSUB 740
0500 IF STR(J$,5,1)=HEX(80) THEN 510
   : R1$=STR(J$,5,1)
   : ROTATE(R1$,1)
   : STR(J$,5,1)=R1$
   : STR(Y$,5,1)=R1$
   : GOTO 490
0510 STR(J$,5,1)=HEX(00)
   : STR(Y$,5,1)=HEX(00)
   : R1$=HEX(01)
0520 STR(J$,4,1)=OR R1$
   : STR(Y$,4,1)=OR R1$
0530 GOSUB 710
   : $GIO WRITE 00 TO MEMORY #1(4000,R$)
   : GOSUB 660
   : GOSUB 740
0540 IF R1$=S3$ THEN 800
   : STR(J$,4,1)=S2$
   : STR(Y$,4,1)=S2$
   : ROTATE(R1$,1)
   : GOTO 520
0550 HEXUNPACK STR(H$,4,2)TO F4$
   : HEXUNPACK STR(R$,1,1) TO F2$
   : HEXUNPACK STR(R$,2,1)TO F3$
0560 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),17,22)="DMA address error..."
   : STR(F$(I),38,10)="Address = "
   : STR(F$(I),48,4)=F4$
   : STR(F$(I),53,12)="Expected = "
   : STR(F$(I),64,2)=F2$
   : STR(F$(I),68,9)="Actual = "
   : STR(F$(I),77,2)=F3$
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0570 HEXUNPACK STR(J$,4,2)TO F4$
   : HEXUNPACK STR(R$,1,1) TO F2$
   : HEXUNPACK STR(R$,2,1)TO F3$
   : GOTO 560
0580 STR(R$,3,2)=HEX(0004)
   : $GIO SEND WRITE COMMAND STRING #1(1232 A000 1200,R$)H$
0590 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN RETURN
0600 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0610 STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)W$
0620 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 640
0630 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0640 $GIO #1(7510 8702 ,R$)
   : IF STR(R$,2,1)= HEX(FF) THEN RETURN
0650 STR(R$,1,1)=HEX(FF)
   : GOTO 550
0660 STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)W$
0670 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 690
0680 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0690 $GIO #1(7510 8702 ,R$)
   : IF STR(R$,2,1)= HEX(FF) THEN RETURN
0700 STR(R$,1,1)=HEX(FF)
   : GOTO 570
0710 STR(R$,3,2)=HEX(0004)
   : $GIO SEND WRITE COMMAND STRING #1(1232 A000 1200,R$)J$
0720 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN RETURN
0730 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0740 STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)Y$
0750 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 770
0760 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
0770 $GIO #1(7510 8702 ,R$)
   : IF STR(R$,2,1) = HEX(00) THEN RETURN
0780 STR(R$,1,1)=HEX(00)
   : GOTO 570
0790 REM % DOWNLINE LOAD THE MICROCODE BEFORE GOING TO MENU
0800 STR(H$,1,5)= HEX(01000107FD)
   : STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)H$
   : $GIO READ #1(7510 8702,R$)
   : D1$="FBI"
   : IF STR(R$,2,1)<>HEX(8E)THEN D1$="28DBURN"
0810 STR(H$,1,5)= HEX(0000F00900)
   : STR(W$,1,5)=HEX(0200000910)
0820 GOSUB '21
   : GOSUB '25
   : GOSUB '150
   : GOSUB '26
   : STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,7)="Running"
   : STR(F$(I),47,4)="0000"
   : STR(F$(I),66,4)="0000"
   : GOTO 910
0830 REM % LOAD MICROCODE FROM DISK AND SEND TO CONTROLLER MEMORY
0840 DEFFN '150
0850 F=0
   : DATA LOAD DC OPEN T#0,D1$
   : ERRORIF ERR = 82 THEN 890
0860 DATA LOAD DC #0,B1$,B2$,K$()
   : IF END  THEN F=1
   : IF STR(B1$,1,1)<>HEX(01)THEN 860
   : $GIO #1(A200)K$()
   : IF F=1 THEN 880
0870 STR(H$,4,2)=ADDC HEX(00F0)
   : GOSUB '21
   : GOSUB '25
   : INIT(00)K$
   : GOTO 860
0880 DATA SAVE DC CLOSE
   : RETURN
0890 PRINT AT(5,0);"FILE NOT IN CATALOG. NON RECOVERALBLE ERROR"
   : STOP
0900 REM %^ MAIN BODY OF DIAGNOSTIC MONITOR AFTER INITIAL CONTROLLER CHECK
0910 I=I+2
   : S=S+1
   : IF S <> 8 THEN 90
   : S=1
   : I=5
0920 IF A2$(1,S)=HEX(00) THEN 930
   : S = S+1
   : IF S <> 8 THEN 920
   : STR(F$(20),3,43)="No testable controllers have been detected."
   : PRINT HEX(0306);AT(0,0);F$()
   : STOP
0930 STR(F$(22),3,76)=HEX(0E)&"PRESS S.F. KEY CORRESPONDING TO THE UNIT # FOR
     UNIT TEST FAILURE DISPLAY"
   : PRINT HEX(0306); AT(0,0);F$()
0940 S=1
   : I=5
0950 IF A2$(1,S)=HEX(00) THEN 960
   : S=S+1
   : I=I+2
   : IF S=8 THEN 940
   : GOTO 950
0960 SELECT #1<A$(1,S)>
   : SELECT #2<A1$(1,S)>
   : $IF ON #2,990
0970 KEYIN C$,980,1020
0980 GOSUB '100
   : S = S+1
   : I=I+2
   : IF S = 8 THEN 940
   : GOTO 950
0990 A3$(1,S)=HEX(00)
   : $GIO #1 (8602 1232 C640 1200,R$)E$(1,S)
   : PRINT HEX(06);AT(I,44);HEXOF(STR(E$(1,S),1,2));AT(I,63);HEXOF(STR(E$(1,S)
     ,3,2));
   : HEXUNPACK STR(E$(1,S),1,2)TO F5$
   : HEXUNPACK STR(E$(1,S),3,2)TO F6$
   : STR(F$(I),47,4)=F5$
   : STR(F$(I),66,4)=F6$
1000 KEYIN C$,980,1020
1010 GOTO 980
1020 N =0
   : IF C$ = HEX(01) THEN N = 1
   : IF C$ = HEX(02) THEN N = 2
   : IF C$ = HEX(03) THEN N = 3
   : IF C$ = HEX(04) THEN N = 4
   : IF C$ = HEX(05) THEN N = 5
   : IF C$ = HEX(06) THEN N = 6
   : IF C$ = HEX(07) THEN N = 7
   : IF C$ = HEX(08) THEN GOTO 1610
   : IF N = 0 THEN 980
   : GOTO 1040
1030 REM %^ ASSEMBLE AND DISPLAY ERROR SCREEN INFORMATION FOR UNIT REQUESTED
1040 IF A2$(1,N)=HEX(00) THEN 1050
   : PRINT HEX(03060E);AT(12,9);"THE CONTROLLER YOU HAVE SELECTED IS NOT RUNNI
     NG ANY BURN-IN.";HEX(0F);
   : GOSUB '40
   : PRINT HEX(0306);AT(0,0);F$()
   : GOTO 980
1050 IF STR(E$(1,N),3,2)<> HEX(0000) THEN 1060
   : PRINT HEX(03060E);AT(12,9);"NO FAILURES HAVE BEEN RECORDED FOR CONTROLLER
      ADDRESS ";A$(1,N);HEX(0F);
   : GOSUB '40
   : PRINT HEX(0306);AT(0,0);F$()
   : GOTO 980
1060 INIT(" ")M$()
   : STR(M$(1),8,69) =HEX(0E)&"CURRENT AVAILABLE TEST INFORMATION FOR CONTROLL
     ER ADDRESS "&A$(1,N)
   : STR(M$(3),2,70) = "TEST #     STATUS     ITERATION             FAILING TE
     ST INFORMATION"
1070 HEXUNPACK STR(E$(1,N),1,48)TO M1$
   : STR(M$(5),4,1)=STR(M1$,10,1)
   : IF STR(E$(1,N),6,2)<> HEX(0000) THEN 1080
   : STR(M$(5),13,6)="PASSED"
   : GOTO 1120
1080 STR(M$(5),13,6)="FAILED"
   : STR(M$(5),27,4)=STR(M1$,11,4)
   : STR(M$(5),37,10)="ADDRESS = "
   : STR(M$(5),47,4)=STR(M1$,15,4)
   : STR(M$(5),53,11)="EXPECTED = "
   : STR(M$(5),64,2)=STR(M1$,19,2)
   : STR(M$(5),68,8)="ACTUAL = "
   : STR(M$(5),77,2)=STR(M1$,21,2)
1090 IF STR(E$(1,N),12,2)=HEX(0000) THEN 1120
   : STR(M$(7),37,10)="ADDRESS = "
   : STR(M$(7),47,4)=STR(M1$,23,4)
   : STR(M$(7),53,11)="EXPECTED = "
   : STR(M$(7),64,2)=STR(M1$,27,2)
   : STR(M$(7),68,8)="ACTUAL = "
   : STR(M$(7),77,2)=STR(M1$,29,2)
1100 IF STR(E$(1,N),16,2)=HEX(0000) THEN 1120
   : STR(M$(9),37,10)="ADDRESS = "
   : STR(M$(9),47,4)=STR(M1$,31,4)
   : STR(M$(9),53,11)="EXPECTED = "
   : STR(M$(9),64,2)=STR(M1$,35,2)
   : STR(M$(9),68,8)="ACTUAL = "
   : STR(M$(9),77,2)=STR(M1$,37,2)
1110 IF STR(E$(1,N),20,2)=HEX(0000) THEN 1120
   : STR(M$(11),37,10)="ADDRESS = "
   : STR(M$(11),47,4)=STR(M1$,39,4)
   : STR(M$(11),53,11)="EXPECTED = "
   : STR(M$(11),64,2)=STR(M1$,43,2)
   : STR(M$(11),68,8)="ACTUAL = "
   : STR(M$(11),77,2)=STR(M1$,45,2)
1120 STR(M$(13),4,1)=STR(M1$,48,1)
   : IF STR(E$(1,N),25,2)<> HEX(0000) THEN 1130
   : STR(M$(13),13,6)="PASSED"
   : GOTO 1150
1130 STR(M$(13),13,6)="FAILED"
   : STR(M$(13),27,4)=STR(M1$,49,4)
   : STR(M$(13),37,6)="ERR = "
   : STR(M$(13),43,2)=STR(M1$,53,2)
   : STR(M$(13),46,7)="MODE = "
   : STR(M$(13),53,2)=STR(M1$,55,2)
1140 IF STR(E$(1,N),27,1)<>HEX(F5) THEN 1150
   : STR(M$(13),56,11)="EXPECTED = "
   : STR(M$(13),67,2)=STR(M1$,57,2)
   : STR(M$(13),70,9)="ACTUAL = "
   : STR(M$(13),79,2)=STR(M1$,59,2)
1150 STR(M$(15),4,1)=STR(M1$,62,1)
   : IF STR(E$(1,N),32,2)<> HEX(0000) THEN 1160
   : STR(M$(15),13,6)="PASSED"
   : GOTO 1190
1160 STR(M$(15),13,6)="FAILED"
   : STR(M$(15),27,4)=STR(M1$,63,4)
   : STR(M$(15),37,6)="ERR = "
   : STR(M$(15),43,2)=STR(M1$,67,2)
   : IF STR(E$(1,N),34,1)< HEX(F3) THEN 1190
   : STR(M$(15),46,7)="SIZE = "
1170 IF STR(E$(1,N),35,1)=HEX(00) THEN STR(M$(15),53,1)="1"
   : IF STR(E$(1,N),35,1)=HEX(01) THEN STR(M$(15),53,1)="2"
   : IF STR(E$(1,N),35,1)=HEX(03) THEN STR(M$(15),53,1)="3"
   : IF STR(E$(1,N),35,1)=HEX(07) THEN STR(M$(15),53,1)="4"
   : IF STR(E$(1,N),35,1)=HEX(0F) THEN STR(M$(15),53,1)="5"
   : IF STR(E$(1,N),35,1)=HEX(1F) THEN STR(M$(15),53,1)="6"
1180 IF STR(E$(1,N),35,1)=HEX(3F) THEN STR(M$(15),53,1)="7"
   : IF STR(E$(1,N),34,1)<>HEX(F5) THEN 1190
   : STR(M$(15),56,11)="EXPECTED = "
   : STR(M$(15),67,2)=STR(M1$,71,2)
   : STR(M$(15),70,9)="ACTUAL = "
   : STR(M$(15),79,2)=STR(M1$,73,2)
1190 STR(M$(17),4,1)=STR(M1$,76,1)
   : IF STR(E$(1,N),39,2)<> HEX(0000) THEN 1200
   : STR(M$(17),13,6)="PASSED"
   : GOTO 1210
1200 STR(M$(17),13,6)="FAILED"
   : STR(M$(17),27,4)=STR(M1$,77,4)
   : STR(M$(17),37,8)="ERROR = "
   : STR(M$(17),45,2)=STR(M1$,81,2)
   : STR(M$(17),50,24)="CHARACTER RAM ADDRESS = "
   : STR(M$(17),74,2)=STR(M1$,83,2)
1210 IF STR(E$(1,N),43,1)= HEX(00) THEN 1230
   : STR(M$(19),4,1)=STR(M1$,86,1)
   : IF STR(E$(1,N),44,2)<> HEX(0000) THEN 1220
   : STR(M$(19),13,6)="PASSED"
   : GOTO 1230
1220 STR(M$(19),13,6)="FAILED"
   : STR(M$(19),27,4)=STR(M1$,87,4)
   : STR(M$(19),37,8)="ERROR = "
   : STR(M$(19),45,2)=STR(M1$,91,2)
   : STR(M$(19),56,11)="EXPECTED = "
   : STR(M$(19),67,2)=STR(M1$,93,2)
   : STR(M$(19),70,9)="ACTUAL = "
   : STR(M$(19),79,2)=STR(M1$,95,2)
1230 STR(M$(22),24,31)=HEX(0E)&"FOR MASTER SCREEN PRESS RETURN"
   : PRINT HEX(0306);AT(0,0);M$()
1240 IF A2$(1,S)=HEX(00) THEN 1250
   : S=S+1
   : I=I+2
   : IF S < 8 THEN 1240
   : S=1
   : I=5
   : GOTO 1240
1250 SELECT #1<A$(1,S)>
   : SELECT #2<A1$(1,S)>
   : $IF ON #2,1270
1260 GOSUB '100
   : GOTO 1280
1270 A3$(1,S)=HEX(00)
   : $GIO #1 (8602 1232 C640 1200,R$)E$(1,S)
   : HEXUNPACK STR(E$(1,S),1,2)TO F5$
   : HEXUNPACK STR(E$(1,S),3,2)TO F6$
   : STR(F$(I),47,4)=F5$
   : STR(F$(I),66,4)=F6$
1280 C$=" "
   : KEYIN C$,1290,1300
1290 IF C$ = HEX(0D) THEN 1310
   : S = S+1
   : I=I+2
   : IF S < 8 THEN 1240
   : S=1
   : I=5
   : GOTO 1240
1300 N =0
   : IF C$ = HEX(01) THEN N = 1
   : IF C$ = HEX(02) THEN N = 2
   : IF C$ = HEX(03) THEN N = 3
   : IF C$ = HEX(04) THEN N = 4
   : IF C$ = HEX(05) THEN N = 5
   : IF C$ = HEX(06) THEN N = 6
   : IF C$ = HEX(07) THEN N = 7
   : IF C$ = HEX(08)THEN 1610
   : IF N = 0 THEN 1290
   : GOTO 1040
1310 PRINT HEX(0306);AT(0,0);F$()
   : GOTO 980
1320 REM %^ '21 SUBROUTINE DEVICE READY/BUSY CHECK
1330 DEFFN '21
1340 $IF ON #1,1360
1350 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,45)="Device is not ready...Expected -RBI to be Low"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
1360 RETURN
1370 REM % '24 SUBROUTINE DELAY FOR DOWNLINE SETUP COMPLETION
1380 DEFFN'24
1390 $GIO DELAY #1 (1950 1C56 75FF E000,R$)
   : RETURN
1400 REM % '25 SUBROUTINE SEND PARAMETERS FOR MEMORY WRITE
1410 DEFFN '25
1420 STR(R$,3,2)=HEX(0004)
   : $GIO #1(1232 A000 1200,R$)H$
1430 V$ = STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN RETURN
1440 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,47)="CPU timed while sending micro code load command"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
1450 REM % '26 SUBROUTINE FORCES CONTROLLER INTO DOWNLINE LOADED TEST
1460 DEFFN'26
1470 STR(R$,3,2)=HEX(0002)
   : $GIO #1(75FF 1232 A000 1200,R$)W$
1480 V$ = STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 1500
1490 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,53)="CPU timed out sending controller to micro-code tests"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
1500 $GIO #1(75FF 1232 8702 1200,R$)
1510 V$ = STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 1530
1520 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),20,59)="Timed out waiting for controller to respond to goto com
     mand"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
1530 IF STR(R$,2,1)=HEX(3F) THEN RETURN
1540 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,51)="Controller failed to go to micro-code test routines"
   : A2$(1,S)= HEX(FF)
   : GOTO 910
1550 RETURN  CLEAR
   : RETURN
1560 REM % 1 SEC TIMER FOR INDIVIDUAL CONTROLLER TIME-OUT CHECK '100
1570 DEFFN '100
1580 $GIO(75FA 75FA 75FA 75FA )
   : FOR I1 = 1 TO 7000
   : NEXT I1
   : A3$(1,S)= A3$(1,S) ADD HEX(01)
   : IF A3$(1,S)<> HEX(F0) THEN RETURN
   : PRINT HEX(06);AT(I,52);"6 min. Controller Time-out"
1590 STR(F$(I),52,26)="6 min. Controller Time-out"
   : A2$(1,S)=HEX(FF)
   : RETURN
1600 REM % RESTART ROUTINE FOR INDIVIDUAL CONTROLLERS  S.F. 08
1610 INIT (" ") S$
   : PRINT HEX(03);AT(1,24);"SINGLE CONTROLLER RESTART MODE";AT(4,20);"1 - 019
        2 - 01A   3 - 01B   4 - 01C"; AT(6,20);"5 - 01D   6 - 01E   7 - 01F
     8 - ABORT"
1620 PRINT AT(8,17);
   : LINPUT "Please make one selection (1-8) from above ?" S$
1630 I=5
   : CONVERT S$ TO S
   : IF S = 0 THEN 1620
   : IF S>8 THEN 1620
   : IF S=1 THEN I=5
   : IF S=2 THEN I=7
   : IF S=3 THEN I=9
   : IF S=4 THEN I=11
   : IF S=5 THEN I=13
   : IF S = 6 THEN I=15
   : IF S=7 THEN I=17
   : ON S GOTO 1640,1640,1640,1640,1640,1640,1640,930
1640 IF A2$(1,S)=HEX(FF) THEN 1660
   : PRINT AT(10,17);"The controller selected is currently Running";AT(12,17);
   : S$ =" "
   : LINPUT "Do you still wish to restart it (Y or N) ?" S$
1650 IF S$ = "Y" THEN 1660
   : IF S$<> "N" THEN 1640
   : GOTO 1610
1660 PRINT HEX(0306);AT(12,5);"Restarting controller address ";A$(1,S);". It w
     ill take approximately 15 seconds."
   : A2$(1,S)=HEX(00)
   : STR(F$(I),1,80)=" "
1670 SELECT #1<A$(1,S)>
   : $GIO RESET #1 (4580,R$)
   : FOR J = 1 TO 16
   : $GIO(75FA 75FA 75FA 75FA )
   : NEXT J
1680 REM % SET UP $GIO TIMEOUT (MAX VALUE FOR INPUT ON MVP SYSTEM)
1690 STR(R$,3,2)=HEX(000D)
1700 REM % SELECT DEVICE AND TIMEOUT READY
1710 $GIO SELECT #1 (1232 1020,R$)
   : ERROR X = ERR
   : GOTO 1760
1720 REM % PRINT RESULT OF SELECTION ROUTINE
1730 STR(R$,8,1)=AND HEX(10)
   : IF STR(R$,8,1)=HEX(10) THEN 1740
   : SELECT #2<A1$(1,S)>
   : GOTO 1790
1740 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,21)="BUSY (Unable to test)"
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
1750 REM % ERROR HANDLING ROUITNE FOR NON CONFIGURED ADDRESS
1760 IF X<>48  THEN 1770
   : STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,15)="Undefined in DT"
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
1770 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,6)="ERROR "
   : STR(F$(I),31,2)=BIN(X,2)
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
1780 REM %^ DMA / PIO TEST
1790 $GIO DUMMY READ #1(1232 8602 1200,R$)
1800 STR(R$,1,2)=HEX(0000)
   : STR(H$,1,5)=HEX(0001000900)
   : STR(R$,3,2)=HEX(0004)
   : $GIO WRITE #1(1232 A000 1200,R$)H$
   : V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 1820
1810 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),23,47)="CPU timed out during DMA/PIO Data transfer test"
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
1820 STR(R$,1,1)=HEX(00)
   : GOTO 1840
1830 $GIO #1(1910,R$)
1840 $GIO SEND DATA #1(1232 4210 1200,R$)
   : IF STR(R$,8,1)<> HEX(00) THEN 1810
1850 IF STR(R$,1,1) <> HEX(FF) THEN 1830
   : STR(H$,1,5)=HEX(0101000900)
   : STR(R$,3,2)= HEX(0004)
   : $GIO READ #1(1232 A000 1200,R$)H$
   : V$=STR(R$,8,1) AND HEX(10)
   : IF V$ = HEX(10) THEN 1810
1860 STR(R$,1,1)=HEX(00)
   : GOTO 1880
1870 $GIO #1(1910,R$)
1880 STR(R$,3,2)=HEX(0004)
   : $GIO READ DATA #1(1232 8312 1200,R$)
   : STR(R$,8,1)=STR(R$,8,1) AND HEX(14)
1890 T$=STR(R$,8,1) AND HEX(10)
   : IF T$=HEX(10) THEN 1910
   : V$=STR(R$,8,1) AND HEX(04)
   : IF V$=HEX(04) THEN 1920
1900 IF STR(R$,1,1) <> HEX(FF) THEN 1870
   : GOTO 1950
1910 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),22,53)="CPU timed out before getting a IBS during Data test"
   : V$=STR(R$,8,1) AND HEX(04)
   : IF V$=HEX(04) THEN 1920
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
1920 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),22,33)="Data error during DMA/PIO test.."
1930 HEXUNPACK STR(R$,1,1)TO F2$
   : HEXUNPACK STR(R$,2,1)TO F3$
   : STR(F$(I),54,5)="Sent "
   : STR(F$(I),60,2)=F2$
   : STR(F$(I),62,10)=" Received "
   : STR(F$(I),73,2)=F3$
   : A2$(1,S)= HEX(FF)
   : GOTO 2390
1940 REM % GET MEMORY SIZE BYTE FROM CONTROLLER
1950 STR(W$,1,5) = HEX(01000107FE)
   : STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)W$
1960 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 1980
1970 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during SIZE request"
   : A2$(1,S)=HEX(FF)
   : GOTO 910
1980 $GIO #1(7510 8702 ,R$)
1990 S1$="64k"
   : S2$=HEX(80)
   : S3$=HEX(40)
   : IF STR(R$,2,1)= HEX(7F) THEN S1$ ="32k"
   : IF STR(R$,2,1)= HEX(BF) THEN S1$ = "48k"
   : IF STR(R$,2,1)=HEX(BF) OR STR(R$,2,1)=HEX(7F) THEN S3$=HEX(20)
   : IF STR(R$,2,1)=HEX(7F) THEN S2$=HEX(40)
   : STR(F$(I),18,3)=S1$
2000 REM %  DMA ADDRESS MULTIPLEXER CHECK
2010 STR(H$,1,5)=HEX(0000018000)
   : STR(J$,1,5)=HEX(0000018001)
   : STR(W$,1,5)=HEX(0100018000)
   : STR(Y$,1,5)=HEX(0100018001)
   : STR(H$,4,1)=S2$
   : STR(J$,4,1)=S2$
   : STR(W$,4,1)=S2$
   : STR(Y$,4,1)=S2$
2020 GOSUB 2120
   : $GIO WRITE FF IN FIRST LOCATION #1(40FF,R$)
   : GOSUB 2150
   : STR(R$,1,2)=HEX(0000)
2030 GOSUB 2250
   : $GIO WRITE 00 TO MEMORY #1(4000,R$)
   : GOSUB 2200
   : GOSUB 2280
2040 IF STR(J$,5,1)=HEX(80) THEN 2050
   : R1$=STR(J$,5,1)
   : ROTATE(R1$,1)
   : STR(J$,5,1)=R1$
   : STR(Y$,5,1)=R1$
   : GOTO 2030
2050 STR(J$,5,1)=HEX(00)
   : STR(Y$,5,1)=HEX(00)
   : R1$=HEX(01)
2060 STR(J$,4,1)=OR R1$
   : STR(Y$,4,1)=OR R1$
2070 GOSUB 2250
   : $GIO WRITE 00 TO MEMORY #1(4000,R$)
   : GOSUB 2200
   : GOSUB 2280
2080 IF R1$=S3$ THEN 2350
   : STR(J$,4,1)=S2$
   : STR(Y$,4,1)=S2$
   : ROTATE(R1$,1)
   : GOTO 2060
2090 HEXUNPACK STR(H$,4,2)TO F4$
   : HEXUNPACK STR(R$,1,1) TO F2$
   : HEXUNPACK STR(R$,2,1)TO F3$
2100 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),17,22)="DMA address error..."
   : STR(F$(I),38,10)="Address = "
   : STR(F$(I),48,4)=F4$
   : STR(F$(I),53,12)="Expected = "
   : STR(F$(I),64,2)=F2$
   : STR(F$(I),68,9)="Actual = "
   : STR(F$(I),77,2)=F3$
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
2110 HEXUNPACK STR(J$,4,2)TO F4$
   : HEXUNPACK STR(R$,1,1) TO F2$
   : HEXUNPACK STR(R$,2,1)TO F3$
   : GOTO 2100
2120 STR(R$,3,2)=HEX(0004)
   : $GIO SEND WRITE COMMAND STRING #1(1232 A000 1200,R$)H$
2130 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN RETURN
2140 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
2150 STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)W$
2160 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 2180
2170 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
2180 $GIO #1(7510 8702 ,R$)
   : IF STR(R$,2,1)= HEX(FF) THEN RETURN
2190 STR(R$,1,1)=HEX(FF)
   : GOTO 2090
2200 STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)W$
2210 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 2230
2220 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
2230 $GIO #1(7510 8702 ,R$)
   : IF STR(R$,2,1)= HEX(FF) THEN RETURN
2240 STR(R$,1,1)=HEX(FF)
   : GOTO 2110
2250 STR(R$,3,2)=HEX(0004)
   : $GIO SEND WRITE COMMAND STRING #1(1232 A000 1200,R$)J$
2260 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN RETURN
2270 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
2280 STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)Y$
2290 V$=STR(R$,8,1) AND HEX(10)
   : IF V$ <> HEX(10) THEN 2310
2300 STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,38)="CPU timed out during DMA address test"
   : A2$(1,S)=HEX(FF)
   : GOTO 2390
2310 $GIO #1(7510 8702 ,R$)
   : IF STR(R$,2,1) = HEX(00) THEN RETURN
2320 STR(R$,1,1)=HEX(00)
   : GOTO 2110
2330 REM % DOWNLINE LOAD THE MICROCODE BEFORE GOING TO MENU
2340 STR(H$,1,5)= HEX(01000107FD)
   : STR(R$,3,2)=HEX(0004)
   : $GIO SEND READ COMMAND STRING #1(1232 A000 1200,R$)H$
   : $GIO READ #1(7510 8702,R$)
   : D1$="FBI"
   : IF STR(R$,2,1)<>HEX(8E)THEN D1$="28DBURN"
2350 STR(H$,1,5)= HEX(0000F00900)
2360 STR(W$,1,5)=HEX(0200000910)
2370 GOSUB '21
   : GOSUB '25
   : GOSUB '150
   : GOSUB '26
   : STR(F$(I),5,1)=F1$(1,S)
   : STR(F$(I),13,3)=A$(1,S)
   : STR(F$(I),25,7)="Running"
   : STR(F$(I),47,4)="0000"
   : STR(F$(I),66,4)="0000"
   : GOTO 2390
2380 REM % END OF RESTART ATTEMPT CHECK TO SEE IF SUCCESSFUL
2390 IF A2$(1,S)=HEX(00) THEN 2400
   : PRINT AT(14,27);"RESTART WAS UNSUCCESSFUL"
   : GOSUB '40
   : GOTO 920
2400 PRINT AT(14,18);"RESTART WAS SUCCESSFUL"
   : A3$(1,S)=HEX(00)
   : GOSUB '40
   : GOTO 920