image of READY prompt

Wang2200.org

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

# Sector 3906, program filename = '28DFSR1'
0030 DIM A$3,R$15,L$1,D$1,P,A1$1,S$4,Q,P$(1)
0040 DIM A2$2,B$3,C$1,F$50,H$5,W$5,M$(9)60,G$(5)1,K$(4)60,N$2,Q$2,X$2,D1$8,T$(
     5)60,E$(5)60,E1$(5)50,O$(5)40,A2$2,A3$10
0050 P,Z,X,L,M,Q,S=0
0060 INIT(00)X$
   : INIT(FF)R$
   : A$="01C"
0110 M$(1)="Is the LED OFF ? 'Y' or 'N'                      "
   : M$(2)="Is the LED Flashing ? 'Y' or 'N'               "
   : M$(3)="* The program will STOP on error                             "
0120 M$(4)="* The program will LOOP on error                             "
   : M$(5)="* Instructions will be displayed                             "
   : M$(6)="The controller has a non reportable failure you can not use"
0130 M$(7)="this diagnostic or the Error Interpreter                     "
   : M$(8)="* Please enter a value less than 10000"
0150 PRINT HEX(0304);AT(10,13);HEX(0E);"WARNING";HEX(0F);"  FIELD SERVICE DIAG
     NOSTIC FOR ";HEX(200E);"2228D REV 1 ONLY";HEX(0F);AT(10,12);BOX(1,8);AT(1
     0,51);BOX(1,17)
   : GOSUB '30
0170 PRINT HEX(030E);AT(0,18);"2228D TC FIELD SERVICE DIAGNOSTICS  REV 1121";A
     T(1,17);BOX(0,44);HEX(0F)
0190 PRINT AT(2,15);"Requires VP BASIC Rev. 2.3 or MVP BASIC Rev. 2.1";AT(4,23
     );"Available device addresses are:";AT(6,22);"019  01A  01B  01C  01D  01
     E  01F"
0210 PRINT HEX(0F);AT(9,23);
   : LINPUT "What is the device address ?"-A$
0240 IF STR(A$,1,1)="0"THEN 260
   : GOTO 290
0260 IF STR(A$,2,1)<>"1"THEN 290
   : IF STR(A$,3,1)<"9"THEN 290
0270 IF STR(A$,3,1)>"F"THEN 290
0280 SELECT #1<A$>
   : GOTO 310
0290 PRINT AT(15,28);
   : GOSUB '55
   : PRINT " INVALID ADDRESS"
   : GOSUB '30
   : PRINT AT(22,25,16);
   : GOTO 210
0310 STR(R$,3,2)=HEX(000D)
0330 $GIOSELECT#1(12321020,R$)
   : ERRORX=ERR
   : GOTO 600
0350 PRINT AT(12,31);"DEVICE IS ";HEX(06020404020E);
0360 STR(R$,8,1)=STR(R$,8,1)AND HEX(10)
   : IF STR(R$,8,1)=HEX(10)THEN 380
   : PRINT "READY";HEX(020400000F)
   : GOSUB '30
   : GOTO 390
0370 PRINT AT(15,10);
   : GOSUB '55
   : PRINT " System is not configured for this device address"
   : GOSUB '30
   : GOTO 210
0380 PRINT "BUSY";HEX(020400000F)
   : GOSUB '30
0390 PRINT HEX(0306);AT(0,10);"Device address '";A$;"' will be used for all te
     sts ";AT(1,25);BOX(0,4);HEX(0F)
0400 STR(A$,2,1)=STR(A$,2,1)OR HEX(08)
   : SELECT #2<A$>
0420 P1=1
   : L=3
   : L$=HEX(20)
   : GOSUB 540
   : LINPUT L$
   : IF L$="N"THEN 440
   : IF L$="Y"THEN 720
   : L=5
   : GOSUB 580
   : GOTO 420
0440 P1=2
   : L=7
   : D$=HEX(20)
   : GOSUB 540
   : LINPUT D$
   : IF D$="Y"THEN 460
   : IF D$="N"THEN 520
   : L=9
   : GOSUB 580
   : GOTO 440
0460 $GIO#1(40037510123286021200,R$)
   : IF STR(R$,2,1)>HEX(03)THEN 500
0470 PRINT HEX(06);AT(10,0);"The Power Up diagnostic has detected a failure in
      one of the following tests."
   : PRINT AT(11,0);"Write Bad Parity/Parity Generator Test/ Bank Decoder Test
     / Marching AA/55 Test"
0480 PRINT AT(12,0);"This failure must be corrected before this diagnostic can
      be used."
   : GOTO 470
0500 $GIO#1(40FF75FF75FF,R$)
   : GOTO 730
0520 P1=6
   : L=9
   : GOSUB 540
   : GOTO 560
0540 PRINT AT(L,10);M$(P1);
   : RETURN
0560 P1=7
   : L=10
   : GOSUB 540
   : PRINT HEX(06)
   : GOTO 520
0580 PRINT AT(L,10);"PLEASE TYPE A 'Y' OR 'N' ALL OTHER KEYS ARE INVALID"
   : GOSUB '40
   : FOR I=10TO 60
   : PRINT HEX(06)
   : PRINT AT(L,I);HEX(20)
   : NEXT I
   : RETURN
0600 IF X=48THEN 370
0610 PRINT AT(16,36,44);HEX(06020404020E);"ERROR";HEX(020400000F);"  ";X;
   : GOSUB '30
   : GOTO 170
0620 GOTO 370
0640 DEFFN'40
   : FOR I=1TO 5000
   : NEXT I
   : RETURN
0660 DEFFN'30
   : PRINT HEX(06020402000E);
   : PRINT AT(22,26);"PRESS 'RETURN' TO CONTINUE";HEX(0F);
   : KEYIN C$,670,670
0670 IF C$=HEX(0D)THEN 680
   : GOTO 660
0680 PRINT AT(10,0,);
   : INIT(00)C$
   : RETURN
0700 DEFFN'55
   : PRINT HEX(06020404020E);" ERROR ";HEX(020400000F);
   : RETURN
0720 $GIODUMMYREAD#1(123286021200,R$)
0730 STR(R$,1,2)=HEX(0000)
   : PRINT HEX(03060E);AT(1,30);"CHECKING DMA/PIO";AT(2,29);BOX(0,19);HEX(0F)
0740 STR(H$,1,5)=HEX(0001000900)
   : STR(R$,3,2)=HEX(0004)
   : $GIOWRITE#1(1232A0001200,R$)H$
   : V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 760
