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