Changes

Jump to: navigation, search

Amstrad Whole Memory Guide - The display system

1,157 bytes added, 21:40, 12 February 2020
/* Workspace */added screen pack table
In theory, the Screen RAM could be any 16K byte area of memory starting at a multiple of 4000, but the 8000-BFFF block would overwrite workspace and RAM routines, while 0000-3FFF would overwrite the RST Area, so the choice narrows to 4000-7FFF or C000-FFFF, and it is usually more convenient to adopt the latter area, leaving the central half of RAM free for other purposes.
The Screen RAM is accessed by the Video Gate Array on a basis of addresses supplied by the CRT Controller, but the addresses are not used in a straightforward manner. The CRT Controller embodies two counters. One, output on RA0-RA4, is incremented after each line of the display has been scanned. When this count reaches the value set for the number of scan lines in the character height it is zeroed, and the second counter, output on MA0-MA13, is incremented. This counter is 1initialised initialised to the Start Address set in the CRT Controller, which is 3000 when the C000-FFFF area is in use. These outputs are used as follows;
* Address bits A14,A15 are driven from MA12,MA13. Since the MA counter works from a Start Address of 3000, both these bits are true.
* Address bit A0 is driven from the CRT Controller clock.
The scan line takes 40 microseconds to traverse the visible part of the display, and during each microsecond the Video Gate Array requires two bytes of screen data. These are transferred directly from RAM to the Video Gate Array, the processor being meanwhile held in Wait. The process is so timed that the GCRTC CRTC clock changes state between the two transfers. Once all the bytes have been read, the normal processor action is allowed to continue. The bytes are used in different ways in the three screen modes.
In Mode 2, each byte defines one row of a character pattern matrix, each bit determining which of two colours should be given to a pixel, and eighty characters are displayed in each screen row.
Bach stream may reserve for itself a rectangular window. If two windows overlap, the streams may overwrite each other in the overlap area. Any area not so reserved may be accessed by stream 0, which is the default if no stream is specified.
== Parameters ==
 
A certain amount of care is needed in dealing with screen parameters, as their definition can vary. A distinction is made between 'physical' and 'logical' values, the former numbering columns and rows from 0 upwards, while the latter start at 1. There are also distinctions between absolute and relative values.
 
Similar distinctions arise with Graphics parameters, user coordinates being relative to the origin set by the user, while standard coordinates are relative to the default origin.
 
== Workspace ==
 
As many workspace locations are common to more than one section of the display system, the addresses for the whole screen workspace in Version 1.0 are given here
 
 
==== Screen Pack ====
 
{| border="1" cellpadding="4"
|-
| B1C8 || Mode
|-
| B1C9 - B1CA || Offset
|-
| B1CB || Base (High byte)
|-
| B1CC - B1CE || Jump instruction
|-
| B1CF - B1D6 || Pixel masks
|-
| B1D7 || Flash time 2
|-
| B1D8 || Flash time 1
|-
| B1D9 - B1E9 || Colour table 2
|-
| B1EA - B1FA || Colour table 1
|-
| B1FB || Table select flag
|-
| B1FC || Flash count
|-
| B1FD || Colour time
|-
| B1FE - B206 || Event block
|-
| B207 || Bits/pixel negated
|}
== Scanned pages ==
13
edits