0750 PRINT HEX(06);AT(4,0,);"CPU TIMED OUT WHILE SENDING WRITE COMMAND TO CONT
     ROLLER"
   : GOSUB '30
   : GOTO 110
0760 PRINT HEX(06);AT(4,0,);"SENDING 256 BYTES OF DATA TO CONTROLLER MEMORY"
0770 C=0
   : STR(R$,1,1)=HEX(00)
   : GOTO 790
0780 C=0
   : $GIO#1(1910,R$)
0790 $GIOSENDDATA#1(123242101200,R$)
   : IF STR(R$,8,1)=HEX(00)THEN 810
0800 PRINT HEX(06);AT(6,0);"CPU TIMED OUT WHILE SENDING DATA TO CONTROLLER MEM
     ORY"
   : GOSUB '30
0810 IF STR(R$,1,1)<>HEX(FF)THEN 780
   : STR(H$,1,5)=HEX(0101000900)
   : STR(R$,3,2)=HEX(0004)
   : $GIOREAD#1(1232A0001200,R$)H$
   : V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 830
0820 PRINT HEX(06);AT(6,0,);"CPU TIMED OUT WHILE SENDING READ COMMAND TO CONTR
     OLLER"
   : GOSUB '30
   : GOTO 110
0830 PRINT HEX(06);AT(6,0,);"READING & COMPARING 256 BYTES OF DATA FROM CONTRO
     LLER MEMORY"
0840 C=0
   : STR(R$,1,1)=HEX(00)
   : GOTO 860
0850 C=0
   : $GIO#1(1910,R$)
0860 STR(R$,3,2)=HEX(0004)
   : $GIOREADDATA#1(123283121200,R$)
   : STR(R$,8,1)=STR(R$,8,1)AND HEX(14)
0870 T$=STR(R$,8,1)AND HEX(10)
   : IF T$=HEX(10)THEN GOSUB 890
   : V$=STR(R$,8,1)AND HEX(04)
   : IF V$=HEX(04)THEN GOSUB 900
0880 IF STR(R$,1,1)<>HEX(FF)THEN 850
   : PRINT HEX(06);AT(8,0,);"DMA/PIO TEST PASSED"
   : J=70
   : GOSUB '45
   : GOTO 940
0890 PRINT AT(20,0);"THE CPU TIMED OUT BEFORE RECEIVING AN IB STROBE"
   : GOSUB '30
   : RETURN
0900 PRINT AT(10,0);"THE PATTERN RECEIVED DOES NOT EQUAL THE PATTERN SENT"
0910 PRINT AT(15,20);"SENT PATTERN ";HEXOF(STR(R$,1,1))
   : PRINT AT(15,40);"RECEIVED PATTERN ";HEXOF(STR(R$,2,1))
   : GOSUB '30
   : RETURN
0940 STR(H$,1,5)=HEX(0000018000)
   : STR(W$,1,5)=HEX(0100018000)
0950 STR(R$,1,2)=HEX(0000)
   : PRINT HEX(03060E);AT(1,27);"DMA MULTIPLEXER TEST";AT(2,26);BOX(0,21);HEX(
     0F);AT(3,0);"SENDING UNIQUE ADDRESS PATTERNS"
0960 STR(R$,1,1)=HEX(00)
   : GOSUB '25
   : $GIO#1(4210,R$)
0970 $GIO#1(1910,R$)
0980 STR(H$,4,1)=OR STR(R$,1,1)
   : GOSUB '25
   : $GIO#1(4210,R$)
0990 R1$=STR(R$,1,1)
   : ROTATE(R1$,1)
   : STR(R$,1,1)=R1$
   : IF STR(R$,1,1)=HEX(80)THEN 1000
   : STR(H$,4,1)=HEX(80)
   : GOTO 980
1000 PRINT HEX(06);AT(5,0);"READING AND COMPARING UNIQUE ADDRESS PATTERNS"
1010 STR(R$,1,1)=HEX(00)
   : STR(H$,1,5)=STR(W$,1,5)
   : GOSUB '25
   : $GIO#1(75108702,R$)
1020 IF STR(R$,1,1)=STR(R$,2,1)THEN 1040
1030 PRINT HEX(06);AT(10,0,);,"THE PATTERN RECEIVED DOES NOT EQUAL THE PATTERN
      SENT"
   : PRINT AT(15,27);"ADDRESS OF FAILURE =  ";HEXOF(STR(H$,4,2));AT(20,20);"EX
     PECTED DATA =  ";HEXOF(STR(R$,1,1));AT(20,45);"ACTUAL DATA =  ";HEXOF(STR
     (R$,2,1))
   : GOSUB '30
   : GOTO 1050
1040 IF STR(R$,1,1)<>HEX(00)THEN 1050
   : $GIO#1(1910,R$)
1050 STR(H$,4,1)=OR STR(R$,1,1)
   : GOSUB '25
   : $GIO#1(75108702,R$)
1060 IF STR(R$,1,1)<>STR(R$,2,1)THEN 1030
1070 R1$=STR(R$,1,1)
   : ROTATE(R1$,1)
   : STR(R$,1,1)=R1$
   : IF STR(R$,1,1)=HEX(80)THEN 1120
   : STR(H$,4,1)=HEX(80)
   : GOTO 1050
1080 DEFFN'25
1090 STR(R$,3,2)=HEX(0004)
   : $GIOSENDCOMMANDSTRING#1(1232A0001200,R$)H$
1100 V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN RETURN
1110 PRINT HEX(06);AT(4,0,);"CPU TIMED OUT WHILE SENDING COMMAND STRING TO CON
     TROLLER"
   : GOSUB '30
   : GOTO 110
1120 PRINT HEX(06);AT(7,0,);"DMA ADDRESS MULTIPLEXER TEST PASSED"
   : GOSUB '40
   : GOTO 1150
1150 M$(1)="Do you want to loop on error 'Y' or 'N'                      "
   : M$(2)="Do you want to display instructions 'Y' or 'N'               "
   : M$(3)="* The program will STOP on error                             "
1160 M$(4)="* The program will LOOP on error                             "
   : M$(5)="* Instructions will be displayed                             "
   : M$(6)="* Instructions will NOT be displayed                         "
1170 M$(7)="How many passes do you wish to make (less than 10000)        "
   : M$(8)="* Please enter a value less than 10000"
   : STR(A$,2,1)=HEX(31)
1180 PRINT HEX(0306);AT(0,10);"Device address '";A$;"' will be used for all te
     sts ";AT(1,25);BOX(0,4);HEX(0F)
