1.1 --- a/ULA.txt Tue May 16 15:54:20 2023 +0200
1.2 +++ b/ULA.txt Wed May 17 15:26:15 2023 +0200
1.3 @@ -1483,6 +1483,39 @@
1.4 character values (repeatedly) and those to read the bitmap data to reproduce
1.5 the characters on screen.
1.6
1.7 +Enhancement: 40-Column Text Modes by Interleaving Screen and Bitmap Accesses
1.8 +----------------------------------------------------------------------------
1.9 +
1.10 +A simplified form of the above interleaved character/bitmap reading scheme.
1.11 +This was also suggested in a discussion here:
1.12 +
1.13 +https://stardot.org.uk/forums/viewtopic.php?p=393243#p393243
1.14 +
1.15 +The ULA could be run in high-bandwidth mode to fetch character codes from
1.16 +screen memory in one cycle and then to use the character code to look up a
1.17 +pixel row of a character bitmap, reading that bitmap slice in the following
1.18 +cycle. The bitmap would be converted to pixel values that would then be
1.19 +emitted over the subsequent two cycles concurrently with the preparation of
1.20 +the next character's pixels.
1.21 +
1.22 + 2MHz cycle: 0 1 2 3 4 5 ...
1.23 + Reads: C B C B C B ...
1.24 + Pixels: a b ...
1.25 +
1.26 +The memory access to bitmap data would be computed as follows, assuming the
1.27 +normal eight pixel height and single-byte encoding of character bitmaps:
1.28 +
1.29 + bitmap address = bitmap table base + (character code * 8) + index
1.30 +
1.31 +Each successive pixel row on the screen would expose the appropriate row in
1.32 +the character bitmap, with this index looping from 0 to 7 repeatedly as shown
1.33 +previously. Spacing between character lines could be introduced as already
1.34 +done in MODE 6.
1.35 +
1.36 +Character bitmap data would be stored in RAM, since this is the only possible
1.37 +source of data for the ULA as delivered. The use of ROM would require changes
1.38 +to the broader system architecture.
1.39 +
1.40 Enhancement: MODE 7 Emulation using Character Attributes
1.41 --------------------------------------------------------
1.42
1.43 @@ -1554,31 +1587,6 @@
1.44 MODE 7 support could be made available, potentially as a hardware option
1.45 separate from the ULA.
1.46
1.47 -Enhancement: 40-Column Text Modes by Interleaving Screen and Bitmap Accesses
1.48 -----------------------------------------------------------------------------
1.49 -
1.50 -Suggested here: https://stardot.org.uk/forums/viewtopic.php?p=393243#p393243
1.51 -
1.52 -The ULA could be run in high-bandwidth mode to fetch character codes from
1.53 -screen memory in one cycle and then to use the character code to look up a
1.54 -pixel row of a character bitmap, reading that bitmap slice in the following
1.55 -cycle. The bitmap would be converted to pixel values that would then be
1.56 -emitted over the subsequent two cycles concurrently with the preparation of
1.57 -the next character's pixels.
1.58 -
1.59 - 2MHz cycle: 0 1 2 3 4 5 ...
1.60 - Reads: C B C B C B ...
1.61 - Pixels: a b ...
1.62 -
1.63 -The memory access to bitmap data would be computed as follows, assuming the
1.64 -normal eight pixel height and single-byte encoding of character bitmaps:
1.65 -
1.66 - bitmap address = bitmap table base + (character code * 8) + bitmap row
1.67 -
1.68 -Each successive pixel row on the screen would expose the appropriate row in
1.69 -the character bitmap, with this "bitmap row" looping from 0 to 7 repeatedly.
1.70 -Spacing between character lines could be introduced as already done in MODE 6.
1.71 -
1.72 Enhancement: Compressed Character Data
1.73 --------------------------------------
1.74