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.