Beta BASIC completely replaced
Sinclair BASIC, which as common for the time was also the
OS providing a
command line interface (CLI). Thus Beta BASIC provided a new and improved CLI and editor. It supported Sinclair's
idiosyncratic single-key entry system for BASIC keywords but also allowed keywords to be spelled out letter-for-letter. This also removed the necessity for memorising the sometimes arcane key combinations necessary to enter less-commonly-used
BASIC keywords. However, the single-key entry system was also extended by mapping the Spectrum's 'graphics' characters to Beta BASIC's new keywords. To switch from keyword entry to typed entry, it was merely necessary to type a single space, causing the cursor mode to change from K (keyword) to L (lowercase) or C (capital). (The KEYWORDS statement could also be used to alter this behaviour, for example by disabling the K mode.) The editor, when listing, could optionally automatically
prettyprint code. It was possible to do this manually in Sinclair BASIC, but automatic indentation has the advantage of highlighting certain types of coding error - primarily those to do with failing to correctly close constructs. Other editing improvements included automatic highlighting of the current-line indicator - a small tweak but disproportionately helpful - and the ability to move the cursor up and down as well as left and right, a huge boon when editing long lines. Combined with the 64-column display (see "New functionality" section below), these improvements made Beta BASIC a much more productive environment even for coding standard Sinclair BASIC and making no use of BetaSoft's language additions. Beta BASIC was also a standalone
interpreter in its own right, bypassing the Spectrum
ROM, which it used as a library. It occasionally made calls into the ROM to access functions that were not worth re-implementing either because the ROM routines were good enough or for reasons of space - Beta BASIC had to run in the 48
KB of memory available on a Spectrum and still leave room for the user's code. == Language changes ==