Listing of file='PLL' on disk='vmedia/cs386_host_1.2.wvd.zip'
# Sector 291, program filename = 'PLL' 0010 REM STARTPL1 0020 REM PROGRAM NAME - 2200 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. 0080 REM DATE OF LATEST UPDATE - 12 DECEMBER 1983 (REV. 83C2) 0090 REM Added alternate sector read function 0100 REM DATE OF LATEST UPDATE - 12 SEPTEMBER 1984 - RMKJR 0110 REM Added disable retries/extra sectors to 0120 REM allow 1 board DPU to Format all sectors. 0125 REM Also added drive select option. 0130 REM 0140 REM PURPOSE - 0150 REM To assist the technician in adjusting the VCO for either the 0160 REM the DSDD floppy or the Winchester fixed drive. 0170 REM 0180 REM 0190 REM PROCEDURE - 0200 REM % 0210 DIM T(2,6),K$1,C$(16),G1$15,G2$24,B$(16),A$3,A1$2,A3$3,R,R$,C : R=5 : C=18 : REM % REV. NUMBER : R$="84A5" 0220 PRINT HEX(0306);AT(1,18); " 2200 PHASE LOCK LOOP PROGRAM Rev. ";R $;""; AT(2,17);BOX (0,40); AT(3,31);"SF'31 TO EXIT"; AT(7,0) 0230 A$="310" : A3$="B10" : LINPUT "Primary DPU address (310,320,330,340,D11,D21,D31 or D41)",?-A$ : MAT SEARCH "310 320 330 340 D11 D21 D31 D41",=STR(A$) TO A1$ STEP 4 : IF A1$=HEX(0000) THEN 220 : SELECT #1<A$> : STR(A3$,1,3)="B"&STR(A$,2,1)&"0" : SELECT #2<A3$> : GOTO 280 0240 PRINT AT(3,24);"SF'16 - TO RETURN TO MENU" 0245 KEYIN K$,,250 : RETURN 0250 IF K$=HEX(10) THEN 280 : K$="0" : RETURN 0260 DEFFN '31 : REM % Reload menu : LOAD T"@MENU" : ERRORX=ERR : PRINT HEX(03); AT(12,18); ""; : IF X=(82) THEN PRINT " NO PREVIOUS MENU IS AVAILABLE "; : ELSE PRINT " DISK ERROR "; X; " " 0270 GOTO 350 0280 DEFFN' 16 : RETURN CLEAR ALL 0290 $GIO #1,(4501) 0300 PRINT HEX(0306);AT(1,18);" 2200 PHASE LOCK LOOP PROGRAM Rev. ";R$ ;AT(2,17);BOX(0,40); HEX(0F); AT(R,C);"SF'0 - FORMAT DISK PLATTERS"; AT( R+1,C);"SF'1 - ADJUST FLOPPY";AT(R+2,C);"SF'2 - ADJUST WINCHESTER" 0310 PRINT AT(R+3,C);"SF'3 - WRITE FLOPPY INNER TRACKS WITH HEX(DB6DB6)";AT (R+4,C);"SF'4 - WRITE FLOPPY INNER TRACKS WITH HEX(015AA5)";AT(R+5,C);"SF '5 - WRITE FLOPPY INNER TRACKS WITH HEX(DB6DB6)"; AT(R+6,C+7);"AND HEX(01 5AA5)" 0320 PRINT AT(R+7,C);"SF'6 - WRITE WINCHESTER INNER TRACKS WITH HEX(DB6DB6)";A T(R+8,C+7);"AND HEX(015AA5)" : PRINT AT(R+9,C);"SF'7 - VERIFY WINCHESTER SUPRESSING RETRIES" 0330 PRINT AT(R+10,C);"SF'8 - ALTERNATE SECTOR TEST" 0340 PRINT AT(R+12,C-1);"SF'16 - RETURN TO THIS MENU";AT(R+13,C-1);"SF'31 - EXIT";AT(21,0); 0350 K$=" " : LINPUT "KEY DESIRED SPECIAL FUNCTION KEY",?K$ : GOTO 280 0360 DEFFN'0 : REM % FORMAT PLATTERS : PRINT HEX(06);AT(5,0,) 0370 PRINT AT(5,0,);"FORMAT WHICH PLATTER? (F - FIXED OR R - REMOVABLE) " ; : K$=" " : GOSUB 240 : Z$=K$ : PRINT K$; : IF K$ <> "F" AND K$ <> "R" THEN 370 : PRINT AT(12,24); "ARE YOU SURE"; : GOSUB 240 : IF K$="y" OR K$="Y" THEN 380 : PRINT AT(12,24,50) : GOTO 370 0380 REM GIO SEQUENCE TO INHIBIT RETRIES AND ADDRESS CHECKING : $OPEN #1 : $GIO #1, (70A0 4000 8700 7040 4020 8700 4017 8700 4000) : $CLOSE#1 0390 IF Z$="R" THEN 450 0400 PRINT HEX(03);AT(12,24);"FORMATTING THE FIXED DRIVE" : $FORMAT DISK T#1, 0410 DEFFN'6 : $GIO #1, (4501) 0420 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)) 0430 REM GIO SEQUENCE TO INHIBIT RETRIES AND ADDRESS CHECKING : $OPEN #1 : $GIO #1, (70A0 4000 8700 7040 4020 8700 4017 8700 4000) : $CLOSE#1 0440 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 280 0450 PRINT HEX(03);AT(12,24);"FORMATTING THE FLOPPY DRIVE" : $FORMAT DISK T#2, : $GIO#2(4501) 0460 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 240 : IF K$<>HEX(0D) THEN 460 0470 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 0480 REM GIO SEQUENCE TO INHIBIT RETRIES AND ADDRESS CHECKING : $OPEN #2 : $GIO #2, (70A0 4000 8700 7040 4020 8700 4017 8700 4000) : $CLOSE#2 0490 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 280 0500 REM % ADJUST FLOPPY 0510 DEFFN'1 0520 PRINT AT(5,0,);HEX(06);"MOUNT TEST PLATTER IN FLOPPY" : PRINT "KEY RETURN TO CONTINUE" : GOSUB 240 : IF K$<> HEX(0D)THEN 520 : PRINT AT(5,0,);"ADJUSTING FLOPPY" 0530 REM GIO SEQUENCE TO INHIBIT RETRIES AND ADDRESS CHECKING : $OPEN #2 : $GIO #2, (70A0 4000 8700 7040 4020 8700 4017 8700 4000) : $CLOSE#2 0540 GOSUB '32(3874) : GOSUB '32(3901) : GOSUB '32(3927) : GOSUB '32(3953) : GOTO 540 0550 DEFFN'32(Z) : VERIFY T#2,(Z,Z+24) : PRINT "."; : KEYIN K$,560,570 0560 RETURN 0570 IF K$ <> HEX(10) THEN 560 : RETURN CLEAR : GOTO 280 0580 REM % ADJUST WINCHESTER 0590 DEFFN'2 : PRINT AT(5,0,);HEX(06);"KEY RETURN WHEN READY TO ADJUST WINCHESTER" : GOSUB 240 : IF K$<> HEX(0D) THEN 590 : PRINT AT(5,0,);"ADJUSTING WINCHESTER" 0600 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))) 0610 X=VAL(STR(G2$,6,2),2)*256+VAL(STR(G2$,8,1)) 0620 REM GIO SEQUENCE TO INHIBIT RETRIES AND ADDRESS CHECKING : $OPEN #1 : $GIO #1, (70A0 4000 8700 7040 4020 8700 4017 8700 4000) : $CLOSE#1 0630 GOSUB ' 33( X,32) : GOTO 630 0640 DEFFN'33(Z,Z1) : VERIFY T#1,(Z,Z+Z1-1) : PRINT "."; : KEYIN K$,650,660 0650 RETURN 0660 IF K$ <> HEX(10) THEN 650 : RETURN CLEAR : GOTO 280 0670 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 240 : IF K$<> HEX(0D) THEN 670 : PRINT HEX(03) 0680 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 280 0690 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 240 : IF K$<> HEX(0D) THEN 690 0700 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$() 0710 DATA SAVE BA T#2,(I+1) B$() : NEXT I : RETURN CLEAR : GOTO 280 0720 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 0730 GOSUB '33(0,X) : GOTO 730 0740 RETURN 0750 DEFFN'8 0760 REM %"\A0\A0\A0\A0\A0\A0\A0\A0" QUANTUM UTILITY 0770 REM AUTHOR - Roger M. Kirk Jr. - 07/28/81 0780 REM REVISION - Roger M. Kirk Jr. - 07/29/81 - 10;30 0790 REM LAST REVISION - Max Blomme. - 01/22/82 - 1615 0800 REM 0810 REM ********************************************************************* 0820 REM READS ALTERNATE SECTOR MAP AND DISPLAYS BAD SECTORS FOR QUANTUM CORP. 0830 REM EVALUATION 0840 REM ********************************************************************* 0850 REM 0860 DIM A$3 : REM SELECT #1 VARIABLE 0870 DIM A1$2 : REM MATSEARCH LOCATOR VARIABLE 0880 DIM G$10 : REM $GIO ARG 2 0890 DIM K$1 : REM KEYIN VARIABLE 0900 DIM A$(86)3 : REM READ ARRAY FOR ALTERNATE MAP 0910 DIM A1$(86)2,A2$(86)2 : REM WORK AND LOCATOR ARRAY FOR SORTING A$() 0920 DIM E$(20)2 : REM STATUS AND ERROR INFO 0930 I=0 : REM POINTER FOR SORTED ARRAY 0940 J=0 : REM FOR/NEXT COUNTER VARIABLE 0950 L=0 : REM LINE COUNTER FOR SCREEN PRINT 0960 L1=15 : REM SIZE OF LIST IN LINES 0970 O=0 : REM OFFSET IF NUMBERING CYLINDERS AND HEADS SHOULD BESIRED TO START AT OT HER THAN THE TRADITIONAL 0 (READ ZER0). 0980 O1=1 : REM OFFSET IF NUMBERING BYTES IN THE SECCTOR SHOULD BESIRED TO START AT O THER THAN THE TRADITIONAL 1. 0990 O2=0 : REM PLATTER X 4 = # OF HEADS OFFSET FOR SECOND LOGICAL PLATTER. 1000 S=0 : REM BINARY SECTOR NUMBERS ARE CONVERTED TO NUMERIC IN THIS VARIABLE 1010 PRINT HEX(0306);AT(1,18); " 2200 PHASE LOCK LOOP PROGRAM Rev. ";R$;" "; AT(2,17);BOX (0,40);AT(3,21);"SF'16 - TO RETURN TO MAIN MENU"; AT(7,0 ); : A$="D"&STR(A3$,2,1)&"1" 1020 LINPUT "ALTERNATE SECTOR MAP OF DRIVE (D11,D12,D21,D22,D31,D32,D41 or D42 )",?-A$ 1030 IF A$=" " THEN 290 1040 MAT SEARCH "D11 D12 D21 D22 D31 D32 ",=STR(A$) TO A1$ STEP 4 1050 IF A1$<>HEX(0000) THEN 1070 1060 PRINT HEX(07);"ILLEGAL DEVICE ADDRESS - TRY AGAIN" : FOR J = 1 TO 6000 : NEXT J : GOTO 1000 1070 SELECT #1<A$> 1080 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 1090 $GIO ENABLE READING EXTRA SECTORS #1(4501 0600 0700 70A0 4002 88D0 7040 6 A10 6817 4000,G$) 1100 PRINT HEX(0D0306);AT(0,23);BOX(1,32);AT(0,25);"ALTERNATE MAP FOR PLATTER ";A$ 1110 DATA LOAD BA T#1, (S) A$() 1120 PRINT AT(2,0);BOX(1,14);BOX(1,79); 1130 PRINTUSING 1170 1140 PRINT AT(3,0);BOX(1,79);BOX(1,14); 1150 PRINT AT(3,0);BOX(0,-14) 1160 PRINTUSING 1180,"#" 1170 % WANG WINCHESTER 1180 % SECTOR # CYLINDER HEAD SECTOR START BYTE END BYTE 1190 % BYTE BYTE 1200 % ##### ### # ## ##### ## ### 1210 PRINT 1220 MAT SORT A$() TO A1$(),A2$() 1230 L=0 : REM INITIALIZE LINE COUNTER 1240 O2=(POS("12"=STR(A$,3,1))-1)*4 1250 FOR J = 1 TO 85 1260 I=VAL(A2$(J),2) 1270 IF STR(A$(I),1,1)=HEX(FF) THEN GOTO 1370 1280 IF L<L1 THEN 1310 1290 PRINT AT(23,20,54);"Hit ANY KEY to continue the list or SF'16 for the mai n menu"; 1300 GOSUB 240 : L=0 1310 IF L>0 THEN 1330 1320 PRINT HEX(06);AT(5,0,L1*80); 1330 S=VAL(STR(A$(I),2,2),2) 1340 IF STR(E$(),7,2)=HEX(FF80)OR STR(E$(),7,2)=HEX(7F80)THEN PRINTUSING 1200, 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 1200,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 1350 IF STR(E$(),7,2)=HEX(1FC0)THEN PRINTUSING 1200,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 1360 L=L+1 1370 NEXT J 1380 PRINT AT(23,05,61);"End of the list - Hit ANY KEY to re-run or SF'16 for the main menu"; 1390 GOSUB 245 : GOTO 1010 1395 GOSUB 245 : GOTO 1010