Listing of file='@SCSICFG' on disk='vmedia/turbo-1.30.01.wvd.zip'
# Sector 2828, program filename = '@SCSICFG' 0010 REM % '@SCSICFG' ver 1.1 - CONFIG UTILITY SCSI2 03/11/93 - KKB (MEB) 0011 REM % REV 0.1 05/29/91 ADDED CHECK SCSI CONTROLLER. 0012 REM % rev 0.1 07/08/92 added new prom support for master/slave 0013 REM % REV 0.2 07/24/92 ADDED SAVE CONFIG AND LOAD CONFIG 0014 REM % REV 0.3 07/31/92 CORRECTED PROBLEMS WITH ONE DRIVE MASTER SLAVE 0015 REM % REV 0.4 08/02/92 Added Check Term one and display loaded config and clear variables between screen 2 and 3 0016 REM % REV. 0.5 08/10/92 Fixes for more then 15 address per M/S. & new dri ves 0017 REM % 11/19/92 MEB Changed wording on line 1230 & 1280. Allowed re-entry of# if sectors exceeded available space (1300,1315,1320, & 1280). 0018 REM % 11/19/92 MEB Corrected bug where if configuration not acceptable se ctor count was not reset. Line 1410, added T1=T. 0019 REM % rev 1.1 03/11/93 MEB Allowed 0 to complete sector assign. (1280,129 0) Correct password problems. (1510,1520) If assign >16 addr 1st slave ad dr lost. (1340,1350) Added # to image to prevent X71. (660,670,720,760) 0040 REM % DEFINE AND SETUP VARIABLE 0050 REM % A$() - CONFIG DATA ARRAY 0060 REM % B$() - CURRENT CONFIG OF SCSI 0070 REM % C$() - DATA FOR 0-7 UNITS 8X48 BYTES 0080 REM % D$ - BASE DISK ADDRESS 0090 DIM A$(512)1,A1$(512)1,B$(1024)1,C$(8)48,C(8),B$8,C$4,D$3,D1$(16,2)3,E$2, F$4,G$4,H$(32),I$1,J$(8)32,K$1,K1$1,L$(16,2),M$(29)1,M1$50,M2$50,T$80,A(3 2),B(32),A1(8),B1(32),U$(16,2)1 : A$()=ALL(FF) : E$="01" : I$="0" : RESTORE LINE8190 : MAT READ M$(30)1 0100 DIM X$(16,2)3,A9$(16),Z1$1,B1$8,D4$3,Z2$2,Z7$70,X$40,X4$40,I$(16,2)6,E$(1 6,2)8,N$(16,2) : A$(),A1$(),N$(),V3$,L$()=ALL(20) : B1$="#scsicfg" : REM default config file name 0110 REM % START SECTOR OF THE FIRST PLATTER : S=2 0120 REM % NEXT PLATTER START ADDRESS=S1 : S1=2 0130 REM % TOTAL NUMBER OF 512 BYTE SECTORS = T : REM T=8388604 0140 REM % ASSIGN START OF FIRST PLATTER : F$=HEX(02000000) 0150 REM % 'P' IS THE POINTER NEXT PLATTER START : P=5 0160 REM % SCREEN 1 : SELECT PRINT 005(80) : PRINT HEX(030602020F020402000F06); : T$="S C S I C o n f i g u r a t i o n" : PRINT AT(0,40-LEN(T$)/2);"";T$ : PRINT AT(23,55);"FN/TAB - Exit";AT(22,55);"RETURN - Proceed"; 0170 GOSUB '602("(c) Copyright Wang Laboratories, Inc., 1993"," All rights reserved.") 0180 D$=SELECT DISK : STR(D$,1,1)="D" : STR(D$,3,1)="0" : PRINT AT(8,15);"Base address of SCSI unit (D10, D20, or D30): "; : LINPUT -D$ : IF D$="RUN"THEN 180 : GOSUB '602(" "," ") 0190 PRINT HEX(06); : GOSUB '602(" "," ") : $TRAN(D$,"DdBb")R : $TRAN(D$,"DBDb")R : IF POS("Dd"=STR(D$,1,1))<>0AND POS("123"=STR(D$,2,1))<>0AND STR(D$,3,1)=" 0"THEN GOTO 200 : GOSUB '602(" ","Illegal address") : GOTO 180 0200 SELECT #15<D$> : ERRORGOSUB '602(" ","Invalid address") : GOTO 180 0210 REM VERIFY IF SCSI DRIVE : $SCSIINQUIRYT#15, : ERRORGOSUB '602(HEX(06070E),"Not a SCSI Controller") : GOTO 180 0220 $SCSIINQUIRYT#15 : $IF ON #15,230 : $BREAK : Z=Z+1 : IF Z<999THEN 220 : GOSUB '602(" ","Drive unavailable") : GOTO 180 0230 REM % Get the Switch settings 0240 $SCSIIDT#15,K$ : K1$=K$ : ROTATE(K1$,4) : K1$=K1$AND HEX(0E) : H=INT(VAL(K1$)/2) 0250 REM % TEST THE SCSI UNIT FOR CONFIGURATION TABLE 0260 $SCSICONFIGT#15,B$() 0270 C$()=STR(B$(),1,512) 0280 REM % GET DATA FROM CONFIG TABLE 0290 FOR X=1TO 8 : C$=STR(C$(X),3,4) : IF STR(C$(X),1,1)=HEX(FF)THEN J$(X)="No Drive Present" 0300 IF STR(C$(X),1,1)=HEX(80)THEN DO : J$(X)="Removable Drive" : GOSUB '601(C$) : A1(X)=VAL(F$,4) : C$=STR(C$(X),7,4) : GOSUB '601(C$) : C(X)=VAL(F$,4) : END DO 0310 IF STR(C$(X),1,1)=HEX(81)THEN DO : J$(X)="Sequential Access Device" : REM GOSUB '601(C$) A1(X)=VAL(c$,4) : END DO 0320 IF STR(C$(X),1,1)=HEX(01)OR STR(C$(X),1,1)=HEX(00)THEN DO : J$(X)="Direct Access Device" : GOSUB '601(C$) : A1(X)=VAL(F$,4) : C$=STR(C$(X),7,4) : GOSUB '601(C$) : C(X)=VAL(F$,4) : END DO 0330 NEXT X 0340 I$(),X$(),E$(),N$(),L$()=ALL(20) 0350 REM % screen 2 : PRINT HEX(0306); : T$="S C S I C o n f i g u r a t i o n" : PRINT AT(0,40-LEN(T$)/2);"";T$ 0360 GOSUB 580 : GOSUB 1640 : GOSUB 800 0370 J$(H+1)=ALL(20) : J$(H+1)="SCSI Controller" : C$(H+1)=ALL(20) : STR(C$(H+1),20,18)="WANG LABORATORIES INC" 0380 PRINT HEX(060F);AT(1,0,);AT(3,0); 0390 R=1 : FOR X=1TO 8 : IF STR(C$(X),1,1)<>HEX(FF)THEN DO : A1=((A1(X)*C(X))/1024)/1000 : PRINTUSING 7910;X-1,J$(X),STR(C$(X),20,18),A1,A1(X)*2 : R=R+1 : END DO : NEXT X : PRINT AT(2,0); 0400 PRINT HEX(060F);AT(2,0);BOX(1,78);AT(2,0); : PRINTUSING 7900 : PRINT : PRINT AT(3,0);BOX(R-1,78);AT(2,11);BOX(R,0);AT(2,37);BOX(R,0);AT(2,56);BO X(R,0);AT(2,67);BOX(R,0); 0410 PRINT HEX(06);AT(15,0,);AT(23,55);"FN/TAB - Exit";AT(22,55);"RETURN - R e-start";AT(21,58);"RUN - Expand Display";AT(20,56);" '15 - Start setu p";AT(20,56); 0420 KEYIN K$ : IF K$=HEX(82)THEN 430 : IF K$=HEX(0D)THEN 160 : IF POS(HEX(7E7F)=K$)<>0THEN 8210 : IF K$=HEX(0F)THEN 550 : GOTO 420 0430 SELECT PRINT 005(80) : PRINT HEX(0306); : T$="C u r r e n t P l a t t e r U s e" : PRINT HEX(0E);AT(0,40-(LEN(T$)/2));T$ : X9=1 0440 PRINT AT(2,40);BOX(2,0);AT(2,0);BOX(2,79) 0450 PRINT " Disk Index Current Catalog Disk Index Current Catalog" 0460 PRINT " Addr. Size End Maximum Addr. Size End Maximum" 0470 GOSUB '602(HEX(06),"Getting device status") : GOSUB 1640 0480 J=0 : R1=3 : GOSUB '602("","") 0490 FOR X=1TO 16 0500 J=J+1 : IF J=17THEN R1=3 : R1=R1+1 : R=0 : IF J>16THEN R=R+40 : PRINT AT(R1,0); 0510 PRINTUSING 7920,X$(X,1);I$(X,1);E$(X,1);N$(X,1);X$(X,2);I$(X,2);E$(X,2);N $(X,2); 0520 NEXT X 0530 PRINT AT(23,55);"FN/TAB - Exit";AT(22,55);"RETURN - Re-start";AT(21,58) ;"RUN - Previous screen";AT(20,56);" '15 - Start setup";AT(20,56); 0540 KEYIN K$ : IF POS(HEX(7E7F)=K$)<>0THEN 8210 : IF K$=HEX(0D)THEN 160 : IF K$=HEX(0F)THEN 550 : IF K$=HEX(82)THEN 340 : GOTO 540 0550 GOTO 990 0560 PRINT AT(23,55);"FN/TAB - Exit";AT(22,55);"RETURN - Proced"; 0570 KEYIN K$ 0580 O=1 : K=1 : J=1 : D1$(1,1)=D$ : L$(15,2)=" Tape" 0590 FOR X=8TO 1STEP -1 : IF STR(C$(X),1,1)=HEX(01)OR STR(C$(X),1,1)=HEX(00)THEN 600 : GOTO 690 0600 $SCSIREAD T#15,(X-1)A1$() : ERRORGOTO 690 0610 M=0 : IF STR(A1$(),1,4)="scsi"AND STR(A1$(),149,4)="scsi"THEN M=1 0620 MAT SEARCHA1$(),="END"TO C$STEP 4 : P1=(VAL(C$,2)) : IF POS(HEX(0001)=STR(C$(X),1,1))<>0AND P1<149THEN DO : Q=INT((P1-7)/8) : END DO : IF POS(HEX(0001)=STR(C$(X),1,1))<>0AND P1>148THEN DO : Q=INT(((P1-7)-149)/8) : END DO 0630 MAT SEARCHA1$(),="scsi"TO C$STEP 4 : P0=(VAL(C$,2)) : R=P0+8 0640 P2=1 : IF M=1THEN P2=149 : IF M=1THEN 700 0650 FOR Y=1TO Q : IF STR(C$(X),1,1)=HEX(00)AND R>148THEN 670 : IF STR(C$(X),1,1)=HEX(01)AND R<148THEN 660 0660 GOSUB '601(STR(A1$(),R,4)) : S=VAL(F$,4) : CONVERT STO L$(J,1),(##########) : IF J<16THEN STR(D1$(J,1),1,3)=STR(D$,1,2)&M$(J) : U$(J,1)=BIN(X-1) : U$(J,1)=OR HEX(30) : J=J+1 : IF J=17THEN DO : J=Q : GOSUB '602(HEX(06070E),"Disk platter Address Conflict") : END DO : R=R+8 : GOTO 680 0670 GOSUB '601(STR(A1$(),R,4)) : S=VAL(F$,4) : IF K>14THEN DO : Y=Q : GOSUB '602(HEX(06070E),"Disk Platter Address Conflict") : END DO : IF K>14THEN GOTO 680 : CONVERT STO L$(K,2),(##########) : STR(D1$(K,2),1,3)=STR(D$,1,2)&M$(K+16) : CONVERT STR(D1$(K,2),2,1)TO A 0675 A=A+4 : CONVERT ATO STR(D1$(K,2),2,1),(#) : U$(K,2)=BIN(X-1) : U$(K,2)=OR HEX(30) : K=K+1 : R=R+8 0680 NEXT Y 0690 NEXT X : RETURN 0700 MAT SEARCHSTR(A1$(),1,148),="END"TO C$STEP 4 : P1=(VAL(C$,2)) : Q1=INT((P1-7)/8) : MAT SEARCHSTR(A1$(),149,148),="END"TO C$ : P3=VAL(C$,2) : Q2=INT((P3-7)/8) 0710 FOR Y=1TO Q : IF P0<148THEN 720 : IF P0>148THEN 730 0720 GOSUB '601(STR(A1$(),R,4)) : S=VAL(F$,4) : CONVERT STO L$(J,1),(##########) : IF J<16THEN STR(D1$(J,1),1,3)=STR(D$,1,2)&M$(J) : U$(J,1)=BIN(X-1) : U$(J,1)=OR HEX(30) : J=J+1 : R=R+8 0730 NEXT Y 0740 MAT SEARCHSTR(A1$(),149,148),="scsi"TO C$STEP 4 : P0=(VAL(C$,2))+148 : R=P0+8 0750 FOR Y=1TO Q2 : IF STR(C$(X),1,1)=HEX(00)OR STR(C$(X),1,1)=HEX(01)THEN 760 : ELSE GOTO 770 0760 GOSUB '601(STR(A1$(),R,4)) : S=VAL(F$,4) : CONVERT STO L$(K,2),(##########) : STR(D1$(K,2),1,3)=STR(D$,1,2)&M$(K+16) : CONVERT STR(D1$(K,2),2,1)TO A : A=A+4 : CONVERT ATO STR(D1$(K,2),2,1),(#) : U$(K,2)=BIN(X-1) : U$(K,2)=OR HEX(30) : K=K+1 : R=R+8 0770 NEXT Y 0780 GOTO 690 0790 REM % GO AND GET DISK DATA AND DISPLAY DRIVE STATUS 0800 RESTORE LINE7800 : FOR X=1TO 16 : STR(X$(X,1),1,2)=STR(D$,1,2) : STR(X$(X,2),1,2)=STR(D$,1,2) : READ STR(X$(X,1),3,1) 0810 Z=0 : SELECT #2<X$(X,1)> : ERRORGOTO 880 0820 Z=0 : GOSUB '604(0) : IF Z<>0THEN DO : Z8$=" " : IF Z=91THEN 880 : IF Z=98THEN Z8$="Door open or no diskette" : IF Z=93THEN Z8$="Format error" : END DO 0830 IF Z=0THEN DO : I=0 : L$=ALL(00) : L=POS(HEX(000102)=STR(A9$(),1,1))-1 : IF L<=1THEN I=VAL(STR(A9$(),2,1)) : IF L>1THEN I=VAL(STR(A9$(),2,2),2) : IF I=0THEN 880 0840 CONVERT ITO L$,(#####) : ERRORZ=ERR : STOP # 0850 IF STR(L$,,1)="0"THEN STR(L$,,POS(L$>"0")-1)=" " 0860 IF L=1THEN STR(L$,6,1)="'" : IF L=2THEN STR(L$,6,1)="&" : IF I>0THEN I$(X,1)=L$ : END DO 0870 I=0 : L$=ALL(20) : L=POS(HEX(000102)=STR(A9$(),1,1))-1 : IF L<=1THEN I=(VAL(STR(A9$(),5,2),2))-1 : IF L>1THEN I=(VAL(STR(A9$(),7,3),3))-1 : IF I>0THEN DO : GOSUB '605(I) : IF I>0THEN E$(X,1)=L$ : END DO 0880 NEXT X 0890 RESTORE LINE7800 : FOR X=1TO 16 : STR(X$(X,2),2,1)=BIN(VAL(STR(X$(X,2),2,1))+4) : READ STR(X$(X,2),3,1) 0900 Z=0 : SELECT #2<X$(X,2)> : ERRORGOTO 970 0910 Z=0 : GOSUB '604(0) : IF Z<>0THEN DO : Z8$=" " : IF Z=91THEN 970 : IF Z=98THEN Z8$="Door open or no diskette" : IF Z=93THEN Z8$="Format error" : END DO 0920 IF Z=0THEN DO : I=0 : L$=ALL(00) : L=POS(HEX(000102)=STR(A9$(),1,1))-1 : IF L<=1THEN I=VAL(STR(A9$(),2,1)) : IF L>1THEN I=VAL(STR(A9$(),2,2),2) : IF I=0THEN 970 0930 CONVERT ITO L$,(#####) : ERRORZ=ERR : STOP # 0940 IF STR(L$,,1)="0"THEN STR(L$,,POS(L$>"0")-1)=" " 0950 IF L=1THEN STR(L$,6,1)="'" : IF L=2THEN STR(L$,6,1)="&" : IF I>0THEN I$(X,2)=L$ : END DO 0960 I=0 : L$=ALL(20) : L=POS(HEX(000102)=STR(A9$(),1,1))-1 : IF L<=1THEN I=(VAL(STR(A9$(),5,2),2))-1 : IF L>1THEN I=(VAL(STR(A9$(),7,3),3))-1 : IF I>0THEN DO : GOSUB '605(I) : IF I>0THEN E$(X,2)=L$ : END DO 0970 NEXT X 0980 RETURN 0990 SELECT PRINT 005(80) : PRINT HEX(0306); : T$="S e t u p S C S I C o n f i g u r a t i o n" : PRINT HEX(0E);AT(0,40-(LEN(T$)/2));T$ : S2=S1 : T1=A1(I+1)*2 : T=T1 1000 PRINT HEX(060F);AT(1,0,);AT(2,0);BOX(1,78);AT(2,0); : PRINTUSING 7900 : PRINT : PRINT AT(3,0);BOX(11,78);AT(2,11);BOX(12,0);AT(2,37);BOX(12,0);AT(2,56);B OX(12,0);AT(2,67);BOX(12,0);AT(4,0) 1010 FOR X=1TO 8 : A1=((A1(X)*C(X))/1024)/1000 : PRINTUSING 7910;X-1,J$(X),STR(C$(X),20,18),A1,A1(X)*2 : NEXT X : PRINT AT(13,0);BOX(0,78);AT(4+H,0);HEX(0E); : PRINTUSING " # #########################";H;J$(H+1) 1020 PRINT AT(22,55);"FN/TAB - Exit" : PRINT AT(15,3);"Please Select Drive ID to Configure (0 - 7): "; : LINPUT " ",-I$ : PRINT "" : GOSUB '602(" "," ") 1030 CONVERT I$TO I : ERRORGOTO 1020 1040 IF I<0OR I>7OR STR(J$(I+1),1,1)<>"D"THEN DO : PRINT HEX(07); : END DO : IF I<0OR I>7OR STR(J$(I+1),1,1)<>"D"THEN 1020 1050 PRINT AT(17,3);"Load Configuration file Y/N "; : K$="N" : LINPUT -K$ : IF POS("yYnN"=K$)<>0THEN 1060 : GOTO 1050 1060 IF POS("nN"=K$)<>0THEN 1140 1070 PRINT AT(19,3);"Configuration file name "; : LINPUT -B1$ : PRINT ""; 1080 GOSUB 8290 : IF N3=0THEN DO : GOSUB '602(HEX(06070E),"File not found") : END DO : IF N3=0THEN 1070 1090 A1$()=A$() : GOSUB 580 : GOSUB 1650 1100 R2=8 1110 FOR X=2TO 16 1120 PRINT AT(X+3,21);N$(X,1);AT(X+3,60);N$(X,2); 1130 NEXT X : GOTO 1440 1140 REM continue no config to save 1150 GOSUB 1650 1160 R1=5 : S2=S1 : T1=A1(I+1)*2 : T=T1 : A$()=ALL(FF) : STR(A$(),P-4,4)="scsi" 1165 PRINT AT(22,55);"FN/TAB - Exit" 1170 PRINT AT(20,0,80);AT(22,0,40);" Unit ";I;" \CDaster or \D3lave "; : K$="M" : LINPUT -K$ : GOSUB '602(" "," ") 1180 $TRAN(K$,"mMsS")R : IF POS("ms"=K$)<>0THEN 1190 : GOTO 1170 1190 IF K$="m"THEN P=5 : IF K$="s"THEN P=153 1200 A$()=ALL(FF) : STR(A$(),P-4,4)="scsi" 1210 IF K$="m"THEN DO : R=0 : R2=8 : Y=16 : END DO : IF K$="s"THEN DO : R=40 : R2=48 : Y=15 : END DO 1220 REM % Ask for surface details 1225 PRINT AT(20,55);"FN/TAB - Exit" 1230 PRINT AT(22,0,80);"Please Enter No. of Addresses to assign to Drive";I;" "; : LINPUT -E$ : PRINT HEX(060F) 1240 REM % test value for number of platters : CONVERT E$TO E : ERRORGOTO 1230 1250 IF E<1OR E>29THEN 1230 : IF E>14AND K$="s"THEN 1230 : IF E>15AND M=0THEN DO : STR(A$(),149,4)="scsi" : M=1 : END DO 1260 FOR X=1TO E 1270 PRINT AT(21,0,40);"Sectors remaining :";T1;""; 1280 PRINT HEX(06);AT(22,0,80); : PRINT "Sectors to assign (even #s only) to Address "; : PRINTUSING "##";X; : PRINT ""; : LINPUT -B$ : PRINT " "; : PRINT AT(23,0,32) 1290 CONVERT B$TO B : IF B=0THEN 1390 : IF B<100THEN 1280 : ERRORGOTO 1280 1300 C=B : IF MOD(C,2)<>0THEN 1310 : REM C=INT(C/2) : IF MOD(C,2)>TTHEN 1310 : IF B>T1THEN 1315 : ELSE GOTO 1320 1310 PRINT HEX(07); : GOTO 1280 1315 GOSUB '602(HEX(06070E),"Amount exceeds available sectors") : GOTO 1310 1320 IF MOD(C,2)<>0THEN C=C-1 : IF C>TTHEN C=T : A(X)=C : GOSUB '600(S2) : STR(A$(),P,4)=F$ : P=P+4 : GOSUB '600(C) : STR(A$(),P,4)=F$ : S2=S2+C : B(X)=S2 : T1=T1-B : IF SGN(T1)<>-1THEN 1330 1330 IF X<15THEN DO : P=P+4 : END DO 1340 IF X=15THEN DO : P=P+4 : STR(A$(),P,4)=HEX(FFFFFFFF) : P=P+4 : STR(A$(),P,3)="END" : P=153 : END DO 1350 IF X=16THEN DO : V=149 : STR(A$(),V,4)="scsi" : P=P+4 : R2=48 : END DO 1360 IF X>16THEN DO : P=P+4 : END DO 1370 IF X>0THEN DO : IF X<16THEN PRINT AT(4+X,R2); : ELSE PRINT AT(X-11,R2); : PRINTUSING " ######### #########"," ",A(X) : END DO 1380 NEXT X : P=P+4 : STR(A$(),P,3)="END" 1390 K$=" " : PRINT HEX(06);AT(21,0,160); : LINPUT "All entries made and acceptable Y/N",-K$ 1400 IF POS("Yy"=K$)<>0THEN 1420 : IF POS("Nn"=K$)<>0THEN 1410 : GOTO 1390 1410 T1=T : PRINT HEX(06);AT(21,0,160); : GOTO 1150 1420 PRINT HEX(06);AT(21,0,160);AT(23,55);"FN/TAB - Exit";AT(22,58);"RUN - A ccept screen";AT(20,55,80) 1430 KEYIN K$ : IF K$=HEX(82)THEN 1440 : IF POS(HEX(7E7F)=K$)<>0THEN 8210 : GOTO 1430 1440 GOSUB '602(" "," ") : PRINT HEX(06);AT(21,0,80);"WARNING!!! If changes are applied to an existi ng drive, data will be lost.";HEX(060F);AT(23,55);"FN/TAB - Exit";AT(22,0 ,80);"Apply Changes Y/N"; : K$="Y" : LINPUT "",-K$ : PRINT ""; 1450 IF POS("Yy"=K$)<>0THEN 1460 : IF POS("Nn"=K$)<>0THEN 160 1460 IF #TERM<>1THEN DO : GOSUB '602(HEX(06070E),"Must be a SYSTEM console") 1470 PRINT HEX(06);AT(21,0,160);AT(23,55);"FN/TAB - Exit";AT(22,58);"RUN - R e-start" 1480 KEYIN K$ : IF POS(HEX(7E7F)=K$)<>0THEN 8210 : IF K$=HEX(82)THEN 90 : GOTO 1480 1490 END DO 1500 GOSUB '602(" "," ") : PRINT AT(21,0,80);HEX(06);AT(22,0,80);"Please supply password"; : B$=ALL(20) : LINPUT -B$ : PRINT ""; 1510 V3$=DATE : DATE=V3$PASSWORDB$ : ERRORPRINT HEX(07); : GOTO 1500 1520 GOSUB '602(" "," ") : B$=ALL(20) : PRINT HEX(06);AT(22,0,80);"Save Configuration Y/N "; : K$="Y" : LINPUT "",-K$ : PRINT ""; 1530 IF POS("Yy"=K$)<>0THEN DO 1540 GOSUB '602(" "," ") : PRINT HEX(06);AT(22,0,80);"Configuration file name. (Use a different nam e for each drive.) "; : LINPUT -B1$ 1550 GOSUB 8330 1560 GOSUB '602(" "," ") : END DO 1570 GOSUB '602(" "," ") : PRINT HEX(06);AT(21,0,80);" A New Drive or Reconfigure requires a low level Format " 1580 PRINT HEX(06);AT(22,0,80);"Execute Low Level Format Y/N? "; : K$="N" : LINPUT -K$ : K$=OR HEX(20) : IF K$="n"THEN 1630 1590 IF K$="y"THEN DO : GOSUB '602(" "," ") : PRINT AT(22,0,80);AT(22,0);"Format in Progress"; 1600 $SCSIFORMATT#15,(I) : ERRORSTOP # 1610 PRINT AT(21,0,80);"Format Complete Press RETURN to Proceed "; : KEYIN K$ : IF K$<>HEX(0D)THEN 1610 : END DO 1620 IF K$<>HEX(0D)THEN 1610 1630 REM % EXECUTE THE CONFIG : $SCSIWRITET#15,(I)A$() : $SCSIINQUIRYT#15 : GOTO 10 1640 REM get disk data : FOR Y=1TO 2 : FOR X=1TO 16 : GOSUB '603(X,Y) : NEXT X : NEXT Y : FOR Y=1TO 2 : FOR X=2TO 16 : N$(X,Y)=L$(X-1,Y) : NEXT X : NEXT Y : RETURN 1650 REM % Diplay platter config routine 1660 REM % Display platter if Master Slave Config : PRINT HEX(0306); : T$="S e t u p S C S I C o n f i g u r a t i o n" : PRINT HEX(0E);AT(0,40-(LEN(T$)/2));T$ 1670 PRINT AT(2,0);" Unit ";I;" with ";A1(I+1)*2;" Sectors available" 1680 PRINT AT(3,40);BOX(2,0);AT(3,0);BOX(2,79) 1690 PRINT " Master disk Catalog Slave disk Ca talog" 1700 PRINT " Maximum Ma ximun" 1710 X$(16,2),L$=ALL(20) 1720 FOR X=2TO 16 1730 PRINTUSING 7930;X$(X,1);L$;X$(X,2);L$ : NEXT X 7800 DATA "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F" 7900 % Drive ID Drive Type Vendor Capacity Sec tors 7910 % # ######################### ################## ####.## ###### ### 7920 % ### ###### ######## ########## ### ###### ######## ######## ## 7930 % ### ######### ### ######### 8000 % Unit Platter Total Unit Platter Tot al 8010 % ID Address Sectors ID Address Sect ors 8020 % # ### ######### # ### ####### ## 8030 % Unit Platter Total Unit Platter Tot al 8040 % ID Address Sectors ID Address Sect ors 8050 % # ### ######### # ### ####### ## 8060 REM % SUBROUTINE TO ADJUST BYTE SWAPS 8070 DEFFN'600(D) 8080 G$=BIN(D,4) : F$=ALL(20) 8090 STR(F$,1,1)=STR(G$,4,1) : STR(F$,2,1)=STR(G$,3,1) : STR(F$,3,1)=STR(G$,2,1) : STR(F$,4,1)=STR(G$,1,1) : RETURN 8100 REM % Subroutine to adjust byteswap to bin format 8110 DEFFN'601(G$) 8120 F$=ALL(00) : STR(F$,4,1)=STR(G$,1,1) : STR(F$,3,1)=STR(G$,2,1) : STR(F$,2,1)=STR(G$,3,1) : STR(F$,1,1)=STR(G$,4,1) : RETURN 8130 REM % PRINT AT LEFT HAND CORNER AT (22,0) (23,0) 8140 DEFFN'602(M1$,M2$) : PRINT AT(22,0);"";STR(M1$);AT(23,0);"";STR(M2$); : RETURN 8150 DEFFN'603(F,G) : IF STR(L$(F,G),,1)="0"AND POS(L$(F,G)>"0")<>0THEN STR(L$(F,G),,POS(L$(F,G )>"0")-1)=" " : RETURN 8160 DEFFN'605(I) 8170 CONVERT ITO L$,(########) : ERRORZ=ERR : STOP # 8180 IF STR(L$,,1)="0"THEN STR(L$,,POS(L$>"0")-1)=" " : RETURN 8190 DATA "1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","0","1", "2","3","4","5","6","7","8","9","A","B","C","D","E" 8200 REM % EXIT BACK TO MENU 8210 DEFFN'126 8220 DEFFN'127 : LOAD RUN T"@MENU" 8230 REM % IF < OR = 15 PARTITIONS ON THE DRIVE : STOP # 8240 IF MOD(C,2)<>0THEN C=C-1 : IF C>TTHEN C=T : A(X)=C : GOSUB '600(S2) : STR(A$(),P,4)=F$ : P=P+4 : GOSUB '600(C) : STR(A$(),P,4)=F$ : P=P+4 : S2=S2+C : B(X)=S2 : T1=T1-B 8250 REM read a sector 8260 DEFFN'604(I) 8270 DATA LOAD BA T#2,(I)A9$() : ERRORZ=ERR 8280 RETURN 8290 REM % read configfile 8300 LIMITS T#0,B1$,N,N1,N2,N3 : IF N3=0THEN RETURN 8310 IF N3=2THEN DO : Z=0 : N2=N+(I*2) : DATA LOAD BMT#0,(N2)A$() : ERRORZ=ERR : IF Z<>0THEN GOSUB '602(HEX(06070E),"Disk Error") 8320 END DO : RETURN 8330 REM % Save config 8340 LIMITS T#0,B1$,N,N1,N2,N3 : IF N3=0THEN DO : DATA SAVE DC OPEN T#0,(18)B1$ : A9$()=ALL(FF) : LIMITS T#0,B1$,N,N1,N2,N3 : FOR X=NTO N1-1 : DATA SAVE BA T#0,(X)A9$() : NEXT X : A9$()=ALL(00) : STR(A9$(),1)=HEX(A0)&BIN((N1-N)+1,2) : STR(A9$(),17)="@scssicfg" : DATA SAVE BA T#0,(N1)A9$() : END DO 8350 IF N3=2THEN DO : Z=0 : N2=N+(I*2) : DATA SAVE BMT#0,(N2)A$() : ERRORZ=ERR : IF Z<>0THEN GOSUB '602(HEX(06070E),"Disk Error") 8360 END DO : RETURN 9000 DEFFN'0HEX(020402000E) : REM SET BRIGHT ATTRIB AND ON 9010 DEFFN'1HEX(020404000E) : REM SET REV+FLASH ON 9020 DEFFN'2HEX(020404000E) 9030 DEFFN'17 : FOR X=1TO 132STEP 4 : PRINT HEXOF(STR(A1$(),X,4)), : NEXT X : PRINT 9500 DEFFN'14HEX(0E) : REM ATTRIB ON 9510 DEFFN'15HEX(0F) : REM ATTRIB OFF 9520 DEFFN'16"FOR X0=5TO 148STEP 8: HEXPRINT STR(A$(),X,8): NEXT X0" 9999 DEFFN'31 : RESAVE T"@SCSICFG"