Changes

V9990

11 bytes added, 12:41, 29 December 2018
/* Technical */
In the following "databus" means that the v9990 doesn't assert the bus, it doesn't provide data, so the value read is "floating-bus" or the value on the z80 databus at the time. More commonly on CPC it's &ff, but there are some configurations of CPC where this differs.
 
In the following "width" and "height" refer to "image space width" and "image space height" which differ from display width and height.
=== Kanji ROM ===
=== Coordinates ===
* Most commands seem to use internal image space coordinates for operation. * sx,sy,dx and dy registers use image space coordinates.  * Image space width can be 256, 512, 1024 or 2048 pixels. Image space coordinates are not the same as the display coordinates and display width and display height. Coordinate masking is based on  * Internal coordinates using image space coordinatesare masked before use using image space width and height.
* the image space height is computed from the vram size, bits per pixel and image space width based on an equation like this:
==== LMMV ====
* SC comes from FC when applied to LOP.
* FC low then FC high are used to write pixels. The order is not reversed when DIX=1.
e.g. When 8bpp, fc=&1234, DIX=0 and nx=4 then after LMMV has executed we will see the bytes in vram: &34,&12,&34,&12.
==== PSET ====
* PSET seems SC comes from FC when applied to use an internal x and y coordinateLOP.
* The internal x and y coordinates are validated before use by masking them. When width is 256 then mask is 0x0ff, when 512 the mask is 0x01ff, when 1024 the mask is 0x03ff and when 2048 the mask is 0x07ff. Therefore attempting to write to x=300 on a 256 width screen actually writes to pixel x=0x02c because it is masked before use.
2,541
edits