SpeedScript

From C64-Wiki
Jump to: navigation, search
SpeedScript
Screenshot from VICE with lorem ipsum text
Developer Charles Brannon
Company ABC Publishing
Publisher Compute!'s Gazette
Release 1984
Licence
Platform VIC-20, C64, C128, Apple II, Atari, DOS PC
Genre Word Processor
Operation C64-icon.png
Media Icon disk525 1.png Tape-icon.png
Language(s) Language:english
Information Different versions

SpeedScript was a very popular word processor for the Commodore 64 in the mid 1980's. Approximately 5 KByte in length, it provided many of the same features as commercial word processing packages of the early 8-bit era, such as PaperClip and Bank Street Writer. It was, however, a type-in program available for the cost of a magazine subscription and therefore vastly less expensive than commercial offerings. Because of this popularity many commercial word processors came bundled with utilities to convert existing Speed Script documents to their native format.

Very quickly after its release Compute! staff members and subscribers began writing utilities for it. Many of these utilities were published in the pages of Compute! Gazette or Compute! Magazine others were released as shareware and spread via community BBS systems or sneaker net among friends. SpeedScript was the most popular program ever released by Compute! as supported by magazine back issue requests and mail order requests for disk copies of the program. The latter, thought slightly more expensive, did not require the user type-in the program.

Almost immediately, subscribers began writing in requests for new features and writing their own patches in 6502 assembly to enhance the program. Several versions and minor variants followed for every major MOS 6502 based system of the 1980's. Several other "Speed" titles were released by Compute! as type-in programs throughout the 1980's. Released a few years later, SpeedCalc was a spreadsheet program that similarly rivaled commercial Spreadsheet titles of the era and could be embedded in SpeedScript documents with ease. Later SpeedFile was released that provided a simple-yet-powerful database for the cost of a type-in program. Taken togeather these "Speed" titles and their various utilities were in every sense the LibreOffice of their day.


Revision History[edit]

The original VIC 20 / Commodore 64 version of SpeedScript appeared in the January 1984 issue of Compute!'s Gazette. A slightly modified version (1.1) appeared in COMPUTE!'s Second Book of Commodore 64. The next major update, SpeedScript 2.0, appeared on gazette disk in May 1984. Like the original, its title screen did not include a version number. It can it can be distinguished from other versions by its custom character set and help screen.

SpeedScript 3.0 made its debut in the March 1985 issue of Compute! and on the special Compute! disk for that month. It can easily be distinguished from its predecessors because the command line says SpeedScript 3.0. Corrections for several minor bugs were published in the May 1985 "Compute!" column. With these enhancements, the title on the screen indicates version 3.1. It was this version which appeared in the book SpeedScript: The Word Processor for the Commodore 64 and VIC-20, and on the companion disk for that book. Further corrections, most notably a fix for an underlining bug, appeared in the article SpeedScript 3.0 Revisited in the December 1985 issue of Compute! resulting in version 3.2. SpeedScript 3.2 also appeared on the January 1986 Compute! disk.

As a rule of thumb SpeedScript 1.0 and SpeedScript 2.0 are compatible for purposes of patches and utilities that touch the innards of the program. SpeedScript 3.0 is a completley different program, so it cannot be "patched" into existence from an earlier version. That said, the on-disk file format remained extremely consistent between all versions of the program.

Startscreen of SpeedScript V1.x
SpeedScript Revision History
Version Release Type Platform Publication
SpeedScript 1.0 Initial Release C64, VIC 20 Compute! Gazette January 1984
SpeedScript 1.1 Bugfix C64 Compute!'s Second Book of Commodore 64
SpeedScript 2.0 Bugfix C64 Gazette Disk in May 1984
SpeedScript 3.0 Major Rewrite C64 Compute! March 1985
SpeedScript 3.0 Major Rewrite VIC 20 Compute! April 1985
SpeedScript 3.0 Major Rewrite Atari Compute! May 1985
SpeedScript 3.0 Major Rewrite Apple II Compute! June 1985
SpeedScript 3.1 Bugfix C64, VIC 20 Compute!'s SpeedScript, Compute! December 1985
SpeedScript 3.2 Bugfix C64, VIC 20 Compute!s Gazette December 1987
SpeedScript-80
SpeedScript-80 New Feature Patch Commodore 128 Compute! Gazette June 1986
SpeedScript-80 New Feature Patch Apple II series Compute! April 1987
SpeedScript-80 Revisited Bugfix ???
SpeedScript 128
SpeedScript 128 Major Rewrite Commodore 128 Compute! Gazette October 1987
SpeedScript 128 Plus New Feature Patch Commodore 128 Compute! Gazette September 1989

