Listing of file='ALTHACK3' on disk='vmedia/mvp-diag-2.6.2.wvd.zip'
# Sector 2542, program filename = 'ALTHACK3' 0010 REM "\A0\A0\A0\A0\A0\A0\A0\A0" QUANTUM UTILITY 0020 REM AUTHOR - Roger M. Kirk Jr. - 07/28/81 0030 REM REVISION - Roger M. Kirk Jr. - 07/29/81 - 10;30 0035 REM LAST REVISION - Max Blomme. - 01/22/82 - 1615 0040 REM 0050 REM ********************************************************************* 0060 REM READS ALTERNATE SECTOR MAP AND DISPLAYS BAD SECTORS FOR QUANTUM CORP. 0070 REM EVALUATION 0080 REM ********************************************************************* 0090 REM 0100 DIM A$3 : REM SELECT #1 VARIABLE 0110 DIM A1$2 : REM MATSEARCH LOCATOR VARIABLE 0120 DIM G$10 : REM $GIO ARG 2 0130 DIM K$1 : REM KEYIN VARIABLE 0140 DIM A$(86)3 : REM READ ARRAY FOR ALTERNATE MAP 0150 DIM A1$(86)2,A2$(86)2 : REM WORK AND LOCATOR ARRAY FOR SORTING A$() 0155 DIM E$(20)2 : REM STATUS AND ERROR INFO 0160 I=0 : REM POINTER FOR SORTED ARRAY 0170 J=0 : REM FOR/NEXT COUNTER VARIABLE 0180 L=0 : REM LINE COUNTER FOR SCREEN PRINT 0190 L1=15 : REM SIZE OF LIST IN LINES 0200 O=0 : REM OFFSET IF NUMBERING CYLINDERS AND HEADS SHOULD BESIRED TO START AT OT HER THAN THE TRADITIONAL 0 (READ ZER0). 0210 O1=1 : REM OFFSET IF NUMBERING BYTES IN THE SECCTOR SHOULD BESIRED TO START AT O THER THAN THE TRADITIONAL 1. 0220 O2=0 : REM PLATTER X 4 = # OF HEADS OFFSET FOR SECOND LOGICAL PLATTER. 0230 S=0 : REM BINARY SECTOR NUMBERS ARE CONVERTED TO NUMERIC IN THIS VARIABLE 0240 PRINT HEX(0D03);AT(2,0);"WINCHESTER ALTERNATE SECTOR MAP DISPLAY";AT(4,0) ; 0250 A$="D" 0260 LINPUT "DRIVE ADDRESS ",-A$ 0270 MAT SEARCH "D11 D12 D21 D22 D31 D32 ",=STR(A$) TO A1$ STEP 4 0280 IF A1$<>HEX(0000) THEN 300 0290 PRINT HEX(07);"ILLEGAL DEVICE ADDRESS - TRY AGAIN" : FOR J = 1 TO 6000 : NEXT J : GOTO 240 0300 SELECT #1<A$> 0305 G$=ALL(01) : IF STR(A$,3,1)="2"THEN STR(G$,,1)=HEX(21) : ELSE STR(G$,,1)=HEX(20) : $GIO GET NUMBER OF SECTORS AND CHECK IF LVP #1(4401 1020 70A0 4002 88D0 7 040 6A10 6816 4000 8705 1A00 C340,G$)G$;STR(E$(),,VAL(STR(G$,5,1))) : IF STR(E$(),,2)<>"18"THEN STOP "NOT AN LVP" : S=VAL(STR(E$(),7,2),2)+32 0310 $GIO ENABLE READING EXTRA SECTORS #1(4501 0600 0700 70A0 4002 88D0 7040 6 A10 6817 4000,G$) 0320 PRINT HEX(0D03);AT(0,23);BOX(1,32);AT(0,25);"ALTERNATE MAP FOR PLATTER "; A$ 0330 DATA LOAD BA T#1, (S) A$() 0340 PRINT AT(2,0);BOX(1,14);BOX(1,79); 0350 PRINTUSING 380 0360 PRINT AT(3,0);BOX(1,79);BOX(1,14); 0365 PRINT AT(3,0);BOX(0,-14) 0370 PRINTUSING 390,"#" 0380 % WANG WINCHESTER 0390 % SECTOR # CYLINDER HEAD SECTOR START BYTE END BYTE 0400 % BYTE BYTE 0410 % ##### ### # ## ##### ## ### 0420 PRINT 0430 MAT SORT A$() TO A1$(),A2$() 0440 L=0 : REM INITIALIZE LINE COUNTER 0450 O2=(POS("12"=STR(A$,3,1))-1)*4 0460 FOR J = 1 TO 85 0470 I=VAL(A2$(J),2) 0480 IF STR(A$(I),1,1)=HEX(FF) THEN GOTO 570 0490 IF L<L1 THEN 520 0500 PRINT AT(23,25,54);"HIT ANY KEY FOR MORE OF THE LIST"; 0510 KEYIN K$ : L=0 0520 IF L>0 THEN 540 0530 PRINT HEX(06);AT(5,0,L1*80); 0540 S=VAL(STR(A$(I),2,2),2) 0550 IF STR(E$(),7,2)=HEX(FF80)OR STR(E$(),7,2)=HEX(7F80)THEN PRINTUSING 410,S ,O+INT(S/128),O+O2+INT((MOD(S,128))/32),O+MOD(S,32),O1+((MOD(S,32))*318), O1+((MOD(S,32))*318)+317 : IF STR(E$(),7,2)=HEX(3FC0)THEN PRINTUSING 410,S,O+INT(S/64),O+O2+INT((MOD (S,64))/32),O+MOD(S,32),O1+((MOD(S,32))*318),O1+((MOD(S,32))*318)+317 0555 IF STR(E$(),7,2)=HEX(1FC0)THEN PRINTUSING 410,S,O+INT(S/32),O+O2+INT((MOD (S,32))/32),O+MOD(S,32),O1+((MOD(S,32))*318),O1+((MOD(S,32))*318)+317 0560 L=L+1 0570 NEXT J 0580 PRINT AT(23,18,61);"END OF THE LIST - HIT ANY KEY TO RUN AGAIN"; 0590 KEYIN K$ : GOTO 240