Listing of file='@GENPART' on disk='vmedia/701-2294P.wvd.zip'
# Sector 544, program filename = '@GENPART'
0010 REM '@GENPART' 05/13/81 GENERATE PARTITIONS (NO FN)
0020 DIM A$17,S(16),C$16,X$1,S$32,T$16,F$8,F1$8,F2$8,P$(16)8,D$4,D$(33)3,D1$4,
E$1,M$78
0030 DIM A(8),B$(16)1,R(8),B,L$52,P$8,M$(3)80
0040 REM -- MAX NO. OF PARTITIONS
: U1=16
0050 REM -- MIN PARTITION SIZE
: M=1.25
0060 REM -- MAX NUMBER OF TERMINALS
: T1=13
0070 REM -- M1 MAX NO. OF CONFIGURATIONS TO BE SAVED ON DISK
: M1=10
0090 REM -- STR(A$,I,1) = SIZE OF PARTITION I (BINARY NO. OF PAGES)
: REM -- S(I) SIZE OF PARTITION I
: REM -- S9 = TOTAL AVAILABLE MEMORY IN SYSTEM
: REM -- B = NUMBER OF MEMORY BANKS
: REM -- A() = AVAILABLE MEMORY IN EACH BANK
0140 REM -- R() = REMAINING MEMORY IN EACH BANK
: REM -- P$(I) = NAME OF PROGRAM TO LOAD FOR PARTITION I
: REM -- STR(C$,I,1) = PROGRAMMABILITY ('Y' OR 'N') OF PARTITION I
: REM -- K = CURRENT PARTITION
: REM -- STR(T$,I,1) = TERMINAL NUMBER FOR PARTITION I
0190 REM -- L = LOAD FLAG (FOR DISPLAYING MESSAGES)
: REM -- F$,F1$,F2$ = CONFIGURATION NAME
: REM -- E$ = DISPLAY FLAG (' '=PARTITIONS, 'E'=DEVICE TABLE, 'H'=HELP, 'L'
=CONFIGURATION MENU
: REM -- B$() = DISPLAY FLAGS (BANK BOUNDARIES)
0230 REM -- U = NO. OF PARTITIONS
: REM -- T2= NO. OF TERMINALS
: REM -- P$ = RECONFIGURATION PASSWORD
: P$="SYSTEM"
0250 REM %*** INITIALIZATION (AND POSSIBLE AUTOMATIC EXECUTION) ***
0260 M$=$MSG
: X$=$PSTAT(2)
: ERROR$MSG,M$=" "
0270 GOSUB 420
: GOTO 310
: REM DELETE GOTO TO PROMPT FOR MEMORY SIZE
0280 GOSUB 2230
: L$=HEX(0000)
: PRINTUSING TO L$,"###.##",S9
0290 PRINT AT(3,0);
: LINPUT "Amount of memory available for partitioning (in K)?"STR(L$,3,6)
: CONVERT STR(L$,3,6) TO S9
: ERRORGOTO 290
0300 S9=FNT(S9)
: IF S9>229 THEN 290
: GOSUB 440
: GOTO 340
0310 REM INITIALLY LOAD A DEFAULT CONFIGURATION (PASS NAME TO SUBROUTINE '205)
: GOSUB '205("current")
: IF F1$<>F$ THEN 340
: E$="?"
: L=1
0320 GOTO 1150
: REM DELETE GOTO FOR AUTOMATIC EXECUTION
0325 GOTO 780
: REM DELETE GOTO TO RANDOMIZE PASSWORD
0330 CONVERT RND(1) TO P$,(.#######)
: GOTO 790
0340 GOSUB 590
: GOSUB 390
: L=0
: IF F$=" " THEN GOTO 380
: ELSE GOTO 1150
0360 PRINT AT(U6,0,80);
: IF L=0 THEN RETURN
: PRINT "Configuration '";F$; "' loaded. ";
: L=0
: RETURN
0370 REM %*** CLEAR ALL PARTITIONS ***
0380 DEFFN'00
: RETURN CLEAR ALL
: GOSUB 390
: GOSUB '204
: GOTO 470
0390 MAT S=ZER
: C$=ALL("Y")
: P$()=ALL(" ")
0400 U,L=0
: U6=20
: MAT MOVE A() TO R()
: B$()=ALL(" ")
: E$=" "
: RETURN
0410 REM % *** CALCULATE MEMORY SIZE ***
0420 S9=0
: FOR I=1 TO U1
: L$=$PSTAT(I)
: ERRORI=U1
: L$=ALL(00)
0430 UNPACK (##.##) STR(L$,12,2) TO X
: S9=S9+X
: NEXT I
: S9=MAX(S9,SPACEK)
0440 MAT A=ZER
: A(1)=MIN(S9,61)
: J=S9-61
: B=1
0450 IF J<=0 THEN RETURN
: B=B+1
: A(B)=MIN(J,56)
: J=J-56
: GOTO 450
0460 REM %*** CHANGE TERMINAL DATA ***
0470 DEFFN'04
: RETURN CLEAR ALL
: GOSUB '204
: K=1+MOD(K,U)
0480 GOSUB 360
0490 IF E$<>" " OR U=0 THEN 470
: IF K=0THEN K=1
: PRINT HEX(0E);"Edit which partition (default =";K;")";
: INPUT K
: ERRORGOTO 480
0500 IF K<>INT(K) OR K<=0 OR K>U THEN 480
: PRINT HEX(0E);
: GOSUB '206(K)
: PRINT AT(4+K,1);"*";
0510 X=S(K)
: PRINT AT(U6,0,80);
: PRINT "Partition size (default =";X;"K)";
: INPUT X
: ERRORGOTO 510
0520 IF X<M AND X<>0 THEN 510
: X=FNT(X)
: IF S(K)=X THEN 530
: S(K)=X
: GOSUB 1920
: PRINT HEX(0E);
: GOSUB '206(K)
: PRINT AT(4+K,1);"*"
0530 T=VAL(STR(T$,K))
: PRINT AT(U6,0,80);"Terminal (default =";T;")";
: INPUT T
: ERRORGOTO 530
0540 IF T<>INT(T) OR T<0 OR T>T2 THEN 530
: IF VAL(STR(T$,K,1))=T THEN 550
: STR(T$,K,1)=BIN(T)
: PRINT HEX(0E);
: GOSUB '206(-K)
: PRINT AT(K+4,1);"*"
0550 X$=STR(C$,K,1)
: PRINT AT(U6,0,80);
: INPUT "Enable programming (Y or N) ",X$
: $TRAN(X$,"YyNn")R
: IF POS("YN"=X$)=0THEN 550
: IF STR(C$,K,1)=X$ THEN 560
: STR(C$,K,1)=X$
: PRINT HEX(0E);
: GOSUB '206(-K)
: PRINT AT(K+4,1);"*"
0560 PRINT AT(U6,0,80)
: LINPUT "Name of program to load?"?-P$(K)
: GOSUB '206(-K)
: PRINT AT(K+4,1);"*"
: GOTO 470
0570 REM %*** DEFAULT DEVICE TABLE ***
0580 DEFFN'01
: GOSUB 590
: E$="?"
: GOTO 1390
0590 D$()=ALL(00)
: D$(1)=HEX(021500)
: D$(2)=HEX(031000)
: D$(3)=HEX(032000)
: RETURN
0600 REM %*** ALLOCATE REMAINING MEMORY ***
0610 DEFFN'02
: RETURN CLEAR ALL
: GOSUB '204
: L$=HEX(0000)
: B$(U)="Y"
: MAT SEARCH B$(),="Y" TO STR(L$,3)
: B$(U)="N"
0620 IF B=1 THEN 700
: X$="A"
: PRINT AT(U6,0,80);
: INPUT "Divide memory evenly in which bank (default = all)",X$
0630 IF X$="A" OR X$="a" THEN 700
: CONVERT X$ TO J
: ERRORGOTO 620
0640 GOSUB 650
: GOTO 710
0650 N=0
: X=VAL(STR(L$,2*J+1),2)
: IF X=0 THEN 710
: FOR I=VAL(STR(L$,2*(J-1)+1),2)+1 TO X
: IF S(I)=0 THEN N=N+1
: NEXT I
0660 IF N=0 THEN RETURN
: S2=FNT(R(J)/N)
0670 IF S2>=MTHEN 680
: S2=J
: GOSUB 1920
: GOSUB '200
: PRINT AT(U6,0,80);"TOO LITTLE REMAINING MEMORY";
: IF B>1 THEN PRINTUSING " IN BANK #",S2;
: PRINT ". ";
: GOTO 490
0680 IF R(J)-(S2*N)<0 THEN S2=S2-.25
0690 FOR I=VAL(STR(L$,2*(J-1)+1),2)+1 TO VAL(STR(L$,2*J+1),2)
: IF S(I)=0 THEN S(I)=S2
: NEXT I
: RETURN
0700 FOR J=1 TO B
: GOSUB 650
: NEXT J
0710 K=0
: GOSUB 1920
: GOSUB '200
: GOTO 470
0720 REM %*** CONFIGURE PARTITIONS ***
0730 DEFFN'15
: RETURN CLEAR ALL
: GOSUB '204
: X$=$PSTAT(2)
: ERRORGOTO 750
0740 PRINT AT(U6,0,80);"SYSTEM HAS ALREADY BEEN CONFIGURED. ";HEX(07);
: GOTO 490
0750 GOSUB 1860
: IF X$="T" THEN GOSUB '200
0760 PRINT AT(U6,0,80);"Check configuration. OK to execute (Y or N)";
0770 KEYIN X$,770,770
: X$="N"
: INPUT X$
: ON POS("YyNn"=X$) GOTO 780,780,480,480
: GOTO 760
0780 PRINT AT(U6,0,80);
: LINPUT "Reconfiguration password?"?-P$
0790 FOR K=1 TO U
: IF S(K)>=M THEN 800
: PRINT AT(U6,0,80);HEX(07);"SIZE OF PARTITION";K;"IS ILLEGAL. ";
: GOTO 490
0800 NEXT K
0810 FOR I=1 TO B
: IF R(I)>=0 THEN 820
: PRINT AT(U6,0,80);HEX(07);"AVAILABLE MEMORY EXCEEDED IN BANK";I;". ";
: GOTO 490
0820 NEXT I
0830 A$=ALL(00)
: FOR I=1TO U
: STR(A$,I,1)=BIN(S(I)*4)
: NEXT I
0840 D$(33)=ALL(00)
: I=1
: FOR D=1TO 32
: IF STR(D$(D),2,1)=HEX(00) THEN 850
: D$=D$(D)
: D$(D)=ALL(00)
: D$(I)=D$
: I=I+1
: GOTO 860
0850 D$(D)=ALL(00)
0860 NEXT D
: PACK(##.##) S$ FROM S()
0870 DATA LOAD DC OPEN T "@SYSFILE"
: ERRORGOTO 890
0880 DATA SAVE DC "current ",U,S$,T$,C$,P$(),D$()
: ERRORREM WRITE PROTECT
0890 $TRAN(C$,HEX(014E0059))R
: FOR I=1 TO 16
: IF P$(I)<>" " THEN STR(C$,I,1)=OR HEX(02)
: NEXT I
0900 $MSG=M$
: $INIT (A$,T$,C$,P$(),D$(),P$)
: REM THIS STATEMENT NOT LEGAL IN 2200VP
: REM NOT LEGAL ON 2200MVP IF SYSTEM ALREADY CONFIGURED -- EXECUTE IMMEDIAT
E MODE $INIT "password" STATEMENT.
0910 REM %*** SAVE CONFIGURATION ON DISK ***
0920 DEFFN'09
: RETURN CLEAR ALL
: GOSUB '204
: GOSUB 1860
: IF X$="T" THEN GOSUB '200
: PACK(##.##) S$ FROM S()
0930 PRINT AT(U6,0,80);"Check configuration to save. Configuration name?";
: LINPUT ?-F$
: IF F$=" " THEN 930
0940 LIMITS T"@SYSFILE",D,I,D2,D3
: ERRORGOSUB 1120
: GOTO 940
0950 IF D3>0 THEN 980
: IF D3=-2THEN 970
: DATA SAVE DC OPEN T (2*(M1+1)+2)"@SYSFILE"
: ERRORGOSUB 1120
: GOTO 940
0960 DATA SAVE DC "current ",U,S$,T$,C$,P$(),D$()
: DATA SAVE DC END
: GOTO 940
0970 DATA SAVE DC OPEN T "@SYSFILE","@SYSFILE"
: GOTO 960
0980 DATA LOAD DC OPEN T "@SYSFILE"
: D,I=0
0990 DATA LOAD DC F1$
: IF END THEN 1020
: D=D+2
: IF F1$=" "AND I=0THEN I=D
: IF F$<>F1$ THEN 990
1000 PRINT AT(U6,0,80);"Configuration '";F$;"' already exists. Overwrite it (
Y or N)";
: INPUT X$
: ON POS("YyNn"=X$) GOTO 1050,1050,1010,1010
: GOTO 1000
1010 PRINT AT(U6,0,80);
: GOTO 1030
1020 IF I>0THEN 1070
: IF D2<2*(M1+1)+2 THEN 1090
: GOSUB 1340
: PRINT AT(U6,0,80);"CONFIGURATION FILE FULL. ";
1030 F1$=" "
: LINPUT "Old configuration to overwrite?"?-F1$
: IF F1$="current" OR F1$=" " THEN 1010
: DBACKSPACE BEG
1040 DATA LOAD DC F2$
: IF END THEN 1080
: IF F2$<>F1$ THEN 1040
1050 DBACKSPACE 2S
: DATA SAVE DC F$,U,S$,T$,C$,P$(),D$()
: ERRORGOSUB 1120
: GOTO 980
1060 GOTO 1110
1070 DBACKSPACE BEG
: DSKIP IS
: GOTO 1050
1080 PRINT AT(U6,0,80);"'";F1$;"' DOES NOT EXIST. ";
: GOTO 1030
1090 DATA SAVE DC F$,U,S$,T$,C$,P$(),D$()
: ERRORGOSUB 1120
: GOTO 980
1100 DATA SAVE DC END
1110 PRINT AT(U6,0,80);"Configuration '";F$;"' saved. ";
: GOTO 490
1120 PRINT AT(U6,0,80);
: X=ERR
: IF X=95 THEN PRINT "DISK IS WRITE PROTECTED, ";
: ELSE PRINT "ERROR";X;
1130 X$=" "
: LINPUT "Key 'RETURN' to retry."?X$
: RETURN
1140 REM %*** LOAD CONFIGURATION FROM DISK ***
1150 DEFFN'08
: RETURN CLEAR ALL
: GOSUB 1340
1160 GOSUB 360
: F1$=" "
1170 LINPUT "Name of configuration to load?"?-F1$
: IF F1$=" " THEN 1190
: PRINT AT(U6,0,80);
1180 GOSUB '205(F1$)
: IF F$<>F1$ THEN 1190
: L=1
: GOTO 470
1190 PRINT AT(U6,0,80);"'";F1$;"' DOES NOT EXIST. ";
: GOTO 1170
1200 REM %*** LOAD SUBROUTINE ***
1210 DEFFN'205(F1$)
: F$=" "
: DATA LOAD DC OPEN T"@SYSFILE"
: ERRORPRINT AT(U6,0,80);"NO CONFIGURATIONS SAVED. ";
: RETURN
1220 DATA LOAD DC F$,U,S$,T$,C$,P$(),D$()
: IF END THEN 1230
: IF F$<>F1$ THEN 1220
1230 U6=MAX(20,U+6)
: UNPACK(##.##) S$ TO S()
: T2=T1
: B$()=ALL(" ")
: GOSUB 1920
: RETURN
1240 REM %*** DELETE CONFIGURATION ***
1250 DEFFN'10
: RETURN CLEAR ALL
: GOSUB 1340
1260 PRINT AT(U6,0,80);
1270 F$,F1$=" "
: LINPUT "Delete which configuration? "?-F1$
1280 IF F1$="current" THEN 1260
: DBACKSPACE BEG
1290 DATA LOAD DC F2$
: IF END THEN 1320
: IF F1$<>F2$ THEN 1290
1300 DBACKSPACE 2S
: DATA SAVE DC F$,U,S$,T$,C$,P$(),D$()
: ERRORGOSUB 1120
: GOTO 1280
1310 E$="?"
: GOTO 1150
1320 PRINT AT(U6,0,80);"CONFIGURATION '";F1$;"' DOES NOT EXIST. ";
: GOTO 1270
1330 REM %*** LIST STORED CONFIGURATIONS ***
1340 DATA LOAD DC OPEN T "@SYSFILE"
: ERRORPRINT AT(U6,0,80);"NO CONFIGURATIONS SAVED. ";
: IF U=0 THEN 380
: GOTO 490
1350 IF E$="L" THEN RETURN
: E$="L"
1360 GOSUB '201
: PRINT AT(4,0);"LIST OF STORED CONFIGURATIONS (#PARTITIONS)"
1370 DATA LOAD DC F2$,T
: IF END THEN RETURN
: IF F2$>" " THEN PRINT ,F2$,"(";T;")"
: GOTO 1370
1380 REM %*** EDIT DEVICE TABLE ***
1390 DEFFN'05
: RETURN CLEAR ALL
: IF E$="E" THEN 1480
: E$="E"
1400 GOSUB '201
: PRINT AT(2,0);" DEVICE PARTITION DEVICE PARTITION"
: GOSUB '202(0)
: D=1
1410 PRINT AT(20,0,80);HEX(0E);"Edit which entry (default =";D;")";
: INPUT D
: ERRORGOTO 1410
1420 IF D<>INT(D) OR D<=0 OR D>32 THEN 1410
: PRINT HEX(0E);
: GOSUB '202(D)
: IF D<17 THEN PRINT AT(2+D,0);"*"
: ELSE PRINT AT(2+D-16,24);"*"
1430 HEXUNPACK STR(D$(D),1,2) TO D$
: P=VAL(STR(D$(D),3))
1440 D1$="/" & STR(D$,2)
: PRINT AT(20,0,80);"Device address (default = /";STR(D$,2);", /000 to dele
te entry)";
: INPUT D1$
: IF VER(D1$,"/HHH")<>4 THEN 1440
: IF D1$="/000" THEN 1500
: STR(D$,2)=STR(D1$,2)
: PRINT HEX(0E);
: GOSUB '203(D)
: HEXPACK D$(D) FROM D$
: STR(D$(D),3)=HEX(00)
1450 X=0
: PRINT AT(20,0,80);"Allocate device to which partition (default = all)";
: INPUT X
: ERRORGOTO 1450
1460 IF X<0 OR X>16 OR X<>INT(X) THEN 1450
: P=X
: GOSUB '203(D)
1470 HEXPACK D$(D) FROM D$
: STR(D$(D),3)=BIN(P)
1480 IF D<17 THEN PRINT AT(2+D,0);" ";
: ELSE PRINT AT(2+D-16,24);" "
1490 D=1+MOD(D,32)
: GOTO 1410
1500 FOR J=D TO 32
: D$(J)=D$(J+1)
: GOSUB '202(J)
: NEXT J
: GOTO 1410
1510 REM %*** EDIT $MSG ***
1520 DEFFN'06
: RETURN CLEAR ALL
: GOSUB '204
1530 PRINT AT(MIN(21,U6),0,80);"Broadcast message:"
: LINPUT -M$
: PRINT AT(MIN(21,U6),0,159);
: GOTO 470
1540 REM %*** DISPLAY DEVICE TABLE ***
1550 DEFFN'202(I)
: IF I=0 THEN 1580
1560 HEXUNPACK STR(D$(I),1,2) TO D$
: P=VAL(STR(D$(I),3))
1570 DEFFN'203(I)
: PRINT HEX(06);AT(3+MOD((I-1),16),24*INT((I-1)/16),18);
: PRINTUSING " ##.",I;
: IF STR(D$,2,3)="000"THEN RETURN
: PRINT " /";STR(D$,2,3);" ";
: IF P=0 THEN PRINT "all"
: ELSE PRINT P
: RETURN
1580 FOR I=1 TO 32
: GOSUB 1560
: NEXT I
: RETURN
1590 REM % *** DISPLAY TITLE & OPTIONS ***
1600 DEFFN'201
: K=0
: GOSUB 2230
1610 PRINT AT(3,52);BOX(16,27);" \CC\C9\D3\D4\A0\CF\C6\A0\CF\D0\D4\C9\CF
\CE\D3:"
1620 PRINT AT(4,53);"SF'00 - clear partitions";AT(5,53);"SF'01 - clear device
table";
1630 PRINT AT(7,53);"SF'02 - divide mem. evenly";AT(9,53);"SF'04 - edit partit
ions";
1640 PRINT AT(10,53);"SF'05 - edit device table";AT(11,53);"SF'06 - edit $MSG"
;
1650 PRINT AT(13,53);"SF'08 - load configuration";AT(14,53);"SF'09 - save conf
iguration";
1660 PRINT AT(15,53);"SF'10 - delete config.";
1670 PRINT AT(17,53);"SF'15 - execute"
1680 RETURN
1690 REM %*** DISPLAY PARTITIONS ***
1700 REM '200 DISPLAYS ALL PARTITIONS
1710 DEFFN'200
: FOR I=MIN(2,U) TO U
: GOSUB '206(-I)
: NEXT I
: GOSUB '206(1)
: RETURN
1720 REM '206 DISPLAYS ONLY ONE PARTITION
1730 DEFFN'206(I)
: J=ABS(I)
: L$=HEX(0000)
1740 IF S(J)>0 THEN PRINTUSING TO L$,1820,J,S(J),VAL(STR(T$,J)),STR(C$,J,1),P$
(J);
: ELSE PRINTUSING TO L$,1820,J," -",VAL(STR(T$,J)),STR(C$,J,1),P$(J);
1750 IF B$(J)="Y" THEN STR(L$,5)= OR ALL(80)
1760 PRINT HEX(06);AT(4+J,0);STR(L$,3);TAB(50);HEX(0F);
1770 IF I<0 THEN 1780
: PRINT AT(2,17);
: FOR J=1 TO B
: PRINTUSING "-##.## ",R(J);
: NEXT J
1780 IF ABS(I)>INT(5/M) OR B=1 THEN 1810
: X=0
: FOR J=1 TO INT(5/M)
: X=X+S(J)
1790 IF X<=5 AND S(J)>0 THEN X$="u"
: ELSE X$=" "
: IF B$(J)="Y" THEN 1810
1800 PRINT AT(4+J,7);STR(X$,,1)
: IF B$(J)="Y" THEN J=U
: NEXT J
1810 I=ABS(I)
: E$=" "
: RETURN
1820 % ## ###.## ### # ##########
1830 REM %*** TRUNCATE TO PAGES ***
1840 DEFFNT(X)=-.25*INT(-4*X)
1850 REM %*** PAD MEMORY BANKS ***
1860 X$="F"
: MAT SEARCH B$(),="Y" TO L$
1870 FOR I=0 TO B-2
: J=VAL(STR(L$,2*I+1),2)
: IF J=0 THEN 1900
1880 IF R(I+1)=0 THEN 1890
: S(J)=S(J)+R(I+1)
: X$="T"
1890 NEXT I
1900 GOSUB 1920
: RETURN
1910 REM %*** CALCULATE REMAINING SPACE ***
1920 MAT MOVE A() TO R()
: J=1
: IF B$(1)=" " THEN 1970
1930 FOR I=1 TO U
: R(J)=R(J)-S(I)
1940 IF B$(I)="N" THEN 1950
: J=J+1
: IF J<=B THEN 1950
: RETURN
1950 NEXT I
: RETURN
1960 REM ESTABLISH BANK BOUNDARIES
1970 B$()=ALL("N")
: FOR I=1 TO U
: IF R(J)-S(I)>=0 OR J+1>B THEN 1980
: J=J+1
: B$(I-1)="Y"
1980 R(J)=R(J)-S(I)
: NEXT I
: RETURN
1990 REM %*** PARTITION DISPLAY ***
2000 DEFFN'204
: IF E$<>" " OR U=0 THEN 2010
: IF K<=0 OR K>UTHEN RETURN
: PRINT AT(K+4,0,2);
: GOSUB '206(K)
: E$=" "
: RETURN
2010 E$=" "
: GOSUB '201
: PRINT AT(1,0);"Available memory:";
2020 FOR I=1 TO B
: PRINTUSING "-##.## ",A(I);
: NEXT I
2030 PRINT AT(2,0);"Remaining memory:";
2040 FOR I=1 TO B
: PRINTUSING "-##.## ",A(I);
: NEXT I
2050 IF U>0 THEN 2120
: PRINT AT(4,0,52);
: INPUT "No. of terminals",T2
: ERRORGOTO 2050
2060 IF T2>T1 OR T2<1 THEN 2050
: B$()=ALL("N")
: U=0
: FOR I=1 TO B
: X=-1
2070 PRINT AT(4+I,0,52);"No. of partitions";
: IF B>1 THEN PRINT " in bank";I;
: INPUT X
: ERRORGOTO 2070
2080 IF X<0 THEN 2070
: IF X=0 THEN 2090
: U=U+X
: B$(MIN(U1,U))="Y"
: NEXT I
: B$(MIN(U1,U))="N"
2090 B$(MIN(U1,U))="N"
: U6=MAX(20,U+6)
: IF U<=U1 THEN 2100
: U=0
: U6=19
: PRINT HEX(07);"NUMBER OF PARTITIONS EXCEEDS";U1
: GOTO 2060
2100 FOR I=5 TO 10
: PRINT AT(I,0,52);
: NEXT I
2110 T$=ALL(00)
: FOR I=1 TO U
: STR(T$,I,1)=BIN(MOD(I-1,T2)+1)
: NEXT I
2120 IF U<>INT(U) OR U<=0 OR U>U1 THEN 2050
2130 PRINT AT(4,0,52);"PARTITION SIZE(K) TERMINAL PROGRAMMABLE PROGRAM"
2140 GOSUB '200
: RETURN
2150 REM %*** OPERATOR HELP ***
2160 REM DEFFN'126
: E$="H"
: GOSUB 2230
2170 DATA LOAD DC OPEN T "@HELP"
: ERRORPRINT AT(21,0);
: X$=" "
: LINPUT "File '@HELP' not found; key 'RETURN' to continue."?X$
: GOTO 480
2180 DATA LOAD DC M$()
2190 FOR X=1 TO 3
: IF POS(M$(X) = HEX(8C))=0 THEN 2200
: GOSUB 2220
: $TRAN(M$(X),HEX(008C2020)) R
2200 IF POS(M$(X)=HEX(8B))>0 THEN GOSUB '4
2210 PRINT M$(X)
: NEXT X
: GOTO 2180
2220 F$=" "
: PRINT AT(23,0);HEX(0E);
: LINPUT "Key 'RETURN' to continue, SF'04 to exit."?F$
2230 PRINT HEX(03060E);TAB(14);"*** WANG 2200MVP PARTITION GENERATION PROGRAM
***"
: PRINT
: RETURN