Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

No Format
LORES1 map
128 normal lores (32 foreign + 96 ascii)
128 bold lores (same order as normal)
128 tiny lores (same order as normal)
64  symbol lores (10 lores are still free)
 
HIRES1 map
96 characters for OZ window (ascii, icons...)

 


In order to spare the 32K RAM of the original z88, the RES0 size vary if the machine is expanded or not.

FontUnexpandedExpanded
Lores0256 bytes, 32 UGD characters512 bytes, 64 UGD characters
Hires0512 bytes, 64 pixels width map2K bytes, 256 pixels width map
SBF8 rows of 256 bytes (2K)8 rows of 256 bytes (2K)

On an unexpanded Z88 Hires0 may actually overlap Lores0. If Map=Yes and Map size in Panel is set to more than 64 (up to 96), UGD characters may be overwritten by map information if PipeDream is run. 

...

It is a 2K file consisting of 8 lines of 256 bytes. In a line, each character position is stored on 2 bytes with its attributes. When the Blink builts builds the 640 rows it only reads the 216 first bytes. So up to 108 characters are stored by line. The 40 bytes remaining are used to store windows status and information (see below). The format of these two bytes is like this: 

...

In the SBF, the 40 bytes free at the end of each line are used by OZ to store windows and cursor informations. As OZ uses absolute addresses, those data are defined according theyre their address. Each line contains the relative window properties (1-8) and the main data are stored in the last line.

No Format
SBF structure
Row 1 : 108 chars ($7800-$78D7) + Window 1 properties ($78D8-$78E6) + 25 bytes free ($78E7-$78FF)
Row 2 : 108 chars ($7900-$79D7) + Window 2 properties ($79D8-$79E6) + 25 bytes free ($79E7-$79FF)
Row 3 : 108 chars ($7A00-$7AD7) + Window 23 properties ($7AD8-$7AE6) + 25 bytes free ($7AE7-$7AFF)
Row 4 : 108 chars ($7B00-$7BD7) + Window 24 properties ($7BD8-$7BE6) + 25 bytes free ($7BE7-$7BFF)
Row 5 : 108 chars ($7C00-$7CD7) + Window 25 properties ($7CD8-$7CE6) + 25 bytes free ($7CE7-$7CFF)
Row 6 : 108 chars ($7D00-$7DD7) + Window 26 properties ($7DD8-$7DE6) + 25 bytes free ($7DE7-$7DFF)
Row 7 : 108 chars ($7E00-$7ED7) + Window 27 properties ($7ED8-$7EE6) + 25 bytes free ($7EE7-$7EFF)
Row 8 : 108 chars ($7F00-$7FD7) + Window 28 properties ($7FD8-$7FE6) + Main screen data ($7FE7-$79FF)

Main screen data are :
$7FE7 2 bytes : Active window frame
$7FE9 1 byte  : SOH sequence length (0 if none)
$7FEC x bytes : SOH buffer

Example with a sequence defining a user lores character : 1,138,'=',..,...
$7FE9 10 the length
$7FEC '=' the command
$7FED user defined character number
$7FEE user defined character data (8 raws)

...

No Format
Window properties frame structure 
IX-01 Y up left
IX-02 X up left
IY-03 Y down right
IY-04 X down right
IY-05 Left margin
IY-06 Right margin
IY-07 Y cursor address
IY-08 X cursor address
IY-09 cursor attributes
IY-10 always 0
IY-11 flags low
IY-12 open flags
IY-13 flags hi
   b0-b1 JutificationJustification (0 normal, 1 right, 2 left, 3 centered)
   b6 Set to update cursor
   b7 Cursor mode (set=ON)
IY-14 flags 2 (1 initialization bit used)

...


Uses of the Screen Registers

...

Screen file address are read by OS_Sci with A=file reason and B=0, result is in BHL. The Lores0 and Hires0 can be moved by the user (often used in the Ranger software). For more details about the Screen registers consult Blink registers manipulations chapter.

 


Full Graphic Screen

It is possible to have a full graphic array of 640x64. It requires only HIRES0. A total of 640 HIRES0 characters are needed. The SBF is filled with all of those HIRES0 characters (80 characters by row). Accessing the screen matrix is done by changing the HIRES0 settings directly in the RAM.