Use the SCM Auto bit (edit the ROM)
TL;DR: Use my modified ROM to start CP/M automatically on RC2014.
For these instructions, you'll need an EEPROM chip (e.g. W27C512-70) and a ROM reprogrammer device (e.g. XGecu T48).
- Download
24886009.BIN
from the RC2014 GitHub repo.
- Open the
.BIN
in your favorite hex editor (e.g. HxD, Xgpro, etc).
- Locate memory location
0x7FBA
(row 7FB0
, column 0A
).
- Change the value from
0x41
to 0xC1
(thanks Steve).
01000001
(0x41
) becomes 11000001
(0xC1
).
- This sets the Auto flag (bit 7) for CPM to on.
- For more info, see SCM guide doc page 36.
- Run ROM reprogrammer software (e.g. Xgpro).
- Hint: You can also use Xgpro to edit the ROM image.
- Insert an EEPROM into your reprogrammer (ensure correct position).
- In Xgpro, press the "PROG." button (center of toolbar at top).
- Insert the ROM into the RC2014 pageable ROM module.
- Ensure that only A14 and A15 are set (do not set A13).
- The RC2014 should now boot straight to CPM (see note below).
Note:
- You may see a "Compact flash not present" error, even with a working CP/M CF card present. This happens because sometimes the CR card is too slow to init, and when you press the CPU reset button (i.e. the reset button on the Z80 CPU card) this almost always occurs. If you press the reset button on the RC2014 Pro backplane, CP/M will normally boot automatically, and you won't see the CF card error (but maybe 1 in 5 times the CF card will be too slow to init and you’ll see the error).
- Most retro computing enthusiasts probably already know this, but in case you're like me: EEPROM means 'electronically erasable' and is not quite the same as EPROM or UVPROM.
Original research
Edit: As advised, I asked a question on the RC2014-Z80 Google Group and got the response from Steve Cousins (who wrote SCM, which works on RC2014, and he also makes kits for the RC2014):
Hi Nick,
That's an interesting question.
SCM includes a very simple ROM filing system which allows extra
features to be added to the monitor. The CPM command is implemented
this way. Each extra feature has a descriptor at the end of the ROM
bank it is in. Here is an example from a 32k SCM ROM:
7FA0: 55 AA 43 50 4D 20 20 20 20 20 03 00 74 4D 44 00 U.CPM ..tMD.
7FB0: 55 AA 43 50 4D 20 20 20 20 20 41 80 55 4C B4 00 U.CPM A.UL..
7FC0: 55 AA 42 41 53 49 43 20 20 20 03 00 09 4D 6B 00 U.BASIC ...Mk.
7FD0: 55 AA 57 42 41 53 49 43 20 20 01 00 03 30 52 1C U.WBASIC ...0R.
7FE0: 55 AA 42 41 53 49 43 20 20 20 01 00 00 30 55 1C U.BASIC ...0U.
7FF0: 55 AA 4D 6F 6E 69 74 6F 72 20 02 00 00 00 E6 22 U.Monitor ....."
Each feature has a number of flags in the descriptor which tell SCM
what to do with it. One of those flags is AUTORUN. Setting this flag
causes the feature to be executed during SCM initialisation.
In this case, setting bit 7 of location 0x7FBA will cause the SCM
command to AUTORUN and thus load CP/M at reset. So change the value
0x41 to 0xC1.
A 16k ROM bank will have this table ending at 0x3FFF.
This is all documented in the Small Computer Monitor User Guide [page 36].
Below is a terminal session from the modified ROM.
Steve
The monitor starts up 'invisibly' before loading CPM:
CP/M 2.2 Copyright 1979 (c) by Digital Research, BIOS-F (2022-03-23)
A>
A>
Starting up without a CF card enters the monitor but without the usual
SCM startup message.:
Compact flash not present
*
*
Note: This involves using the 88 ROM image (don't set A13).
Original message from the RC2014 creator, Spencer Owen:
With regard to your question about booting directly to CP/M, no, other than modifying the initial loader program on ROM (which would the lose the ability to to receive Intel Hex files, which although rarely used, can be super useful), I don't know of a way. If you boot to SCM, you just have to type cpm and hit return, but that is going to be one extra keystroke. It may be worth asking the question on the RC2014-Z80 Google Group where there are a lot more people familiar with the RC2014 than on Stack Overflow.