FINDRCPM Release 1.00 - Copyright (C) 1985 by George M. Sipe. Notice: This program is NOT public domain. Copyright is retained by George M. Sipe, 4873 Scotts Mill Way, Duluth, GA, 30136. License is granted for free use and re-distribution, providing such use and re-distribution contain this notice and copyright notice displayed upon program execution. No restriction is placed on commercial use, other than written notice of such to the copyright holder identified above. Through the generosity of hundreds of SYSOPs and the publishing efforts of Jud Newell, Kim Levitt, and Steve Sanders, the CP/M community has available to it a well documented network of remote CP/M systems for uploading and downloading of public domain or free use software. Each month Jud, Kim, or Steve electronically publish an updated listing of accessible systems (which they also periodically validate). At the time of this writing (February 1985), that list is in its 58th edition and contains 241 entries! On most RCP/M systems it is known as RCPM-058.LST (or RCPM-058.LQT in its "squeezed" version). Occasionally the list will be renamed to some other similar name (e.g. RCPM58.LQT, etc.). If you are like me, you probably are interested in a specific subset of the full RCP/M list. You may even keep your own list by scanning the full one for entries specializing in your software and hardware interests, are compatible with your modem, are local, or if long distance then are large capacity systems. In any event, you probably exclude certain entries, perhaps because they require a fee. Scanning the full list every month to update your specific list is a very time consuming, error prone process... something computers can certainly do better than you. Fortunately, Jud, Kim, and Steve maintain the list in a format which lends itself to programmatic scanning. This is where FINDRCPM comes in. FINDRCPM will scan the full monthly RCP/M list and create an output disk file which contains only those entries which you are interested in. For your reference, it will also indicate in the output file the selection criteria used. When executed, FINDRCPM asks only two questions. The first question requests the name of the specification file (default is FINDRCPM.DAT). You must create this file (any text editor will do) to indicate to FINDRCPM what selection criteria to use. By placing this information in a disk file, you do not have to re-enter the full selection criteria each time FINDRCPM is run. You can also keep multiple specification files if you need them (e.g. for CP/M and for PC-DOS). The second question will ask you for the current RCP/M list number. Merely enter the number - "58" for example (without the quotes). Note that FINDRCPM requires that the list be named "RCPM-###.LST" where "###" is the three digit list number (with leading zeros if necessary). The specification file is defined to contain three sections, separated from each other by a blank line. The first section is used to specify general selection criteria and the name of the output file. The second section specifies additional selection criteria for entries of particular interest. This section is used to select those entries which may not be caught by the general selection. For example: you may generally be interested in entries which have at least 30 MB and support 1200 baud, but you may also want to include entries which have at least 5 MB and support 300 or 1200 baud IF they also mention Forth or UNIX. The third section specifies entries which are to be unilaterally excluded. This section is used to exclude entries which may be a long distance call too far away or require a fee, for example. The specification file is case insensitive. Alphabetics will be listed in the output file in lower case regardless of their case in the specification file. They will "match" entries however, regardless of the case used in the entry. The order and interpretation of lines in the specification file is: (First Section - General Requirements) 1. Minimum storage in megabytes required (you may use a real number such as 30.25) 2. Transmission speed required (just list the single character speed codes, one line only) 3. Output filename (may use '#' symbol, which will be replaced by the list number in effect - RCPM-#.SUM for example) 4. Blank line (Second Section - Always Include) 5. Minimum storage in megabytes required (you may use a real number such as 5.0) 6. Transmission speed required (just list the single character speed codes, one line only) 7. Strings to match for inclusion (one string per line) - Blank line (Third Section - Always Exclude - Overrides Section One and Two) - Minimum storage in megabytes to match (you may use a real number such as 5.0) - Transmission speed to match (just list the single character speed codes, one line only) - Strings to match for exclusion (one string per line) Note that to be effective, the minimum storage specification in the third section should be no larger than that specified in the first two sections (otherwise certain entries which they could specify will not be candidates for exclusion). Similarly, any transmission speeds included in the first two sections should be also included in the third section. Finally, it would not make any sense to include any particular string in both the second and third sections (the entry would always be excluded). In the following example, each line in the file is commented to the right starting with the "<--" symbol (which would NOT actually be present in the specification file). The comments for section two are not indented as far as those of sections one and three so that you may more easily see where the sections are. Example FINDRCPM.DAT: Contents Sect 2 Sect 1 & 3 ======== ====== ========== 30.0 <-- any entry with at least 30 MB b <-- AND speed codes include 'B' rcpm-#.sum <-- output file name ('#' will be replaced) <-- mandatory blank line 5.0 <-- if not already selected, select if at least 5 MB 3b <-- AND speed codes include '3' or 'B' forth <-- AND mention of: (subject of interest) unix <-- ( " " " ) flanders <-- (entry of interest) rcp/m-eov <-- ( " " " ) (404) <-- (area code of interest) <-- mandatory blank line 5.0 <-- BUT always exclude if at least 5 MB 3b <-- AND speed codes include '3' or 'B' $ <-- And mention of: (fee required) application <-- (application required) password <-- (password access only) registration <-- (registration required) apple <-- (Apple oriented) dec <-- (DEC oriented) heathkit <-- (Heathkit oriented) (204) <-- (Canadian area code) (306) <-- ( " " " ) (403) <-- ( " " " ) (416) <-- ( " " " ) (514) <-- ( " " " ) (604) <-- ( " " " ) In order to function correctly, FINDRCPM must make a few assumptions concerning the format of the RCP/M list. For your reference, those assumptions are: 1. Header is terminated by a blank line. 2. Region names follow lines containing "=====". 3. States' names are on lines with '[' in column 1. 4. Entries have a non-blank in the first column. 5. Entries end with new entries or blank lines. 6. Specifications are in "(baud;size)" format in entries. 7. Specifications are on the second line of each entry. 8. Size is in KB unless followed by M (before ')'). 9. The first entry starts after the first region marker. 10. The last entry ends at the 'region' "NOTES:". This program is compatible with most versions of Microsoft Basic, including CP/M-80 and IBM-PC versions. For maximum performance, it is suggested that this program be compiled with Microsoft BASCOM. Please note that I am not personally fond of BASIC. I used it because I had intended this program to be a temporary implementation and therefore was not concerned about speed or maintainability. BASIC was convenient for that purpose. One of my future projects is to rewrite the program "the right way" in either Forth or 8080 assembly, adding features and greatly improving execution speed. When (if?) done, I'll distribute a new release of it (including a CP/M .COM file for immediate use).