1190 P1=1
   : L=3
   : L$=" "
   : GOSUB 1310
   : LINPUT L$
   : IF L$="Y"THEN 1210
   : IF L$="N"THEN 1230
   : L=5
   : GOSUB 1380
   : GOTO 1190
1210 P1=4
   : L=5
   : GOSUB 1310
   : GOTO 1250
1230 P1=3
   : L=5
   : GOSUB 1310
1250 P1=2
   : L=7
   : D$=" "
   : GOSUB 1310
   : LINPUT D$
   : IF D$="Y"THEN 1270
   : IF D$="N"THEN 1290
   : L=9
   : GOSUB 1380
   : GOTO 1250
1270 P1=5
   : L=9
   : GOSUB 1310
   : GOTO 1330
1290 P1=6
   : L=9
   : GOSUB 1310
   : GOTO 1330
1310 PRINT AT(L,10);M$(P1);
   : RETURN
1330 P1=7
   : L=11
   : GOSUB 1310
   : INPUT P
   : IF P>9999THEN 1360
1350 PRINT AT(13,10,70);"* All tests will make ";P;" pass(es)"
   : GOSUB '30
   : GOTO 1400
1360 P1=8
   : L=13
   : GOSUB 1310
   : GOSUB '30
   : GOTO 1330
1380 PRINT AT(L,10);"PLEASE TYPE A 'Y' OR 'N' ALL OTHER KEYS ARE INVALID"
   : GOSUB '40
   : FOR I=10TO 60
   : PRINT HEX(06)
   : PRINT AT(L,I);HEX(20)
   : NEXT I
   : RETURN
1400 STR(H$,1,5)=HEX(000C300900)
1410 STR(W$,1,5)=HEX(0200000914)
1420 PRINT HEX(0306);AT(6,15);"SENDING MICROCODE TEST PROGRAMS TO CONTROLLER M
     EMORY"
1430 D1$="FSDIAG1"
   : GOSUB '21
   : GOSUB '25
   : GOSUB '150
   : PRINT AT(8,15);"TRANSFER OF MICROCODE SUCCESSFUL";AT(10,15);"FORCING CONT
     ROLLER INTO MICROCODE TEST PROGRAM"
   : GOSUB '26
   : GOTO 1620
1440 GOSUB '26
   : PRINT AT(12,15);"CONTROLLER ENTERED MICROCODE HOST ROUTINE"
   : GOSUB '40
   : GOTO 1620
1460 DEFFN'150
1470 STR(R$,1,13)=HEX(09070600000000000000000000)
1480 DATA LOAD DC OPEN T#0,D1$
1490 DATA LOAD DC #0,A2$,A3$,K$()
   : IF END THEN 1560
   : IF STR(A2$,1,1)>HEX(7F)THEN 1490
   : IF STR(A2$,1,1)>HEX(03)THEN 1570
   : $GIO/000(A604,R$)K$()
   : IF STR(A2$,2,1)<>STR(R$,5,1)THEN 1580
1500 ON A2$GOTO 1510,1520
   : GOTO 1490
1510 IF STR(R$,3,1)<>HEX(06)THEN 1590
   : GOTO 1530
1520 IF STR(R$,3,1)<>HEX(01)THEN 1590
1530 GOSUB '140
   : GOTO 1490
1540 DEFFN'140
1550 $GIO#1(1232A0001200,R$)K$()
   : RETURN
1560 DATA SAVE DC CLOSE
   : RETURN
1570 PRINT AT(23,0);"CONVERSION NEEDED";
   : STOP
1580 PRINT AT(23,0);"LRC ERROR";
   : STOP
1590 PRINT AT(23,0);"WRONG TYPE";
   : STOP
1600 PRINT AT(23,0);"CODE ADDRESS OUT OF RANGE";
   : STOP
1620 A1$=HEX(00)
1630 SELECT PRINT 005(80)
   : PRINT HEX(03060E);AT(0,30);"TEST SELECTION MENU";AT(1,29);BOX(0,20);HEX(0
     F)
1640 PRINT AT(2,10);"SF 0 - RE-KEY INPUT PARAMETERS";AT(3,10);"SF 1 - MOVING I
     NVERSIONS MEMORY TEST";AT(4,10);"SF 2 - SIO EXTERNAL LOOP";AT(5,10);"SF 3
      - SIO/DMA TEST";AT(6,10);"SF 4 - CONTROL CHARACTER RAM TEST";AT(7,10);"S
     F 5 - PRIORITY INTERRUPT TEST "
1650 PRINT AT(8,10);"SF 6 - RS449 LOOP BACK TEST ";AT(9,10);"SF 7 - OPTION SWI
     TCH TEST";AT(10,10);"SF 8 - CHAIN MODE ";AT(11,10);"SF 9 - RESTART ";AT(1
     2,10);"SF 16 - RETURN TO MAIN MENU"
1670 PRINT AT(14,10);"STRIKE THE SPECIAL FUNCTION KEY ASSOCIATED WITH THE DESI
     RED TEST";HEX(06)
1680 PRINT AT(16,10,70);"WHICH TEST DO YOU DESIRE?"
   : KEYIN A1$,,1700
   : GOTO 1720
1700 IF A1$=HEX(00)THEN 1710
   : IF A1$>HEX(09)THEN 1720
   : ON VAL(A1$)GOTO 1740,1750,1760,1770,1780,1790,1800,1810,1820
   : GOTO 1620
1710 STR(S$,1,2)=HEX(403F)
   : GOSUB '22
   : GOTO 1150
1720 IF A1$=HEX(10)THEN 1830
   : PRINT AT(17,10);"THERE IS NO SUCH TEST TRY AGAIN";HEX(07)
1730 FOR I=1TO 2000
   : NEXT I
   : PRINT AT(17,10,31);
   : GOTO 1680
1740 GOSUB '1
   : GOTO 1620
1750 GOSUB '2
   : GOTO 1620
1760 GOSUB '3
   : GOTO 1620
1770 GOSUB '4
   : GOTO 1620
1780 GOSUB '5
   : GOTO 1620
1790 GOSUB '6
   : GOTO 1620
1800 GOSUB '7
   : GOTO 1620
1810 GOSUB '8
   : GOTO 1620
1820 $GIORESTART#1(4580,R$)
   : GOTO 30
1830 GOSUB '16
1850 DEFFN'1
1860 STR(W$,1,5)=HEX(0200000914)
1870 M$(1)="MOVING INVERSIONS TEST FAILED"
   : M$(9)="FAILING ADDRESS =         "
   : M$(7)="EXPECTED DATA =   "
   : M$(8)="ACTUAL DATA =    "
