Listing of file='WPINSTLL' on disk='vmedia/731-0067F-disk1.wvd.zip'
# Sector 50, program filename = 'WPINSTLL'
0010 REM WPINSTLL RELEASE 250-05/04/88 - COPYRIGHT WANG LABS. INC. 1988 KKB
0050 DIM R(3),C(3),U(3),E(3),E$(7)45,D$(7)2
: DIM T1(9),R1(9),C1(9),E1$(9)60
: DIM T2(7),R2(7),C2(7),E2(7),U2$(7)3,D2$(16)2,D1$10,Q$1,X$80,X2$2
0060 DIM A$(4)62,D2$6,D3$6,D4$6,D5$6,F$20,F0$16,T1$4,T2$4,T3$4,R$(10)9,Z9$8
: DIM A1$(14)8,A2$(14)8,A3$(14)1,B$(4)64,C$(4)64,F1$8,X9$6,Y$1,Y9$8,Z8$8,Z7
$8
0070 $FORMATF$=A6,A4,A6,A4,A6,A4,A13,A6,A16,A9
: Z9$="609@D0"
: Z8$="609@DEVC"
: Y9$="\CA\D5\CE\CB\B0\B0\B0\B0"
: X9$=".REFWP"
: C3,C4,F,N=0
: Z7$="BUMPmain"
0080 PRINT HEX(03)
: GOSUB '61
0090 GOSUB '62
: IF U=0OR U=-1THEN 1010
: IF NUM(U2$(1))*NUM(U2$(2))*NUM(U2$(3))*NUM(U2$(4))*NUM(U2$(5))<32THEN 102
0
: IF POS("DB3"=STR(U2$(6),,1))*POS("1234567"=STR(U2$(6),2,1))*POS("01234567
89ABCDEF"=STR(U2$(6),3,1))=0THEN 1030
: SELECT #6<U2$(6)>
: ERRORGOTO 1030
0100 IF POS("3BD"=STR(U2$(7),,1))*POS("1234567"=STR(U2$(7),2,1))*POS("01234567
89ABCDEF"=STR(U2$(7),3,1))=0THEN 1040
: IF STR(U2$(6),,3)=STR(U2$(7),,3)THEN 1050
: SELECT #7<U2$(7)>
: ERRORGOTO 1040
0110 REM .type of disk
0111 VERIFY T#6,(2444,2446)A
: IF A=2445 THEN Z9$="609@SSSD"
0112 VERIFY T#7,(2444,2446)A
: IF A=2445 THEN Z9$="609@SSSD"
0119 LIMITS T#6,Z9$,A,B,B,B
: ERRORGOTO 1060
0120 IF B<>2THEN 1060
: DATA LOAD DC OPEN T#6,Z9$
: DATA LOAD DC #6,A$()
: LIMITS T#7,Z9$,A,B,B,B
: IF U(1)=1AND B<>2THEN 1070
: D2$=U2$(1)&U2$(2)&U2$(3)
: T1$=U2$(4)&U2$(5)
: STR(A$(),,6),STR(A$(),11,6)=D2$
: STR(A$(),7,4),STR(A$(),17,4)=T1$
: IF B<>2THEN 140
: DATA LOAD DC OPEN T#7,Z9$
: DATA SAVE DC #7,A$()
: GOTO 142
0140 DATA SAVE DC OPEN T#7,(3)Z9$
: STR(A$(),11,6)=D2$
: STR(A$(),17,4)=T1$
: DATA SAVE DC #7,A$()
: DATA SAVE DC #7,END
0142 LIMITS T#7,Z7$,A1,A2,A3,A4
: ERRORGOTO 1100
0143 IF A4=0THEN MOVE T#6,Z7$TO T#7,
: LIMITS T#7,"Pqueue",A1,A2,A3,A5
: ERRORGOTO 1100
0145 IF A5=0THEN MOVE T#6,"Pqueue"TO T#7,
: ERRORGOTO 1100
0146 LIMITS T#7,"609EDATA",A1,A2,A3,A6
: ERRORGOTO 1100
0147 IF A6=0THEN 148
: IF A2-A1>53THEN 150
: SCRATCH T#7,"609EDATA"
: DATA SAVE DC OPEN T#7,"609EDATA","JUNKEDAT"
: DATA SAVE DC OPEN T#7,(55)"609EDATA"
: SCRATCH T#7,"JUNKEDAT"
: GOTO 150
0148 MOVE T#6,"609EDATA"TO T#7,
: ERRORGOTO 1100
0150 $UNPACK(F=F$)A$()TO D2$,T1$,D3$,T2$,D4$,T3$,R$,D5$,F0$,R$()
: FOR J=1TO 10
: IF STR(R$(J),,6)<>X9$AND STR(R$(J),1,8)<>".REFDAST"THEN 160
: IF U(1)=1AND STR(R$(J),7,2)="D "THEN 160
: GOSUB 190
0160 NEXT J
: IF U(1)=1THEN 176
: DATA LOAD DC OPEN T#7,Z8$
: ERRORGOTO 180
0170 DATA LOAD DC #7,A$()
: STR(A$(),2,3)=U2$(7)
: DBACKSPACE #7,BEG
: DATA SAVE DC #7,A$()
: DATA SAVE DC CLOSEALL
0171 DATA LOAD DC OPEN T#7,Z9$
: ERRORGOTO 1100
0172 DATA LOAD DC #7,A$()
: STR(A$(),,6),STR(A$(),11,6)=D2$
: STR(A$(),7,4),STR(A$(),17,4)=T1$
: DBACKSPACE #7,BEG
: DATA SAVE DC #7,A$()
: DATA SAVE DC CLOSEALL
0176 IF A5<>0AND U(1)=1THEN 180
: DATA LOAD DC OPEN T#7,Z7$
: ERRORGOTO 180
0177 MAT REDIM A$(50)3
: A$()=U2$(7)
: DATA SAVE DC #7,A$()
: MAT REDIM A$(4)62
: DATA SAVE DC CLOSEALL
0180 GOSUB 1150
: END
0190 IF J=1THEN 200
: IF STR(R$(J),9,1)<>STR(R$(J-1),9,1)THEN 1080
0200 DATA LOAD DC OPEN T#6,STR(R$(J),,8)
: ERRORGOTO 1080
0210 DATA LOAD DC #6,STR(A1$(),1),STR(A2$(),1),STR(A3$(),1)
: IF END THEN RETURN
: FOR K=1TO 14
: IF A1$(K)<>" "THEN 220
: GOTO 280
0220 LIMITS T#6,A1$(K),A1,A2,A3,A4
: IF A4=0THEN 1090
: LIMITS T#7,A1$(K),B1,B2,B3,B4
: S=MAX(VAL(A3$(K))-1,0)
: IF B4=0THEN MOVE T#6,A1$(K)TO T#7,(S)
: ERRORE9=ERR
: GOTO 1100
0230 IF B4=0THEN 260
: IF U(3)=3THEN 180
: IF U(3)=2THEN 240
: IF U(3)=1AND A1$(K)="START"THEN 240
: GOTO 250
0240 GOSUB 1000
: IF Y$="N"OR Y$="n"THEN 280
0250 SCRATCH T#7,A1$(K)
: MOVE T#6,A1$(K)TO T#7,()
: ERRORE9=ERR
: IF E9<>81THEN 1100
: GOTO 290
0260 C3=C3+1
: GOSUB 1130
: IF U(2)=1THEN 280
: LIMITS T#7,A1$(K),B1,B2,B3,B4
: IF A3<>B3THEN 320
: A3=A3+(1-SGN(A3-1))*(A2-A1)
: FOR L=ABS(A4-2)TO A3-A4-1
: DATA LOAD BA T#6,(A1+L)B$()
: DATA LOAD BA T#7,(B1+L)C$()
: IF B$()<>C$()THEN 320
: NEXT L
: GOSUB 1140
0280 NEXT K
: GOTO 210
0290 Y9$=DSC HEX(80808080)
: CONVERT STR(Y9$,5,4)TO N
: N=N+1
: CONVERT NTO STR(Y9$,5,4),(####)
: STR(Y9$,5,4)=OR HEX(80808080)
: SAVE T#7,(A1$(K))Y9$10,10
: ERRORE9=ERR
: IF E9<>83THEN 1100
: GOTO 290
0300 SCRATCH T#7,Y9$
: MOVE T#6,A1$(K)TO T#7,(S)
: ERRORE9=ERR
: GOTO 1100
0310 GOTO 260
0320 F=F+1
: IF F=1THEN 330
: IF F=2AND F1$=A1$(K)THEN 1110
: F=1
0330 F1$=A1$(K)
: C3=C3-1
: GOTO 220
1000 KEYIN Y$,1000,1000
: PRINT HEX(07);AT(23,0,);"Do you wish to overwrite file ";HEX(0E);A1$(K);
HEX(0F);" ? (Enter 'Y' OR 'N') ";HEX(0E8B0F);
: Y$="Y"
: KEYIN Y$
: IF Y$<>"Y"AND Y$<>"y"AND Y$<>"N"AND Y$<>"n"THEN 1000
: PRINT HEX(080E);Y$;HEX(0F06);
: RETURN
1010 RESTORE
: GOTO 80
1020 PRINT HEX(0706020402000E);AT(23,0);"Dates and times must contain only num
bers";HEX(0F);
: GOTO 90
1030 PRINT HEX(0706020402000E);AT(23,0);"Invalid floppy disk address";HEX(0F);
: GOTO 90
1040 PRINT HEX(0706020402000E);AT(23,0);"Invalid destination disk address";HEX
(0F);
: GOTO 90
1050 PRINT HEX(0706020402000E);AT(23,0);"Floppy and destination disk addresses
cannot be the same";HEX(0F);
: GOTO 90
1060 PRINT HEX(0706020402000E);AT(23,0);"Mount software diskette #1 at floppy
address";HEX(0F);
: GOTO 90
1070 PRINT HEX(0706);AT(19,0);"Essential file ";Z9$;" is missing from the dest
ination disk.";AT(20,0);"You must either copy the system data files";AT(2
1,0);"Or choose a destination disk where ";HEX(22);Z9$;" resides.";
: GOTO 90
1080 KEYIN Y$,1080,1080
: PRINT HEX(0706020402000E);AT(23,0,);"Mount software diskette #";STR(R$(J)
,9,1);" at address ";U2$(6);", and THEN press EXECUTE.";HEX(0F);
: KEYIN Y$
: IF VAL(Y$)<>82AND VAL(Y$)<>130THEN 1080
: PRINT AT(23,0,);
: GOTO 200
1090 PRINT HEX(0706020402000E);AT(23,0);"Diskette does not contain the proper
files. Contact your Wang reprsentative.";HEX(0F);
: PRINT AT(19,0);
: END
1100 PRINT HEX(0706020402000E);AT(23,0);
: IF E9=85THEN PRINT "The index of the disk at ";U2$(7);" is full.";
: IF E9=86THEN PRINT "No more room on the disk at address ";U2$(7);".";
: ELSE PRINT "Error ";E9;". Software is not fully installed.";HEX(0F);
: PRINT AT(19,0,80);
: STOP #
: GOTO 280
1110 F=0
: C4=C4+1
: IF C4>1THEN 1120
: PRINT HEX(06020402000E);AT(2,0,1120);"The following files cannot be verif
ied: (diskette number follows file name)";HEX(0F)
1120 PRINT AT(3+INT((C4-1)/5),15*MOD((C4-1),5));A1$(K);" #";STR(R$(J),9,1)
: GOTO 280
1130 PRINT AT(19,0,);"Now copying file number ";HEX(0E);C3;": ";A1$(K);HEX(0F
)
: RETURN
1140 PRINT AT(19,0,);"Now verifying file number ";HEX(0E);C3;": ";A1$(K);HEX(
0F)
: RETURN
1150 PRINT HEX(020402000E);AT(19,0,);"All software is now installed and update
d";
: PRINT AT(20,0);
: IF N=0THEN END
: PRINT "Because of file size conflicts, ";N;" scratched junk file(s)";AT(2
1,0);
: IF N=1THEN PRINT "Has";
: ELSE PRINT "Have";
: PRINT " been created on destination platter.";HEX(0F);
: RETURN
2000 DATA 3,0,0,"INSTALLATION OF WANG 2200 WORD PROCESSING SOFTWARE"
: DATA 4,2,0,"Provide requested information and press EXECUTE"
: DATA 4,4,0,"Enter today's date (MMDDYY)"
: DATA 2,4,29,2," "
: DATA 2,4,32,2," "
: DATA 2,4,35,2," "
: DATA 4,5,0,"Enter present time (24 hour system - HHMM)"
2070 DATA 2,5,44,2," "
: DATA 2,5,47,2," "
: DATA 4,7,0,"Enter address where floppy disk containing software resides"
: DATA 2,7,61,3," "
: DATA 4,8,0,"Enter destination address for software"
: DATA 2,8,40,3," "
: DATA 4,10,3,"Select which files to copy:"
: DATA 4,10,55,"Select option:"
2150 DATA 1,11,3,1,"Copy programs only","Copy programs and system data files",
"\DE"
: DATA 1,11,55,1,"Copy only","Copy and verify","\DE"
: DATA 4,14,3,"If a file already exists on destination disk:"
2180 DATA 1,15,3,1,"Replace all such files","Stop for confirmation for each fi
le","Terminate Immediately","\DE"
: DATA 0
3005 DEFFN'61
: E,E1,E2,Q,Q5=0
3010 READ X
: ON XGOSUB 3015,3025,3030,3030,3025
: IF X=0THEN RETURN
: GOTO 3010
3015 E=E+1
: READ R(E),C(E),U(E)
: Q5=Q5+1
: STR(D1$,Q5,1)="O"
: E(E)=0
3020 READ X$
: IF X$="\DE"THEN RETURN
: E(E)=E(E)+1
: Q=Q+1
: E$(Q)=X$
: GOTO 3020
3025 E2=E2+1
: T2(E2)=X
: READ R2(E2),C2(E2),E2(E2),U2$(E2)
: Q5=Q5+1
: STR(D1$,Q5,1)="T"
: RETURN
3030 E1=E1+1
: T1(E1)=X
: READ R1(E1),C1(E1),E1$(E1)
: RETURN
3040 DEFFN'62
: D$(),D2$()=ALL(00)
: PRINT HEX(06);
: $TRAN(U2$(),HEX(8520))R
: IF E1=0THEN 3055
: IF E1$(1)=" "THEN 3050
: PRINT HEX(020402000E);AT(0,40-LEN(E1$(1))/2);E1$(1);
: X$=ALL(CC)
: IF R1(1)=1THEN PRINT AT(1,0);HEX(0202020F);STR(X$,,80);
: PRINT HEX(0F0202000F);
3050 IF E1=1THEN 3055
: FOR X=2TO E1
: PRINT AT(R1(X),C1(X));STR(E1$(X),,LEN(E1$(X)));
: IF T1(X)=3THEN PRINT AT(R1(X)+1,C1(X));BOX(0,LEN(E1$(X)))
: NEXT X
3055 IF E=0THEN 3065
: Q=0
: FOR X=1TO E
: R0=0
: R=ABS(R(X))
: C=C(X)
: Q1=C1
: IF R(X)>0THEN Q1=1
: Q2=INT(E(X)/Q1)
: Q3=1
: FOR X1=1TO Q1
: IF X1>MOD(E(X),Q1)THEN Q3=0
: Q5=C+C2*(X1-1)
3060 FOR Q0=1TO Q2+Q3
: Q=Q+1
: R0=R0+1
: D$(Q)=BIN(R+Q0-1)&BIN(Q5)
: PRINT AT(R+Q0-1,Q5);
: IF U(X)=R0THEN PRINT HEX(0202020F0ECC200202000F);
: ELSE PRINT HEX(2E20);
: PRINT STR(E$(Q),,LEN(E$(Q)));HEX(0F);
: NEXT Q0
: NEXT X1
: NEXT X
3065 IF E2=0THEN 3070
: Q2=0
: X$=ALL(85)
: FOR X=1TO E2
: R=R2(X)
: C=C2(X)
: PRINT HEX(020402000E);AT(R,C);
: IF T2(X)=2THEN PRINT STR(U2$(X),,E2(X));
: ELSE PRINT STR(X$,,E2(X))
: PRINT HEX(0F);
: FOR X1=1TO E2(X)
: Q2=Q2+1
: D2$(Q2)=BIN(R)&BIN(C+X1-1)
: NEXT X1
: NEXT X
3070 Q2,Q5=1
: Q$=D1$
: IF Q$="O"THEN 3075
: R=R2(1)
: C=C2(1)
: GOTO 3080
3075 R=VAL(D$(U(1)))
: C=VAL(STR(D$(U(1)),2))
3080 PRINT AT(R,C);HEX(0E050F);
: KEYIN Q$,,3200
: PRINT HEX(06);AT(23,0,80);
: ON POS(HEX(820D)=Q$)GOTO 3120,3095
: GOSUB 3250
: ON QGOTO 3135,3180,,,3180
3085 X$="Move cursor!"
3090 PRINT AT(23,40);HEX(020404000E07);X$;
: GOTO 3080
3095 GOSUB 3250
: IF Q=0THEN 3085
: IF Q<>1OR Q$<>HEX(0D)THEN 3100
: Q0=Q3-Q1+U(Q2)
: R0=VAL(D$(Q0))
: C0=VAL(STR(D$(Q0),2))
: U(Q2)=Q1
: GOSUB 3175
3100 GOSUB 3285
: GOTO 3080
3110 U=-1
: RETURN
3115 U=0
: RETURN
3120 U=1
: $TRAN(U2$(),HEX(2085))R
: RETURN
3125 U=2
: RETURN
3130 U=3
: RETURN
3135 R0=R
: C0=C
: Q0=Q3
: ON POS(HEX(2008)=Q$)GOTO 3160,3165
: X=0
: IF Q1=E(Q2)THEN 3150
: FOR X1=1TO E(Q2)-Q1
: IF STR(E$(Q3+X1),,1)<>Q$THEN 3145
: X=Q1+X1
: Q3=Q3+X1
: X1=E(Q2)
3145 NEXT X1
: IF X>0THEN 3170
3150 IF Q1=1THEN 3080
: Q3=Q3-Q1
: FOR X1=1TO Q1-1
: IF STR(E$(Q3+X1),,1)<>Q$THEN 3155
: X=X1
: Q3=Q3+X1
: X1=Q1-1
3155 NEXT X1
: IF X=0THEN 3080
: GOTO 3170
3160 X=Q1+1
: Q3=Q3+1
: IF X<=E(Q2)THEN 3170
: X=1
: Q3=Q3-E(Q2)
: GOTO 3170
3165 X=Q1-1
: Q3=Q3-1
: IF X>=1THEN 3170
: X=E(Q2)
: Q3=Q3+E(Q2)
3170 U(Q2)=X
: R=VAL(D$(Q3))
: C=VAL(STR(D$(Q3),2))
: GOSUB 3175
: GOTO 3080
3175 PRINT AT(R0,C0);HEX(2E20);STR(E$(Q0),,LEN(E$(Q0)));AT(R,C);HEX(0202020F02
0402000ECC200202000F);STR(E$(Q3),,LEN(E$(Q3)));HEX(0F);
: RETURN
3180 IF Q$=HEX(08)THEN 3195
: STR(U2$(Q2),Q1,1)=Q$
3185 $TRAN(STR(U2$(Q2)),HEX(8520))R
: IF Q=2THEN PRINT HEX(06020402000E);AT(R2(Q2),C2(Q2));STR(U2$(Q2),,E2(Q2))
;HEX(0F);
: R=R2(Q2)
: C=C2(Q2)+Q1
: IF Q1=E2(Q2)THEN GOSUB 3285
: GOTO 3080
3195 IF Q1<2THEN 3080
: Q1=Q1-2
: STR(U2$(Q2),Q1+1,1)=" "
: GOTO 3185
3200 PRINT HEX(06);AT(23,0,80);
: ON POS(HEX(46454C4DF05042437E7F48494A)=Q$)GOTO 3205,3210,3215,3220,3115,3
115,3125,3130,3095,3095,3225,3225,3225
: X$="Invalid key - ignored!"
: GOTO 3090
3205 R=R-1
: IF R<0THEN R=23
: GOTO 3080
3210 R=R+1
: IF R>23THEN R=0
: GOTO 3080
3215 C=C+1
: IF C<=79THEN 3080
: C=0
: GOTO 3210
3220 C=C-1
: IF C>=0THEN 3080
: C=79
: GOTO 3205
3225 GOSUB 3250
: IF Q=0THEN 3090
: IF Q<>1THEN ON POS(HEX(48494A)=Q$)GOTO 3230,3235,3240
: X$="Invalid key for this type of field!"
: GOTO 3090
3230 STR(U2$(Q2),Q1)=" "
: Q1=Q1-1
: GOTO 3185
3235 IF E2(Q2)-Q1=0THEN 3080
: MAT COPY STR(U2$(Q2),Q1+1,E2(Q2)-Q1)TO STR(U2$(Q2),Q1,E2(Q2)-Q1+1)
: Q1=Q1-1
: GOTO 3185
3240 IF E2(Q2)-Q1=0THEN 3080
: MAT COPY -STR(U2$(Q2),Q1,E2(Q2)-Q1)TO -STR(U2$(Q2),Q1+1,E2(Q2)-Q1)
: STR(U2$(Q2),Q1,1)=" "
: Q1=Q1-1
: GOTO 3185
3250 Q=0
: X$=BIN(R)&BIN(C)
: MAT SEARCHD$(),=STR(X$,,2)TO X2$STEP 2
: IF X2$=HEX(0000)THEN MAT SEARCHD2$(),=STR(X$,,2)TO X2$STEP 2
: ELSE Q=1
: IF X2$=HEX(0000)THEN RETURN
: Q3=(VAL(X2$,2)+1)/2
: X=0
: IF Q<>1THEN 3275
: FOR X1=1TO E
: X=X+E(X1)
: IF Q3>=X+1THEN 3260
: Q2=X1
: X1=E
3260 NEXT X1
: Q1=Q3-X+E(Q2)
: X2$="O"
3265 Q5,X=0
3270 Q5=Q5+1
: IF STR(D1$,Q5,1)=X2$THEN X=X+1
: IF X=Q2THEN RETURN
: GOTO 3270
3275 FOR X1=1TO E2
: X=X+E2(X1)
: IF Q3>=X+1THEN 3280
: Q2=X1
: X1=E2
3280 NEXT X1
: Q1=Q3-X+E2(Q2)
: Q=T2(Q2)
: X2$="T"
: GOTO 3265
3285 IF Q$=HEX(7F)THEN Q5=Q5-1
: ELSE Q5=Q5+1
: IF Q5>E+E2THEN Q5=1
: IF Q5<1THEN Q5=E+E2
: X2$=STR(D1$,Q5,1)
: Q2=0
: FOR X=1TO Q5
: IF X2$=STR(D1$,X,1)THEN Q2=Q2+1
: NEXT X
: IF X2$="T"THEN 3305
: Q=1
: Q1=U(Q2)
: Q3=0
: IF Q2=1THEN 3300
: FOR X=1TO Q2-1
: Q3=Q3+E(X)
: NEXT X
3300 Q3=Q3+Q1
: R=VAL(D$(Q3))
: C=VAL(STR(D$(Q3),2))
: RETURN
3305 Q=T2(Q2)
: Q1=1
: R=R2(Q2)
: C=C2(Q2)
: RETURN