# HG changeset patch # User Paul Boddie # Date 1443570436 -7200 # Node ID 2fb743173c10f204fe719fb6969af9bd06846c7c # Parent 0249c8ecb57ed230c924e5691a8026cf89532e63 Added a textual MODE 1 enhancement plus remarks about display interrupts. diff -r 0249c8ecb57e -r 2fb743173c10 ULA.txt --- a/ULA.txt Sat Sep 19 23:46:01 2015 +0200 +++ b/ULA.txt Wed Sep 30 01:47:16 2015 +0200 @@ -347,8 +347,8 @@ CPU clock if the line goes low, when the CPU is attempting to access the lower region of memory. -Hardware Scrolling ------------------- +Hardware Scrolling (and Enhancement) +------------------------------------ On the standard ULA, &FE02 and &FE03 map to a 9 significant bits address with the least significant 5 bits being zero, thus limiting the scrolling @@ -374,6 +374,39 @@ trivial change). Another pitfall is the complication that might be introduced to software writing bitmaps of character height to the screen. +Enhancement: The Missing MODE 4 +------------------------------- + +The Electron inherits its screen mode selection from the BBC Micro, where MODE +3 is a text version of MODE 0, and where MODE 6 is a text version of MODE 4. +Neither MODE 3 nor MODE 6 is a genuine character-based text mode like MODE 7, +however, and they are merely implemented by skipping two scanlines in every +ten after the eight required to produce a character line. Thus, such modes +provide a 24-row display. + +In principle, nothing prevents this "text mode" effect being applied to other +modes. The 20-column modes are not well-suited to displaying text, which +leaves MODE 1 which, unlike MODEs 3 and 6, can display 4 colours rather than +2. Although the need for a non-monochrome 40-column text mode is addressed by +MODE 7 on the BBC Micro, the Electron lacks such a mode. + +If the 4-colour, 24-row variant of MODE 1 were to be provided, logically it +would occupy MODE 4 instead of the current MODE 4: + + Screen mode Size (kilobytes) Colours Rows Resolution + ----------- ---------------- ------- ---- ---------- + 0 20 2 32 640x256 + 1 20 4 32 320x256 + 2 20 16 32 160x256 + 3 16 2 24 640x256 + 4 (new) 16 4 24 320x256 + 4 (old) 10 2 32 320x256 + 5 10 4 32 160x256 + 6 8 2 24 320x256 + +Thus, for increasing mode numbers, the size of each mode would be the same or +less than the preceding mode. + Enhancement: 2MHz RAM Access ---------------------------- @@ -606,6 +639,22 @@ at the appropriate time. Throughput/bandwidth considerations might impose restrictions on the practical length of such a list, however. +Enhancement: Display Synchronisation Interrupts +----------------------------------------------- + +When completing each scanline of the display, the ULA could trigger an +interrupt. Since this might impact system performance substantially, the +feature would probably need to be configurable, and it might be sufficient to +have an interrupt only after a certain number of display lines instead. +Permitting the CPU to take action after eight lines would allow palette +switching and other effects to occur on a character row basis. + +The ULA provides an interrupt at the end of the display period, presumably so +that software can schedule updates to the screen, avoid flickering or tearing, +and so on. However, some applications might benefit from an interrupt at, or +just before, the start of the display period so that palette modifications or +similar effects could be scheduled. + Enhancement: Palette-Free Modes -------------------------------