1.1 --- a/ULA.txt Sat Sep 19 23:46:01 2015 +0200
1.2 +++ b/ULA.txt Wed Sep 30 01:47:16 2015 +0200
1.3 @@ -347,8 +347,8 @@
1.4 CPU clock if the line goes low, when the CPU is attempting to access the lower
1.5 region of memory.
1.6
1.7 -Hardware Scrolling
1.8 -------------------
1.9 +Hardware Scrolling (and Enhancement)
1.10 +------------------------------------
1.11
1.12 On the standard ULA, &FE02 and &FE03 map to a 9 significant bits address with
1.13 the least significant 5 bits being zero, thus limiting the scrolling
1.14 @@ -374,6 +374,39 @@
1.15 trivial change). Another pitfall is the complication that might be introduced
1.16 to software writing bitmaps of character height to the screen.
1.17
1.18 +Enhancement: The Missing MODE 4
1.19 +-------------------------------
1.20 +
1.21 +The Electron inherits its screen mode selection from the BBC Micro, where MODE
1.22 +3 is a text version of MODE 0, and where MODE 6 is a text version of MODE 4.
1.23 +Neither MODE 3 nor MODE 6 is a genuine character-based text mode like MODE 7,
1.24 +however, and they are merely implemented by skipping two scanlines in every
1.25 +ten after the eight required to produce a character line. Thus, such modes
1.26 +provide a 24-row display.
1.27 +
1.28 +In principle, nothing prevents this "text mode" effect being applied to other
1.29 +modes. The 20-column modes are not well-suited to displaying text, which
1.30 +leaves MODE 1 which, unlike MODEs 3 and 6, can display 4 colours rather than
1.31 +2. Although the need for a non-monochrome 40-column text mode is addressed by
1.32 +MODE 7 on the BBC Micro, the Electron lacks such a mode.
1.33 +
1.34 +If the 4-colour, 24-row variant of MODE 1 were to be provided, logically it
1.35 +would occupy MODE 4 instead of the current MODE 4:
1.36 +
1.37 + Screen mode Size (kilobytes) Colours Rows Resolution
1.38 + ----------- ---------------- ------- ---- ----------
1.39 + 0 20 2 32 640x256
1.40 + 1 20 4 32 320x256
1.41 + 2 20 16 32 160x256
1.42 + 3 16 2 24 640x256
1.43 + 4 (new) 16 4 24 320x256
1.44 + 4 (old) 10 2 32 320x256
1.45 + 5 10 4 32 160x256
1.46 + 6 8 2 24 320x256
1.47 +
1.48 +Thus, for increasing mode numbers, the size of each mode would be the same or
1.49 +less than the preceding mode.
1.50 +
1.51 Enhancement: 2MHz RAM Access
1.52 ----------------------------
1.53
1.54 @@ -606,6 +639,22 @@
1.55 at the appropriate time. Throughput/bandwidth considerations might impose
1.56 restrictions on the practical length of such a list, however.
1.57
1.58 +Enhancement: Display Synchronisation Interrupts
1.59 +-----------------------------------------------
1.60 +
1.61 +When completing each scanline of the display, the ULA could trigger an
1.62 +interrupt. Since this might impact system performance substantially, the
1.63 +feature would probably need to be configurable, and it might be sufficient to
1.64 +have an interrupt only after a certain number of display lines instead.
1.65 +Permitting the CPU to take action after eight lines would allow palette
1.66 +switching and other effects to occur on a character row basis.
1.67 +
1.68 +The ULA provides an interrupt at the end of the display period, presumably so
1.69 +that software can schedule updates to the screen, avoid flickering or tearing,
1.70 +and so on. However, some applications might benefit from an interrupt at, or
1.71 +just before, the start of the display period so that palette modifications or
1.72 +similar effects could be scheduled.
1.73 +
1.74 Enhancement: Palette-Free Modes
1.75 -------------------------------
1.76