ULA

ULA.txt

2:4460129be79e
2011-12-04 Paul Boddie Changed the program architecture to involve an external screen update loop requesting pixel values from a ULA object which manages its own internal state, maintaining a pixel buffer for decoded memory content.
     1 Hardware Scrolling
     2 ------------------
     3 
     4 On the standard ULA, &FE02 and &FE03 map to a 9 significant bits address with
     5 the least significant 5 bits being zero, thus limiting the scrolling
     6 resolution to 64 bytes. An enhanced ULA could support a resolution of 2 bytes
     7 using the same layout of these addresses.
     8 
     9 |--&FE02--------------| |--&FE03--------------|
    10 XX XX 14 13 12 11 10 09 08 07 06 XX XX XX XX XX
    11 
    12    XX 14 13 12 11 10 09 08 07 06 05 04 03 02 01 XX
    13 
    14 In practice, a resolution of 8 bytes is more useful, since the mapping of
    15 screen memory to pixel locations is character oriented. A change in 8 bytes
    16 would permit a scrolling resolution of 2 pixels in MODE 2, 4 pixels in MODE 1
    17 and 5, and 8 pixels in MODE 0, 3 and 6. This resolution is actually observed
    18 on the BBC Micro (see 18.11.2 in the BBC Microcomputer Advanced User Guide).
    19 
    20 Palette Definition
    21 ------------------
    22 
    23 Since all memory accesses go via the ULA, an enhanced ULA could employ more
    24 specific addresses than &FE*X to perform enhanced functions. For example, the
    25 palette control is done using &FE*8-F and merely involves selecting predefined
    26 colours, whereas an enhanced ULA could support the redefinition of all 16
    27 colours using specific ranges such as &FE18-F (colours 0 to 7) and &FE28-F
    28 (colours 8 to 15), where a single byte might provide 8 bits per pixel colour
    29 specifications similar to those used on the Archimedes.
    30 
    31 Hardware Sprites
    32 ----------------
    33 
    34 An enhanced ULA might provide hardware sprites, but this would be done in an
    35 way that is incompatible with the standard ULA, since no &FE*X locations are
    36 available for allocation. In a special ULA mode, one might allocate a pair of
    37 locations (for example, &FE20 and &FE21) as a pair of registers referencing a
    38 region of memory from which a sprite might be found and potentially copied
    39 into internal RAM, with other locations (for example, &FE22 and &FE23)
    40 providing the size of the region.
    41 
    42 Enhanced Graphics
    43 -----------------
    44 
    45 Screen modes with different screen memory mappings, higher resolutions and
    46 larger colour depths might be possible, but this would in most cases involve
    47 the allocation of more screen memory, and the ULA would probably then be
    48 obliged to page in such memory for the CPU to be able to sensibly access it
    49 all. Merely changing the memory mappings in order to have Archimedes-style
    50 row-oriented screen addresses (instead of character-oriented addresses) could
    51 be done for the existing modes, but this might not be sufficiently beneficial,
    52 especially since accessing regions of the screen would involve incrementing
    53 pointers by amounts that are inconvenient on an 8-bit CPU.
    54 
    55 Enhanced Sound
    56 --------------
    57 
    58 The standard ULA reserves &FE*6 for sound generation and cassette
    59 input/output, thus making it impossible to support multiple channels within
    60 the given framework. The BBC Micro ULA employs &FE40-&FE4F for sound control,
    61 and an enhanced ULA could adopt this interface.
    62 
    63 Waveform Upload
    64 ---------------
    65 
    66 As with a hardware sprite function, waveforms could be uploaded or referenced
    67 using locations as registers referencing memory regions.
    68 
    69 BBC ULA Compatibility
    70 ---------------------
    71 
    72 Although some new ULA functions could be defined in a way that is also
    73 compatible with the BBC Micro, the BBC ULA is itself incompatible with the
    74 Electron ULA: &FE00-7 is reserved for the video controller in the BBC memory
    75 map, but controls various functions specific to the 6845 video controller;
    76 &FE08-F is reserved for the serial controller. It therefore becomes possible
    77 to disregard compatibility where compatibility is already disregarded for a
    78 particular area of functionality.
    79 
    80 &FE20-F maps to video ULA functionality on the BBC Micro which provides
    81 control over the palette (using address &FE21, compared to &FE07-F on the
    82 Electron) and other system-specific functions. Since the location usage is
    83 generally incompatible, this region could be reused for other purposes.