To get their CPM you were required to send them your system discs and essentially they provided a transfer service so they didn't infringe on Digital Research's copyright or distribution policy.
The ROM they provided had your address and serial number encoded on the ROM. A script has been written to update these details which can be downloaded from [https://github.com/cormacj/AmstradCPCRomHacks here].
== AccessoryRSX/Utility ROM Commands ==
Graduate's {| class="wikitable"|-! scope="col" width="100" | RSX! Details|-| <nowiki>|EMS</nowiki>| rowspan="2" | Starts CP/M Plus from ROM based CPM and shows the CP/M Plus expansion ROMs with their names. CP/M Plus is configured for two drives and the RAM drive C: with 444 KB RAM.|-| <nowiki>|O</nowiki>|-| <nowiki>|PASSWORD</nowiki>| This command asks you for a password. If you enter it three times wrong then CP/M Plus will be started from ROM. The default password in the available 2.34 ROM is <code>SPLINTER</code>|-| <nowiki>|PW</nowiki>| If the password was entered correctly using <nowiki>|PASSWORD</nowiki> then <nowiki>|PW</nowiki> will do nothing. If the password was not entered, or entered incorrectly then it will start CP/M, just like <nowiki>|EMS</nowiki> |-| <nowiki>|OP</nowiki>| This RSX command activates a menu system, which allows CPM software you to be installed launch a .COM or .SUB file in special Accessory an automatic way. An error message will be displayed if there is no .COM or .SUB file on disc. You can choose the file of choice with SPACE and start it with RETURN. CP/M PLUS with the RAM Disc will be started and the selected file will be launched. <p>Note: Some print routine are incompatible, for example this is the case for X-DDOS. Switch off if you find problems.|-| <nowiki>|VER</nowiki>| rowspan="2" | These commands are both identical. They show the Copyright message for CP/M PLUS and the CPM ROMs. Additionally, the serial number and the name of the user is also printed.|-| <nowiki>|CPMVER</nowiki>||-| <nowiki>|MYNAME</nowiki>| Displays the name of the user/buyer of this set of CP/M Plus ROMson screen.
They produced one [[CPM_Accessory_ROM_1]] but you could buy more from them with <nowiki>|MYNAME</nowiki> by itself just prints the programs you wanted to be installedROM owner name.
A utility ROM can exist in any ROM slot from <nowiki>|MYNAME,1 to 15 - these are the slots checked by the ROM</nowiki> prints owner and serial number.
[[TFM]] has written ROMManager which can create these accessory <nowiki>|MYNAME,2</nowiki> prints owner, serial and address.|-| <nowiki>|OHELP</nowiki>| rowspan="2" | These commands are both identical. They list any CP/M Plus expansion ROMs containing programs (if installed). showing their name and he provides downloads on his website position (ROM number). Using <nowiki>|OHELP</nowiki>,number or <nowiki>|EMSHELP</nowiki>,number will display the applications contained in CP/M Plus expansion ROM #number, for some that he has made himselfexample <nowiki>|OHELP,6</nowiki>|-| <nowiki>|EMSHELP</nowiki>||-| <nowiki>|NOCPM</nowiki>| This RSX command will switch OFF the CP/M Plus expansion ROMs. All other ROMs will be initialiized again.|-|}
=== Commands =BUILTIN commands ==
All commands are in The ROM 1provides a set of additional commands by default. These can be listed using the command "BUILTIN".
* |CPMVER and |VER - This showsThese commands are:
{| class="wikitable" CPM PLUS is copyright : ! Command! Description|- | 24LINE || ensures the scrolling error messages at bottom of screen AMSTRAD CONSUMER ELECTRONICS PLC|-| 25LINE || turns off that status line and puts any error message on screen under the bad command|-| AMSDOS || the 1K disc utility which ensures a clean exit from CP/M|-| BUILTIN || tells you all commands in your ROM|-| BORDER || changes the colour as in Locomotive BASIC|-| CAT || exists for those who resist DIR, again giving you an alphabetical sort and free space|-| CLS || clears the screen just as in BASIC, homes the cursor but does not affect screen mode|-| DATE || is supposed to display the system date and time. & |- DIGITAL RESEARCH| DETAILS || inform you about the system set-up|-| EXPAND || assigns a character string to a lone keystroke|-| HOME || sends the cursor to the top left-hand corner of the screen without clearing the screen|-| INK || works as in BASIC|-| INVERSE || gives paper-on-ink colours, or reversed display, until the NORMAL command is given|-| KDS || controls the optional 8-bit port, if you have one|-| LANGUAGE || accesses the various character sets available|-| LPRINT || dumps a file to your printer|-| MODE || for columns on screen, as in AMSDOS|-| PALETTE || changes screen colours easily|-| PAPER and INK || do what normally happens in BASIC|-| ROMCAT || tells you what's on-board other accessory ROMs|-| SETLST || initialises the printer|-| SET24X80 || a single command combining MODE 2 and 24LINE functions, so existing PROFILE.SUB files need not be modified|-| CKEY || allocates an ASCII code to a Control+key combination|-| NKEY || for normal key assignment|-| SKEY || uses shift+key for ASCII assignment|-| SIGNON || lists accessory ROMs available for use under CP/M|-| WAIT || prompts user for keypress|}
CPM ROM by Graduate software.== Technical ==
This rom * CPM+ is version stored in ROM 2and is copied into RAM. It appears to copy the equivalent of the EMS file but with patches.23 : - SERIAL NUMBER : 1232-GRAD102 OWNER : <name> " <name> * AMSDOS ROM is required for the person who final part of the rom was made forboot process.
* |MYNAME shows: <name> same as in CPMVER== Accessory/Utility ROM ==
* |OHELP or |EMSHELP - This shows:Graduate's ROM based CPM allows CPM software to be installed in special Accessory ROMs.
" CPM PLUS : Accessory Roms attachedThey produced one [[CPM_Accessory_ROM_1]] but you could buy more from them with the programs you wanted to be installed.
"A utility ROM can exist in any ROM slot from 1 to 15 - these are the slots checked by the ROM.
It lists the names of the attached [[TFM]] has written ROMManager which can create these accessory ROMsand he provides downloads on his website for some that he has made himself.
* [[User:Cormacj|EMS - starts CPM+ CormacJ]] has written a python script to create accessory ROMS and also extract .COM files from ROM ROMS. You can view this at his [https://github.com/cormacj/AmstradCPCRomHacks?tab=readme-ov-file#make_accessory_rompy AmstradCPCRomHacks] repository
* |PASSWORD Some emulators don't support the accessory ROMs because of the non- this gives a "?" prompt standard format. Arnold and asks you to enter the passwordCaprice32 supports these.
=== Structure of a utility ROM ===
|-
| &10
| 3222
| Extension ROM name (note 2)
|-
1. Identification: "Graduate (C)1988". Only the first char 'G' is checked.
2. Accessory ROM name is ASCII string terminated with '$'. Graduate's Accessory ROM 1 is called "CP/M Accessory Rom 1\r\n$". You need to provide a description. At a minimum '$' on it's own is ok. The code displays the string and doesn't check if it goes past the space allocated in the ROM. Some documentation notes that this can be 32 characters long, but the Graduate Software roms will only display up to 22 characters.
3. Loading code is required. A dissassembly is shown below. The CP/M ROM executes it. Code is copied from &c070 (length &200) to &3f70 in RAM therefore copying both the loading code and the directory.
The name, address and serial number of the registered user is stored in ROM 1 at offset &3f00. It uses a simple encryption by XORing bytes with &4E.
== Password ==
The password for |PASSWORD is ''SPLINTER''
This is stored in ROM 1 at offset &3f88. It uses a simple encryption by XORing bytes with &AA.
== Links ==
* [[http://futureos.cpc-live.com/ Future OS website, home of ROM Manager and TFM's Accessory ROMs]* [https://github.com/cormacj/AmstradCPCRomHacks Python scripts to build your own accessory roms and to patch the CPM rom to update user, address, serial and password message]
[[Category:Operating System]][[Category:Expansion ROM]][[Category:CP/M]]