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. In fact, I expect to buy another set-up so I can use microdrives at home and on my Timex at school.
To run on the Spectrum we must eliminate any ON ERR GO TO or ON ERR 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:
5 IF INKEY$=" " THEN PRINT AT VAL "21",O; FLASH U;"STOP TO EXIT/ENTER TO CONTINUE ": PAUSE O:GO TO F+U+(VAL "9395" AND INKEY$=" STOP ")
60 DELETE THIS LINE
5007 DELETE THIS LINE
5016 IF Y$>=" AND " AND Y$<>" THEN " THEN FLASH 0: GO TO 6000
5222 IF VAL Z$>=O AND VAL Z$<=J THEN GO TO VAL "5230"
5230 IF VAL Z$ THEN LET S=VAL Z$: CLS : GO TO VAL "5240"
8000 DELETE THIS LINE
8205 CLS: IF X$="D" THEN LET D$(H TO G+F)=F$: LET D$(K+H TO J+U)=STR$ P: SAVE F$CODE PEEK VAL "23627"+R*PEEK VAL "23628"+G-U,P: GO TO VAL "8220"
8220 BEEP U/H,J+J: PRINT AT K+K,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 editing 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 use a 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 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, 1711 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,F+U;"T)APE OR M)ICRODRIVE?": PAUSE 0: LET P$=INKEY$: GO TO VAL "5503"+(U AND 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;F$CODE PEEK VAL "23627"+R*PEEK VAL "23628"+G-U:LET F$=D$(H TO G+F): 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 P$=INKEY$: GO TO (VAL "8300" AND P$="M" or P$="m")+(VAL "8205" AND P$="T" OR P$="t")
8300 CLS : IF X$="D" THEN LET D$(H TO G+F)=F$: LET D$(K+H TO J+U)=STR# P: ERASE "M";U;F$: SAVE *"M";U;F$CODE PEEK VAL "23627"+R*PEEK VAL "23628"+G-U,P: VERIFY *"M";U;F$CODE PEEK VAL "23627"+R*PEEK VAL "23628"+G-U
8310 GO TO VAL "8230"
9900 CLEAR : ERASE "M";1;"PRO/FILE": ERASE "M";1;"p/f": SAVE *"M";1;"PRO/FILE" LINE VAL "9910": 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";1;"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 "5503"
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";1;"PRO/FILE"
Save this program on each cartridge containing a master copy with SAVE *”M”;1;”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 in all cases except on the Byte Back interface because I don’t know anything about line 2. 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.
To restore the program to accept the 32 column printer, the pokes made in line 1 should be reset to 244 and 9 respectively.