# HG changeset patch # User Paul Boddie # Date 1684329975 -7200 # Node ID 9a19c0cb0c45936397ce58ca4152a8371eb815e6 # Parent ab28336894bcdf1f8f1c9173dd8f61d72a7213d5 Moved the new section to be adjacent to a related section, adding some notes. diff -r ab28336894bc -r 9a19c0cb0c45 ULA.txt --- a/ULA.txt Tue May 16 15:54:20 2023 +0200 +++ b/ULA.txt Wed May 17 15:26:15 2023 +0200 @@ -1483,6 +1483,39 @@ character values (repeatedly) and those to read the bitmap data to reproduce the characters on screen. +Enhancement: 40-Column Text Modes by Interleaving Screen and Bitmap Accesses +---------------------------------------------------------------------------- + +A simplified form of the above interleaved character/bitmap reading scheme. +This was also suggested in a discussion here: + +https://stardot.org.uk/forums/viewtopic.php?p=393243#p393243 + +The ULA could be run in high-bandwidth mode to fetch character codes from +screen memory in one cycle and then to use the character code to look up a +pixel row of a character bitmap, reading that bitmap slice in the following +cycle. The bitmap would be converted to pixel values that would then be +emitted over the subsequent two cycles concurrently with the preparation of +the next character's pixels. + + 2MHz cycle: 0 1 2 3 4 5 ... + Reads: C B C B C B ... + Pixels: a b ... + +The memory access to bitmap data would be computed as follows, assuming the +normal eight pixel height and single-byte encoding of character bitmaps: + + bitmap address = bitmap table base + (character code * 8) + index + +Each successive pixel row on the screen would expose the appropriate row in +the character bitmap, with this index looping from 0 to 7 repeatedly as shown +previously. Spacing between character lines could be introduced as already +done in MODE 6. + +Character bitmap data would be stored in RAM, since this is the only possible +source of data for the ULA as delivered. The use of ROM would require changes +to the broader system architecture. + Enhancement: MODE 7 Emulation using Character Attributes -------------------------------------------------------- @@ -1554,31 +1587,6 @@ MODE 7 support could be made available, potentially as a hardware option separate from the ULA. -Enhancement: 40-Column Text Modes by Interleaving Screen and Bitmap Accesses ----------------------------------------------------------------------------- - -Suggested here: https://stardot.org.uk/forums/viewtopic.php?p=393243#p393243 - -The ULA could be run in high-bandwidth mode to fetch character codes from -screen memory in one cycle and then to use the character code to look up a -pixel row of a character bitmap, reading that bitmap slice in the following -cycle. The bitmap would be converted to pixel values that would then be -emitted over the subsequent two cycles concurrently with the preparation of -the next character's pixels. - - 2MHz cycle: 0 1 2 3 4 5 ... - Reads: C B C B C B ... - Pixels: a b ... - -The memory access to bitmap data would be computed as follows, assuming the -normal eight pixel height and single-byte encoding of character bitmaps: - - bitmap address = bitmap table base + (character code * 8) + bitmap row - -Each successive pixel row on the screen would expose the appropriate row in -the character bitmap, with this "bitmap row" looping from 0 to 7 repeatedly. -Spacing between character lines could be introduced as already done in MODE 6. - Enhancement: Compressed Character Data --------------------------------------