a:CREATOR; WRITTEN ON 1/16/80 BY BRUCE W. TONKIN.b:ADAPTED FOR CP/M AND MICROSOFT BASIC 5.01 ON 5/11/80b:FOR 4.51 ON 3/18/81, AND FOR MODEL III ON 2/20/83, FOR CP/M AND MBASIC 4.51/5.2+ AGAIN ON 3/23/83; FOR 48K CP/M WITH OVERLAYS ON 7/2/83; THIS IS MAIN]c:THIS IS PUBLIC DOMAIN SOFTWARE AND MAY NOT BE SOLD OR INCORPORATED IN ANY COMMERCIAL SOFTWARE WITHOUT THE EXPRESS PERMISSION OF THE AUTHORec:c:THIS PROGRAM WILL WORK ON ANY MACHINE RUNNING MBASIC 4.51 OR HIGHER, UNDER CP/M 1.4 OR HIGHER, WITH A 16 X 64 VIDEO SCREEN OR BIGGER.d:IF MBASIC 4.51 IS USED, RECORD LENGTH MUST ALWAYS BE 128; YOUR PROGRAM SHOULD BE CHANGED. YOU WILL ALSO NEED TO ADD A 'CLEAR' COMMANDd: TO YOUR GENERATED REPORT PROGRAM. CLEAR 5000 SHOULD BE PLENTY.d :e :MODIFY OR DELETE THIS NEXT LINE FOR YOUR TERMINAL CLEAR SCREEN CODEOe CLS$()::TELEVIDEO CLEAR SCREEN CODE STRINGe :TRS-80 P&T CP/M USES A SINGLE CHR$(12); ADM 3 SERIES USE A SINGLE CHR$(26)e :THIS PROGRAM AND YOUR GENERATED PROGRAM WILL USE THE CLEAR SCREEN CODE!?f:IF YOUR TERMINAL DOES NOT SUPPORT A CLEAR CODE, SET CLS$=STRING$(20,10)f:IN LINE 11; THAT WILL SCROLL MOST OF THE OLD STUFF OFF THE SCREEN, ANYWAY.f:STRING$(24,10) IS TOO LONG TO USE IN THE PROGRAM. SORRY!f <fFX: (CV$) Og II (CV$):CV%((CV$,II,)): CV%" FX FX:: CV%" FX FXrg( CV%Z FX CV%CV% _g2(CV$,II,)(CV%): II: h< CLS$;"CREATOR.BAS: COPYRIGHT (C) 1983, BY BRUCE W. TONKIN":"34069 HAINESVILLE ROAD, ROUND LAKE, IL 60073":"THIS WORK MAY NOT BE SOLD"hF"WITHOUT THE EXPRESS WRITTEN PERMISSION OF BRUCE W. TONKIN.":"BUT MAY BE FREELY REPRODUCED.":"GIVE A COPY TO A FRIEND!":"YOU MUST LEAVE THIS NOTICE IN PLACE AND UNCHANGED!"JiK"PROGRAM MANUALS ARE AVAILABLE, FOR $10+$1 POSTAGE, FROM THE":"PROGRAM'S AUTHOR. ADD $5.00 EXTRA IF OVERSEAS."^iP I : IjiZ CLS$;jd"You may now change diskettes, if you wish. However, please be":"sure you have the file called C451.LIB on your default drive.":"DEPRESS ANY KEY WHEN READY TO CONTINUE.";5jnAN$: AN$"" nkx: CLS$;"THIS IS THE CREATOR, VERSION 2.1. It will allow you to generate":"a program that will create, update, and access a hashed data":"file. First, you must tell me the name you want to give your":"program. ";k"YOU ARE LIMITED TO 8 ALPHABETIC CHARACTERS.":"PROGRAM NAME= ";: PN$:CV$PN$: :PN$CV$: (PN$) "TOO LONG.": k I (PN$): (PN$,I,)"A" (PN$,I,)"Z" "INVALID CHARACTER USED.":EX:I(PN$)l I: EX EX: l"The disk drives are lettered, A - P. Which drive do you want":"the data file on, WHEN YOUR PROGRAM IS RUN: ";lAN$: AN$"" :: AN$"A" AN$"P" : l AN$ m"What drive do you want your program written on: ";CmBN$: BN$"" :: BN$"A" BN$"P" : Mm BN$m"What drive do you want your program to be on, when you are":"running it: ";mCN$: CN$"" :: CN$"A" CN$"P" : m CN$m n"I",,BN$":"PN$".BAS": ~nKF$AN$":"PN$".KEY":DF$AN$":"PN$".DAT":PN$PN$".BAS":"O",,BN$":"PN$: #,"1 REM*PROGRAM NAME: ";PN$;"*": #,"2 REM*DATA FILE NAME IS ";DF$;"*": #,"3 REM*DATA FILE IS ON DRIVE ";AN$;"*"wo CLS$;"What is the maximum number of records (per data disk) you want":"to allow in your data file: ";: MS$:MS(MS$): MS MS o""What is the record length (1 to 256 is permitted): ";: RS$:RS(RS$): RS RS "{p, #,"4 REM*NUMBER OF RECORDS=";MS;"*": #,"5 REM*RECORD LENGTH=";RS;"*":Q$("):"Please input the title you want displayed for your program:": TI$p1 #,"6 RESET:CLS$=";: I (CLS$): #,"CHR$(";((CLS$,I,));")+";: I: #,"CHR$(";((CLS$,));")"q6LNLN : #,LN;"'begin":LNLN : #,LN;"PRINT CLS$;":LNLN : #,LN;"OPEN";Q$;"R";Q$;",1,";Q$;DF$;Q$;",";RS;":OPEN";Q$;"R";Q$;",2,";Q$;KF$;Q$;",2:FIELD #2,2 AS KP$"qJLNLN : #,LN;"ON ERROR GOTO 25000":LNLN : #,LN;"DIM F$(50),G$(50)"rT #,"32040 LSET KP$=MKI$(-1)"r^ RS #,"32045 FIELD #1,";RS;" AS DL$:LSET DL$=STRING$(";RS;",250):PUT 1,1":: #,"32045 FIELD #1,255 AS DL$,1 AS DX$:LSET DL$=STRING$(255,250):LSET DX$=CHR$(250):PUT 1,1"rh #,"32050 FOR I=1 TO";MS: F$(2)sr CLS$;"You may now choose, if you wish, an exit code or message. This":"is an entry the operator may use in place of a normal entry":"in any field."pt|"If the operator makes this entry, the program will leave entry":"or update, and will return to the menu without adding to the":"file or altering any more information on the disk. Previous":"changes remain, though."t"Do you wish an exit code to be used (Y/N)? ";tOO$: OO$"" :: CV$OO$: :OO$CV$: OO$: OO$"Y" OO$"N" 3u OO$"Y" "What is your message or code?";: OT$u CLS$;"Now we must describe the positions of the fields in the data":"file. The fields may be smaller than you think necessary."+v"Numbers can be PACKED --squeezed-- into less space in the file":"than they take to print on the screen.";w" Whole numbers in the":"range -32767 to 32767 can be stored as packed integers, taking":"up only two spaces. Numbers needing up to six digits of":"accuracy can be stored in four spaces, and those needing up to"w"16 digits of accuracy can be stored in 8 spaces (double":"precision). Whole numbers in the range -127 to 127 can be":"stored as packed half-precision numbers, and take only one"Cx"space. Please take care to allocate the correct number of":"spaces for each field. You must proceed from left to right in"x"your record as you allocate space. You have ": RS;"spaces in each record, and up to";(/RS(RS/));x"fields."y"TYPE IN 999 FOR THE NUMBER OF SPACES TO ALLOCATE WHEN DONE."yAy"FIELD #";A;"USES: ";: F$(A):EXEX(F$(A)): EXRS F$(A)"999" "EXCEEDS RECORD LENGTH. TRY AGAIN.":EXEX(F$(A)): y F$(A)"999" 0:: (F$(A)) "INVALID.": y"Is this field size ok (Y/N)?";SzEX$: EX$"" :: CV$EX$: :EX$CV$: EX$: EX$"N" EXEX(F$(A)): hz EX$"Y" z RSEX AA: 0z&"All right. You have";RSEX;"spaces left in your record.":AA: `{0LNLN : #,LN;"REM*SET UP FIELDS IN THE DATA RECORD*":AA:SLLN:OF$"GOSUB 36000": I A: #, I;"F%(";((I),);")=";F$(I):{: #,"36800 CD%=0": #,"55 DIM F%(";A;")": #,"36810 FOR ZZ=1 TO";AR|DLNLN : #,LN;"FOR I=1 TO ";A;":G$(I)=";Q$;Q$;":NEXT I:FC=0:PRINT CLS$:UF=0:G$=";Q$;Q$;":";OF$:LNLN : #,LN;"PRINT TAB(21);";Q$;"PRODUCED BY THE CREATOR";Q$|NLNLN : #,LN;"PRINT TAB(";(@(TI$));")";Q$;TI$;Q$|vLN: OO$"Y" a} #,LN;"PRINT";Q$;"To return to the menu from entry or update without entering or";Q$:LNLN : #,LN;"PRINT";Q$;"updating your record, type in ";OT$;" for a field entry.";Q$ ~LNLN : #,LN;"AN$=INKEY$:IF AN$=";Q$;Q$;" THEN";LN;":ELSE ON(INSTR(";Q$;"EeLlSsUuDdIiXx";Q$;",AN$)-1.5)\2+1 GOTO 1000,10000,35000,11000,12000,32000,38000,";LNe~LNLN : #,LN;"GOTO";SL:LNLN : #,LN;"CLOSE:NEW": D%(2):"CREATOR.OVR",,ALL~  5 :  4 "You entered BASIC without specifying any files for disk access!":"Go back to DOS and re-enter BASIC correctly!":~ (~ &)  "FILE ALREADY EXISTS. DEPRESS C TO WRITE OVER IT.":"DEPRESS ANY OTHER KEY TO RE-START." (~ &)  XN$: XN$"" :: XN$"C" : "ERROR NUMBER";;"AT LINE";:  &)  XN$: XN$""