1880 O$(5)="MOVING INVERSIONS TEST PASSED"
   : P$(1)=HEX(00)
1890 STR(R$,1,2)=HEX(0000)
   : PRINT HEX(03060E);AT(1,26);"MOVING INVERSIONS TEST";AT(2,25);BOX(0,23);HE
     X(0F)
   : IF A1$=HEX(08)THEN PRINT AT(0,70);"CHAIN MODE"
1900 IF A1$<>HEX(08)THEN P1=0
   : IF D$="N"THEN 1930
1910 PRINT HEX(0F)
   : PRINT AT(10,0);"This test will run a more complete RAM check and is bank
     selective. In the ChainMode bank selection will be an automatic function.
     "
1920 GOSUB '30
1930 IF P=0THEN RETURN
1940 IF A1$<>HEX(08)THEN 1950
   : IF Q>=4THEN Q=0
   : Q=Q+1
   : GOTO 1990
1950 PRINT AT(10,0,);AT(10,15);"RAM MEMORY WILL ONLY BE TESTED ON 1 BANK AT A
     TIME";AT(12,20);"ENTER 1 FOR BANK 1 ADDRESS 2000 TO 3FFF";AT(13,20);"ENTE
     R 2 FOR BANK 2 ADDRESS 4000 TO 7FFF"
1960 PRINT AT(14,20);"ENTER 3 FOR BANK 3 ADDRESS 8000 TO BFFF";AT(15,20);"ENTE
     R 4 FOR BANK 4 ADDRESS C000 TO FFFF";AT(18,15);"ENTER THE NUMBER OF THE B
     ANK YOU WISH TO TEST  ";
1970 PRINT AT(18,15);"ENTER THE NUMBER OF THE BANK YOU WISH TO TEST  ";
   : INPUT Q
   : IF Q>4THEN 1980
   : GOTO 1990
1980 PRINT AT(20,15);"ILLEGAL BANK TRY AGAIN"
   : GOSUB '40
   : PRINT AT(20,0,)
   : GOTO 1970
1990 ON QGOTO 2000,2010,2010,2010
2000 STR(S$,1,2)=HEX(453A)
   : GOTO 2040
2010 IF Q=2THEN STR(W$,2,2)=HEX(407F)
   : IF Q=3THEN STR(W$,2,2)=HEX(80BF)
   : IF Q=4THEN STR(W$,2,2)=HEX(C0FF)
2020 PRINT HEX(06);AT(10,0,)
   : C=0
   : J=754
   : Y=4
   : X=2
   : STR(S$,1,2)=HEX(403F)
2030 GOSUB '21
   : GOSUB '22
   : GOSUB '26
   : STR(S$,1,2)=HEX(4639)
2040 GOSUB '20
   : GOSUB '21
   : GOSUB '22
2050 PRINT HEX(06);AT(20,25);"CURRENTLY TESTING BANK #";Q
   : J=30000
   : C=0
   : GOSUB '100
2060 IF STR(R$,2,1)=HEX(30)THEN 2080
2070 IF STR(R$,2,1)<>HEX(31)THEN 4120
   : GOTO 2100
2080 GOSUB '23
   : C=0
   : J=754
   : Y=4
   : X=2
2090 GOSUB '20
   : GOTO 2040
2100 IF C<>0THEN 2120
   : GOSUB '70
   : GOSUB '200
   : IF S>1THEN 4130
   : ON SGOTO 2110
2110 PRINT HEX(06);AT(10,0,);AT(10,23);M$(1)
   : GOSUB '80
2120 GOSUB '95
   : GOSUB '100
   : GOTO 2060
2150 DEFFN'2
2160 O$(5)=" SIO EXTERNAL LOOP PASSED"
   : P$(1)=HEX(00)
2170 STR(R$,1,2)=HEX(0000)
   : PRINT HEX(03060E);AT(1,30);"SIO EXTERNAL LOOP";AT(2,29);BOX(0,18);HEX(0F)
   : IF A1$=HEX(08)THEN PRINT AT(0,70);"CHAIN MODE"
2180 IF A1$<>HEX(08)THEN P1=0
   : IF D$="N"THEN 2210
2190 PRINT HEX(0F)
   : PRINT AT(10,0,);"This program tests the controller's SIO external loop ba
     ck circuitry. The tests are conducted in all 3 modes ie Async, Bisync and
      SDLC. In addition 3 vectored  interrupt tests are performed, Transmit, R
     eceive, Overrun, CTS, & DCD."
2200 GOSUB '30
2210 IF P=0THEN RETURN
2220 C=0
   : Y=4
   : STR(S$,1,2)=HEX(413E)
2230 M$(1)="SIO ASYNC TEST FAILED"
   : M$(2)="SIO BISYNC TEST FAILED"
   : M$(3)="SIO SDLC TEST FAILED"
   : M$(4)="EXPECTED DATA =   "
   : M$(5)="ACTUAL DATA =   "
   : M$(6)="CONTROLLER FAILED TO ENTER THE HUNT MODE"
2240 M$(7)="NO SYNC CHARACTERS OR FLAG CHARACTER BEING TRANSMITTED"
   : M$(8)="NOT RECEIVING SYNC OR FLAG CHARACTERS"
   : M$(9)="NOT TRANSMITTING DATA CHARACTERS"
   : T$(1)="NOT RECEIVING DATA CHARACTERS"
   : T$(2)="DATA ERROR BETWEEN TRANSMITTED AND RECEIVED DATA"
2250 T$(3)="TRANSMIT INTERRUPT FAILED"
   : T$(4)="RECEIVE INTERRUPT FAILED"
   : T$(5)="OVERRUN INTERRUPT FAILED"
   : E$(1)="NO EXTERNAL STATUS INTERRUPT FROM CTS LINE"
   : E$(2)="NO EXTERNAL STATUS INTERRUPT FROM DCD LINE"
2260 E$(3)="DCD INTERRUPT OCCURRED DURING CTS INTERRUPT CHECK. DTR IS TURNED O
     FF"
2270 GOSUB '20
   : GOSUB '21
   : GOSUB '22
2280 J=15000
   : C=0
   : GOSUB '100
2290 IF STR(R$,2,1)=HEX(30)THEN 2480
2300 IF STR(R$,2,1)<>HEX(31)THEN 4120
2310 IF C<>0THEN 2350
   : GOSUB '70
   : IF G$(2)>HEX(02)THEN 2330
   : IF G$(2)=HEX(00)THEN A=1
   : IF G$(2)=HEX(01)THEN A=2
   : IF G$(2)=HEX(02)THEN A=3
