# HG changeset patch # User Paul Boddie # Date 1361473480 -3600 # Node ID 36e18a580b52dbb0b93154b3fa2ff9e8debc1c90 # Parent b2dc981a266abca04b279326f416a1b29ee15242 Added enhancement clarifications to various headings along with a cross-reference between palette blanking and display suspend functionality. diff -r b2dc981a266a -r 36e18a580b52 ULA.txt --- a/ULA.txt Sun Jan 06 22:44:41 2013 +0100 +++ b/ULA.txt Thu Feb 21 20:04:40 2013 +0100 @@ -221,8 +221,8 @@ trivial change). Another pitfall is the complication that might be introduced to software writing bitmaps of character height to the screen. -Region Blanking ---------------- +Enhancement: Region Blanking +---------------------------- The problem of permitting character-oriented blitting in programs whilst scrolling the screen by sub-character amounts could be mitigated by permitting @@ -259,8 +259,12 @@ Thus, in this case, region blanking would impose a 250 line display with the bottom 6 lines blank. -Screen Height Adjustment ------------------------- +See the description of the display suspend enhancement for a more efficient +way of blanking lines whilst allowing the CPU to perform useful work during +the blanking period. + +Enhancement: Screen Height Adjustment +------------------------------------- The height of the screen could be configurable in order to reduce screen memory consumption. This is not quite done in MODE 3 and 6 since the start of @@ -274,6 +278,14 @@ 320 1 240 40 640 &5A80 -> &5A00 320 2 240 80 1280 &3500 +Screen Mode Selection +--------------------- + +Bits 3, 4 and 5 of address &FE*7 control the selected screen mode. For a wider +range of modes, the other bits of &FE*7 (related to sound, cassette +input/output and the Caps Lock LED) would need to be reassigned and bit 0 +potentially being made available for use. + Palette Definition ------------------ @@ -368,8 +380,8 @@ combined with other palette data in dedicated memory locations corresponding to the palette registers. -Palette Definition Lists ------------------------- +Enhancement: Palette Definition Lists +------------------------------------- It can be useful to redefine the palette in order to change the colours available for a particular region of the screen, particularly in modes where @@ -387,8 +399,8 @@ at the appropriate time. Throughput/bandwidth considerations might impose restrictions on the practical length of such a list, however. -Palette-Free Modes ------------------- +Enhancement: Palette-Free Modes +------------------------------- Palette-free modes might be defined where bit values directly correspond to the red, green and blue channels, although this would mostly make sense only @@ -396,8 +408,8 @@ modes would require more memory than MODE 2 if they were to have an acceptable resolution. -Display Suspend ---------------- +Enhancement: Display Suspend +---------------------------- Especially when writing to the screen memory, it could be beneficial to be able to suspend the ULA's access to the memory, instead producing blank values @@ -410,8 +422,8 @@ that hardware to reduce the load on the system CPU which was responsible for producing the video output. -Hardware Sprites ----------------- +Enhancement: Hardware Sprites +----------------------------- An enhanced ULA might provide hardware sprites, but this would be done in an way that is incompatible with the standard ULA, since no &FE*X locations are @@ -433,8 +445,8 @@ bandwidth is not already fully utilised, this would result in a degradation of performance. -Additional Screen Mode Configurations -------------------------------------- +Enhancement: Additional Screen Mode Configurations +-------------------------------------------------- Alternative screen mode configurations could be supported. The ULA has to produce 640 pixel values across the screen, with pixel doubling or quadrupling @@ -452,7 +464,7 @@ columns is to be supported, compromises must be made such as the introduction of blank pixels either between characters (such as occurs between rows in MODE 3 and 6) or at the end of a scanline (such as occurs at the end of the frame -in MODE 3 and 6). Consider the following configuration: +in MODE 3 and 6). Consider the following configuration: Screen width Columns Scaling Depth Bytes Blank ------------ ------- ------- ----- ------ ----- @@ -463,8 +475,8 @@ generated either at the start or end (or split between the start and end) of each scanline. -Character Attributes --------------------- +Enhancement: Character Attributes +--------------------------------- The BBC Micro MODE 7 employs something resembling character attributes to support teletext displays, but depends on circuitry providing a character @@ -534,8 +546,8 @@ 208 26 x3 26 26 256 &62C0 -> &6200 208 26 x3 26 13 16 &6460 -> &6400 -MODE 7 Emulation using Character Attributes -------------------------------------------- +Enhancement: MODE 7 Emulation using Character Attributes +-------------------------------------------------------- If the scheme of applying attributes to character regions were employed to emulate MODE 7, in conjunction with the MODE 6 display technique, the @@ -551,8 +563,8 @@ at least make a limited 40-column multicolour mode available as a substitute for MODE 7. -Enhanced Graphics and Mode Layouts ----------------------------------- +Enhancement: High Resolution Graphics and Mode Layouts +------------------------------------------------------ Screen modes with different screen memory mappings, higher resolutions and larger colour depths might be possible, but this would in most cases involve @@ -564,8 +576,8 @@ especially since accessing regions of the screen would involve incrementing pointers by amounts that are inconvenient on an 8-bit CPU. -Genlock Support ---------------- +Enhancement: Genlock Support +---------------------------- The ULA generates a video signal in conjunction with circuitry producing the output features necessary for the correct display of the screen image. @@ -574,11 +586,12 @@ if the ULA were made to be responsive to such external signals, resetting its address generators upon receiving synchronisation events. -Enhanced Sound --------------- +Enhancement: Improved Sound +--------------------------- -The standard ULA reserves &FE*6 for sound generation and cassette -input/output, thus making it impossible to support multiple channels within +The standard ULA reserves &FE*6 for sound generation and cassette input/output +(with bits 1 and 2 of &FE*7 being used to select either sound generation or +cassette I/O), thus making it impossible to support multiple channels within the given framework. The BBC Micro ULA employs &FE40-&FE4F for sound control, and an enhanced ULA could adopt this interface. @@ -588,14 +601,14 @@ See: http://en.wikipedia.org/wiki/Texas_Instruments_SN76489 -Waveform Upload ---------------- +Enhancement: Waveform Upload +---------------------------- As with a hardware sprite function, waveforms could be uploaded or referenced using locations as registers referencing memory regions. -Sound Input/Output ------------------- +Enhancement: Sound Input/Output +------------------------------- Since the ULA already controls audio input/output for cassette-based data, it would have been interesting to entertain the idea of sampling and output of @@ -605,8 +618,8 @@ See: http://bbc.nvg.org/doc/A%20Hardware%20Guide%20for%20the%20BBC%20Microcomputer/bbc_hw_03.htm#3.11 -BBC ULA Compatibility ---------------------- +Enhancement: BBC ULA Compatibility +---------------------------------- Although some new ULA functions could be defined in a way that is also compatible with the BBC Micro, the BBC ULA is itself incompatible with the @@ -621,8 +634,8 @@ Electron) and other system-specific functions. Since the location usage is generally incompatible, this region could be reused for other purposes. -Increased RAM, ULA and CPU Performance --------------------------------------- +Enhancement: Increased RAM, ULA and CPU Performance +--------------------------------------------------- More modern implementations of the hardware might feature faster RAM coupled with an increased ULA clock frequency in order to increase the bandwidth