Basic Features[edit]

A text written in SpeedScript.

Open and Adaptable. In modern terms, SpeedScript was both "open source" and "cross-platform." As a type-in program written in 6502 assembly language, the code could be ready and studied by anyone with a subscription to the magazine or a library pass. It was "cross platform" in that versions were published for the VIC 20, the Commodore 64, the Atari family of computers and the Apple II family of computers.

"English Cursor Controls." Although it is possible to move around in SpeedScript to the left or right with the cursor the way you would expect with most text editors SpeedScript generally expects that the user will become accustomed to moving around by word, sentence, or paragraph instead.

Overwrite and Insert Modes. SpeedScript defaults to overwrite mode. This means if there is text to the right cursor it will be replaced by whatever the user is typing. However, it is just a matter of a few key presses for SpeedScript to enter Insert mode — a mode familiar to modern word processor users — where existing text is pushed to the right as new text is entered.

Large Text Buffer. On the C64 SpeedScript has a full 12 kByte text buffer. This is a general purpose text buffer that serves as both copy & paste and an undo buffer. On the VIC 20 this buffer is reduced to 1 kByte but even this is generous given the constraints of the system. SpeedScript for the VIC 20 requires at least 8kByte RAM expansion to run.

Search. SpeedScript sports a search feature allowing the user to search for any word or short phrase in the document.

Disk, Tape, and Verify Support. SpeedScript can be loaded from either floppy disk or data tape. It, in turn, fully supports saving files to either media. Additionally, SpeedScript can quickly verify any document currently in memory against a specified copy on disk or tape.

Arbitrary Disk Commands. With SpeedScript it is possible to send arbitrary commands to the disk drive without leaving the program. This means it is possible to do things like pull up a directory to locate a file, save, delete, and copy files all without leaving SpeedScript.

A Large Family of Support Utilities. In addition to these features, SpeedScript users began writing utilities to enhance the functionality of SpeedScript practically as soon as it was released. Some of these utilities were official releases by Compute! while others were released by the community.

See main article SpeedScript utilities.

General Usage[edit]

Basic Navigation[edit]

Function Keys
Key Function
F1  Next Word
F2  Previous Word
F3  Next Sentence
F4  Previous Sentence
F5  Next Paragraph
F6  Previous Paragraph
F7  Load File
F8  Save File

Basic navigation in SpeedScript is slightly different than other word processors or text editors. The left   and right   cursor keys work as one might expect: the cursor moves to the left or right of its current position a single character at a time. However, the up and down arrows work completely differently. Instead of moving the cursor up one line and retaining the same column position as a user might expect the cursor is instead moved sentence by sentence. The up arrow   moves the cursor to the first character of the last sentence. Conversely, if there is text to the right of the cursor the down arrow   advances the cursor to the first character of the next sentence. SpeedScript's sentence boundary detection algorithm is very simple: it looks for ending punctuation such as period (.) question mark (?) or exclamation point (!) and acts accordingly. It is unaffected by French spacing, but some common abbreviations such as those for et cetera (etc.) id est (that is) or exempli gratia (for example) will throw it off.

With few exceptions, function keys do not invoke special functions of the word processor. Instead, they primarily control cursor movement. This is more of the same "English cursor control" logic at the heart of the SpeedScript user experience. Modern users of text editors such as vi and Emacs will recognize this sort of logic — just none of the key bindings.

The Home  key behaves more or less intuitively and sends the user to the top of the document being edited. The Ins  key inserts a single space in front of the cursor without overwriting the underlying text. This is useful for making tiny edits without leaving over-strike mode. Holding down any key tied to cursor movement results in the action being repeated until the key is released without the need for additional key presses.

Printing[edit]

Document Defaults
US Letter (8½ × 11 inches)
Command Description Default
CTRL +£  l  Left Margin 5 Chrs
CTRL +£  r  Right Margin 75 Chrs
CTRL +£  t  Top Margin 5 Chrs
CTRL +£  b  Bottom 58 Chrs
CTRL +£  h  Define Header
CTRL +£  f  Define Footer
CTRL +£  #  Display Page #
CTRL +£  w  Continuous Feed Yes