2320 PRINT HEX(06);AT(8,0,);AT(8,28);M$(A)
2330 GOSUB '200
   : IF S>12THEN 4130
   : ON SGOTO 2340,2360,2370,2380,2390,2400,2410,2420,2430,2440,2450,2470
2340 PRINT HEX(06);AT(10,0,);AT(10,21);M$(6)
2350 GOSUB '95
   : GOSUB '100
   : GOTO 2290
2360 PRINT HEX(06);AT(10,0,);AT(10,12);M$(7)
   : GOTO 2350
2370 PRINT HEX(06);AT(10,0,);AT(10,22);M$(8)
   : GOTO 2350
2380 PRINT HEX(06);AT(10,0,);AT(10,23);M$(9)
   : GOTO 2350
2390 PRINT HEX(06);AT(10,0,);AT(10,26);T$(1)
   : GOTO 2350
2400 PRINT HEX(06);AT(10,13,);T$(2)
   : GOTO 2460
2410 PRINT HEX(06);AT(10,0,);AT(10,26);T$(3)
   : GOTO 2350
2420 PRINT HEX(06);AT(10,0,);AT(10,27);T$(4)
   : GOTO 2350
2430 PRINT HEX(06);AT(10,0,);AT(10,27);T$(5)
   : GOTO 2350
2440 PRINT HEX(06);AT(10,0,);AT(10,20);E$(1)
   : GOTO 2350
2450 PRINT HEX(06);AT(10,0,);AT(10,20);E$(2)
   : GOTO 2350
2460 PRINT AT(12,15);M$(4);HEX(20);BOX(1,5);HEX(20200E);HEXOF(G$(3));HEX(0F);A
     T(12,39);M$(5);HEX(20);BOX(1,5);HEX(20200E);HEXOF(G$(4));HEX(0F)
   : GOTO 2350
2470 PRINT HEX(06);AT(10,0,);AT(10,10);E$(3)
   : GOTO 2350
2480 GOSUB '23
   : GOTO 2270
2510 DEFFN'3
2520 X$=ALL(00)
2530 M$(1)="SIO/DMA TEST FAILED"
   : M$(2)="EXPECTED DATA =   "
   : M$(3)="ACTUAL DATA =   "
   : M$(4)="CONTROLLER TIMED OUT WAITING FOR TRANSFER TO COMPLETE"
2540 M$(7)="DATA ERROR BETWEEN TRANSMITTED AND RECEIVED DATA"
   : M$(9)="TC FAILED TO DECREMENT CTC CHANNEL 2 DOWNCOUNTER"
   : T$(1)="PARITY ERROR DURING TRANSFER"
2550 O$(5)="   SIO/DMA TEST PASSED"
   : P$(1)=HEX(00)
2560 STR(R$,1,2)=HEX(0000)
   : PRINT HEX(03060E);AT(1,30);"SIO/DMA TEST";AT(2,29);BOX(0,13);HEX(0F)
   : IF A1$=HEX(08)THEN PRINT AT(0,70);"CHAIN MODE"
2570 IF A1$<>HEX(08)THEN P1=0
   : IF D$="N"THEN 2610
2580 PRINT HEX(0F)
   : PRINT AT(10,0);"This test requires the \D2\D3\B2\B3\B2 LOOP BACK Plug. Th
     e test checks the ability to     transfer data from one section of memory
      to another. The test is run in the     Async mode."
2590 PRINT ;"This test checks transfers of 256 bytes, 512 bytes, 1k, 2k, 4k, 8
     k,and 16k."
2600 GOSUB '30
2610 IF P=0THEN RETURN
2620 Y=4
   : X=2
   : STR(S$,1,2)=HEX(423D)
2630 GOSUB '20
   : GOSUB '21
   : GOSUB '22
2640 J=30000
   : C=0
   : GOSUB '100
2650 IF STR(R$,2,1)=HEX(30)THEN 2670
2660 IF STR(R$,2,1)=HEX(31)THEN 2680
   : GOTO 4120
2670 GOSUB '23
   : GOTO 2620
2680 IF C<>0THEN 2700
   : GOSUB '70
   : GOSUB '200
   : IF S>4THEN 4130
   : ON SGOTO 2690,2710,2730,2740
2690 PRINT HEX(06);AT(10,0,);AT(10,29);M$(1);AT(15,19);M$(9)
2700 GOSUB '95
   : GOSUB '100
   : GOTO 2650
2710 PRINT HEX(06);AT(10,0,);AT(10,29);M$(1);AT(12,17);M$(7)
2720 PRINT AT(15,20);M$(2);HEX(20);BOX(1,5);HEX(20200E);HEXOF(G$(2));HEX(0F);A
     T(15,44);M$(3);HEX(20);BOX(1,5);HEX(20200E);HEXOF(G$(3));HEX(0F)
   : GOTO 2700
2730 PRINT HEX(06);AT(10,0,);AT(10,29);M$(1);AT(14,25);T$(1)
   : GOTO 2700
2740 PRINT HEX(06);AT(10,0,);AT(10,29);M$(1);AT(14,15);M$(4)
   : GOTO 2700
2770 DEFFN'4
2780 M$(1)="CHARACTER RAM TEST FAILURE"
   : M$(2)="CHARACTER RECOGNIZED DURING NON  RECOGNITION TEST"
   : M$(3)="CHARACTER NOT RECOGNIZED DURING RECOGNITION TEST"
   : M$(4)="CHARACTER RAM ADDRESS FAILURE =    "
2790 D1$="CCRRTST"
2800 O$(5)="CHARACTER RAM TEST PASSED"
   : P$(1)=HEX(00)
2810 STR(R$,1,2)=HEX(0000)
   : PRINT HEX(03060E);AT(1,20);"CONTROL CHARACTER RECOGNITION RAM TEST ";AT(2
     ,19);BOX(0,39);HEX(0F)
   : IF A1$=HEX(08)THEN PRINT AT(0,70);"CHAIN MODE"
2820 IF A1$<>HEX(08)THEN P1=0
   : IF D$="N"THEN 2850
2830 PRINT HEX(0F)
   : PRINT AT(10,0);"This program checks the static ram using the SIO in Async
      mode. The failing character is interpreted as the RAM address. \C9\CE\D3
     \D4\C1\CC\CC \D2\D3\B2\B3\B2 \CC\CF\CF\D0 \C2\C1\C3\CB"
2840 GOSUB '30
2850 IF P=0THEN RETURN
2860 Y=4
   : X=2
   : STR(S$,1,2)=HEX(433C)
