-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathMode7.txt
70 lines (58 loc) · 2.98 KB
/
Mode7.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
MODE 7 support in Brandy BASIC V/VI
===================================
Mode 7 teletext charactes use 16x20 character cells, this allows for a
decent rendering of mosaic graphics, especially separated graphics.
Direct screen memory access is implemented, the address can be obtained by
doing SYS "Brandy_GetVideoDriver" TO ,,,,addr%
Usually this will return &7C00 but will return &FFFF7C00 if &7C00 is in
BASIC workspace. It will always be a 32-bit address.
Some RISC OS 5 extensions are also supported:
(source: http://beebwiki.mdfs.net/VDU_23)
VDU 23,18,2,flags,0,0,0,0,0,0 - Set Teletext reveal state
bit 0 - if set, any concealed text will be displayed. If cleared, concealed
text is concealed.
Setting or clearing this will cause an immediate refresh of the display.
VDU 23,18,3,enable,0,0,0,0,0,0 - Set Teletext black enable
enable = 0: Control codes &80 and &90 do nothing (default)
enable = 1: Control code &80 selects alphanumeric black,
control code &90 selects graphics black.
More strictly, this code toggle is an extended features toggle, which include
Alpha Black (&80), Graphics Black (&90) and Alternative Character Set (&9B),
and also corrects the Hold "bug" in the SAA5050 Teletext chip.
VDU23,18,4,pri,alt,0,0,0,0,0 - Select Teletext character set
The values are as per the SAA505x family of chips. This is extended in
Matrix Brandy by ORing the value with 128 to substitute the solid block
with the Euro symbol. pri is the Primary character set that is normally
displayed, alt is the Alternative Character Set selected with &9B
(if enabled using VDU23,18,3,1|)
Two new OSWORD calls are available, one to read the character definition
of a teletext character, another to change a character with a new definition.
These OSWORD calls are specific to Matrix Brandy and Richard Russell's BBCSDL
with whom these extensions were developed in parallel.
OSWORD &8B (139) - Read a Teletext character definition.
Requires a block size of 44.
block%?0 = 4
block%?1 = 44
block%?2 = Character code
block%?3 = Bank selecter, default 0
block%?4..43 - Returned data
OSWORD &8C (140) - Write a Teletext character definition to bank 0
Requires a block size of 44
block%?0 = 44
block%?1 unused
block%?2 = Character code
block%?3 unused
block%?4..43 = Character definition, in the same layout as &8B.
OSBYTE 20 will reset the definition back to default along with the regular
non-MODE7 font.
OSBYTE 25 has been extended, if X=16 then reset teletext font only.
The Alternative Character Set is implemented, it is toggled with teletext code
ESCAPE (&9B), and defaults to the US-ASCII set as implemented on the SAA5055.
The Alternative Character Set can be read and written to, use bank 0 and
set the high bit on the character code.
Note that the characters are shuffled, so the redefinitions are as follows:
Redefine &23, change &60 and &A3.
Redefine &5F, change &23 and &DF.
Redefine &60, change &5F and &E0.
This is also true for redefining &A3, &DF and &E0 in the alternative character
set bank.