1.1 --- a/ULA.txt Sun Jan 06 22:44:41 2013 +0100
1.2 +++ b/ULA.txt Thu Feb 21 20:04:40 2013 +0100
1.3 @@ -221,8 +221,8 @@
1.4 trivial change). Another pitfall is the complication that might be introduced
1.5 to software writing bitmaps of character height to the screen.
1.6
1.7 -Region Blanking
1.8 ----------------
1.9 +Enhancement: Region Blanking
1.10 +----------------------------
1.11
1.12 The problem of permitting character-oriented blitting in programs whilst
1.13 scrolling the screen by sub-character amounts could be mitigated by permitting
1.14 @@ -259,8 +259,12 @@
1.15 Thus, in this case, region blanking would impose a 250 line display with the
1.16 bottom 6 lines blank.
1.17
1.18 -Screen Height Adjustment
1.19 -------------------------
1.20 +See the description of the display suspend enhancement for a more efficient
1.21 +way of blanking lines whilst allowing the CPU to perform useful work during
1.22 +the blanking period.
1.23 +
1.24 +Enhancement: Screen Height Adjustment
1.25 +-------------------------------------
1.26
1.27 The height of the screen could be configurable in order to reduce screen
1.28 memory consumption. This is not quite done in MODE 3 and 6 since the start of
1.29 @@ -274,6 +278,14 @@
1.30 320 1 240 40 640 &5A80 -> &5A00
1.31 320 2 240 80 1280 &3500
1.32
1.33 +Screen Mode Selection
1.34 +---------------------
1.35 +
1.36 +Bits 3, 4 and 5 of address &FE*7 control the selected screen mode. For a wider
1.37 +range of modes, the other bits of &FE*7 (related to sound, cassette
1.38 +input/output and the Caps Lock LED) would need to be reassigned and bit 0
1.39 +potentially being made available for use.
1.40 +
1.41 Palette Definition
1.42 ------------------
1.43
1.44 @@ -368,8 +380,8 @@
1.45 combined with other palette data in dedicated memory locations corresponding
1.46 to the palette registers.
1.47
1.48 -Palette Definition Lists
1.49 -------------------------
1.50 +Enhancement: Palette Definition Lists
1.51 +-------------------------------------
1.52
1.53 It can be useful to redefine the palette in order to change the colours
1.54 available for a particular region of the screen, particularly in modes where
1.55 @@ -387,8 +399,8 @@
1.56 at the appropriate time. Throughput/bandwidth considerations might impose
1.57 restrictions on the practical length of such a list, however.
1.58
1.59 -Palette-Free Modes
1.60 -------------------
1.61 +Enhancement: Palette-Free Modes
1.62 +-------------------------------
1.63
1.64 Palette-free modes might be defined where bit values directly correspond to
1.65 the red, green and blue channels, although this would mostly make sense only
1.66 @@ -396,8 +408,8 @@
1.67 modes would require more memory than MODE 2 if they were to have an acceptable
1.68 resolution.
1.69
1.70 -Display Suspend
1.71 ----------------
1.72 +Enhancement: Display Suspend
1.73 +----------------------------
1.74
1.75 Especially when writing to the screen memory, it could be beneficial to be
1.76 able to suspend the ULA's access to the memory, instead producing blank values
1.77 @@ -410,8 +422,8 @@
1.78 that hardware to reduce the load on the system CPU which was responsible for
1.79 producing the video output.
1.80
1.81 -Hardware Sprites
1.82 -----------------
1.83 +Enhancement: Hardware Sprites
1.84 +-----------------------------
1.85
1.86 An enhanced ULA might provide hardware sprites, but this would be done in an
1.87 way that is incompatible with the standard ULA, since no &FE*X locations are
1.88 @@ -433,8 +445,8 @@
1.89 bandwidth is not already fully utilised, this would result in a degradation of
1.90 performance.
1.91
1.92 -Additional Screen Mode Configurations
1.93 --------------------------------------
1.94 +Enhancement: Additional Screen Mode Configurations
1.95 +--------------------------------------------------
1.96
1.97 Alternative screen mode configurations could be supported. The ULA has to
1.98 produce 640 pixel values across the screen, with pixel doubling or quadrupling
1.99 @@ -452,7 +464,7 @@
1.100 columns is to be supported, compromises must be made such as the introduction
1.101 of blank pixels either between characters (such as occurs between rows in MODE
1.102 3 and 6) or at the end of a scanline (such as occurs at the end of the frame
1.103 -in MODE 3 and 6). Consider the following configuration:
1.104 +in MODE 3 and 6). Consider the following configuration:
1.105
1.106 Screen width Columns Scaling Depth Bytes Blank
1.107 ------------ ------- ------- ----- ------ -----
1.108 @@ -463,8 +475,8 @@
1.109 generated either at the start or end (or split between the start and end) of
1.110 each scanline.
1.111
1.112 -Character Attributes
1.113 ---------------------
1.114 +Enhancement: Character Attributes
1.115 +---------------------------------
1.116
1.117 The BBC Micro MODE 7 employs something resembling character attributes to
1.118 support teletext displays, but depends on circuitry providing a character
1.119 @@ -534,8 +546,8 @@
1.120 208 26 x3 26 26 256 &62C0 -> &6200
1.121 208 26 x3 26 13 16 &6460 -> &6400
1.122
1.123 -MODE 7 Emulation using Character Attributes
1.124 --------------------------------------------
1.125 +Enhancement: MODE 7 Emulation using Character Attributes
1.126 +--------------------------------------------------------
1.127
1.128 If the scheme of applying attributes to character regions were employed to
1.129 emulate MODE 7, in conjunction with the MODE 6 display technique, the
1.130 @@ -551,8 +563,8 @@
1.131 at least make a limited 40-column multicolour mode available as a substitute
1.132 for MODE 7.
1.133
1.134 -Enhanced Graphics and Mode Layouts
1.135 -----------------------------------
1.136 +Enhancement: High Resolution Graphics and Mode Layouts
1.137 +------------------------------------------------------
1.138
1.139 Screen modes with different screen memory mappings, higher resolutions and
1.140 larger colour depths might be possible, but this would in most cases involve
1.141 @@ -564,8 +576,8 @@
1.142 especially since accessing regions of the screen would involve incrementing
1.143 pointers by amounts that are inconvenient on an 8-bit CPU.
1.144
1.145 -Genlock Support
1.146 ----------------
1.147 +Enhancement: Genlock Support
1.148 +----------------------------
1.149
1.150 The ULA generates a video signal in conjunction with circuitry producing the
1.151 output features necessary for the correct display of the screen image.
1.152 @@ -574,11 +586,12 @@
1.153 if the ULA were made to be responsive to such external signals, resetting its
1.154 address generators upon receiving synchronisation events.
1.155
1.156 -Enhanced Sound
1.157 ---------------
1.158 +Enhancement: Improved Sound
1.159 +---------------------------
1.160
1.161 -The standard ULA reserves &FE*6 for sound generation and cassette
1.162 -input/output, thus making it impossible to support multiple channels within
1.163 +The standard ULA reserves &FE*6 for sound generation and cassette input/output
1.164 +(with bits 1 and 2 of &FE*7 being used to select either sound generation or
1.165 +cassette I/O), thus making it impossible to support multiple channels within
1.166 the given framework. The BBC Micro ULA employs &FE40-&FE4F for sound control,
1.167 and an enhanced ULA could adopt this interface.
1.168
1.169 @@ -588,14 +601,14 @@
1.170
1.171 See: http://en.wikipedia.org/wiki/Texas_Instruments_SN76489
1.172
1.173 -Waveform Upload
1.174 ----------------
1.175 +Enhancement: Waveform Upload
1.176 +----------------------------
1.177
1.178 As with a hardware sprite function, waveforms could be uploaded or referenced
1.179 using locations as registers referencing memory regions.
1.180
1.181 -Sound Input/Output
1.182 -------------------
1.183 +Enhancement: Sound Input/Output
1.184 +-------------------------------
1.185
1.186 Since the ULA already controls audio input/output for cassette-based data, it
1.187 would have been interesting to entertain the idea of sampling and output of
1.188 @@ -605,8 +618,8 @@
1.189
1.190 See: http://bbc.nvg.org/doc/A%20Hardware%20Guide%20for%20the%20BBC%20Microcomputer/bbc_hw_03.htm#3.11
1.191
1.192 -BBC ULA Compatibility
1.193 ----------------------
1.194 +Enhancement: BBC ULA Compatibility
1.195 +----------------------------------
1.196
1.197 Although some new ULA functions could be defined in a way that is also
1.198 compatible with the BBC Micro, the BBC ULA is itself incompatible with the
1.199 @@ -621,8 +634,8 @@
1.200 Electron) and other system-specific functions. Since the location usage is
1.201 generally incompatible, this region could be reused for other purposes.
1.202
1.203 -Increased RAM, ULA and CPU Performance
1.204 ---------------------------------------
1.205 +Enhancement: Increased RAM, ULA and CPU Performance
1.206 +---------------------------------------------------
1.207
1.208 More modern implementations of the hardware might feature faster RAM coupled
1.209 with an increased ULA clock frequency in order to increase the bandwidth