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, Philip 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 $99. What they meant was they hoped their new operating system would 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 Displays entered hex number in decimal notation G Execute a subroutine at address G (RET will return to the monitor). H Displays entered decimal number in hex notation M Hex and ASCII dump from given address (SPACE to exit). R View and/or change registers AF, BC, DE, HL, IX and SP. S 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/2000. 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