Changes
Graduate software provided Software was a version of CP/M+ on ROM. This used two 16KB ROMs which were standard CPC firmware compatible ROMs. You were required to send them your system discs, essentially they provided a transfer service so they didn't infringe on Digital Research's copyright or distribution policycompany founded in Bristol by three people including Roger Bamkin and Simon Champion.
== Accessory/Utility ROM ==
Graduate's ROM based CPM allows CPM software to be installed in special Accessory ROMs. They 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. [[TFM]] has written ROMManager which can create these accessory ROMs and he provides downloads on his website for some that he has made himself. Some emulators don't support the accessory ROMs because of the non-standard format. Arnold and Caprice32 supports these.
=== Structure of a utility ROM ===
|-
| &10
| 3222
| Extension ROM name (note 2)
|-
| &200
| &3e00
| Data area for files.(note 5)
|}
| 0
| 8
| Filename (note 56)
|-
| 8
| 9
| 2
| address in ROM for start of data for file (note 67)
|-
| 11
| 2
| length in bytes of file
|-
| 13
| 1
| length of filename in chars (excluding padding)
|-
| 14
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.
4. Up to 16 files can be defined. Each file takes 1 entry. Unused entries are filled with &FF.
5. The accessory ROM boot program can be replaced and if needed exended by re-using some of the data area for code. In this case allocate your programs to account for this. 6. Filename is in upper case, 8 characters long, padded with spaces. '.COM' extension is assumed. 7. ROM starts at &c000. Therefore &c200 is the start of the first file. == Registered user == 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.
* [[http://futureos.cpc-live.com/ Future OS website, home of ROM Manager and TFM's Accessory ROMs]]* [https://github.com/cormacj/AmstradCPCRomHacks A python script to update the CPM rom user, address, serial and password][[Category:Operating System]][[Category:Expansion ROM]][[Category:CP/M]]