At 4½–6 kBytes (depending upon version) Compute! was pushing the boundaries of what readers were willing to type in with the release of SpeedScript. Add to that the fact that Compute! couldn't predict what kind of printer users would have connected to their Commodore computers and the necessity for a printer agnostic program emerged quite rapidly.

As a result, SpeedScript only sends the minimum commands needed to print a document to the printer: strings of text out to a maximum physical line length of 70 characters with 5 character margins on either side and a 58 line page length. To avoid accidentally damaging user's printers SpeedScript permits users to require it to wait between pages; this is not the default behavior. With this logic, most US printers would work more or less out of the box, albeit with only very primitive formatting. For more advanced formatting that goes beyond mere page geometry printer specific commands are required.

To accomplish this, SpeedScript has nine user-defined variables, £ 1–9, to allow the user to send any printer specific commands desired. These commands are limited to a single byte cannot contain conditional logic. SpeedScript has no defaults but advises users to steer toward Commodore printers or another printer manufacturer with well-defined and well-documented printer control sequences.

Main articles: Commodore printer control codes, Epson printer control codes, and IBM printer escape codes.


Advanced Document Formatting[edit]


Default Document Values
POKE Value Parameter
5722 5 Left margin
5723 75 Right margin
5724 66 Page length
5725 5 Top margin
5726 58 Bottom margin
5727 1 Spacing
5728 1 Wait (1=go ahead)
5729 1 @ start numbering pages at (LSB)
5730 0 (MSB)
5731 1 ? start printing at page (LSB)
5732 0 (MSB)
5733 80 x columns across
5734 27 printkey 1
5735 14 printkey 2
5736 15 printkey 3
5737 18 printkey 4
Compute! #74, 07-1986

Document Editing[edit]

Like nearly all word processors of the era, SpeedScript is constrained in the size of documents it can edit by available RAM. As a result, documents needed to be split up into segments that could fit available RAM. This could also lead to complications along other fronts: SpeedScript documents were mostly portable between platforms. Sometimes a document authored on one platform intended for printing on another could run into problems due to insufficient RAM on the computer intended for printing. Assuming 2 kByte per printed page maximum file sizes would work out as follows:

Maximum File Size
File Size Platform Notes Pages
3072 B VIC 20 8kB REU 1½ pages
13312 B VIC 20 16kB REU 6½ pages
19456 B VIC 20 24kB REU 9½ pages
21504 B VIC 20 32kB REU 10½ pages
43520 B C64 21¼ pages
51968 B C128 SS 128+ 25⅓ pages
SpeedScript
Text Buffer
Platform Size Pages
VIC 20 1kB ½ page
C64 12kB 6 pages
C128 12kB 6 pages

SpeedScript was distinguished by having a very large text buffer for its day: 12 kB on most platforms. Unlike modern text editors which have a separate copy/paste buffer and an undo buffer SpeedScript, of necessity due to the RAM constraints, used a single general purpose text buffer. The one exception, of course, is the VIC 20 which is limited to 1 kB regardless of how much RAM expansion is installed on the system. This is nonetheless generious given the RAM constraints of the VIC 20.

SpeedScript lacks a "copy" function in the modern sense. Rather, all deletions and erasures — up to and including whole paragraphs — go into the text buffer and can be recalled at a later time. Like most modern word processors, the buffer exists only in system memory and is not committed to disk or tape.

Passages from a document can be manipulated at the word, sentence, or paragraph level. Text under the buffer size limit isn't actually lost when it is deleted or erased rather it is transferred to the text buffer and can be pasted back into the document in another location.

Character level deletion is handled with the restore , which functions as if it were a Backspace  key. Similarly, the   key deletes the character to the left of the cursor. The difference being in the case of restore  the end of file mark behaves the same as backspace on modern word processors but   leaves the end of file mark in the same place and overwrites the character to the left of the cursor with a blank space. Additionally, SpeedScript allows users to quickly address transposition errors with ctrl +x .

The Commodore 64 keyboard lacks a Tab↹  key so SpeedScript uses the ctrl  key for this purpose. An actual tab character ($9) is not inserted into memory, rather a tab is simulated with five space ($20) characters.

