Listing of file='@LICENSE' on disk='vmedia/sds40.wvd.zip'
# Sector 584, program filename = '@LICENSE', protected file
0000 %@CUSTOM4 -- SDS-Extended BASIC-2 Customization Program (=@LICENSE)
0001 % TRADE SECRET -- THIS PROGRAM IS A PROPRIETARY PRODUCT OF
0002 % TRADE SECRET -- SOUTHERN DATA SYSTEMS, INC
0003 % TRADE SECRET -- UNAUTHORIZED USE OR REPRODUCTION IS PROHIHBITED
0004 %REV 4.0 03-16-87 RSD
0009 DEFFN'7
0010 DIM Z1$(6)80,J$3,J1$3,M$1,X9$80,V$3,Z$1,D$2,E$4,F$6,F1$12,G$5,U$1,W$1,A$(
4)60,A2$2,A3$3,B$1,C$1
0130 SELECT PRINT 005(80),LIST 005(80),CO 005(80)
7000 GOSUB '200
: PRINT AT(1,17);BOX(1,43);HEX(0E);" SDS-Extended BASIC-2 Customization Rou
tine";HEX(0F);
: J$=" "
7050 PRINT AT(14,74);BOX(1,4);AT(14,1,160);"Enter the Device Address of the di
sk containing SDS-Extended BASIC-2 ";
: LINPUT -J$
: Q7=4
: GOSUB '203(J$)
: PRINT AT(16,0,7*80);
: IF E>0THEN 7050
7060 LIMITS T#4,"@MVP",A,Z,Z,Z
: IF A<>0THEN 7070
: GOSUB '204("'@MVP' preloader file missing on selected disk")
: GOTO 7050
7070 PRINT AT(14,74);BOX(-1,-4)
7110 DATA LOAD DA T#4,(A+1)A2$,A3$,A$()
: ERRORE=1
: GOTO 8400
7120 IF STR(A2$,1,2)=HEX(0001)THEN 7130
: E=2
: GOTO 8400
7130 IF STR(A3$,1,3)=HEX(0000F0)THEN 7140
: E=3
: GOTO 8400
7140 F$=HEX(000000000000)
: FOR I=1TO 235STEP 6
: F$=ADDCSTR(A$(),I,6)
: NEXT I
: IF F$=HEX(000000000000)THEN 7150
: E=4
: GOTO 8400
7150 M$=HEX(99)
: FOR I=1TO 234
: IF MOD(I,2)=0THEN STR(A$(),I,1)=SUBM$
: ELSE STR(A$(),I,1)=ADDM$
: M$=SUBHEX(02)
: NEXT I
: ROTATEC(STR(A$(),1,234),-4)
7160 F$=HEX(000000000000)
: FOR I=1TO 229STEP 6
: F$=ADDCSTR(A$(),I,6)
: NEXT I
: IF F$=HEX(000000000000)THEN 7170
: E=5
: GOTO 8400
7170 E$=HEX(00000000)
: FOR I=1TO 161STEP 4
: E$=ADDCSTR(A$(),I,4)
: NEXT I
: IF VAL(E$,4)=0THEN 7180
: E=6
: GOTO 8400
7180 D$=HEX(0000)
: FOR I=1TO 119STEP 2
: D$=ADDCSTR(A$(),I,2)
: NEXT I
: IF VAL(D$,2)=0THEN 7190
: E=7
: GOTO 8400
7190 F$=STR(A$(),80,6)AND ALL(7F)
: PRINT AT(1,72);BOX(1,7);AT(1,73);F$;AT(2,75);BOX(1,4);AT(2,76);J$
7300 PRINT AT(10,0,7*80);AT(10,1);"Enter Licensed User's Name: "
: X9$=ALL(20)
: IF F$="000000"THEN 7310
: X9$=STR(A$(),POS(STR(A$(),1,78)<>" "),79-POS(STR(A$(),1,78)<>" "))
7310 PRINT AT(11,0,2*80);BOX(-1,-79);
: LINPUT -STR(X9$,1,78)
: IF LEN(X9$)=1AND X9$=" "THEN 7300
: Z=MAX(1,39-INT(LEN(X9$)/2))
: STR(A$(),1,78)=ALL(20)
: STR(A$(),Z)=X9$
: Z$="y"
: PRINT AT(11,0);BOX(1,79);AT(12,1);
: LINPUT "Is this Correct? "-Z$
: PRINT HEX(06);
: Z$=Z$OR HEX(20)
: IF Z$<>"y"THEN 7310
7320 PRINT AT(10,1,30);"Licensed User's Name:";AT(11,0,80);BOX(1,79);AT(11,1);
STR(A$(),1,78)
: STR(A$(),79,8)=ALL(00)
: STR(A$(),80,6)=" "
7400 PRINT AT(12,1,79);AT(13,1);
: LINPUT "Enter SDS Registration Number: "-STR(A$(),80,6)
: IF VER(STR(A$(),80,6),"######")<>6THEN 7400
: Z$="y"
: PRINT AT(14,1);
: LINPUT "Is this Correct? "-Z$
: PRINT HEX(06);
: Z$=Z$OR HEX(20)
: IF Z$<>"y"THEN 7400
7410 PRINT AT(13,0,7);AT(14,0,80);AT(13,32);BOX(1,7);AT(13,33);STR(A$(),80,6);
7420 V$=STR(A$(),80,3)
: GOSUB 8000
: STR(A$(),80,3)=V$
: V$=STR(A$(),83,3)
: GOSUB 8000
: STR(A$(),83,3)=V$
7500 PRINT AT(13,43);
: D$="1 "
: LINPUT "Enter number of authorized CPUs: "-D$
: IF VER(D$,"##")=0THEN 7500
: CONVERT STR(D$,1,VER(D$,"##"))TO G
: IF G>16THEN 7500
: PRINT AT(13,43,6);AT(13,49);"N";AT(13,76);BOX(1,3);AT(13,77);
: PRINTUSING "##",G
: STR(A$(),87,32)=ALL(FF)
7600 PRINT AT(16,1);"Enter CPU ID Numbers:"
: FOR I=4TO G+3
: R=16+MOD(I,4)
: C=16+INT(I/4)*14
: IF I>11THEN C=C+1
: PRINT AT(R,C);BOX(1,6);
: NEXT I
7610 FOR I=4TO G+3
: R=16+MOD(I,4)
: C=10+INT(I/4)*14
: IF I>4THEN 7620
: PRINT AT(R,C+1);
: X=#ID
: PRINTUSING "CPU 1 #####",X
: GOTO 7640
7620 G$="0 "
7630 PRINT AT(R,C+1);
: IF I>11THEN PRINTUSING "CPU ##",I-3;
: ELSE PRINTUSING "CPU #",I-3;
: LINPUT -G$
: IF VER(G$,"#####")=0THEN 7630
: CONVERT G$TO X
: IF X>65535OR X<0THEN 7630
7640 STR(A$(),85+(I-3)*2,2)=BIN(X,2)
: NEXT I
7650 Z$="y"
: PRINT AT(19,1);
: IF G>1THEN LINPUT "Are these Correct? "-Z$
: PRINT HEX(06);
: Z$=Z$OR HEX(20)
: IF Z$="y"THEN 7660
: PRINT AT(14,0,7*80)
: GOSUB 7655
: GOTO 7500
7655 FOR I=4TO G+3
: R=16+MOD(I,4)
: C=16+INT(I/4)*14
: IF I>11THEN C=C+1
: PRINT AT(R,C);BOX(-1,-6);
: NEXT I
: RETURN
7660 PRINT AT(16,1,6);AT(19,1,22)
7700 D$=HEX(0000)
: FOR I=1TO 117STEP 2
: D$=ADDCSTR(A$(),I,2)
: NEXT I
: STR(A$(),119,2)=HEX(0000)SUBCD$
7710 STR(A$(),121,40)=STR(A$(),81,40)
: E$=HEX(00000000)
: FOR I=1TO 157STEP 4
: E$=ADDCSTR(A$(),I,4)
: NEXT I
: STR(A$(),161,4)=HEX(00000000)SUBCE$
7720 STR(A$(),165,60)="Copyright 1986 Southern Data Systems Inc ALL RIGHTS RES
ERVED"
7730 Z$=HEX(0A)
: STR(A$(),225,1)=Z$
: Q=MIN(10,VAL(Z$))
: STR(A$(),226,1)=STR(A$(),225,1)ADDSTR(A$(),35+Q,1)
: STR(A$(),227,1)=STR(A$(),226,1)SUBSTR(A$(),36+Q,1)
: STR(A$(),228,1)=STR(A$(),225,1)ADDSTR(A$(),226,1)ADDSTR(A$(),227,1)
7740 F$=HEX(000000000000)
: FOR I=1TO 223STEP 6
: F$=ADDCSTR(A$(),I,6)
: NEXT I
: STR(A$(),229,6)=HEX(000000000000)SUBCF$
7750 PRINT AT(20,3);"Verification Code";AT(21,2);BOX(1,18);AT(21,3);
: HEXPRINT -F$
7760 Z$="y"
: PRINT AT(21,22);
: LINPUT "Is this OK? "-Z$
: PRINT HEX(06);
: Z$=Z$OR HEX(20)
: IF Z$<>"y"THEN 7000
7800 ROTATEC(STR(A$(),1,234),4)
: M$=BIN(153)
: FOR I=1TO 234
: IF MOD(I,2)=0THEN STR(A$(),I,1)=ADDM$
: ELSE STR(A$(),I,1)=SUBM$
: M$=SUBHEX(02)
: NEXT I
7900 F1$=ALL(8B)
7910 PRINT AT(21,22,57);AT(20,29);"Enter your authorization code";AT(21,37);
: LINPUT -F1$
: FOR I=1TO 12
: IF POS("abcdef"=STR(F1$,I,1))<>0THEN STR(F1$,I,1)=SUBHEX(20)
: NEXT I
: IF VER(F1$,"HHHHHHHHHHHH")<>12THEN 7910
: HEXPACKF$FROMF1$
: PRINT AT(20,29);" Y";AT(21,33,40);AT(21,37);BOX(1,18);AT(21,38);
: HEXPRINT -F$
7915 Z$="y"
: PRINT AT(21,60);
: LINPUT "Is this Correct? "-Z$
: PRINT HEX(06);
: Z$=Z$OR HEX(20)
: IF Z$="y"THEN 7920
: PRINT AT(22,33,45);AT(21,37);BOX(-1,-18);
: GOTO 7910
7920 STR(A$(),235,6)=F$
: DATA SAVE DA T$#4,(A+1)A2$,A3$,A$()
: ERRORE=8
: GOTO 8400
7960 GOSUB 8500
: PRINT AT(11,0);
: FOR I=1TO 25
: PRINT BOX(1,I);BOX(1,79-I);
: NEXT I
: PRINT AT(11,27);HEX(0E);"Customization is Complete!";AT(16,15);BOX(1,50);
AT(16,22);"You may re-initialize your system now";
7990 END
8000 U$=STR(V$,1,1)XOR STR(V$,2,1)XOR STR(V$,3,1)
: W$=U$AND HEX(F0)
: W$=BIN(VAL(W$)/16)
: U$=XOR W$
: W$=U$AND HEX(0F)
: W$=BIN(VAL(W$)*4)
: U$=XOR W$
: W$=U$AND HEX(04)
: IF W$=HEX(04)THEN U$=XOR HEX(08)
: W$=U$AND HEX(08)
: IF W$=HEX(00)THEN STR(V$,1,1)=XOR HEX(80)
: RETURN
8100 DEFFN'200
: Z1$(1),Z1$(4),Z1$(5)=ALL(FC)
: Z1$(2),Z1$(6)=ALL(FF)
: STR(Z1$(3),1,20)=HEX(C0C0C0C0C0C0C0C0C0C0C0FFD5C0C0C0C0C0C0C0)
: STR(Z1$(4),1,20)=HEX(E8FCFCFCFCFCE8FCFCFCD4FFD5FCFCFCFCFCFCE8)
: STR(Z1$(5),1,20)=HEX(EAFFFCFCFCFCEAFFE8FCD4FFD5FFFDFCFCFCFCE8)
8110 STR(Z1$(6),1,20)=HEX(E8FCFCFCFEFFEAFFFCFCFCFFD5FCFCFCFCFEFFEA)
8120 PRINT HEX(03060202020E);AT(3,17);STR(Z1$(3),1,20);AT(4,7);STR(Z1$(1),1,10
);STR(Z1$(4),1,56);AT(5,7);STR(Z1$(2),1,10);STR(Z1$(5),1,56);AT(6,7);STR(
Z1$(1),1,10);STR(Z1$(6),1,56);AT(7,41);"southern data systems, inc.";AT(8
,41);"telephone (919) 781-7603";HEX(0202000F);
: RETURN
8200 DEFFN'203(J1$)
: E=0
: IF 3<>LEN(J1$)THEN 8230
: IF POS("DB3"=STR(J1$,1,1))<>0THEN 8210
: GOSUB '204("Illegal device entry - Is not a D,B,3 prefix")
: RETURN
8210 SELECT #Q7<J1$>
: DATA LOAD BA T#Q7,(0)J1$;
: ERRORY=ERR
: IF Y=48THEN 8240
: PRINT AT(22,7,70);"Error";Y;"has occurred - correct and retry";
: E=1
: RETURN
8220 RETURN
8230 GOSUB '204("Invalid length - must be at least 3 Characters")
: RETURN
8240 GOSUB '204("Address selected not in device table or not valid")
: RETURN
8300 DEFFN'204(X9$)
: PRINT AT(21,0,80);X9$;
: E=1
8310 DEFFN'201
: PRINT AT(22,7,70);"Touch any key to continue ";HEX(8B08020404000F);
: KEYIN Z$
: RETURN
8400 GOSUB 8500
: IF E=8THEN 8420
8410 PRINT AT(11,0);
: FOR I=1TO 19
: PRINT BOX(1,I);BOX(1,79-I);
: NEXT I
: PRINT AT(11,21);HEX(0E);"Sorry - This copy cannot be customized";AT(13,31
);BOX(1,15);" Error code";E;AT(16,14);BOX(1,51);AT(16,17);"Contact South
ern Data Systems for another copy"
: GOTO 7990
8420 PRINT AT(11,0);
: E=ERR
: FOR I=1TO 18
: PRINT BOX(1,I);BOX(1,79-I);
: NEXT I
: PRINT AT(11,20);HEX(0E);"Sorry - Problem detected writing to disk";AT(13,
31);BOX(1,15);" Error code";E;AT(16,14);BOX(1,51);AT(16,23);"Correct the
problem then try again"
: GOTO 7990
8500 PRINT AT(10,1,13*80);AT(13,32);BOX(-1,-7);AT(13,76);BOX(-1,-3);AT(21,2);B
OX(-1,-18);AT(21,37);BOX(-1,-18);
: GOSUB 7655
: RETURN
9998 RESAVE T"@CUSTOM4"
: STOP
9999 RESAVE <SR>T/D13,!"@LICENSE"