MODE 7

From BeebWiki
Jump to: navigation, search
Screwball (MRM Software, 1984)
Space Invaders (Acornsoft, 1982)
Teletext test page

MODE 7 is a medium-resolution screen MODE, introduced on the BBC Micro Model A and supported by the entire BBC series including the Archimedes and RISC OS systems. It provides a 40 × 25 Teletext character display for terminal applications, such as Teletext receivers and viewdata. It also uses one-eighth of the memory of MODE 6.

The behaviour of Teletext is different from the bitmapped MODEs; the SAA 5050 chip is driven by 'ASCII' (-variant) bytes stored directly in memory. The text colour is changed and graphics are enabled line-by-line, using control codes that occupy a character cell. Several aspects of the display are governed by the SAA 5050; interlace is forced on, and text rows must be 20 scanlines deep as the chip contains its own line counter.

As the philosophy is different to the bitmapped MODEs, the built-in firmware does not support the Teletext features. Graphics functions (all PLOT commands, CLG, GCOL, cursor coupling, the graphics origin and graphics window) have no visible effect; furthermore the COLOUR statement and VDU 19 do not work in MODE 7.

The Teletext colours and graphics are enabled by user programs putting control codes on the screen themselves; however it is still all done through the VDU routines (PRINT, VDU, or the OSWRCH call). Acorn have successfully encouraged programs to use the standard API so that future Acorn products will be compatible. OSWRCH takes its own control codes of course, and translates three of the printable ASCII characters to their Teletext equivalents; this is why graphics codes must have bit 7 set even though the SAA 5050 is a 7-bit device.

The screen of MODE 7 is shifted one character to the right compared to MODE 6; this is a feature of the SAA 5050, and the Video ULA accommodates it with a matching shift of the cursor. When using coloured backgrounds the display can be better centred with VDU 23;2,51;0;0;0.

Although 24 bytes of display memory are off screen at any one time, these are not available to programs. If used unofficially they are prone to corruption, unless the program guarantees that no hardware scrolling will occur. When hardware scrolling moves the start of display memory, the mapped area will extend right up to &7FFF and wrap around to &7C00.

Due to the high display quality and tiny memory footprint MODE 7 has proved popular on the BBC Micro. It is the mode of choice for all memory-intensive programs that do not require graphics display. It is also used for information screens in some games before the gameplay starts.

The Electron has no Teletext hardware and so the MOS substitutes MODE 7 with MODE 6, but provides no Teletext emulation. RISC OS does offer full Teletext emulation with coarser character outlines, using one of the colour bitmap MODEs.

MODE 7
Type Teletext
Resolution Text 40 × 25 characters
Graphics 78 × 75 (block graphics, user generated)
Character size 12 × 20 pixels, hardware defined (interpolated from 6 × 10 matrix)
Pixel aspect 1:1 (square)
Bits per pixel 1
Default palette n/a
Memory allocated 1024 bytes
on screen 1000 bytes
Address range Model B etc. &7C00..&7FFF
Configuration Video ULA control register &4B
Video ULA palette register file n/a
CRTC register file &3F &28 &33* &24 &1E &02
&19 &1B &93 &12 &72 &13
(from table in MOS 1.20 at &C49E..&C4A9)
* use &31 to centre the display better
Screen display MODEs

MODE 0 | MODE 1 | MODE 2 | MODE 3 | MODE 4 | MODE 5 | MODE 6 | MODE 7
MODE 8 | MODE 9 | MODE 10 | MODE 11 | MODE 12 | MODE 13 | MODE 14
MODE &60 | MODE &61 | MODE &62 | MODE &63 | MODE &64 | MODE &65 | MODE &66 | MODE &67
MODE &68 | MODE &69 | MODE &6A | MODE &6B | MODE &6C | MODE &6D | MODE &6E | MODE &6F
MODE | VDU 22

-- beardo 01:06, 8 November 2007 (UTC) Jgharston (talk) 22:43, 12 October 2016 (UTC)