Working with Files[edit]

SpeedScript supports working with files from both Disk and Tape. Documents written on the C64 or VIC-20 are mutually compatible provided they're within the VIC-20's RAM limits. When loading or saving documents at the F7/F8 screen the user specifies the source as either (D)isk or (T)ape. SpeedScript then uses standard system calls to load or save files to the specified device. To guard against media errors SpeedScript implements a verify feature which the user can run at any time using ctrl +v . There is no speed loader or software tricks used to accelerate the process. It is possible to pull up a disk directory by typing ctrl +4  and view the directory of the current disk.

SpeedScript is far more flexible than most other programs of its era as it is also possible to use   to send completely arbitrary DOS commands directly to the disk controller. This gives SpeedScript an unmatched degree of forward compatibility not present in other software. Any command supported by the disk controller's firmware is valid, so JiffyDOS specific commands can be sent on a JiffyDOS equipped system and SD2IEC specific commands can be sent to that device, and so on and so forth. It is possible to exit SpeedScript cleanly and return to BASIC via stop/run +restore  the primary purpose of which is to allow the user to modify the contents of disk outside of the SpeedScript interface. It is possible to return to SpeedScript via SYS 2061.

SpeedScript's native file format is a PRG file with a custom character encoding scheme. This is somewhat unusual because SEQ is the typical file for storing non-executable data to disk on the Commdore 64. Various utilities exist to convert SpeedScript's custom encoding to standard PETSCII in preparation for conversion to other word processor formats of the era.

See main article: SpeedScript document format.

Version Specific Features[edit]

From the initial release of SpeedScript through SpeedScript 2.0, there were relatively few changes to the program. There were no new features added, only incidental bug fixes. SpeedScript 2.0 differs only superficially from its 1.x bug fix predecessors. It can be distinguished from its predecessors by its custom screen font, and a help file in SpeedScript document format. The help file is a word-for-word reprint of the magazine article that introduced the initial release of SpeedScript to the world.

SpeedScript-80[edit]

SpeedScript-80 is a feature specific patch that uses a number of hardware tricks to gain access to the C128's support chips, specifically the VDC, while in C64 mode. However, the user must enter C64 mode via very specific means. While it is technically possible to enter C64 mode at startup by holding down C= , this will not suffice for SpeedScript-80. The VDC chip is never initialized if C64 mode is entered in this manner and SpeedScript-80 depends upon VDC functionality to work.

Instead, the user must boot the C128 normally. This allows all of the C128 specific chips, including the VDC to initialize and enter their default states. Once this is done, the user can enter C64 mode by typing GO64. The C128 will now enter C64 mode. From there, they can run SpeedScript-80 normally and gain access to the C128's 80 column mode.

SpeedScript 3.0[edit]

This version of SpeedScript was a significant rewrite of the original. It included several new features, most of which had to do with enhanced page formatting and printer output. Noteworthy new features included: Commands £1–£4 now had default values which could nonetheless be redefined as needed, the absolute length and width of the page can now be specified. This effectively adds support for page geometries other than US letter an A4 without the need for the user to get creative with predefined codes. By default SpeedScript sends only carriage return to the printer as the end-of-line character. Some printers expect carriage return and line feed characters to be sent back-to-back to signal end-of-line, SpeedScript 3.0 adds optional support for this.

Beyond this, there were two more significant new features: This version of SpeedScript added "information" lines. These were, in effect, an inline comment within the SpeedScript document akin to BASIC REM. Additionally, users could chain SpeedScript files together for purposes of printed output. SpeedScript would attempt to load that file from disk and or tape continue printing until it reached the last file in the chain.

The last version of SpeedScript for the Commodore VIC 20 and Commodore 64 was SpeedScript 3.2 which contained no new features and only a handful of bug fixes. SpeedScript 3.0 files that didn't rely on new SpeedScript 3.0 functionality were fully backwards compatible with previous releases of SpeedScript. Even files that did make use of new features only required slight modification in many cases.

SpeedScript 128[edit]

SpeedScript 128 Plus[edit]

SpeedScript On Other Platforms[edit]

Apple SpeedScript[edit]

Atari SpeedScript[edit]

PC SpeedScript[edit]

Links[edit]

WP-W11.png Wikipedia: SpeedScript