Listing of file='2229DIAG' on disk='vmedia/2229_diagnostics.wvd.zip'
# Sector 24, program filename = '2229DIAG'
0000 COM F9$8
: F9$="2229DIAG"
: LOAD T"2229STRT"
0010 REM % "2229DIAG" - 2229 DIAGNOSTIC ST 02/06/1986
0020 REM % FILL TAPE WITH RANDOM LENGTH RECORDS AND RANDOM DATA, THEN READ ALL
BLOCKS
: PRINT HEX(03)
0025 REM % COPYRIGHT WANG LABORATORIES, INC., 1986,1987
0030 DIM A1$(16,16)64,B$(16,16)64,R$16,C1(2200),S$30,Z9$1,Z8$1,M$5
0035 M=2200
: REM MAXIMUM RECORDS TO WRITE ON TAPE
0040 PRINT "2229 DIAGNOSTIC"
: PRINT
: PRINT "************ WARNING ************"
: PRINT
: PRINT "This test will destroy all data on the tape"
: PRINT
: PRINT "Press SF Key 00 to start long test"
0045 PRINT "Press SF Key 01 to start short test"
: STOP
: GOTO 10
0050 DEFFN'01
: M=100
: GOTO 100
0090 DEFFN'00
0100 PRINT HEX(03);"2229 Write/Read Diagnostic"
: P=1
0110 FOR B=1TO 256
: STR(A1$(),B,1)=BIN(B-1)
: NEXT B
: FOR B=1TO 256STEP 15
: STR(A1$(),B,2)=HEX(AA55)
: NEXT B
: FOR B=4TO 256STEP 12
: STR(A1$(),B,2)=HEX(FF00)
: NEXT B
: A1$()=A1$()&STR(A1$())
0115 GOSUB '102
: PRINT AT(0,40);"Tape drive PROM rev";VAL(STR(S$,5,1))
0120 REM % LOAD
0130 PRINT AT(2,0,);"Loading Tape ... "
: $GIO#4(4404 8701,R$)
: E=VAL(STR(R$,1,1))
: IF E=0THEN 140
: PRINT AT(8,0,);"ERROR ";E;" ON TAPE LOAD"
: STOP #
0140 PRINT AT(2,0,);
: PRINTUSING 190
: M$="Write"
0150 B$()=A1$()
: REM SAVE START OF A1$()
: W,R=0
0160 W=W+1
: REM # OF WRITES
: B=INT(RND(1)*16383)+2
: IF W>MTHEN 240
0170 C1(W)=B
: REM SAVE LENGTH OF THIS RECORD
0180 REM WRITE
: PRINT HEX(06); AT(3,0,80);
: PRINTUSING 200,P,M$,W,B;
: PRINT HEXOF(STR(A1$(),1,8))
0190 %Tape Pass Mode Record Bytes Data
0200 % ### ##### #### ##### ############
0210 STR(R$,3,2)=BIN(B,2)
: $GIO#4(440D 4230 4240 8701,R$)
: E=VAL(STR(R$,1,1))
: IF E=5THEN 240
: IF E=0THEN 220
: PRINT AT(8,0);"ERROR ";E;" ON TAPE WRITE"
: STOP
0220 $GIO#4(1300 1800 A000,R$)STR(A1$(),1,VAL(STR(R$,3,2),2))
0230 ROTATEC(STR(A1$()),(MOD(B,9)))
: GOTO 160
0240 REM GET WRITE RESULTS
: $GIO#4(4420 8701 8702,R$)
: W=W-1-VAL(STR(R$,2,1))
: E=VAL(STR(R$,1,1))
: IF E=0THEN 250
: IF E=2THEN 250
: PRINT AT(8,0);"ERROR ";E;" ON TAPE WRITE"
: STOP
0250 REM LOAD TAPE
: PRINT AT(2,0,);"Loading Tape ..."
: $GIO#4(4404 8701,R$)
: E=VAL(STR(R$,1,1))
: IF E=0THEN 260
: PRINT "ERROR ";E;" ON TAPE LOAD"
: STOP
0260 REM READ ALL RECORDS
: R=1
: M$="Read"
: PRINT AT(2,0,)
: PRINTUSING 190
0270 B=0
: $GIO#4(440C 8701,R$)
: E=VAL(STR(R$,1,1))
: IF E=2THEN STOP "UNEXPECTED END OF TAPE ON READ"
: IF E=0THEN 280
: PRINT AT(8,0);"ERROR ";E;" ON READ"
: STOP
0280 $GIO#4(8703 8704,R$)
: B=VAL(STR(R$,3,2),2)
: IF B>=2AND B<=16384THEN 285
: PRINT AT(8,0);"ILLEGAL RECORD LENGTH"
: STOP
0285 $GIO#4(1800 C340,R$)STR(A1$(),1,VAL(STR(R$,3,2),2))
0290 REM READ
: PRINT HEX(06); AT(3,0,80);
: PRINTUSING 200,P,M$,R,B;
: PRINT HEXOF(STR(A1$(),1,8))
0300 IF B=C1(R)THEN 310
: PRINT AT(8,0);"The number of bytes read is not equal to the number of byt
es written"
: STOP #
0310 IF STR(A1$(),1,B)=STR(B$(),1,B)THEN 320
: PRINT AT(8,0);"Data Compare Error"
: STOP #
0320 R=R+1
: IF R>WTHEN 330
: REM JUMP IF DONE
: ROTATEC(STR(B$()),(MOD(B,9)))
: GOTO 270
0330 REM
0340 P=P+1
0350 GOTO 120
0370 STOP
5210 DEFFN'102
: REM % BOARD STATUS
: S$=ALL(20)
: R$=ALL(01)
: $GIO#4(4402 8701 1800 C340,R$)STR(S$,1,VAL(STR(R$,1,1)))
: RETURN