48 & GET Z$: PRINT "":Z = ASC(Z$):EX = Z = 27:RT = (Z = 13 AND M% = 0):HE = (Z = 63 OR Z = 47):BA = (Z = 3 AND PEEK(49249) >127): RETURN
49 M = M%: INVERSE : GOSUB 99: GOSUB 47: GOSUB 99: ON EX OR HE OR BA GOTO 3: ON Z = 13 GOTO 2:N = (Z -64) *(Z >64): ON Z <64 AND Z >21 GOTO 49: IF N THEN M = N: RETURN
50 M% = M +(Z = 10 OR Z = 21) -(Z = 8 OR Z = 11) *(M >0):M% = M% -LM% *(M% >LM%) +LM% *(M% <1): GOTO 49
51 M = M%: INVERSE : GOSUB 201: GOSUB 47: GOSUB 201: ON EX OR Z = 3 GOTO 3: ON Z = 13 GOTO 2:N = VAL(Z$):N = N *(N >0 AND N = <LZ%): IF N THEN M = N: RETURN
52 M% = M +(Z = 10 OR Z = 21) -(Z = 8 OR Z = 11) *(M >0):M% = M% -LZ% *(M% >LZ%) +LZ% *(M% <1): GOTO 51
53 X$ = "UPDATING FILES": GOTO 24
55 X$ = "READING FILES": GOTO 24
61 IF LEN(X$) <L2 THEN X$ = LEFT$(X$ +X$,L2): GOTO 61
62 RETURN
66 PRINT FR$: TEXT : PRINT : PRINT L$: & FREFR%: & P1,1,"FREE MEM": PRINT FR%: VTAB 1:L = 0: FOR T = 1 TO LT:X = LEN(T$(T)): IF X >L THEN L = X
68 NEXT :L2 = L +4:H = (81 -L2)/2: INVERSE : & P1,H: & L"*",L2: FOR T = 1 TO LT: & HH,"*"; SPC( L +2);"*";: & C80,T$(T): NEXT : & HH: & L"*",L2: NORMAL : POKE 34,LT +2: RETURN
99 ON M <1 OR M >LM% GOTO 3: & P FN V(M),1, CHR$(64 +M)"-"X$(M): NORMAL : RETURN
100 & DEL P%:MX = 0: RETURN
101 ON M <1 OR M >LM% GOTO 3:V = FN V(M): & PV,1, CHR$(64 +M)"-"X$(M)":";: NORMAL : PRINT E$;: RETURN
102 FOR N = 1 TO LM%:Y$(N) = "": NEXT : RETURN
103 GOSUB 120: POKE 34,LT +2: PRINT L$:M = 0: GOSUB 72: FOR M = 1 TO LM%: GOSUB 99: NEXT : GOSUB 72: PRINT "Use Arrows or Press Letter to Select": RETURN
104 GOSUB 120: POKE 34,LT +2: PRINT L$:M = 0: GOSUB 72: FOR M = 1 TO LM%: GOSUB 105: NEXT : GOTO 72
399 PRINT D$"": PRINT SH$: RETURN : REM DOS SUBS<CTRL-0x0a><CTRL-0x0a>
400 & E: GOSUB 409: ON LI = 10050 GOTO 2: ON LI = 118 GOTO 420: ON LI = 1032 GOTO 402: ON LI = 332 GOTO 410: ON LI = 7911 OR LI = 7912 GOTO 450: ON LI = 6020 GOTO 430: ON LI >299 AND LI <400 GOTO 439
401 GOTO 498
402 ON ER < >6 GOTO 405: HOME : INVERSE : VTAB 12: PRINT Z$" LIST NOT FOUND ": NORMAL : PRINT "CREATE FILES (Y/N)?";: & GET X$: PRINT : ON X$ = "Y" GOTO 403: ON X$ = "N" GOTO 1000: GOTO 402
752 Y$(1) = Z$:L2 = 30: GOSUB 108: ON EX GOTO 3: & NORMAL Z$: ON Z$ = "" GOTO 752
753 IF Z$ = "?" THEN FOR Q1 = 1 TO MX:Q3 = Q1:Q2 = P%(Q1) = 1:Q1 = Q1 +MX *Q2: NEXT :Z$ = "#" + STR$(Q3 -1)
754 ON LEFT$(Z$,1) = "?" AND RIGHT$(Z$,1) = "?" GOTO 768: ON LEFT$(Z$,1) = "?" GOTO 766: ON LEFT$(Z$,1) < >"#" GOTO 763:Z = VAL( MID$ (Z$,2)): ON Z <1 OR Z >XP GOTO 764
756 N% = 0: FOR N = 1 TO LP: IF P%(N) = Z THEN N% = N:N = LP
758 NEXT : IF N% = 0 THEN 764
762 GOSUB 339: GOTO 2012
763 GOSUB 700: ON FO GOTO 762
764 GOSUB 36: GOTO 752
766 Z = 0:Z$ = MID$ (Z$,2):X = LEN(Z$): FOR N = 1 TO XP: ON P$(N) = "" GOSUB 336: IF Z$ = RIGHT$(P$(N),X) THEN Z = N:N = XP
767 NEXT : ON NOT Z GOTO 764: GOTO 756
768 Z = 0:X = LEN(Z$):Z$ = MID$ (Z$,2,X -2): FOR N = 1 TO XP: ON P$(N) = "" GOSUB 336: & MID$ P$(N),Z$,Z%: IF Z% THEN Z = N:N = XP
769 NEXT : ON NOT Z GOTO 764: GOTO 756: REM FIND RECORD<CTRL-0x0a>
770 PRINT FR$: & FREFR%:V = V% -1: ON FR% <1000 GOTO 780:X$ = "RET=Accept, ESC=Exit, ARROWS=Move through records": GOSUB 47: ON EX OR Z = 13 GOTO 3: ON Z = 8 OR Z = 21 OR Z = 10 OR Z = 11 GOTO 772: GOTO 770
772 N = N% +(Z = 21) -(Z = 8) +(Z = 11) -(Z = 10): IF N <1 OR N >LP THEN GOSUB 36: GOTO 770
774 N% = N: GOSUB 339: FOR M = 1 TO LM%: GOSUB 105: NEXT : GOSUB 2014: GOTO 770: REM UP/DOWN<CTRL-0x0a><CTRL-0x0a><CTRL-0x0a>
780 EX = 1: GOTO 32
800 LT = 4:T$(1) = " Micro Byte List Manager ": ON LS$ = "" GOTO 810:T$(3) = "List in memory is : " +LS$:T$(4) = LS$ +" has " + STR$(LP) +" records organized by " +Z$(PS): GOTO 66:<CTRL-0x0a>
810 T$(3) = "NO LIST IN MEMORY AT THIS TIME":LT = 3: GOTO 66
852 PRINT L$: VTAB 10: & C80,"Micro Byte List Manager by E. L. Cranford, Jr.": & C80,"Copyright (c) 1989 Softdisk, Inc.": & C80,"All Rights Reserved"
853 & C80,"Published on Softdisk #97": & C80,"Subscriptions: 1-800-831-2694": & C80,"Changing this notice is illegal": VTAB 23: INVERSE : & C80,"PRESS SPACE BAR TO CONTINUE": NORMAL : FOR N = 1 TO 1E3:N = N +1E3 *( PEEK(49168) = 160): NEXT
858 DIM T$(5),W$(10),X$(10),Y$(10),Z$(10): GOSUB 301: GOSUB 2015
859 M% = 1: GOTO 900
900 T$(2) = "Main Menu": GOSUB 800
910 LM% = 8: & D,LM%,X$(1): GOSUB 103
920 GOSUB 34: ON EX GOTO 999: ON HE GOTO 940: ON BA GOTO 998
930 ON M GOTO 1000,2000,3000,5000,6000,7000,8000,4000: GOTO 920
940 H$ = "H0": GOSUB 10000: GOTO 900
993 X$ = "NO LIST IN MEMORY":V = V% -1: GOSUB 25: GOTO 920
997 DATA Select list,Edit list,Print labels & phone lists,Catalog data volume,"Set data location (Prefix)",Set list parameters,Enter & print casual Labels,"Sort list (if error)"
998 PRINT CL$: TEXT : END
999 X$ = "DO YOU REALY WANT TO QUIT (Y/N)?": INVERSE : GOSUB 47: ON Z$ = "Y" GOTO 83: ON Z$ < >"N" GOTO 999: GOTO 920
1000 T$(2) = "Select List": GOSUB 800
1010 GOSUB 1100: ON EX GOTO 900: ON HE GOTO 1050
1032 PRINT D$"VERIFY "PF$Z$:LS$ = Z$
1034 TEXT : PRINT L$: GOSUB 330: GOSUB 332
1040 DIM P%(MX),P$(MX): GOSUB 380:M% = 2: GOTO 900:<CTRL-0x0a>
1050 H$ = "H1": GOSUB 10000: GOTO 1000
1100 Y$ = LS$:X$ = "List name (?=Help)": GOSUB 70
1102 IF LEFT$(PF$,1) = "/" THEN PX$ = "": GOTO 1106
2016 DATA "Name (Last,First)",Company/Address,Address,Address,City,State,Zipcode,Phone number,"Reverse names (Field A) at comma for labels (y/n)",Sublist code(s):<CTRL-0x0a><CTRL-0x0a>
2100 T$(2) = "Add Names": GOSUB 800: IF FR% <1000 THEN GOSUB 32: GOTO 2000
2101 N% = LP +1: IF N% >MX THEN GOSUB 38: GOTO 2000
2102 P = P%(N%): IF N% >XP THEN P = N%
2103 LM% = 10: GOSUB 102:Y$(9) = LF$: GOSUB 2012
2104 FOR M = 1 TO LM%: GOSUB 2109: NEXT
2105 ON EX GOTO 2000: GOSUB 35: ON RT GOTO 2190: GOSUB 2109: GOTO 2105:<CTRL-0x0a>
2109 ON M GOSUB 2110,2110,2110,2110,2110,2110,2160,2170,2180,2110:M = M +EX *LM%: RETURN :<CTRL-0x0a>
2110 L2 = 30: GOTO 108
2150 L2 = 2: GOTO 108
2160 L2 = 10: GOTO 108
2170 L2 = 12: GOTO 108
2180 GOSUB 107: ON EX OR Z$ = "Y" OR Z$ = "N" GOTO 2: GOTO 2180
3502 GOSUB 44: ON EX GOTO 3000: ON M GOTO 3510,3510: GOTO 3502
3510 LS% = M:T$(2) = X$(M): GOSUB 800: GOSUB 3600: ON EX GOTO 3500
3520 TEXT : PRINT L$:PG = 0: ON NOT SP GOSUB 500: GOSUB 510: GOSUB 3400
3530 N% = N% +1: ON N% >LP GOTO 3590: ON L >54 AND SP = 0 GOSUB 509: ON PEEK(37) >20 AND SP GOSUB 3580:P = P%(N%): GOSUB 334: IF LEFT$(P$(P), LEN(LL$)) >LL$ THEN 3590
3532 ON SU$ = "" GOTO 3534: GOSUB 600: ON NOT FO GOTO 3530
3534 ON AL$ = "N" GOTO 3540:X$ = Y$(AD): & NORMAL X$: IF X$ <W$(1) OR LEFT$(X$, LEN(W$(2))) >W$(2) THEN 3530
3540 ON LS% GOSUB 3550,3560: GOTO 3530
3550 N = 67 - LEN(Y$(1)): PRINT Y$(1);: ON PS >1 AND PS <8 GOSUB 3551: ON PS = 1 OR PS = 8 GOSUB 3552: & H68,Y$(8):L = L +1: RETURN
3551 & H32,Y$(PS);: RETURN
3552 & L".",N,: RETURN
3560 PRINT Y$(1);: & H32,Y$(2);: & H65,Y$(8):L = L +1: FOR N = 3 TO 4: IF Y$(N) >"" THEN & H32,Y$(N):L = L +1
3561 NEXT : & H32,Y$(5)", "Y$(6)" "Y$(7): PRINT :L = L +2: RETURN
3580 PRINT "PRESS KEY TO CONTINUE :";: GET Z$: PRINT L$: RETURN
3690 LM% = 5: GOSUB 3290: & D,3,X$(3): GOTO 104: DATA Sublist code (No code = include all records),Additional limits (Y\N),Print to the screen (S) or to paper (P)
3700 GOSUB 200
3702 X$ = "Select fielt to limit (ESC=Exit)": GOSUB 51: ON EX GOTO 2:AD = M: ON AD <1 OR AD >8 GOTO 3702
3704 & X,Y$,W$:LM% = 2:X$(1) = "Lowest " +Z$(AD):X$(2) = "Highest " +Z$(AD): GOSUB 102: GOSUB 104: FOR M = 1 TO 2: GOSUB 3706: NEXT
3705 ON EX GOTO 3799: GOSUB 35: ON RT GOTO 3799: GOSUB 3706: GOTO 3705
3706 ON M GOSUB 3710,3710:M = M +EX *LM%: RETURN
3710 L2 = 30: GOTO 108
3799 & X,Y$,W$: RETURN :<CTRL-0x0a>
3800 PR$ = CHR$( VAL(PC$)):L = LEN(PC$): FOR N = 1 TO L: ON MID$ (PC$,N,1) = "/" GOSUB 3802: NEXT : RETURN
3802 PR$ = PR$ + CHR$( VAL( MID$ (PC$,N +1))): RETURN : REM SET PRINTER CODE
3900 LM% = 5: & D,3,X$(3): GOTO 104: DATA Nunber of labels per record,Sublist code (No code = include all records),Additional limits (Y/N):<CTRL-0x0a>
7600 LM% = 4:L2 = 25: FOR N = 1 TO LM%:X$(N) = "Field title":Y$(N) = Z$(N): NEXT : GOSUB 104
7610 ON EX GOTO 7000: GOSUB 35: ON RT GOTO 7690: ON M GOSUB 108,108,108,108: GOTO 7610
7690 FOR N = 1 TO 4:Z$(N) = Y$(N): NEXT : GOTO 7000
7700 & P FN V(LM% +1) +1,1,"Enter special printer codes in decimal": PRINT "values in the form : 27/31/65": RETURN
7800 DATA Maximum number of records,Horizontal print position for labels (default=1),Number of lines per label (default=6),Special printer codes
7801 DATA Primary sort field,Default setting for Reverse names when printing (Y/N),Reassign field titles (fields A-D)
7900 PC$ = Y$(4):X = VAL(Y$(1)): ON X < >MX GOSUB 7910: GOSUB 53:MX = X:HP = VAL(Y$(2)):LN = VAL(Y$(3)):X = VAL(Y$(5)):NS = X < >PS:PS = X:LF$ = Y$(6): GOSUB 333: ON NS GOTO 4000: GOTO 900
7910 GOSUB 100: PRINT FR$: & FREFR%:Z = FR% -14 -5 *(X +1): IF Z <1000 THEN POP : GOSUB 32: DIM P%(MX),P$(MX): GOTO 7010
7911 DIM P%(X),P$(X): GOTO 380
8000 T$(2) = "Enter & Print Casual Labels:LT = 3: GOSUB 66: IF LN = 0 THEN LN = 6
8002 IF HP = 0 THEN HP = 1
8010 LM% = 5: FOR N = 1 TO LM%:X$(N) = "Line " + STR$(N):Y$(N) = "": NEXT : GOSUB 104: INVERSE : PRINT "?=Help": NORMAL : FOR M = 1 TO LM%: GOSUB 8090: NEXT
8020 ON EX GOTO 900: ON HE GOTO 8060: GOSUB 45: ON RT GOTO 8100: GOSUB 8090: GOTO 8020
8050 L2 = 30: GOTO 108
8060 H$ = "H7": GOSUB 10000: GOTO 8000
8090 ON M <1 OR M >LM% GOTO 2: GOSUB 8050:M = M +EX *LM% +LM% *HE: RETURN :<CTRL-0x0a><CTRL-0x0a>
8100 W$ = Y$(1): HOME :Y$ = "1":X$ = "Number of labels": GOSUB 70
8102 L2 = 2: GOSUB 109: ON EX GOTO 8000
8103 Y$(1) = W$: FOR M = 1 TO Z: GOSUB 8110: NEXT : GOTO 8000
8110 GOSUB 500: FOR N = 1 TO 5: & HHP,Y$(N): NEXT : FOR N = N TO LN: PRINT : NEXT : GOTO 599
10010 X$ = "<< ARROWS=NEXT/PREVIOUS PAGE, ESC=EXIT HELP >>": INVERSE : GOSUB 47: ON EX GOTO 10060: ON Z = 11 OR Z = 21 GOSUB 10020: ON Z = 10 OR Z = 8 GOSUB 10040: GOTO 10010
10020 A = L +1: ON A >EN GOTO 2: HOME : & PRINT H$(A),21:L = L +21: IF L = >EN THEN INVERSE : & C80,"END OF HELP": NORMAL