50030 COLOR 15,0:PRINT " B-SIMPLE";:COLOR 7,0:PRINT" helps you write good top-down, modular programs in Basic. You don't":PRINT"have to be a programmer to use it. Your programs should";
50033 COLOR 15,0:PRINT " be simple ";:COLOR 7,0:PRINT"to write,";:COLOR 15,0:PRINT"be simple ";:COLOR 7,0:PRINT"to debug, and";:COLOR 15,0:PRINT" be simple ";:COLOR 7,0:PRINT"to change later."
50035 PRINT:PRINT " The Pet User Club of Berkley put an earlier version, MPAK, into the public domain. Kurt Carpenter, IBM Westlake, 8-272-5229, modified it for the IBM PC. This version is by Ira Glickstein, IBM Owego, 8-662-4202."
50040 PRINT:MS$=" HOW TO USE IT: RUN "+CHR$(34)+"B-SIMPLE ":GOSUB 61110:PRINT
50050 PRINT " B-SIMPLE is menu driven. When RUN, it establishes a skeleton for your program, using Blocks of 100 line numbers. You can have up to 199 modules for SUBROUTINES, plus ten for INITIALIZATION, and ten for MAIN LINE PROGRAM.":PRINT
50060 PRINT " B-SIMPLE helps you add, list, renumber, or delete modules. It keeps a directory and puts in module names, etc. to make your listing easier to understand. When you are done, you can delete B-SIMPLE (quite simply)."
50120 MS$=" A BLOCK IS 100 LINE NUMBERS ":GOSUB 61110:PRINT
50130 PRINT " Each module has a reserved block of 100 line numbers. Up to 22 lines may be used for the module (a screen's worth). B-SIMPLE uses four of those lines for module name, RETURN, etc. You can use up to 18 lines.":PRINT
50135 PRINT " Keeping modules short is good programming!":PRINT
50140 PRINT " SUBROUTINES are put from line #100 to line #20000. From the menu you can:":PRINT:PRINT "1 or A=ADD a new module (and enter code using AUTO)":PRINT "2 or L=LIST an old module (and edit if desired)"
50143 PRINT"3 or R=RENUMBER & LIST an old module (and edit if desired)"
50145 PRINT "4=DELETE an old module, or":PRINT"5=DIRECTORY (display a list of all modules)":PRINT
50150 PRINT " INITIALIZATION and the MAIN LINE PROGRAM are between lines #20000 and #22000. From the menu you can:":PRINT:PRINT"6=LIST Blocks of INITIALIZATION or MAIN LINE PROGRAM, or"
50153 PRINT"7=REINITIALIZE Your Program Information"
50220 MS$=" Menu -- 1 or A=ADD a new module ":GOSUB 61110:PRINT
50230 PRINT " B-SIMPLE asks for module number, MN (1 thru 199), and name (up to 20 characters.) It then prints out 7 lines of information, and asks you to HIT RETURN 7 TIMES.":PRINT
50240 PRINT " This puts your module's name in the directory, and in a remark on line MN01 ofthe block. RETURN is put on line MN99. A blank remark is placed above your module (on line MN00) and below your module, to make the listing look good.":PRINT
50260 PRINT " AUTO line numbering starts at line MN10 of your block, with steps of 5 lines. Your code can go from line MN10 (always the first line of code) thru line MN95. RETURN is always line MN99 of the block.":PRINT
50265 PRINT " You can stop AUTO line numbering with CTRL-BREAK. Type RUN (or hit F2) to get back to the B-SIMPLE menu.":PRINT
50270 PRINT " You call this subroutine, from another subroutine, or the MAIN LINE PROGRAM, with a line that says: GOSUB MN00 (or GOSUB MN10 if speed is critical)."
50320 MS$=" Menu -- 2 or L=LIST a module (and edit if desired) ":GOSUB 61110:PRINT
50330 PRINT " B-SIMPLE asks for module number, MN (1 thru 199), and lists the module.":PRINT
50340 PRINT " You can add lines, change lines, etc., using normal BASIC editing.":PRINT
50350 PRINT " You can get back to the B-SIMPLE menu by typing RUN (or hitting F2). If you have inserted code on lines that don't end in 0 or 5, you should go back to the B-SIMPLE menu and select 3 -- RENUMBER.":PRINT
50420 MS$=" Menu -- 3 or R=RENUMBER & LIST (and edit if desired) ":GOSUB 61110:PRINT
50430 PRINT " B-SIMPLE asks for module number, MN (1 thru 199), renumbers, and then lists the module.":PRINT
50440 PRINT " You can add lines, change lines, etc., using normal BASIC editing.":PRINT
50450 PRINT " You can get back to the B-SIMPLE menu by typing RUN (or hitting F2). If you have inserted code on lines that don't end in 0 or 5, you should go back to the B-SIMPLE menu and select 3 -- RENUMBER.":PRINT
50520 MS$=" Menu -- 4=DELETE an old module ":GOSUB 61110:PRINT
50530 PRINT " B-SIMPLE asks for module number, MN (1 thru 199), and prints out the line numbers it uses. It asks you to HIT RETURN a sufficient number of times to delete the lines.":PRINT
50540 PRINT " This removes the subroutine and it's entry in the B-SIMPLE directory.":PRINT
50550 PRINT " You can get back to the B-SIMPLE menu by typing RUN (or hitting F2).":PRINT
50560 PRINT " (By the way, if you try to DELETE a non-existent module, or one that has no code on line MN10, you'll get an error message, but no harm will be done.)":PRINT
50820 MS$=" Menu -- 7=REINITIALIZE Your Program Information":GOSUB 61110:PRINT
50830 PRINT " B-SIMPLE allows you to change the way your name, address, program name, version number, date, etc. appear in title block":PRINT
50840 PRINT " You'll be prompted to enter your name, address, phone, program name, version, date, etc. B-SIMPLE will then print several lines of information, and ask you toHIT RETURN 4 TIMES.":PRINT
50850 PRINT " This will update the title block, and send you back to the B-SIMPLE menu.":PRINT
50920 MS$=" TO RUN YOUR PROGRAM ":GOSUB 61110:PRINT
50930 PRINT " Any time you see Ok and a flashing cursor, you can type RUN 10 (or hit F10) and YOUR program will run.":PRINT:PRINT:PRINT
50960 MS$=" TO DELETE B-SIMPLE (quite simply) ":GOSUB 61110:PRINT
50970 PRINT " When your program is done, and you don't need B-SIMPLE anymore, just:":PRINT:PRINT"DELETE 0-9":PRINT"DELETE 41000-65100 (if you want to keep the B-SIMPLE directory), or":PRINT"DELETE 40000-65100 (if you don't want the directory)."
50980 PRINT:PRINT" Then you can run YOUR program by simply typing RUN.":PRINT
61215 F = 1 : P = PEEK (C) : IF ( P = 137 OR P = 141 OR P = 205 OR P=140 OR P=142 OR P=161 OR P=168 ) AND PEEK (C+1) = 32 THEN C = C + 2 ELSE GOTO 61295
61220 IF P = 141 THEN F = 0
61225 GOSUB 61310 : IF C > N - 1 THEN 61299
61230 IF P = 137 OR P = 141 THEN 61215
61235 IF P = 13 OR P = 14 GOTO 61240 ELSE GOTO 61295
61240 IF P = 13 GOTO 61260
61245 C = C + 1 : FOR E = 1 TO A : IF FNR (C) = L (E) THEN 61255
61250 NEXT E : IF F = 1 THEN MS$ = "WARNING MODULE JUMPS TO ANOTHER MODULE " : GOSUB 61110 : GOTO 61260 ELSE GOTO 61260
61420 FOR I = 1 TO A : PRINT L(I) : NEXT I :PRINT M*100+99: LOCATE 1,1:MS$="HIT ENTER KEY "+STR$(4+A)+" TIMES":GOSUB 61110:RETURN:'within module
61425 GOSUB 61510 : IF FNL (A) >= R THEN MS$ = "CAN'T RESEQUENCE - TOO MANY LINES IN MODULE." : GOSUB 61110 :C=9: RETURN:'within module 61430 N = LO : FOR B = 1 TO A : GOSUB 61610 : GOSUB 61210 : NEXT B : return:'within module
61430 N = LO : FOR B = 1 TO A : GOSUB 61610 : GOSUB 61210 : NEXT B : GOTO 61490
61435 PRINT:INPUT "MODULE NAME (UP TO 20 CHAR) "; N$ : IF LEN(N$) > 20 THEN MS$ = "MODULE NAME TOO LONG" : GOSUB 61110 : GOTO 61435
61440 CLS : LOCATE 3,1,0
61445 PRINT 41000!+M TAB(8);"color 0,7:PRINT "; CHR$(34)" " CHR$(34)": color 7,0 : LIST "; Q-10 ; -R-5
64250 Y=23:GOSUB 64110 CHOICE:K=ASC(X$):K=-1*(49*(K=65 OR K=97)+50*(K=76 OR K=108)+51*(K=82 OR K=114)+K*(K>47 AND K<58))-48:PRINT K:IF K>0 AND K<10 THEN 64290 ELSE 64250
64290 KEY ON
64299 RETURN :'from menu sr
64500 '
64501 'directory sr
64510 CLS
64520 LIST 40000-40399
64599 RETURN : 'from directory sr
64600 '
64601 'LIST SR
64610 CLS :ON ERROR GOTO 64680
64615 ON M GOSUB 41001,41002,41003,41004,41005,41006,41007,41008,41009
64620 ON M-9 GOSUB 41010,41011,41012,41013,41014,41015,41016,41017,41018,41019,41020,41021,41022,41023,41024,41025,41026,41027,41028,41029,41030,41031,41032,41033,41034,41035,41036,41037,41038,41039,41040,41041,41042,41043,41044,41045,41046,41047,41048
64630 ON M-48 GOSUB 41049,41050,41051,41052,41053,41054,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,41065,41066,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41087
64640 ON M-87 GOSUB 41088,41089,41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,41100
64650 ON M-100 GOSUB 41101,41102,41103,41104,41105,41106,41107,41108,41109
64660 ON M-109 GOSUB 41110,41111,41112,41113,41114,41115,41116,41117,41118,41119,41120,41121,41122,41123,41124,41125,41126,41127,41128,41129,41130,41131,41132,41133,41134,41135,41136,41137,41138,41139,41140,41141,41142,41143,41144,41145,41146,41147,41148
64670 ON M-148 GOSUB 41149,41150,41151,41152,41153,41154,41155,41156,41157,41158,41159,41160,41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,41187
64675 ON M-187 GOSUB 41188,41189,41190,41191,41192,41193,41194,41195,41196,41197,41198,41199
64677 ON M-199 GOSUB 41200,41201,41202,41203,41204,41205,41206,41207,41208,41209,41210,41211,41212,41213,41214,41215,41216,41217,41218,41219
64720 PRINT"MAIN LINE PROGRAM utilizes blocks #210 thru 219":PRINT
64730 INPUT "ENTER BLOCK NUMBER (200 - 219): ",M:IF M<200 OR M>219 THEN 64710
64740 GOSUB 64610
64799 RETURN :'from list init & main sr
64800 '
64900 '
64910 CLS:PRINT"B-SIMPLE Version 1.0 2-82 Ira Glickstein 8-662-4202"
64920 PRINT:PRINT:PRINT"TO GET STARTED I'LL NEED A BIT OF PERSONAL INFORMATION"
64930 LOCATE 10,1:PRINT "Please enter your name, address, phone, etc. (up to 40 characters) <--------------------------------------> PROGRAMMERS IDENTITY: ";P$
64940 LOCATE 14,1:PRINT "Please enter your program's name, version, date, etc. (up to 40 characters) <--------------------------------------> PROGRAM IDENTIFICATION: ";G$
64945 LOCATE 16,1:INPUT " PROGRAM IDENTIFICATION: ";G$:G$=LEFT$(G$,40)
64950 CLS:LOCATE 3,1:PRINT"0 GOTO 65010 :'To delete B-SIMPLE, just DELETE 0-9, DELETE 41000-65100":LOCATE 4,1:PRINT"15 ' * "G$;:LOCATE 5,1:PRINT"16 ' * "P$;:LOCATE 4,50:PRINT"* I used B-SIMPLE 1.0 2-82 *";:LOCATE 5,50:PRINT"* by Glickstein 8-662-4202 *
65020 GOSUB 64210 :'menu sr (K is choice: 1=add, 2=list, 3=renumber, 4=delete, 5=directory, 6=list init,main,data, 7=reinit your info, 8=instructions, 9=quit)
65030 IF K=5 OR K=6 OR K=7 OR K=8 THEN 65070
65033 IF K=5 THEN 65060
65035 IF K=9 THEN 65099
65040 IF K=5 THEN 65070
65050 IF K=9 THEN 65099
65060 CLS:PRINT:INPUT "MODULE NUMBER (1-199) "; M : Q = M * 100+10 : R = Q + 85 : S = 5: T = Q: U = 700 + M - 100 * (M>39) - 100 * (M>69) : IF M < 1 OR M > 199 THEN 65010 ELSE DIM L (40)
65070 CLS:PRINT"I'm working on it!":C=K:ON K GOSUB 61410,64610,61410,61410,64510,64710,64910,50010