SpeedScript 3, 0
Charles Brannon, Program Editor
Since its publication in the March, April, May, and June 1985 issues of COMPUTE!, response to the Speed-Script 3.0 word processor for the Commodore 64, VIC-20, Atari, and Apple computers has been tremendous. Hundreds of readers have written to comment on SpeedScript, ask questions, and report minor bugs. This article shows how to fix a few bugs confirmed in the Commodore and Apple versions, including the versions on the March, April, and June COMPUTE! Disks.
Considering its size and the constraints under which it was developed and distributed, SpeedScript 3.0 is remarkably bug-free. We made every effort to fully test SpeedScript; however, any sophisticated program is bound to have a few nooks and crannies where problems lurk. Even if you haven't encountered any of these bugs, you may want to make the following corrections to ensure that you have the most reliable word processor possible.
Corrections are much harder to make with an all-machine-language program like SpeedScript than with a BASIC program. You can't just insert or delete a line of machine language. You wouldn't want to type in SpeedScript all over again, either. Instead, corrections to machine language programs are usually in the form of a patch—a section of new code which replaces some existing code. Programming a patch properly is no small feat, especially if you need to add additional code. The patch must be merged with the original program to create a new, debugged program. Check the notes below for your computer to see how to enter the corrections.
If you have an Atari, you'll notice there aren't any corrections listed for your version of SpeedScript. The Atari version does have the same bug that afflicts the other versions: an odd character is printed whenever the underline toggle command is used. Fortunately, this odd character is a null (CHR$(0)) on the Atari, so nothing is printed, and no harm is done. Therefore, there's no need to make a correction.
Commodore 64 And VIC-20
These are known bugs in Commodore 64 and VIC-20 SpeedScript 3.0 that these corrections fix:
The buffer should be preserved after an Erase All, but a change to one program module caused the buffer to be cleared with the rest of the text. The fix causes the Erase All routine to skip past the buffer clearing routine.
Sometimes the cursor does not appear when you first run Speed-Script, but this problem is also easily fixed with the changes below. Also fixed is a bug that prevents owners of dual disk drives (such as the MSD) from accessing drive 1 for loads and saves. (These bugs were first noted and corrected in the May 1985 "CAPUTE!" section of COMPUTE!.)
Recently confirmed and fixed is the underline bug, which prints an extraneous character whenever the u format command (CTRL-£, u) is used.
The RUN/STOP key behaves strangely when you use it to stop printing. Sometimes it works fine. Other times RUN/STOP does stop printing, but when you return to edit mode, it starts inserting five-space tabs. The printer handler is supposed to wait for you to release RUN/STOP before returning to edit mode. At worst, this bug causes your printer to continuously eject paper until you stop it.
Follow these steps to make corrections for all these bugs:
- Load SpeedScript, but do not run it.
- When you see the READY prompt, enter the following POKEs for your version of SpeedScript. Be extremely careful when typing these lines. If you enter any of these numbers incorrectly you may create new bugs that will be difficult to find and fix. Enter the POKEs without line numbers and press RETURN after typing each line: Commodore 64:
- Save the modified Speed-Script by entering SAVE " filename" for tape or SAVE "0:filename", 8 for disk. Be sure to use a different filename than the original SpeedScript.
POKE 2547, 96: POKE 4316, 200: POKE 4946, 234: POKE 4947, 234: POKE 7716, 50 POKE 5785, 234: POKE 5786, 234: POKE 5787, 234: POKE 7581, 11: POKE 7590, 76 POKE 7591, 86: POKE 7592, 29: POKE 7593, 201: POKE 7594, 35: POKE 7595, 208: POKE 7596, 23
POKE 4625, 1 : POKE 5095, 96 : POKE 7370, 234 : POKE 7371, 234 : POKE 10054, 50 POKE 8145, 234 : POKE 8146, 234 : POKE 8147, 234 : POKE 9937, 11 : POKE 9946, 76 POKE 9947, 138 : POKE 9948, 38 : POKE 9949, 201 : POKE 9950, 35 : POKE 9951, 208 : POKE 9952, 15
Many Commodore SpeedScript users have reported problems that are not really the fault of the program at all. Instead, printer interfaces are to blame. The interfaces used to connect Commodore's serial peripheral bus to non-Commodore parallel printers are usually small computers in themselves. They have their own microprocessors, RAM, and ROM. Unfortunately, this intelligence sometimes makes the interfaces too smart for their own good.
For example, many readers complain of bizarre output when a printed line contains an odd number of quote marks ("). This is not the result of anything SpeedScript does; rather, your interface counts the occurrences of quotes in the line and turns on its own interpretation of Commodore's infamous quote mode when the count is odd. Other than the bugs described and corrected above, most of the other complaints about SpeedScript are actually the result of interface problems.
However, there is a way to get around this. Most printer interfaces have a setting called transparent mode, in which they pass all codes along to the printer unaltered. If your interface has such a setting, switch to that mode before printing. This may require changing your formatting commands—for example, when printing in transparent mode you may have to add the a (CTRL-£, a) command to change the output to true ASCII.
Apple II +, IIe, IIc
Apple SpeedScript 3.0 has two bugs: the underline bug, which prints garbage characters whenever the underline toggle (CTRL-V, U) is used; and the header bug, which shifts the first header on a page to the right of its proper position. Also, Apple SpeedScript assumes a variation of the normal SHIFT key modification on the Apple II and II + (this is the same variation used by Apple Writer). If you're having SHIFT key problems with SpeedScript on a II or II +, you'll either have to rewire the SHIFT key modification or make the program changes below. See your dealer for help on installing or changing a SHIFT key modification.
These corrections apply only to the DOS 3.3 version of SpeedScript. If you want to use this corrected SpeedScript with ProDOS, you must use the ProDOS Converter (COMPUTE!, July 1985).
The following program fragments should be typed in with "Apple MLX." Before you can load Apple MLX, you must reconfigure memory with the following POKEs. These POKEs prevent memory conflicts between MLX and SpeedScript:
POKE 104, 32 : POKE 8192, 0 : NEW
These are the same POKEs used to type in SpeedScript with Apple MLX, and must be used every time you wish to edit SpeedScript with Apple MLX.
After typing these POKEs and running Apple MLX, enter the following starting and ending addresses in response to the prompts:
STARTING ADDRESS? 0800
ENDING ADDRESS? 1E45
Next, press L to select (L)OAD FILE from the menu, and give the filename of the original SpeedScript file.
To make the first correction, press E to Enter Data, and enter 1C58 for the address. Type in these seven lines:
1C58: D0 10 38 AD D7 IE ED 53 45 1C60: IE 38 ED D6 IE A8 A9 A0 68 1C68: D0 E0 C9 55 D0 0A AD EC C6 1C70: IE 49 01 8D EC IE 10 Bl B4 1C78: C9 63 D0 11 8C E5 1E AE 80 1C80: DD 1E AD DE 1E 20 24 ED 7A 1C88: AC E5 1E D0 9D AE E6 1E F4
When you've finished this block, press RETURN on the next line to get back to the menu. Press E to select Enter Data, then enter 1DE0 and type in this last line:
1DE0 : D4 C9 CE C7 AE AE 8D 00 99
Press RETURN on the next line, then press S for (S)ave Data to save your modified copy of SpeedScript. Use a different filename than that of the original SpeedScript.
If you need to modify your version of SpeedScript for the Apple II/II + SHIFT key problem described above, make the following corrections before saving to disk. (Do not make these corrections if you aren't having SHIFT key problems or if you have an Apple IIe/IIc.) The following ten lines of corrections must be made one line at a time. In other words, for each line, you must select option E (Enter Data) from the main menu, type the memory address preceding the colon, enter the numbers, and then press RETURN on the next line to return to the main menu. Then repeat the process for the next line of corrections. When you're done, save the corrected program to disk.
0A08: AD 61 C0 0D 44 1E 0D 63 4C 0CD8: 0D 44 1E 0D 63 C0 10 55 B0 0CE8: 0C AD 61 C0 0D 44 1E 0D 6D 0D98: 0D 44 1E 0D 63 C0 30 03 60 0E08: 0C AD 61 C0 0D 44 1E 0D 90 1068: 0D 44 1E 0D 63 C0 30 03 36 11E8: OD 44 1E 0D 63 C0 10 03 78 1688: 1E 0D 63 C0 10 03 4C D5 7A 1AB8: C0 0D 44 1E 0D 63 C0 30 A2 1B60: 0D 44 1E 0D 63 C0 30 23 64