Changes
CP/M 2.2
,/* Memory Map */
=== Memory Map ===
CP/M runs with ram selection 0 (i.e. LD BC,&7FC0:OUT (C),C ) and assumes the upper ROM is selected (in this case AMSDOS). Therefore if you patch enabled and need to change is the ROM, then you should store and re-store one with the upper ROM using the firmware functionsCPM BIOS in it (i.e. It seems that AMSDOS doesn't use all it's work ram. )
The lower firmware jumpblock exists at &0000-&0040 because it is needed by the firmware jumpblock to call into the OS rom. The following changes are made for CP/M 2.2:
* &ad00 - &ad32 => CPM BIOS jumpblock.
Each entry is a JP instruction. (The address of this can be calculated from CP/M if you need to patch it. Take the address at &0001/&0002 and subtract 3 to give the address of the boot JP instruction). These jumps including enter/exit firmware can be patched.
If you plan to patch it for additional hardware and need memory then you will need to use MOVCPM to reduce the TPA size.
* &b900 - &be00 => main firmware jumpblock
* &be40 - &be7f => used by AMSDOS and locates the XDPB for each drive.
* &be80 - &bebf => CP/M 2.1 BIOS extended jumpblock. (functions here used by conin, conout, lstst, list, punch, reader, const and action depends on iobyte. These can also be patched. )
* &bec0 - &bfff => stack
* &c000 - &ffff => screen