2870 GOSUB '20
   : GOSUB '21
   : GOSUB '22
2880 J=20000
   : C=0
   : GOSUB '100
2890 IF STR(R$,2,1)=HEX(30)THEN 2910
2900 IF STR(R$,2,1)<>HEX(31)THEN 4120
   : GOTO 2920
2910 GOSUB '23
   : GOTO 2870
2920 IF C<>0THEN 2940
   : GOSUB '70
   : GOSUB '200
   : IF S>2THEN 4130
   : ON SGOTO 2930,2950
2930 PRINT HEX(06);AT(10,0,);AT(10,26);M$(1);AT(13,15);M$(2);AT(16,22);M$(4);H
     EX(20);HEXOF(G$(2))
2940 GOSUB '95
   : GOSUB '100
   : GOTO 2890
2950 PRINT HEX(06);AT(10,0,);AT(10,26);M$(1);AT(13,15);M$(3);AT(16,22);M$(4);H
     EX(20);HEXOF(G$(2))
   : GOTO 2940
2960 GOSUB '26
   : J=745
   : C=0
   : GOSUB '100
2980 DEFFN'23
2990 PRINT HEX(06);AT(10,0,);AT(10,25);O$(5);AT(15,25);"CONTROLLER IS BACK IN
     HOST"
   : GOSUB '40
   : IF P1<9999THEN 3000
   : PRINT AT(0,5,6);
   : P1=0
3000 IF A1$=HEX(08)THEN 3010
   : IF P1<PTHEN RETURN
   : RETURN CLEAR
   : RETURN
3010 RETURN CLEAR
   : RETURN
3030 DEFFN'21
3040 $IF ON #1,3080
3050 IF C<>0THEN 3060
   : PRINT AT(4,14);"Device is not ready.........Expected -RBI to be Low"
3060 IF L$="N"THEN GOSUB '30
3070 IF L$="N"THEN 3080
   : GOSUB '60
   : GOTO 3040
3080 RETURN
3100 DEFFN'20
3110 PRINT AT(2,0)
3120 IF A1$=HEX(08)THEN 3130
   : P1=P1+1
3130 GOSUB '66
   : RETURN
3150 DEFFN'22
3160 PRINT AT(4,0,);AT(10,0);"FORCING CONTROLLER OUT OF HOST...."
3170 STR(R$,1,1)=STR(S$,1,1)
   : $GIO#1(4310752F123286021200,R$)
3190 V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 3220
3200 PRINT AT(10,49);"FAILED TO COME OUT OF HOST";AT(15,5);"2200 CPU TIMED OUT
     "
   : GOTO 4130
3220 IF STR(R$,2,1)=STR(S$,2,1)THEN 3250
3230 PRINT HEX(06);AT(10,0,);,"CONTROLLER RETURNED INCORRECT RESPONSE CODE"
3240 GOSUB '95
   : GOTO 3160
3250 PRINT HEX(06);AT(10,0,);,"      CONTROLLER ENTERED SELECTED TEST"
   : J=50
   : GOSUB '45
   : PRINT HEX(06);AT(10,0,);,"   WAITING FOR CONTROLLER TO COMPLETE TESTS"
   : RETURN
3270 DEFFN'200
3280 S=0
3290 IF G$(1)=HEX(F0)THEN S=1
   : IF G$(1)=HEX(F1)THEN S=2
   : IF G$(1)=HEX(F2)THEN S=3
   : IF G$(1)=HEX(F3)THEN S=4
   : IF G$(1)=HEX(F4)THEN S=5
   : IF G$(1)=HEX(F5)THEN S=6
   : IF G$(1)=HEX(F6)THEN S=7
   : IF G$(1)=HEX(F7)THEN S=8
   : IF G$(1)=HEX(F8)THEN S=9
   : IF G$(1)=HEX(F9)THEN S=10
   : IF G$(1)=HEX(FA)THEN S=11
   : IF G$(1)=HEX(FB)THEN S=12
3300 IF S=0THEN 4130
   : RETURN
3320 DEFFN'24
3330 $GIODELAY#1(19501C5675FFE000,R$)
   : RETURN
3350 DEFFN'25
3360 STR(R$,3,2)=HEX(0004)
   : $GIO#1(1232A0001200,R$)H$
3370 V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN RETURN
3380 PRINT HEX(06);AT(10,0,);," CPU TIMED OUT WHILE SENDING WRITE PARAMETERS"
   : GOTO 4130
3400 DEFFN'26
3410 STR(R$,3,2)=HEX(0002)
   : $GIO#1(75FF1232A0001200,R$)W$
3420 V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 3440
3430 PRINT HEX(06);AT(10,0,);," CPU TIMED SENDING COMMAND STRING TO CONTROLLER
     "
   : GOTO 4130
3440 $GIO#1(75FF123287021200,R$)
3450 V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 3470
3460 PRINT HEX(06);AT(10,0,);" TIMED OUT WAITING FOR CONTROLLER TO RESPONED TO
      COMMAND STRING"
   : GOTO 4130
3470 IF STR(R$,2,1)=HEX(3F)THEN RETURN
3480 PRINT AT(10,0,);,"CONTROLLER RETURNED IMPROPER RESPONSE TO COMMAND STRING
     "
   : GOTO 4130
3500 DEFFN'95
3510 GOSUB '90
   : IF L$="N"THEN GOSUB '30
   : IF L$="N"THEN 3520
   : GOSUB '60
   : RETURN
3520 PRINT AT(18,0);"THE CONTROLLER IS NOW BACK IN THE HOST ROUTINE."
   : IF A1$=HEX(08)THEN 3530
   : IF P1<PTHEN 3540
   : RETURN CLEAR
   : RETURN
3530 RETURN CLEAR
   : RETURN
3540 PRINT AT(2,0)
   : IF A1$=HEX(08)THEN 3550
   : P1=P1+1
3550 GOSUB '66
   : PRINT AT(12,42);BOX(-1,-7);AT(15,33);BOX(-1,-5);AT(15,54);BOX(-1,-5)
   : GOSUB '22
   : RETURN
3580 DEFFN'5
3590 M$(1)="CTC FAILED TO INTERRUPT"
   : M$(2)="SIO FAILED TO INTERRUPT DURING CTC INTERRUPT SERVICE"
   : M$(3)="PIO INTERRUPTED DURING CTC INTERRUPT SERVICE"
   : M$(4)="PIO FAILED TO INTERRUPT"
