image of READY prompt

Wang2200.org

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