image of READY prompt

Wang2200.org

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