BBC Micro Screen Formats - Part 2

by Francis G. Loch

Introduction
Following on from my previous article on BBC Micro screen formats, this article aims to provide information on the American BBC Micro screen modes, the 'mode 8' screen mode and shadow screens.

The American BBC Micro
A version of the BBC Micro was made available to the American market, although it did not enjoy much success due to the popularity of other platforms at the time. Because of the differences between British and American TV systems changes had to be made to the screen modes in order for the BBC Micro to work properly with American TVs and monitors.

The following table shows the American screen properties. For comparison the British screen properties are provided in brackets where there are differences.

Mode Graphics Width Graphics Height Text Columns Text Rows Depth No. of Colours Memory Used
0 640 200 (256) 80 25 (32) 1 2 16 kB (20 kB)
1 320 200 (256) 40 25 (32) 2 4 16 kB (20 kB)
2 160 200 (256) 20 25 (32) 4 16 16 kB (20 kB)
3 - - 80 22 (25) 1 2 16 kB
4 320 200 (256) 40 25 (32) 1 2 8 kB (10 kB)
5 160 200 (256) 20 25 (32) 2 4 8 kB (10 kB)
6 - - 40 22 (25) 1 2 8 kB
7 - - 40 20 (25) - 8 1 kB

The main differences are the reduction in screen height and, in some cases, reduced memory consumption. The screen refresh rate was also changed from 50 Hz to 60 Hz.

Mode 8
The BBC Micro allows you to directly program the video ULA (uncommitted logic array) providing you with the facility of creating your own screen modes.

The following program (taken from the Advanced User Guide for the BBC Microcomputer) sets up a 'mode 8' screen and displays a small demonstration of the new mode. Note that due to the nature of this program some emulators may have problems with it and give unexpected results. It has been tested to work under BeebEm.

10 REM CREATE 'MODE 8'
20 REM NOTE: NO WINDOWING ALLOWED
30 REM
40 REM NOTE: POKING VDU VARIABLES
50 REM IS GENERALLY ILL ADVISED.
60 MODE 5:REM BASIC MODE
70 REM CONFIGURE VIDEO ULA FOR 10 COLUMN, 16 CHARACTER
80 *FX 154,224
90 ?&360=&F:REM COLOUR MASK
100 ?&361=1:REM PIXELS PER BYTE—1
110 ?&34F=&20:REM BYTES PER CHARACTER (4 wide x 8 high)
120 ?&363=&55:REM GRAPHICS RIGHT MASK
130 ?&362=&AA:REM GRAPHICS LEFT MASK
140 ?&30A=9:REM NO. OF CHARS PER LINE
150 VDU 20
160 REM DEMO
170 MOVE 0,0:DRAW 640,512:DRAW 1279,0
180 PRINT TAB(1,2);
190 A$=”***HelloThere***”
200 COLOUR 129
210 FOR A%=1 TO 16
220 IF A%=9 THEN PRINT TAB(1,8);
230 COLOUR A%-1
240 PRINT MID$(A$,A%,1);
250 NEXT A%
260 PRINT

Running this program should provide you with the following screen:

The properties of this screen mode are as follows:

Mode Graphics Width Graphics Height Text Columns Text Rows Depth No. of Colours Memory Used
8 80 256 10 32 4 16 10 kB

As you can see the properties are similar to a mode 2 screen, but with half the horizontal resolution and hence half the memory consumption. This results in a 10 kB screen mode with 16 colours (i.e. 8 normal and 8 flashing) which is useful if a program requires more memory than would be possible using a 20 kB screen, but requires more colour than standard 10 kB modes would allow. It also allows 16 colour graphics modes on the BBC Micro model A which only came with 16 kB of RAM as standard.

Shadow Screens
Later models of the BBC Micro such as the model B+ and Master series have what are called shadow screens. In the case of a normal screen the screen memory is stored in an area that is shared between the screen and programs. The memory for a shadow screen is stored in an area specially reserved for this purpose. Shadow screens share the same properties as their normal screen counterparts and are numbered from 128 to 135 (i.e. mode 128 is the shadow screen equivalent of mode 0, mode 129 the equivalent of mode 1, etc.).

There are a number of advantages to using shadow screens. By utilising shadow screens rather than normal screens more memory is made available for program use. Shadow screens are also useful for creating smooth animation effects by switching between normal and shadow screens, a technique normally referred to as double buffering.

It is also possible to create a 2 colour high resolution 640x512 screen mode using normal and shadow screens. This is achieved by having all the even lines of the image stored in a normal screen (mode 0) and all of the odd lines stored in a shadow screen (mode 128). The screen is then swapped at each vertical blank or screen refresh cycle creating an interlace effect which doubles the effective vertical screen resolution.

That's All For Now
In part 3 of this series I will be taking a closer look at mode 7 (teletext) screens.

If anyone has any questions or comments regarding this article then please feel free to e-mail me.



© RIYAN Productions