IS
y€
PRO/FILE PLUS 3 rN > —
Enhancements from the manual, Breakthrough, and Extensions 1-3
The enclosed tape will include almost all the improvements from the manual except where they are no longer appropriate (the machine code sort makes the block sort outdated), or improved by my own routines in Extensions, or one case where you may not want it included. For those who want it, instructions are included here to add it. Also, the changes required for a full size printer are only partly included. The basic is not included since some of my customers do not have a regular printer and the part of the machine code which varies according to the interface used is not included ¢the other machine code is). More detail is given later in the text.
All the changes required for the machine code sort is included from Tom Woods’ Breakthrough newsletter with his Kind permission. This was necessary for all my routines to work without problems.
Finally, the changes found in the first three issues of Extensions are also here. Those applying to the Spectrum conversion and microdrive must be entered by the customer as described later.
Also, Keep copies of old versions with data for a while in case an error occurred when loading the changes or adding other changes listed here. It is rare, but I have had occassions when a program did not load in correctly because of a power spike or something. Keep the backups until you feel confident there are no problems. I Keep them for several weeks to be safe.
MERGING THE CHANGES
First load in your own copy of PRO/FILE and then when you are presented with the option of CREATING a new file or LOADING an old one, just press CAPS SHIFT and 1 to get rid of the quote marks and then enter the command STOP ¢on the "A" Key). Next enter NEW to eliminate unnecessary variable space and to get rid of all the old BASIC. Place the PRO/FILE PLUS tape in your recorder and enter MERGE "" before starting the recorder. When the g basic is finished loading we can stop the tape quickly and enter LOAD ""CODE 63672,84. When this is loaded, stop the tape and then enter LOAD “"CODE 63792,978 to put in the necessary machine code changes. When the machine code changes are loaded you will have a completed PRO/FILE PLUS 3 for the 2068.
Before doing anything else, we'l] make a backup by entering RUN 9990 and saving to another tape. A beep will sound soon and you must press a Key to save the machine code. When the next beep sounds you are done and the program will wait for you to rewind the tape and play it back for verification.
You can now break in again and RUN 9990 to make more master copies or CREATE a new file ‘you can’t LOAD a previous file until we properly transfer the data). New master copies can be made at any time.
When you load in one of these copies, it restarts as the original does.
HOW TO TRANSFER DATA TO THIS VERSION
There are some of you who are transferring data from PRO/FILE which includes my new SAVE options from EXTENSIONS #1 and some are doing it from the regular PRO/FILE. Please notice the differences in #2 and #3 below. First load in your previous version of PRO/FILE with any data and then:
1. Break into the program.
2. If you have the regular PRO/FILE, then as a direct command type in SAVE FSCODE PEEK 23627+256*PEEK 23628+6,P
3. If using the new SAVE method, then as a direct command type in SAVE FS$CODE PEEK 23627+256*PEEK 23628+12,P
4. Start your recorder and press ENTER to save the data.
5. Rewind the tape, type VERIFY ““CODE and press ENTER to start your tape
l
to verify.
é. If it does not verify then try again, otherwise type PRINT P and ENTER. Write the answer down!
7. Repeat the process for each of your file tapes.
The only thing we have saved is raw data from D%. Since we skipped over the bytes which describe the length of D$ and only saved the bytes actually used for files (the value of P), you can move data from programs having different lengths for D$ to your new program. The only requirement is that the length of D$ in the new version must be no less than P. If you reduced the size of D$ to make improvements from the manual, you will find that you are now back to full capacity because of many memory saving techniques.
After all your files have been thus saved, turn the computer off then on to clear it and load in the new PRO/FILE PLUS 3. Then:
1. Chooose the CREATE option and input the name of the first file to transfer.
2. Now at the main menu, break into the program and enter LOAD “"“CODE PEEK 23627+256%PEEK 23628+6. Now play in the first data tape.
3. When loading is complete, enter LET P= whatever you wrote down for this data. At this point we have assigned the proper file name, transferred the data, and reset the value of P. That’s all we need so:
4. Enter GO TO 1.
5. Now from the main menu enter SAVE and follow the instructions to save to a new tape and verify. I suggest you just save data since this will save a lot of time.
6. Break into the program again and enter RUN 9996 and go back to the first instruction to transfer another data tape.
IMPROVEMENTS, FIXES, NEW ROUTINES Improvements which are exactly as found in the manual are simply listed. Manual routines changed or fixed or any new routines are explained.
BACKUPS: Described previously
VERIFY FEATURE: The difference is that now you can verify as before or ALL if you use the SAVE ALL option, or just data.
CHANGE A FILE NAME RESTART OR CLEAR A FILE OF DATA
ADD A TICK FOR AUDIBLE FEEDBACK WHEN YOU ADD DATA: This is now switchable and works on any Keypress instead of just when editting files. From the main menu just enter "T" to turn it on or off (off/on alternates).
DON’T LPRINT BLANK FILE LINES: The manual is wrong on this option. PRO/FILE PLUS corrects it.
DISABLE AUTO REPEAT IN EDIT MODE: I didn’t include this. If you want it, just make the following change: 3103 GO TO 5010+#(93%<(CODE INKEYS 13>)
GO DIRECTLY TO LPRINT FROM THE EDIT MODE WITHOUT GOING TO THE MAIN MENU
GO FROM EDIT TO THE NEXT ENTRY WITHOUT GOING TO THE MAIN MENU: The routine never actually did this. What it did was restart the search from the beginning. If you editted a file it would have been moved to the end and thus you would seem to go to the next file. However, if you searched for NEW YORK, and the first 5 such references needed no change, but the éth did,
L
then you would have to pass through those first 5 again before you could really get to the "next" file. This has been improved so now you will always go to the actual next file that matches the search command. Just close an editted file with "STEP" instead of "STOP".
AUTOSEARCH IMPROVEMENT BLOCK DELETE
TALLY: This routine would not work properly with the machine code sort in certain situations. The problem has been corrected.
FULL SIZE PRINTER MODIFICATION: If you already had this in your program you just need to reinsert line 1 (and 2 if using the Byte-Back interface) as described below:
1 POKE VAL "26703" ,VAL "187: POKE VAL "26704" VAL "248"
2 OUT VAL "16255",0: OUT VAL "16255",0: OUT VAL "16255",0: OU T VAL "16255", VAL "64": QUT VAL "16255" ,VAL "206": QUT VAL “1625 S",VAL "55"
For those using the Byte-Back interface, the "O" in line 2 is a letter, not the number zero!
If you do not have the printer modification but wish to, just add the above line or lines as appropriate, and add the machine code for the appropriate interface beginning at address 63756. The rest of the machine code is included in PRO/FILE PLUS. See the manual, page 118 or 121 as appropriate.
COMPACT MENUS: The display menu and edit menu each consist of several sections. I prefer to see as many options at one time as possible. Also, if you have a long search command ‘more than one line long) you will run into a problem with the screen SCROLL. These changes solve both situations and save memory as well. Please note that you now use "G" to return from the display menu to the main menu instead of "N"!
THREE WAY SAVE: On the original PRO/FILE all data was saved with the BASIC part of the program and other variables. Now you can select that option or save ALL including machine code (no need to load a master copy) or just save the file space actually used (saving a great deal of loading time). All of these allow for verification. The data save is especially useful since smal] files load so quickly. This particular data save is a little different from that shown in Extensions #1. Now you can move data between programs having different lengths of D$. The only requirement is that the length of the file space actually used (variable P) not exceed the lenth of D$). Thus, if you wanted to transfer a file from a program having D$ set for 28000 bytes into one having just 27000 bytes, you could do so as long as P is not greater than 27000. Saving ALL will first save the basic and veriables and then a beep will sound telling you to press a Key to save the machine code.
AVOID PRINTING “SEARCH IS COMPLETE" OR DIRECTORY FILES: Doing an auto search with printout will normally result in “SEARCH IS COMPLETE” being printed. This will no longer occur. Also, I have directory files which explain what each line contains and any special codes that may be used in my files. When doing an auto search, I do not want them printed out normally so all my directory files have ## for the first two characters on line 1. These will not be printed out on an auto search. A regular COPY command from the display menu will print them out however.
CAPS LOCK SET: When loaded, the program starts in caps mode since I found it more convenient.
BETTER EDITTING: You may have noticed that when editting a file the letters sometimes don’t appear on screen. This has been corrected. Also, the cursor now wraps around the screen when using the cursor Keys. If you want to edit line 15 just cursor UP from the top line and it appears at the bottom. The cursor will wrap up, down, left, and right. Finally, deleting information within a line would cause any character in position 32 to be deleted as well. This is also corrected.
UPDATE: When at the main menu, enter a search command that ends with the reverse slash and the letter "U". The program will then ask what line you wish to change followed by what data will be changed, and then ask for the new data. When all that information has been entered, the program will find the first file that fits your search command and display it on the screen. It then checks the line number you input (1-15) and if it starts with the data you input it will change the line to hold the new data. It will then continue on to the next match until all appropriate files have been corrected. Please note that all files displayed, whether changed or not, are deleted from the program and then added back on to the end. Therefore your files are no longer in the same order (you could do this deliberately to group certain files together).
You can change any data you wish on a line from nothing to all 32 characters but the data to be changed must begin at the start of the line! If you wish to change “STUDENT FILE NUMBER: " to be “STUDENT RECORD NUMBER: "you would input the data to change to be “STUDENT FILE" and the new data to be "STUDENT RECORD" because you must start with the first character. Remember this when you set up your data. If your data is indented on the screen you must provide the leading spaces on the data you are searching for. The new data can be shorter or longer than the original. Just remember that anything you type in for data to be changed will be completely deleted and then the new data will be inserted. Any other data on that line will be moved left or right as necessary. If the new data length combined with the remaining data is greater than 32, the ending characters of the old data will be cut off permanently (this can be used to your advantage).
There are two main uses for this routine. One is to update information. I use this to alter my student’s records each year. I go through my files checKing for all students in 12th grade and changing “12th" to "GRADUATED", "iiith" to "12th", "10th" to "11th", etc. Consider carefully the order you change things in. If I started with the 10th grade first and made them 1ith and then changed the 11th grade to 12th I would actually end up with all 12th graders!
The other main use would be in setting up new files. I set up a lot of skeleton files - just an asterisk ¢#) followed by a special code I will search for later. Since almost all my students have the same address as far as city, state and zip code are concerned I do an update search for my special code, select line 3 to change (where the city, state, zip goes), input "" as the data to change, and “SUMMERVILLE,GA 30747" as the new data. Now the program will automatically insert the address in every one of those files. With 100 new students I just saved about 2000 Keystrokes! Later I can edit to put other information in.
The routine can also be used to cover information you decide you no longer want by entering 32 spaces as the new data.
As the program runs you can pause it by holding down the space bar. When a file appears wait until you see some instructions flashing at the bottom of the screen. Now you can release the space bar. To continue press another Key (but not space). To stop the routine press BREAK. The pause is really just to allow you to make a note of any file change that you didn’t want to occur so you can correct it when done.
This is a very powerful routine but also dangerous. You may think you
y4
are only going to change the grade a student is in for example, but if you happen to have some files with a 12th street in that same line and position it will be changed as well! Careful planning of file organization helps as well as the use of codes. My grades are followed by a “-" and the year the student entered band class such as "10th-1980" so by changing “"10th-" instead of "10th" I help avoid problems.
I suggest you practice on a file tape which is safely backed up until you get used to it.
MIDDLE SEARCH: This is not a very good name, but what it does is allow you to do a search and then begin a new search from the next file. Why? Well, suppose you were printing out files and your printer went haywire half way through. Normally you would have to start all over, but with this you can search for the last file you successfully printed and then start a new search from there! The new search can be set up as an auto search which prints the file or a normal search which stops at each found file.
When you are at the appropriate file you enter ">" to allow for a normal search from that point or ">=" for an auto search with printout. The lower screen will then prompt you to enter a new search command.
EDIT TO ADD or ADD TO ADD: When adding or editting a file you can close it using the token " TO " and you will go to a blank screen where you can add another file instead of returning to the menu.
MACHINE CODE SORT: Besides the problem with the tally routine there is one situation when this routine will lock up the computer. Suppose you sort by a line which will be the last line of some files but in other cases there will be more lines. The program will crash when the last line of one file is compared to a line which is not the last line of another and the information in the lines is identical. In one case the routine will eventually come to an end of line marker (code 1) and in the other it will find the start of a new file marker (code 42). The routine locks up when this happens. I do not Know enough about the routine to fix it, but it can be avoided. Either don’t allow any identical information to be on the last line of any files, or put dummy information in a later line so the last line is found later.
I chose the second option with my music list files. Originally the first line was the title, second was the composer, third was the difficulty level, and if I owned it there was a fourth line for the library number. Since the difficulty level in line 3 would often be the same and some files had 3 and others four lines, I added a period to make a fourth line in all 3 line files. This used 2 bytes of memory for each affected file (i for the period and one end of line marker). With my UPDATE routine this was easy.
EDITTING HINT: This hint will save time when editting many files at about the same screen location. In line 5002 the variables L ¢for line) and C (for column) are set to zero, which means the upper left corner of the screen. That’s why the cursor always starts there when editting. If, for example, you will be doing a lot of editting on line 5 and column 10, you can temporarily change line 5002 to make L = 4 (line 5 to the computer screen) and C = 9 (column 10 to the computer screen). This really speeds things up. If you intend to save ALL or BASIC, be sure to change the line back first.
DUPLICATING FILES: If you will be making a lot of new files which will have some information identical to each other, here is a way to make just one and then duplicate it as often as you wish:
If you close the file with the token AND, you will hear a BEEP which means the file was saved, but the file will remain on screen where you can save it again as often as you like. Later you can go back and fill in any other data.
NAME REVERSAL: There are many situations where you want the last name
Ag
listed first for alphabetizing purposes, but would prefer some printouts to be in normal order. This routine will allow you to print out any name on the first line in either order you prefer. The screen will not change and your files will be unaltered. Only the printout is affected,
Some guidelines to remember are that the routine will take anything up to the first space to be the last name and anything from there to the second space to be the first name. Any data after the second space will not be printed when the routine is activated. This can be used to your advantage. Also, since the routine looks for spaces, do not use commas to separate the names or it will appear after the last name on the printout. Some examples follow. The first column shows what is on the first line on the screen and the second shows the resulting printout when activated:
SMITH JOHN JOHN SMITH DOE, JOHN JOHN DOE, REAGAN RONALD (PRESIDENT) RONALD REAGAN JONES Jr BILL Jr JONES
To activate the routine, just hold down the ENTER Key when entering "C" for copy or starting an auto search with printout routine until the printer starts copying, then you can release the Key. If you don’t want the routine activated you better release the Key quickly. On an auto search the routine will copy all files the same way once activated. When editting, if you press "THEN" for a printout, the name reverse is not activated.
SUM: I needed a different type of routine for number crunching instead of the TALLY routine. Basically, I needed an entire line to be treated as one value instead of half and half, and I needed part of the answer printed out if necessary. The following is the result. I call it the SUM routine and it is designed to accept numeric data on line 15 (last line). The restrictions on what type of characters can be used as numeric information is the same as for the tally routine. I use it to Keep track of each student’s credit for a trip to Florida. Since many fundraising projects are required, I needed a full line to handle it all. The line gives the profit on each project so if line 15 shows this:
15.95+20+0+40 .1+50 that would mean the student has made the following profit:
15.95 cheese sale 20.00 candy sale 00.00 car wash 40.10 fruit sale 50.00 cash payment
for a total of $126.05. This total would be shown in SUM2. SUM1 would show the combined profit of all found files. When printed out, SUM2 would be printed after the last line set up by the DEFP command. If you want a space between each file, put the space FIRST instead of last or the SUM2 will be printed after the space and right above the next file. Example: use 0/1 instead of 1/0. Activate the routine with the reverse slash followed by S.
SPECTRUM COMPATIBILITY!
If you purchased a Spectrum emulator like myself you may prefer to use PRO/FILE in Spectrum mode. I use the ROM Switch but I assume this should work with any emulator or a regular Spectrum. If you have added Sinclair microdrives, I have added routines for their use as well. I use them regularly and they are a great time saver.
To run on the Spectrum we must eliminate any ON ERR GO TO or ON ERR
6
RESET commands because the Spectrum won’t accept them and also make two POKES in the machine code routines because the Spectrum handles USR a little differently than the Timex.
First POKE 63666,0 and POKE 63667,0 Now change the following lines:
S IF INKEY$=" " THEN PRINT AT VAL *21",0; FLASH U;"STOP TO EX IT/ENTER TO CONTINUE ": PAUSE 0: GO TO F+U+(VAL "9395" AND INKEY $=" STOP ")
60 DELETE THIS LINE 5007 DELETE THIS LINE
5016 IF Y$>=" AND " AND Y$<>" TH EN " THEN FLASH 0: GO TO 46000
5222 IF VAL 2%>=0 AND VAL 2$<=J THEN GO TO VAL "5230"
5230 IF VAL 2$ THEN LET S=VAL Z$ : CLS : GO TO VAL "5240"
8000 DELETE THIS LINE
8205 CLS : IF X$="D" THEN LET Ds CH TO G+F)=F$: LET D$(K+H TO J+U) =STR$P; SAVE FSCODE PEEK VAL "23 627"+R*PEEK VAL "23628"+G-U,P: G 0 TO VAL "8220"
8220 BEEP U/H,J+J: PRINT AT K+tK, G;"REWIND TO VERIFY": IF X$()"D" THEN VERIFY F$
9400 PAUSE K+K: LET Y=" STOP ": GO TO U
Since we have eliminated some error checking, you must use reasonable care in using the program. For example, don’t press BREAK when editting a file and make sure you actually input a number rather than other characters when telling the program what line to sort by! I have been using PRO/FILE with my ROM Switch for a long time now with absolutely no problems.
A couple of other points. It is assumed that you will always verify any saved data. If the data fails to verify or you press BREAK, the program will stop with an error report at the bottom of the screen. GO TO 1 will get you back to the menu where you can try again. Also, on the Spectrum you will have a problem if you save ALL. When you poke RAMTOP as I do on the 2068 version, RAMTOP is properly set, but on the Spectrum that isn’t enough. If you want to save ALL you can, but before you load it back in to a newly turned on computer you must first enter CLEAR 63487 to set RAMTOP properly!
If you usea full size printer option there are some necessary changes needed which I have tried to make, but have no way to test since I have no full size printer. Therefore, to be safe, delete line 1 (and 2 if using the Byte Back serial interface). I don’t Know what line 1 POKES if used on the Spectrum, but it isn’t what it’s supposed to be so we definately don’t want
7
to activate those commands! Line 2, if appropriate, may or may not be a problem, but let’s not take any chances. After we finish transferring this program to the Spectrum (with or without microdrive options) and have a master copy safely made, I’11 show you how I THINK you can still use a full size printer. If my solution is faulty, you can still use the regular 32 column printer until a final solution is found.
The pause routine when using UPDATE requires you to press STOP instead of BREAK to exit. Finally, because of the machine code differences on the 2068 and Spectrum you can not use the Spectrum version with the 2068 ROM or vice-versa (however, data tapes are completely compatible!).
Make a master copy by entering RUN 9990.
To use the Sinclair microdrives, you must now load the new master copy just made into your computer in Spectrum mode with Interface I connected! Now change the following:
5503 CLS : PRINT AT K,FtU;"T)APE OR M)ICRODRIVE?": PAUSE O: LET P$=INKEY$: GO TO VAL "5503"+(U A ND P$="T" OR P$="t")+(VAL "297"
AND P$="M" OR P$="m")
5800 PRINT AT J+U,F;" INPUT FILE NAME TO LOAD",: INPUT F$: IF LEN F$<U OR LEN F$>K THEN GO TO U
5805 LOAD #"M";U;FSCODE PEEK VAL "23627" +R*PEEK VAL "23628"+G-U: LET F$=D$¢(H TO G+tF): LET P=VAL
D$<(K+H TO J+U): BEEP U/H, J+J: GO TO U
8202 CLS : PRINT AT K,F+U;"T)APE OR M)ICRODRIVE?": PAUSE O: LET PS=INKEY$: GO TO (VAL "8300" AND P$="M" OR P$="m")+(VAL "8205" A
ND P$="T" OR P$="t")
8300 CLS : IF X$="D" THEN LET D$ CH TO GtF)=F$: LET D$<(K+H TO J+U J=STRB P: ERASE “M";U;F$: SAVE * "M";U;FSCODE PEEK VAL "23627"+R* PEEK VAL “*23628"+G-U,P: VERIFY * "M";U;FSCODE PEEK VAL "23627"+R# PEEK VAL "23628"+G-U
8310 GO TO VAL "8230"
9900 CLEAR : ERASE "M"31;"PRO/FI LE": ERASE "M";1;"p/f": SAVE #"M “313;"PRO/FILE" LINE VAL "9901": SAVE *"M";1;"p/f"CODE VAL "63488 "VAL "2046": VERIFY *"M";1;"PRO /FILE": VERIFY *"M";1;"p/f"CODE : BEEP VAL ".5",VAL "40": GO TO VAL "9996"
9901 BORDER NOT PI: PAPER NOT PI :? INK VAL "7": CLEAR VAL "63487" : LOAD *"M"313"p/f"CODE : CLS : POKE VAL "23658" ,VAL "8": GO TO
VAL "9996"
9997 At the end of this line, change GO TO VAL "5505" to be GO TO VAL "3503"
Make a tape master with RUN 9990 or a microdrive master with RUN 9900.
You can only save DATA to a microdrive. If you try to save ALL or BASIC and then select the microdrive option, you will be returned to the main menu.
You can use one cartridge for your master and others for data but I prefer to save a master copy to each cartridge I will use. This will take about 90 seconds since the program will first try to erase any old copies on the cartridge. Since there isn’t one it takes longer. In the future, if you save a new version on the same cartridge, it is much quicker. The same thing happens when you save data. The first time you save data with a particular name, it takes longer. Also, be sure you never save different data with the same name to the same cartridge!
After a master copy has been placed on each cartridge you need, use NEW to clear the computer and type the following program:
10 LOAD #"M"31;"“PRO/FILE®
Save this program on each cartridge containing a master copy with SAVE #"M"sis"run*® LINE 10
To load in a microdrive master just start with a newly turned on computer or one that just executed the NEW command and enter RUN. This will load the short program which will then load the master.
As written, all loading and saving must be done using drive #1.
Now with that copy safely tucked away, let’s see if we can restore full size printer compatibility. First make line 1:
1 POKE VAL "23749" VAL "187": POKE VAL "23750",VAL "248"
If you have the Byte Back interface, you can restore line 2 as it originally was in the manual.
Now POKE 64197,84 and POKE 64198,31.
At this point save a master copy (but do not replace the previous 32 column printer copy in case this doesn’t work!).
I am almost positive this will work but I would really appreciate it if my customers would let me Know of any success or failures. If it doesn’t work, I will send free corrections when I fix it. l
To restore the program to accept the 32 column printer, the pokes made in line 1 should be reset to 244 and 9 respectively.
I would appreciate it if anyone out there with suggestions or actual improvements sent them to me for possible inclusion in future EXTENSIONS.
Robert C Fischers 221 Scoggins St; Summerville, Ga 30747