3600 M$(5)="INTERRUPT RECEIVED BUT VECTOR ADDRESS = FF"
   : O$(5)="PRIORITY INTERRUPT TEST PASSED"
   : P$(1)=HEX(00)
3610 STR(R$,1,2)=HEX(0000)
   : PRINT HEX(03060E);AT(1,25);"PRIORITY INTERRUPT TEST";AT(2,24);BOX(0,24);H
     EX(0F)
   : IF A1$=HEX(08)THEN PRINT AT(0,70);"CHAIN MODE"
3620 IF A1$<>HEX(08)THEN P1=0
   : IF D$="N"THEN 3650
3630 PRINT HEX(0F)
   : PRINT AT(10,0);"This test checks the IEI and IEO line between the SIO,CTC
     , and PIO chips. The   test insures also that higher priorty is observed.
      \C9\CE\D3\D4\C1\CC\CC \D2\D3\B2\B3\B2 \CC\CF\CF\D0 \C2\C1\C3\CB"
3640 GOSUB '30
3650 IF P=0THEN RETURN
3660 Y=4
   : X=2
   : STR(S$,1,2)=HEX(443B)
3670 GOSUB '20
   : GOSUB '21
   : GOSUB '22
3680 STR(R$,2,3)=HEX(000001)
   : $GIO#1(415575038602,R$)
   : STR(R$,8,1)=AND HEX(10)
   : IF STR(R$,8,1)<>HEX(10)THEN 3700
3690 PRINT HEX(06);AT(10,0,);AT(10,20);"CPU TIMED OUT WAITING FOR TEST COMPLET
     I0N"
   : GOTO 4130
3700 IF STR(R$,2,1)=HEX(56)THEN 3730
3710 IF STR(R$,2,1)=HEX(30)THEN 3740
3720 IF STR(R$,2,1)<>HEX(31)THEN 4120
   : GOTO 3750
3730 $GIO#1(4055,R$)
   : J=300
   : GOSUB '100
   : GOTO 3700
3740 GOSUB '23
   : GOTO 3660
3750 IF C<>0THEN 3770
   : GOSUB '70
   : GOSUB '200
   : IF S>5THEN 4130
   : ON SGOTO 3760,3780,3790,3800,3810
3760 PRINT HEX(06);AT(10,0,);AT(10,28);M$(1)
3770 GOSUB '95
   : GOTO 3680
3780 PRINT HEX(06);AT(10,0,);AT(10,15);M$(2)
   : GOTO 3770
3790 PRINT HEX(06);AT(10,0,);AT(10,18);M$(3)
   : GOTO 3770
3800 PRINT HEX(06);AT(10,0,);AT(10,28);M$(4)
   : GOTO 3770
3810 PRINT HEX(06);AT(10,0,);AT(10,28);M$(5)
   : GOTO 3770
3840 DEFFN'6
3850 O$(5)="  RS449 LOOP BACK PASSED"
   : P$(1)=HEX(00)
3860 STR(R$,1,2)=HEX(0000)
   : PRINT HEX(03060E);AT(1,30);"RS449 LOOP BACK";AT(2,29);BOX(0,16);HEX(0F)
   : IF A1$=HEX(08)THEN PRINT AT(0,70);"CHAIN MODE"
3870 IF A1$<>HEX(08)THEN P1=0
   : IF D$="N"THEN 3900
3880 PRINT HEX(0F)
   : PRINT AT(10,0);"This program tests the controller's SIO external loop bac
     k circuitry for the    RS449 plug. The RS449 LOOP BACK must be INSTALLED
     and the Toggle switch switched. Testing is the same as for the SIO Extern
     al Loop Test."
3890 GOSUB '30
3900 IF P=0THEN RETURN
3910 GOTO 2220
3930 DEFFN'100
3940 FOR I=1TO J
   : $GIO#1(7501,R$)
   : $IF ON #2,3950
   : NEXT I
3950 STR(R$,2,3)=HEX(000001)
   : $GIO#1(123286021200,R$)
   : STR(R$,8,1)=AND HEX(10)
   : IF STR(R$,8,1)<>HEX(10)THEN RETURN
3960 PRINT HEX(06);AT(10,0,);AT(10,20);"CPU TIMED OUT WAITING FOR TEST COMPLET
     I0N"
   : GOTO 4130
3980 DEFFN'70
3990 STR(R$,1,1)=HEX(47)
4000 FOR I=1TO Y
   : $GIO#1(42107510123287021200,R$)
   : V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 4020
4010 PRINT HEX(06);AT(10,0,);,"CPU TIMED OUT WAITING FOR RESPONSE TO BYTE REQU
     EST"
   : GOTO 4130
4020 IF STR(R$,2,1)<>HEX(38)THEN 4010
4030 $GIO#1(123287021200,R$)
   : V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 4040
   : GOTO 4010
4040 G$(I)=STR(R$,2,1)
   : NEXT I
   : RETURN
4050 DEFFN'80
4060 PRINT AT(12,24);M$(9);HEX(20);BOX(1,7);HEX(20200E);HEXOF(G$(4));HEXOF(G$(
     5));HEX(0F)
4070 PRINT AT(15,17);M$(7);HEX(20);BOX(1,5);HEX(20200E);HEXOF(G$(2));HEX(0F202
     020);M$(8);HEX(20);BOX(1,5);HEX(20200E);HEXOF(G$(3));HEX(0F)
   : RETURN
4080 DEFFN'90
4100 STR(R$,1,1)=HEX(49)
   : IF L$="Y"THEN STR(R$,1,1)=HEX(48)
   : $GIO#1(123252121200,R$)
   : V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 4110
   : GOTO 4130
4110 V$=STR(R$,1,1)XOR STR(R$,2,1)AND HEX(7F)
   : IF V$=HEX(7F)THEN RETURN
4120 PRINT HEX(06);AT(10,0,);,"CONTROLLER FAILED TO RETURN CORRECT PASS/FAIL R
     ESPONSE "
4130 GOSUB '30
   : PRINT HEX(0306);AT(9,18);"THE CONTROLLER IS NOT RESPONDING PROPERLY.";AT(
     11,16);"RUN RESTART OR CHAIN MODE TESTS"
   : GOSUB '40
   : GOSUB '40
   : RETURN CLEAR
   : GOTO 1620
4140 DEFFN'50
   : PRINT AT(R,50,30);E$(A);AT(19,0,26);E1$(B)
   : RETURN
4160 DEFFN'66
   : PRINT HEX(06);AT(0,0);"PASS#";P1;AT(20,0,)
   : RETURN
