ROMs are an easy way to expand your CPC
Most programs can be written or converted to RUN from ROM, but there are a few rules:
1. By definition, ROM means read-only. Self-modifying code cannot work. Unless, of course, you copy the program from ROM to RAM first.

2. Again, because ROM means read-only, any programs’ working memory must be located (usually reserved) in RAM.

3. The maximum size of ROM the the CPC can address is 16KB. Larger programs can be linked (far-called) across multiple ROMs, but this is not sorted out automatically.

4. ROMs have a defined structure that must be followed. This structure allows you to control how the CPC treats the ROM when it is first logged on at power-up, and from there how any programs are accessed. Look here for a description of this structure.
The rules are very simple...
To write your own ROM programs, the following ingredients are needed:
If you have a PC and use a CPC emulator like WinAPE32, then you will not need the last 3 ingredients.
A useful ROM introduction once appeared in Amstrad Action. I have scanned it here.

Also, I wrote a series of articles for the WACCI magazine (Issues 100-103) talking about EPROMs and the necessary hardware and software. These articles were also printed in the CPC SouthWest magazine. I have scanned my articles here (2.4MB).

My favourite ROMs were/are ParaDOS, Utopia and Maxam. I also put the LERM assembler on ROM and used it a lot. I will make it available soon.
1. A knowledge of Z80 Machine language. There are plenty of books on this subject, although you may need to pick them up second hand. A visit to the Official Z80 support site is also useful.
2. A knowledge of the CPC firmware. Amstrad produced the virtually indespensible Firmware guide called “Soft968”, but getting this has always been difficult. Instead get “The Firmware Guide” (800KB) by the PrintOut gang. This describes the CPC memory usage along with all the Firmware routines.
3. An assembler. There are lots. Maxam by Arnor was always popular, but there are others, e.g. GENA, Pyradev. I always used LERM. A visit to TACGR will help.
4. An EPROM programmer or a RAM/ROM board. Essential for creating and/or testing your efforts. I made my own EPROM programmer - details of the project are here.
5. A ROM board. It used to be possible to buy these but not any more. Still, you could make your own! Here is a DIY ROM board project (2.2MB) that appeared in Practical Electronics way back in 1988.
Best Z80 Book
the Z80
Rodnay Zaks
Rombo Rom Box
Top Tip!
Top Tip!
Ian Neill, updated 25/10/06.