#### Back to index | # Info for specpls4

#### Amstrad Spectrum +4 Rom

The plus4.rom is copyright (c)1982-2000 Amstrad plc
and is distributed with their kind permission.
I would like to thank Cliff Lawson and Amstrad for making this
project possible, Phillip Kendall for the Spectrum ROM page, Ian
Collier for documenting the changes he made to the ROM and giving me
additional advice, Dr Ian Logan and Dr Frank O'Hara for the invaluable
Complete Spectrum ROM Disassembly, and whoever it was that sold the
book to me and contributors to comp.sys.sinclair for keeping me
constantly amused and informed.
-Andrew Owen, 24-2-2000
Introducing the Spectrum +4.
----------------------------
Remember when Apple promised its customers a whole new computer for
change the experience of their users so profoundly it would make them
feel as if they had a new machine. Well now you can have a whole new
Spectrum for FREE!
What is the idea behind this?
-----------------------------
IÕve taken the original 48K machine as my starting point and tweaked
it until the point where I donÕt think there is any further room for
improvement without adding extra hardware. Now if someone wants to
build a new machine at least they have a place to start.
How compatible is it?
---------------------
The Spectrum +4 ROM is very similar to the one in the 48 and so it
should be 90% compatible or better with machine code. BASIC programs
may require minor modifications but should then run without problems.
What are the changes?
---------------------
There are so many changes that it is impossible to summarise them all.
Only the important changes have been detailed with the exception of
the new NMI routine which is self explanatory.
THE KEYBOARD
The keyboard layout has been completely redesigned, based on the
standard international English keyboard, to make it quicker to use and
easier to remember which keys are where. This is made possible by
replacing the keyword entry system.
All the SHIFT functions on the number keys are retained, as are the
EXTEND and SHIFT-EXTEND attribute functions. But that is where the
similarity to the old keyboard ends.
All but a few symbols are accessed by holding down SYMBOL shift and
the relevant key, while the remainder are accessed using EXTEND mode.
Pressing either SHIFT or SYMBOL shift in EXTEND mode will give the
same result as if SYMBOL shift alone had been pressed. In addition to
the characters shown below, the 16 pre-defined graphics characters are
accessible using SYMBOL shift or EXTEND mode and keys Q-R and A-F.

- --------------------------------------

| ! | @ | £ | $ | % | ^ | & | * | ( | ) |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |

- ---------------------------------------

| | | | | | | { | } | : | " |
| | | | | | | [ | ] | ; | ' |
| Q | W | E | R | T | Y | U | I | O | P |

- --------------------------------------

| | | | | | | | | _ | + |
| | | | |(c)| | \ | - | = |
| A | S | D | F | G | H | J | K | L |

- ----------------------------------

| ~ | | | | ? | < | > |
| # | | | | / | , | . |
| Z | X | C | V | B | N | M |

- --------------------------

SYMBOL = Lower symbols
EXTEND = Upper symbols and attributes on number keys
SHIFT = Upper case letters and functions on number keys
BASIC EDITOR
The most noticeable change is that all commands must be typed in full.
Instructions are converted into tokens automatically when you press
ENTER. It is also possible to use the cursors to move up and down
while editing a line. Instructions can be entered in both capital and
lower letters. No space is required between commands such as DEF FN or
after a command unless the argument begins with a letter.
BASIC COMMANDS
CAT, when entered without parameters, calls up the built-in monitor.
The PLOT, DRAW and CIRCLE commands have been modified to use the whole
screen.
ERASE "i" erases extra Interface 1 variables, extended channels and
such without affecting the BASIC program in memory.
The GO SUB, GO TO and CONTINUE commands have been replaced by GOSUB,
GOTO, and CONT, to replicate other BASIC interpreters.
MOVE can be used to shift data around in memory. For example, the
command MOVE "r0,6144","r16384" would copy the first 6144 bytes of ROM
to the screen area of memory.
The COPY command has been replaced by the FREE command which reports
the amount of free memory below RAMTOP.
THE MONITOR PROGRAM
The Spectrum +4 features a built-in monitor which can be accessed with
the CAT command or holding down SYMBOL shift, SPACE and B while

interrupts are enabled. The following commands are then available:
B Return to BASIC (if possible)
D<hex_num> Displays entered hex number in decimal notation
G<hex_addr> Execute a subroutine at address G
(RET will return to the monitor).
H<dec_num> Displays entered decimal number in hex notation
M<hex_addr> Hex and ASCII dump from given address
(SPACE to exit).
R View and/or change registers
AF, BC, DE, HL, IX and SP.
S<hex_addr> Patch memory from given address using hex editor
(SPACE to exit editor).
BUG FIXES
Every effort has been made to fix all the bugs mentioned in The

Complete Spectrum Rom Disassembly and a few others besides as follows:
Fixed a bug the CLOSE # bug. eg CLOSE #4
Fixed the forwardspace (CHR$ 9) bug. e.g. PRINT "A";CHR$ 9;"B"
Fixed the backspace (CHR$ 8) bug. e.g. PRINT AT 0,0;CHR$ 8;"A"
Fixed the STR$ bug. e.g. PRINT "BUG"+STR$ 0.5
Fixed the division bug. e.g. IF 1/2<>0. 5 THEN PRINT "BUG"
Fixed the -65536 bug. e.g. PRINT INT -65536
Fixed the SCREEN$ bug. e.g. IF "X"=SCREEN$ (0,0) THEN PRINT "BUG"
Fixed the "scroll?" bug. Try pressing True Video at the request.
Fixed the syntax check error.
Fixed the double store bug at 257Dh.
Resolved the K-MODE bug. There is no 'K' mode.
Resolved printer buffer error. There is no COPY command.
Resolved the NMI bug. There is a different routine.
Fixed the 'lock up if interrupts are disabled on error report' bug
LEGAL NOTICE FOR THE CURIOUS
Just to make sure it was 100% okay to do this I wrote to Amstrad's
Cliff Lawson on 23/02/00. Here's what followed.
ME: I know it's okay in principle to distribute modified Spectrum
ROMs as long as the copyright message is unchanged. However,
I've just finished a very major overhaul of the ROM and would
like to use an alternative message.
CL: Well you can't really associate a name such as "+4" with
"Amstrad Consumer Electronics" because it makes it look as if
it's an "official" development.
ME: Would this be acceptable?
AMSTRAD CONSUMER ELECTRONICS PLC
(C)1982-2000 unofficial +4 48K
CL: Yup, sounds OK but you do realise that the company was only
called "Amstrad Consumer Electronics" for a few years in the
early..mid 80's then the company name was shortened to
"Amstrad plc" so it's a bit "out of date" to use it but I
guess that probably describes the "Spectrum" too! :-)
ME: Mind if I quote you in the "readme" just so no one accuses me
of violating copyrights?
CL: No problem.
Visit the Amstrad website at http://www.amstrad.com
Amstrad plc. Registered in England No. 955321
Registered Office: Brentwood House, 169 Kings Road, Brentwood,
Essex CM14 4EF, England

created on Thu Aug 16 22:55:01 2001