Table 1.0

TEXT Mode

CD

Description

~

When you boot up the Oric for the first time, the screen you will see is TEXT mode.

TEXT mode displays an invisible grid. There are 40 elements (40 Columns) across the grid and 28 elements (28 Rows) down the grid. Each Element is 6 pixels across by 8 pixels down. Elements are called Characters or attributes but could just as well be called Sprites, since both are fundamentally the same.

The TEXT screen is memory mapped which means that it appears within memory between locations 48000 (#BB80) and 49119 (#BFDF). In BASIC the top line is always used as the status line, although as far as the Hardware goes, can be used in the same way as the rest of the screen.

Attributes define the screen colour, Flashing, Double height characters and display modes.

Characters contain the actual bit-map character, a Letter or Graphic as defined by the user or operating system.

All characters are redefinable (the bitmap can be changed) but all attributes cannot.

Each character or attribute has a number code associated to it and is used to refer to it. The set of numbers run from 0 to 255. Numbers 32 through to 127 fall under a coding standard, called ASCII (American Standard Code 2).

The rest are machine specific and whilst compatibility is kept up between the ASCII standard and the purpose of an element, preference is taken to the machines capabilities.

The whole group of numbers/ characters are called a character set or CHARSET.

The Attribute subset of the Character set is shown in Table 1.0 to the left. These consist of 32 attributes for controls to do with the display.

The codes that fall between 32 and 127 are Character codes. On Boot up of the Oric system, these represent the standard Character set. In addition to these, an Alternate character set may be displayed by preceding the character with a suitable attribute.

This attribute is shown in Table 1.0 as Alternate or Standard.

All attribute placed on a specific line will change the rest of that Element (TEXT) Line.

With the exception of Codes 24 through 31, an attribute will not effect any subsequent lines below.

So, to this end, a code 11 will generate double height after it together with the alternate character set. Double Height codes must be placed on two consecutive rows in order for any character to be successfully displayed as double height. This also applies to the character itself.

0

Black Ink (Characters)

1

Red Ink (Characters)

2

Green Ink (Characters)

3

Yellow Ink (Characters)

4

Blue Ink (Characters)

5

Magenta Ink (Characters)

6

Cyan Ink (Characters)

7

White Ink (Characters)

8

Standard Character Set

9

Alternate Character Set

10

Standard Double Height

11

Alternate Double Height

12

Standard Flashing

13

Alternate Flashing

14

Standard Double height Flashing

15

Alternate Double height Flashing

16

Black Paper (Background)

17

Red Paper (Background)

18

Green Paper (Background)

19

Yellow Paper (Background)

20

Blue Paper (Background)

21

Magenta Paper (Background)

22

Cyan Paper (Background)

23

White Paper (Background)

24

Switch to TEXT Mode 60 Hz

25

Switch to TEXT Mode 60 Hz

26

Switch to TEXT Mode 50 Hz

27

Switch to TEXT Mode 50 Hz

28

Switch to HIRES Mode 60 Hz

29

Switch to HIRES Mode 60 Hz

30

Switch to HIRES Mode 50 Hz

31

Switch to HIRES Mode 50 Hz

 

A subsequent character on the same line may also be made to Flash on and off repeatedly by using the Flashing Attribute (12 to 15). Use code 8, 9, 10 or 11 to switch the flashing off again.

Unfortunately, the Flash rate is fixed unlike other Micro's and cannot be changed.

Codes 24 to 31 are used for switching between HIRES and TEXT. The BASIC command HIRES actually sets up the screen using these attributes although helped along by the ULA!

Mixing HIRES and TEXT is detailed on the INLAY page.

CD

See

CD

See

CD

See

Codes 128 to 255 mirror codes 0 to 127 but are the inverse equivalent of there counterparts. INVERSE simply means taking 7 and subtracting from it the Background colour (Paper) whilst doing the same for the Foreground colour (Ink).

So, if a line is using Black paper and Red ink and a character code 65 (Capital A) is PLOTted as 193(128+65), then it will appear as a Cyan character (7-1=6) on a white background (7-7=0).

In ORIC BASIC, you can only PLOT these codes since the cursor will overwrite any inversing if the PRINT@ statement is used.

Table 2.0 shows the rest of the standard Character set. Note that Code 32 is a SPACE whilst code 126 appears as a dithered filled block and 127 as a solid Block.

The Alternate character set by default is a crude form of Graphics character set composed of groups of 3*3 pixels.

All characters are redefinable. This means that the character shape can be changed completely. This allows characters to not only be shaped suitable to the application but if grouped with other characters, can form a larger image like a sprite or Graphic.

Each character has a unique address in memory that only changes between HIRES and TEXT to compensate for the difference is size between each mode.

TEXT characters are held between locations 46080 and 47999 or #B400 and #BB7F as is more conventionally used (Hexadecimal notation).

Each character uses up 8 bytes of memory. Only the lower 6 bits of a byte are used to hold the Characters bit-map.

Since Attributes are not addressed in the same way and do not access the character set memory, locations 46080 to 46335 (#B400 to #B4FF) are not used. This also applies to inversed characters whose addresses would lye between 47104 and 48127 (#B800 to #BBFF). Instead, the latter memory is used for the Alternate character set which lye's between 47104 and 47999 (#B800 to #BB7F).

Note the reduction in memory for the alternate character set. This is because a conflict exists between alternate character set memory and the TEXT screen. One can still use the missing characters but they will corrupt the start of the TEXT screen (Unless a HIRES Inlay is used... Did this in the game ZIPNZAP).

As with the Attributes in the standard set, the attribute area of the Alternate character set is also spare (47104 to 47359 or #B800 to#B8FF).

To get the actual address of a specific character code is eased by using this formula..

Character Address = 46080+8*Character Code

Remember to do the multiplication before the addition though!

Example Time!!

Finally, since a character can be plotted any number of times on the TEXT screen, Full screen scrolling can be achieved by filling the screen with a particular character then changing (Scrolling) the definition of that character.

e.g.

10 FOR L=48000 TO 49119
20 POKE L,65
30 NEXT L

40 FOR L=46080+8*65 TO 46087+8*65
50 B=(PEEK(L)AND1)*32
60 POKE L, (PEEK(L)/2)OR B
70 NEXT L

80 A$=KEY$
90 IF A$="" THEN 40

This example will full screen scroll the letter A until a key is pressed.

32



64

@

96

Ó

33

!

65

A

97

a

34

"

66

B

98

b

35

#

67

C

99

c

36

$

68

D

100

d

37

%

69

E

101

e

38

&

70

F

102

f

39

'

71

G

103

g

40

(

72

H

104

h

41

)

73

I

105

i

42

*

74

J

106

j

43

+

75

K

107

k

44

,

76

L

108

l

45

-

77

M

109

m

46

.

78

N

110

n

47

/

79

O

111

o

48

0

80

P

112

p

49

1

81

Q

113

q

50

2

82

R

114

r

51

3

83

S

115

s

52

4

84

T

116

t

53

5

85

U

117

u

54

6

86

V

118

v

55

7

87

W

119

w

56

8

88

X

120

x

57

9

89

Y

121

y

58

:

90

Z

122

z

59

;

91

[

123

{

60

<

92

\

124

|

61

=

93

]

125

}

62

>

94

^

126



63

?

95

127



 

Have Fun!