It should be noted that if the origional CBIOS is replaced as described later,
then the resulting CP/M cannot be directly changed in size to suit a different
Memory size. This is not really a problem since most people will probably be
using 64K RAM anyway and will not want to change the size. Once the Software is
set up it does not take long to reconfigure CP/M and insert the new CBIOS in any
case. The method described here is to put the new BIOS into a copy of CP/M
configured for the RAM size required and which is non relocatable.
The other way to do the job is to change the BIOS in MOVCPM.COM, the program that
is used to alter CP/M to suit changing memory size. To do this requires Software
that most people do not have available, as described below.
The MOVCPMV/N.COM Program
Figure 1. The MOVCPM Program and CP/M Image in RAM
The mapping of MOVCPM is shown in Fig. 1, which represents an ‘image’ of the
program after it has been loaded into memory. It is important to note the
following addresses. (Which could be different particularly on other systems.)
Use your BUG program to look at your copy.
|1)0100H||–||Start of MOVCPM Relocation Module|
|2)0900H||–||Start of CP/M System Track ‘Image’. – 200H bytes that holds the
COLD BOOT LOADER.(1 Sector = 512 bytes decimal.)|
|3)0B00H||–||Start of CCP. This is 800H bytes long (4 Sectors = 2K decimal.)|
|4)1300H||–||Start of BDOS. This is E00H bytes long. (7 Sectors=3.5K decimal.)|
|5)2100H||–||Start of BIOS. This length varies as described later, but cannot
exceed 8 Sectors = 4K decimal on this Disk System.|
|6)2C50H||–||BIT MAPS. The start address is approximate and it will change
depanding on the version of CP/M and length of the BIOS.|
|7)XXXXH||–||End of BIT MAPS. Again a variable address.|
(According to CP/M UG UK the first 6 bytes of the BDOS are the Serial number of
CP/M and should be retained intact for programs to run.)
The MOVCPM program contains a section to Relocate CP/M, and also a copy of CP/M
‘organized’ for low memory. The program also contains a module called a BIT MAP.
This contains data which tells the relocation part which BYTES to alter when CP/M
is ‘moved’ to suit a different memory size. If the BIOS is changed then the
relevant part of the BIT MAP must also be changed. An assembler that can create a
.PRL (Page Relocatable) File is needed to do the job, so this method is not
available unless such an assembler is to hand.