The Sorcerer will recognize up to 65536 different memory locations. These locations are given numbers from 0000 to FFFF hexadecimal (0 to 65535 decimal). Each memory location will contain one of the 256 hexadecimal numbers 00 to FF (0 to 255 decimal). If the Z80 CPU is instructed to read an address that is not connected to any RAM or ROM, it will usually assume the data is FF.
Figure 9 shows the functions served by each block of addresses. Column A shows the 8K Sorcerer with an 8K ROM PAC (such as Standard BASIC) inserted; the diagram is not to scale. Column B is the same as column A, but redrawn to approximate scale.
Columns C and D, show alternative connfigurations. The lower portions show the addresses of internal RAM in the 16K and 32K Sorcerers, while the upper portions show the addresses of the 4K and 16K ROM PACs.
The unassigned addresses between the top of internal RAM and the bottom of the ROM PAC can be given to the S-100 Expansion Unit. If the ROM PAC is unplugged, its address space is also available to the S-100 unit.
The Monitor stack, consisting of the Monitor RAM and the stack proper, is shown at the top of the internal RAM, the position it usually takes at power-on or reset (see Relocating the Monitor Stack, for details). But, note that if a block of expansion memory is assigned immediately above internal RAM, the stack will go to the top of that block.
Example:
In the 16K Sorcerer at power-on or reset, the Monitor stack occupies addresses 3F50 to 3FFF. If 4K of memory (1000 Hex. addresses) is added to the Expansion Unit and assigned addresses 4000 through 4FFF, the Monitor stack will occupy 4F50 through 4FFF at power on. However, if the new memory is assigned to 5000 through 5FFF, the stack will remain 3F50 to 3FFF.
Every character (alphanumeric, graphic, or user-defined) is printed on the screen as an 8 x 8 array of dots. Each dot can be either ON (a white spot on the screen) or OFF (a dark spot). The exact shape of the character depends on which dots are tumed on, and which are turned off.
Each row of the character is stored in the Sorcerer's character generator, in a separate memory address, with each dot of the row stored as one bit of that address. A 0 bit means OFF, and a 1 bit means ON.
To write a character onto the Sorcerer's screen, put its ASCII number into the screen RAM. The exact address you use will determine where the character will appear on the screen. The ASCII number directs the Sorcerer to eight successive addresses in the RAM or ROM character generator. These addresses store the eight lines of the character's dot matrix.
Each text line on screen is 64 characters long (40 hexadecimal), and there are 30 lines in all (1E hexadecimal). The first address in screen RAM (F080) is for the upper left comer of the screen. The next address (F081) is for the second place on the first text line, and so on to the end of the line (F0BF). The pattern continues with the first place on the second line (F0C0) and so forth. The last address (F7FF) is for the lower right corner of the screen.