4180 DEFFN'60
   : C=C+1
   : PRINT AT(22,35);"LOOP#";C;HEX(0C);
   : IF C<>9999THEN RETURN
   : PRINT HEX(07);AT(22,40,5)
   : C=1
   : RETURN
4210 DEFFN'8
4220 PRINT HEX(0E);AT(3,47);"*";AT(4,35);"*";AT(5,30);"*";AT(6,44);"*";AT(7,41
     );"*";
   : GOSUB '40
   : GOSUB '40
   : IF P>0THEN 4230
   : P=1
4230 P1=1
   : PRINT HEX(0306);AT(0,28);"CHAIN MODE TEST ROUTINE";
   : IF D$="Y"THEN GOSUB 4260
   : PRINT HEX(0503)
4240 GOSUB '1
   : GOSUB '2
   : GOSUB '3
   : GOSUB '4
   : GOSUB '5
4250 IF P1=PTHEN RETURN
   : P1=P1+1
   : GOTO 4240
4260 PRINT AT(11,16);"THIS TEST WILL CALL AND EXECUTE ALL MARKED (*) TESTS";AT
     (13,16);"THE ENTIRE TEST WILL BE EXECUTED";"    ";P;"     ";"TIME(S)"
   : GOSUB '30
   : D$="N"
   : RETURN
4280 DEFFN'7
4290 STR(R$,1,2)=HEX(0000)
   : PRINT HEX(03060E);AT(1,30);"OPTION SWITCH TEST";AT(2,29);BOX(0,19);HEX(0F
     )
4300 IF D$="N"THEN 4330
4310 PRINT HEX(0F06)
   : PRINT AT(10,0,);"This program tests the user option switch on the daughte
     r board. The user sets  the switch to the desired switch setting which wi
     ll automatically be updated on the screen. To exit the routine the user m
     ust key RETURN."
4320 GOSUB '30
4330 C=0
   : Y=1
   : STR(S$,1,2)=HEX(4A35)
   : STR(C$,1,1)=HEX(00)
4340 GOSUB '21
   : GOSUB '22
4350 PRINT HEX(06);AT(04,0,);AT(9,27);"1   2   3   4   5   6   7   8";AT(11,22
     );"O";AT(12,22);"N";AT(13,22);"^";AT(16,30);"USER OPTION SWITCH (SW2)"
   : I=10
   : J=25
4360 PRINT HEX(0E);AT(22,30);"KEY RETURN TO EXIT TEST";HEX(0F)
4370 FOR K=1TO 8
4380 PRINT AT(I,J);
   : PRINT BOX(5,4)
4390 J=J+4
   : NEXT K
   : J=0
   : IF I>8THEN 4410
4400 I=I+4
   : GOTO 4370
4410 $GIO#1(123286021200,R$)
   : V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 4420
   : PRINT AT(18,20);"TIMED OUT WAITING FOR CURRENT SWITCH SETTING FROM CONTRO
     LLER"
   : GOTO 4660
4420 STR(C$,1,1)=STR(R$,2,1)
4430 I=11
   : J=27
   : C8$=STR(C$,1,1)AND HEX(01)
   : IF C8$=HEX(00)THEN 4440
   : GOSUB 4600
   : GOTO 4450
4440 GOSUB 4590
4450 J=31
   : C8$=STR(C$,1,1)AND HEX(02)
   : IF C8$=HEX(00)THEN 4460
   : GOSUB 4600
   : GOTO 4470
4460 GOSUB 4590
4470 J=35
   : C8$=STR(C$,1,1)AND HEX(04)
   : IF C8$=HEX(00)THEN 4480
   : GOSUB 4600
   : GOTO 4490
4480 GOSUB 4590
4490 J=39
   : C8$=STR(C$,1,1)AND HEX(08)
   : IF C8$=HEX(00)THEN 4500
   : GOSUB 4600
   : GOTO 4510
4500 GOSUB 4590
4510 J=43
   : C8$=STR(C$,1,1)AND HEX(10)
   : IF C8$=HEX(00)THEN 4520
   : GOSUB 4600
   : GOTO 4530
4520 GOSUB 4590
4530 J=47
   : C8$=STR(C$,1,1)AND HEX(20)
   : IF C8$=HEX(00)THEN 4540
   : GOSUB 4600
   : GOTO 4550
4540 GOSUB 4590
4550 J=51
   : C8$=STR(C$,1,1)AND HEX(40)
   : IF C8$=HEX(00)THEN 4560
   : GOSUB 4600
   : GOTO 4570
4560 GOSUB 4590
4570 J=55
   : C8$=STR(C$,1,1)AND HEX(80)
   : IF C8$=HEX(00)THEN 4580
   : GOSUB 4600
   : GOTO 4610
4580 GOSUB 4590
   : GOTO 4610
4590 K=I
   : PRINT AT(K,J);HEX(0E);"O"
   : K=K+1
   : PRINT AT(K,J);HEX(0E);"F"
   : K=K+1
   : PRINT AT(K,J);HEX(0E);"F"
   : PRINT HEX(0F)
   : RETURN
4600 K=I
   : PRINT AT(K,J);HEX(0E);"O"
   : K=K+1
   : PRINT AT(K,J);HEX(0E);"N"
   : K=K+1
   : PRINT AT(K,J);" "
   : PRINT HEX(0F)
   : RETURN
4610 E$=HEX(20)
   : KEYIN E$,4620,4610
   : GOSUB '40
   : GOTO 4410
4620 IF E$=HEX(0D)THEN 4630
   : GOTO 4610
4630 $GIO#1(40507510123286021200,R$)
   : V$=STR(R$,8,1)AND HEX(10)
   : IF V$<>HEX(10)THEN 4640
   : PRINT AT(18,20);"TIMED OUT FORCING CONTROLLER BACK TO HOST"
   : GOTO 4130
4640 IF STR(R$,2,1)=HEX(30)THEN 4650
   : GOTO 4660
4650 PRINT HEX(0306);AT(10,15);"CONTROLLER RETURNED TO HOST"
   : GOSUB '40
   : RETURN
4660 GOSUB '30
   : PRINT HEX(0306);AT(9,18);"THE CONTROLLER IS NOT RESPONDING PROPERLY.";AT(
     11,16);"RUN EITHER AUTOMATIC TESTS OR CHAIN MODE TESTS"
   : GOSUB '40
   : GOSUB '40
   : GOTO 1620
4680 DEFFN'45
4690 FOR I=1TO J
   : $GIO#1(750A,R$)
   : NEXT I
   : RETURN
5000 DEFFN'16
   : LOAD T"START"
9999 DEFFN'16
   : LOAD T"START"