Changes

CP/M 3.0

668 bytes added, 11:44, 7 May 2018
/* Memory layout */
=== Memory layout ===
* 1st 64KB has the Amstrad's XBIOS (callable using 'userf'), CCP, BDOS, BIOS, screen and firmware. Screen is at &4000-&7fff. Firmware is used. AMSDOS is not used.* There &c1/&c2 are used, so that there is some trampoline common code at &c000-&ffff. C1 configuration is used. (this This common code has C7 at &c000-&ffff)a small BDOS and BIOS. Most of the functions use trampoline code to transition to bank 0 and call into the XBIOS.* 2nd 64KB has the TPA and complementary trampoline the shared code. c2 configuration is used.
a) Page C4 has WBOOT and BDOS jump + &100-&3f00 of the TPA. This calls to functions in Page c7.
b) Page C5 has &4000-&7fff of the TPA.
c) Page C6 has &8000-&bfff of the TPA.
d) Page C7 has &c000-&f2fb of the TPA. From &f2fc to &ffff is the trampoline code which transitions * to 1st bank of 64KB.
 
=== Implementing a storage device driver ===
 
Using "drvtable" get the list of DPH for each drive. This is actually fixed at FE2F and is referenced by the XBIOS.
 
Amstrad have extended the DPH.
* +23,+24 - address of a DD WRITE SECTOR (XBIOS) compatible function
* +25,+26 - address of a DD READ SECTOR (XBIOS) compatible function
* +27,+28 - unknown function, but does call DD LOGIN (XBIOS) if successful
* +29,+31 - unknown function, calls RET
 
=== Links ===
* [[https://www.seasip.info/Cpm/index.html|John Elliott's information about CPM 2.2 and CPM+ on the Amstrad]]
 
[[Category:CP/M]][[Category:Operating System]]
2,541
edits