Listing of file='STARTPLL' on disk='vmedia/mvp-diag-2.6.2.wvd.zip'
# Sector 1746, program filename = 'STARTPLL'
0010 REM LVPPHASE
0020 REM PROGRAM NAME - LVP DISK PHASE LOCK LOOP PROGRAM
0030 REM PROGRAMMER NAME - JERRY SEVIGNY x4876
0040 REM DATE OF FIRST CODE - 10 NOVEMBER 1980 (REV. 1.0)
0050 REM DATE OF LATEST UPDATE - 06 FEBURARY 1982 (REV. 2.0)
0060 REM Add special function key for write floppy
0070 REM inner tracks.
0075 REM DATE OF LATEST UPDATE - 12 DECEMBER 1983 (REV. 83C2)
0076 REM Added alternate sector read function
0080 REM
0090 REM PURPOSE -
0100 REM To assist the technician in adjusting the VCO for either the
0110 REM the DSDD floppy or the Winchester fixed drive.
0120 REM
0130 REM
0140 REM PROCEDURE -
0150 REM %
0160 DIM T(2,6),K$1,C$(16),G1$15,G2$24,B$(16)
: GOTO 180
0165 KEYIN K$,,170
: RETURN
0170 IF K$=HEX(10) THEN 180
: K$="0"
: RETURN
0180 DEFFN' 16
: RETURN CLEAR ALL
0185 $GIO/010,(4501)
0190 SELECT #1/310, #2/B10, PRINT 005(80)
: PRINT HEX(0306);TAB(24);"LVP PHASE LOCK LOOP PROGRAM"; AT(2,24);"KEY SF'1
6 TO RETURN TO MENU";AT(7,24);"SF'0 - FORMAT DISK PLATTERS"; AT(8,24);"SF
'1 - ADJUST FLOPPY";AT(9,24);"SF'2 - ADJUST WINCHESTER"
0200 PRINT AT(10,24);"SF'3 - WRITE FLOPPY INNER TRACKS WITH HEX(DB6DB6)";AT
(11,24);"SF'4 - WRITE FLOPPY INNER TRACKS WITH HEX(015AA5)";AT(12,24);"SF
'5 - WRITE FLOPPY INNER TRACKS WITH HEX(DB6DB6)";AT(13,31);"AND HEX(015AA
5)"
0210 PRINT AT(14,24);"SF'6 - WRITE WINCHESTER INNER TRACKS WITH HEX(DB6DB6)";A
T(15,31);"AND HEX(015AA5)"
: PRINT AT(16,24);"SF'7 - VERIFY WINCHESTER SUPRESSING RETRIES"
0215 PRINT AT(17,24);"SF'8 - ALTERNATE SECTOR TEST"
0220 PRINT AT(18,0);
: STOP "KEY DESIRED SPECIAL FUNCTION KEY"
: GOTO 180
0230 DEFFN'0
: REM % FORMAT PLATTERS
: PRINT HEX(06);AT(5,0,)
0240 PRINT AT(5,0,);"FORMAT WHICH PLATTER? (F - FIXED OR R - REMOVABLE) "
;
: K$=" "
: GOSUB 165
: Z$=K$
: PRINT K$;
: IF K$ <> "F" AND K$ <> "R" THEN 240
: PRINT AT(12,24); "ARE YOU SURE";
: GOSUB 165
: IF K$="y" OR K$="Y" THEN 250
: PRINT AT(12,24,50)
: GOTO 240
0250 IF Z$="R" THEN 300
0260 PRINT HEX(03);AT(12,24);"FORMATTING THE FIXED DRIVE"
: $FORMAT DISK T#1,
0270 DEFFN'6
: $GIO #1, (4501)
0280 PRINT HEX(03);AT(12,24);"DETERMINING DISK SIZE"
: $GIO #1, (0600 0700 70A0 68D0 7040 6820 6816 4000 8705 1A00 C340, G1$) G1
$;STR(G2$,,VAL(STR(G1$,5,1)))
: X,X1=VAL(STR(G2$,6,2),2)*256+VAL(STR(G2$,8,1))
0285 REM GIO SEQUENCE TO INHIBIT RETRIES AND ADDRESS CHECKING
: $OPEN #1
: $GIO #1, (70A0 4000 8700 7040 4020 8700 4017 8700 4000)
: $CLOSE#1
0290 PRINT HEX(03);AT(12,5);"WRITING WORST CASE PATTERN FROM LOCATION ";X1;
"TO LOCATION";X1+31
: C$() = HEX(DB6DB6) & STR(C$())
: B$()=HEX(015AA5)&STR(B$())
: FOR I = X1 TO X1+31 STEP 2
: DATA SAVE BA T#1,(I) C$()
: DATA SAVE BA T#1,(I+1) B$()
: NEXT I
: RETURN CLEAR
: GOTO 180
0300 PRINT HEX(03);AT(12,24);"FORMATTING THE FLOPPY DRIVE"
: $FORMAT DISK T#2,
0310 DEFFN'3
: PRINT HEX(06)
: PRINT AT(4,0,);AT(12,5);"CAUTION DO NOT WRITE ON THE OPERATING SYSTEM D
ISKETTE ";AT(13,25);"KEY RETURN TO CONTINUE"
: GOSUB 165
: IF K$<>HEX(0D) THEN 310
0320 PRINT HEX(03)
: $GIO #2, (0600 0700 70A0 68D0 7040 6830 6816 4000 8705 1A00 C340, G1$) G1
$;STR(G2$,,VAL(STR(G1$,5,1)))
: X=VAL(STR(G2$,6,2),2)*256+VAL(STR(G2$,8,1))+104
: X1 = INT((X+26)/77)
: X1 = X - 2*X1
0330 REM GIO SEQUENCE TO INHIBIT RETRIES AND ADDRESS CHECKING
: $OPEN #2
: $GIO #2, (70A0 4000 8700 7040 4020 8700 4017 8700 4000)
: $CLOSE#2
0340 PRINT HEX(03);AT(12,5);"WRITING HEX(DB6DB6) DATA PATTERN FROM LOCATION
";X1;"TO LOCATION";X-1
: C$() = HEX(DB6DB6) & STR(C$())
: FOR I = X1 TO X-1
: DATA SAVE BA T#2,(I) C$()
: NEXT I
: RETURN CLEAR
: GOTO 180
0350 REM % ADJUST FLOPPY
0360 DEFFN'1
0370 PRINT AT(5,0,);HEX(06);"MOUNT TEST PLATTER IN FLOPPY"
: PRINT "KEY RETURN TO CONTINUE"
: GOSUB 165
: IF K$<> HEX(0D)THEN 370
: PRINT AT(5,0,);"ADJUSTING FLOPPY"
0380 REM GIO SEQUENCE TO INHIBIT RETRIES AND ADDRESS CHECKING
: $OPEN #2
: $GIO #2, (70A0 4000 8700 7040 4020 8700 4017 8700 4000)
: $CLOSE#2
0390 GOSUB '32(3874)
: GOSUB '32(3901)
: GOSUB '32(3927)
: GOSUB '32(3953)
: GOTO 390
0400 DEFFN'32(Z)
: VERIFY T#2,(Z,Z+24)
: PRINT ".";
: KEYIN K$,410,420
0410 RETURN
0420 IF K$ <> HEX(10) THEN 410
: RETURN CLEAR
: GOTO 180
0430 REM % ADJUST WINCHESTER
0440 DEFFN'2
: PRINT AT(5,0,);HEX(06);"KEY RETURN WHEN READY TO ADJUST WINCHESTER"
: GOSUB 165
: IF K$<> HEX(0D) THEN 440
: PRINT AT(5,0,);"ADJUSTING WINCHESTER"
0460 REM %DEFINE SIZE OF WINCHESTER
: $GIO #1, (0600 0700 70A0 68D0 7040 6820 6816 4000 8705 1A00 C340, G1$) G1
$;STR(G2$,,VAL(STR(G1$,5,1)))
0470 X=VAL(STR(G2$,6,2),2)*256+VAL(STR(G2$,8,1))
0475 REM GIO SEQUENCE TO INHIBIT RETRIES AND ADDRESS CHECKING
: $OPEN #1
: $GIO #1, (70A0 4000 8700 7040 4020 8700 4017 8700 4000)
: $CLOSE#1
0480 GOSUB ' 33( X,32)
: GOTO 480
0490 DEFFN'33(Z,Z1)
: VERIFY T#1,(Z,Z+Z1-1)
: PRINT ".";
: KEYIN K$,500,510
0500 RETURN
0510 IF K$ <> HEX(10) THEN 500
: RETURN CLEAR
: GOTO 180
0520 DEFFN'4
: PRINT HEX(06);AT(4,0,); AT(12,5);"CAUTION DO NOT WRITE ON OPERATING S
YSTEM DISKETTE";AT(13,25);"KEY RETURN TO CONTINUE"
: GOSUB 165
: IF K$<> HEX(0D) THEN 520
: PRINT HEX(03)
0525 PRINT AT(12,5);"WRITING HEX(015AA5) DATA PATTERN FROM LOCATION 3874 TO LO
CATION 3977"
: $OPEN #2
: $GIO #2,(70A0 4000 8700 7040 4020 8700 4017 8700 4000)
: $CLOSE#2
: C$()=HEX(015AA5)&STR(C$())
: FOR I=3874 TO 3977
: DATA SAVE BA T#2,(I) C$()
: NEXT I
: RETURN CLEAR
: GOTO 180
0530 DEFFN'5
: PRINT HEX(06);AT(4,0,); AT(12,5);"CAUTION DO NOT WRITE ON OPERATING
SYSTEM DISKETTE";AT(13,25);"KEY RETURN TO CONTINUE"
: GOSUB 165
: IF K$<> HEX(0D) THEN 530
0535 PRINT HEX(03);AT(12,0);"WRITING HEX(DB6DB6) AND HEX(015AA5) DATA PATTERN
FROM LOCATION 3874 TO 3977"
: $OPEN #2
: $GIO #2,(70A0 4000 8700 7040 4020 8700 4017 8700 4000)
: $CLOSE#2
: C$()=HEX(DB6DB6)&STR(C$())
: B$()=HEX(015AA5)&STR(B$())
: FOR I=3874 TO 3977 STEP 2
: DATA SAVE BA T#2,(I) C$()
0540 DATA SAVE BA T#2,(I+1) B$()
: NEXT I
: RETURN CLEAR
: GOTO 180
0550 DEFFN'7
: PRINT AT(5,0,);HEX(06);"VERIFYING WINCHESTER SUPRESSING RETRIES"
: $GIO #1,(0600 0700 70A0 68D0 7040 6820 6816 4000 8705 1A00 C340,G1$) G1$;
STR(G2$,,VAL(STR(G1$,5,1)))
: X=VAL(STR(G2$,6,2),2)*256+VAL(STR(G2$,8,1))
: $OPEN #1
: $GIO #1,(70A0 4000 8700 7040 4020 8700 4017 8700 4000)
: $CLOSE#1
0560 GOSUB '33(0,X)
: GOTO 560
0570 RETURN
0590 DEFFN'8
0600 REM %"\A0\A0\A0\A0\A0\A0\A0\A0" QUANTUM UTILITY
0610 REM AUTHOR - Roger M. Kirk Jr. - 07/28/81
0620 REM REVISION - Roger M. Kirk Jr. - 07/29/81 - 10;30
0630 REM LAST REVISION - Max Blomme. - 01/22/82 - 1615
0640 REM
0650 REM *********************************************************************
0660 REM READS ALTERNATE SECTOR MAP AND DISPLAYS BAD SECTORS FOR QUANTUM CORP.
0670 REM EVALUATION
0680 REM *********************************************************************
0690 REM
0700 DIM A$3
: REM SELECT #1 VARIABLE
0710 DIM A1$2
: REM MATSEARCH LOCATOR VARIABLE
0720 DIM G$10
: REM $GIO ARG 2
0730 DIM K$1
: REM KEYIN VARIABLE
0740 DIM A$(86)3
: REM READ ARRAY FOR ALTERNATE MAP
0750 DIM A1$(86)2,A2$(86)2
: REM WORK AND LOCATOR ARRAY FOR SORTING A$()
0760 DIM E$(20)2
: REM STATUS AND ERROR INFO
0770 I=0
: REM POINTER FOR SORTED ARRAY
0780 J=0
: REM FOR/NEXT COUNTER VARIABLE
0790 L=0
: REM LINE COUNTER FOR SCREEN PRINT
0800 L1=15
: REM SIZE OF LIST IN LINES
0810 O=0
: REM OFFSET IF NUMBERING CYLINDERS AND HEADS SHOULD BESIRED TO START AT OT
HER THAN THE TRADITIONAL 0 (READ ZER0).
0820 O1=1
: REM OFFSET IF NUMBERING BYTES IN THE SECCTOR SHOULD BESIRED TO START AT O
THER THAN THE TRADITIONAL 1.
0830 O2=0
: REM PLATTER X 4 = # OF HEADS OFFSET FOR SECOND LOGICAL PLATTER.
0840 S=0
: REM BINARY SECTOR NUMBERS ARE CONVERTED TO NUMERIC IN THIS VARIABLE
0850 A$=" "
: PRINT HEX(0D03);AT(2,15);"WINCHESTER ALTERNATE SECTOR MAP DISPLAY";AT(3,2
0);"KEY RETURN FOR MAIN MENU";AT(7,0);
0870 LINPUT "DRIVE ADDRESS (D11,D12,D21,D22,D31 or D32)",-A$
0875 IF A$=" " THEN 185
0880 MAT SEARCH "D11 D12 D21 D22 D31 D32 ",=STR(A$) TO A1$ STEP 4
0890 IF A1$<>HEX(0000) THEN 910
0900 PRINT HEX(07);"ILLEGAL DEVICE ADDRESS - TRY AGAIN"
: FOR J = 1 TO 6000
: NEXT J
: GOTO 840
0910 SELECT #1<A$>
0920 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
0930 $GIO ENABLE READING EXTRA SECTORS #1(4501 0600 0700 70A0 4002 88D0 7040 6
A10 6817 4000,G$)
0940 PRINT HEX(0D0306);AT(0,23);BOX(1,32);AT(0,25);"ALTERNATE MAP FOR PLATTER
";A$
0950 DATA LOAD BA T#1, (S) A$()
0960 PRINT AT(2,0);BOX(1,14);BOX(1,79);
0970 PRINTUSING 1010
0980 PRINT AT(3,0);BOX(1,79);BOX(1,14);
0990 PRINT AT(3,0);BOX(0,-14)
1000 PRINTUSING 1020,"#"
1010 % WANG WINCHESTER
1020 % SECTOR # CYLINDER HEAD SECTOR START BYTE END
BYTE
1030 % BYTE BYTE
1040 % ##### ### # ## ##### ##
###
1050 PRINT
1060 MAT SORT A$() TO A1$(),A2$()
1070 L=0
: REM INITIALIZE LINE COUNTER
1080 O2=(POS("12"=STR(A$,3,1))-1)*4
1090 FOR J = 1 TO 85
1100 I=VAL(A2$(J),2)
1110 IF STR(A$(I),1,1)=HEX(FF) THEN GOTO 1210
1120 IF L<L1 THEN 1150
1130 PRINT AT(23,25,54);"HIT ANY KEY FOR MORE OF THE LIST";
1140 GOSUB 165
: L=0
1150 IF L>0 THEN 1170
1160 PRINT HEX(06);AT(5,0,L1*80);
1170 S=VAL(STR(A$(I),2,2),2)
1180 IF STR(E$(),7,2)=HEX(FF80)OR STR(E$(),7,2)=HEX(7F80)THEN PRINTUSING 1040,
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 1040,S,O+INT(S/64),O+O2+INT((MO
D(S,64))/32),O+MOD(S,32),O1+((MOD(S,32))*318),O1+((MOD(S,32))*318)+317
1190 IF STR(E$(),7,2)=HEX(1FC0)THEN PRINTUSING 1040,S,O+INT(S/32),O+O2+INT((MO
D(S,32))/32),O+MOD(S,32),O1+((MOD(S,32))*318),O1+((MOD(S,32))*318)+317
1200 L=L+1
1210 NEXT J
1220 PRINT AT(23,18,61);"END OF THE LIST - HIT ANY KEY TO RUN AGAIN";
1230 GOSUB 165
: GOTO 850