Changes
CP/M 3.0
,/* Extra memory */
ESC 1 - enable status line
ESC 2 - set language
ESC 3 - set screen mode?
ESC A - cursor up
ESC B - cursor down
PCW and Spectrum support viewports. This is not supported on CPC. CPC assumes a single viewport covering the entire screen and it is moved up/down using software when using insert line or delete current, but moved up using hardware otherwise.
==== ESC 2 - set language ====
ESC 2 <language>
<language> is 0 based. The value is anded with 7. Internally this will transfer language specific character graphics into the font for display.
==== ESC 3 - set display mode ====
Set the display mode:
ESC 3 <mode number>
<mode number> is 0 based. The value is anded with 3.
e.g. to set mode 0:
ESC,3,0
==== ESC b - set foreground ====
Set the foreground (pen 1) colour:
ESC b <colour>
Colour is 0 based with 32 added. It is a 2 bits per pixel %00rrggbb colour.
==== ESC c - set background ====
Set the background (pen 0 and border) colour:
ESC c <colour>
Colour is 0 based with 32 added. It is a 2 bits per pixel %00rrggbb colour.
==== ESC Y - set cursor position ====
Set the cursor position:
ESC Y <y> <x>
Coordinates are relative to top-left and are 0 based with 32 added.
e.g. for x,y of 2,10:
ESC,'Y',10+32,2+32
=== Memory layout ===
* 1st 64KB has Amstrad's XBIOS (callable using 'userf'), CCP, BDOS, BIOS, screen and firmware. Screen is at &4000-&7fff. Firmware is used. AMSDOS is not used.
* 2nd 64KB has the TPA and the shared code.
=== Extra memory ===
CPM+ on the CPC uses 128KB of memory. Therefore selections C4,C5,C6,C7 must be avoided if you have additional memory. Due to the design of DkTronic's compatible RAM expansions all memory accesses to additional RAM must occur from bank 0 (i.e. 'C0C1') and be transferred to the TPA in bank 1 (i.e. 'C2').
Therefore access to the additional RAM follows a pattern such as this: