image of READY prompt

Wang2200.org

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"