Home » Personal collection » Acorn hard disk » misc » misc3 » shipwren/PT3

shipwren/PT3

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Personal collection » Acorn hard disk » misc » misc3
Filename: shipwren/PT3
Read OK:
File size: 6ACF bytes
Load address: 0000
Exec address: 0000
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
Programming Technique
Part 3: Graphics - Screen Memory

Written by Dominic Ford

At the end of the last article, you could program graphics in colour using
the built in MOVE and DRAW commands in BASIC, and could program fast,
detailed graphics in black and white using user defined characters. But
there was a problem if we wanted graphics in both colour and detail, as
by both methods the production of such graphics would be incredibly slow.

There is a solution to this problem, which involves taking advantage of the
way in which the computer's video system operates. The colour of each pixel
on your monitor is determined the data sent to the monitor by your computer -
thats fairly obvious. But if you have drawn a very complex set of shapes on
the computer screen, perhaps using a BASIC program which took several hours
to calculate and draw the result you see on the screen, how does the 
computer remember the colour of every pixel on the screen, and know what
data to send to your monitor? The answer is simple: within your computer's
memory there is an area set aside to store the colour of every pixel on the
screen, and when the monitor requests the colour of a particular pixel, the
computer simply reads the colour of the pixel from this area of memory.
This area of memory is called "Screen Memory". It can be considered as a
sort of giant table, holding data for the colours of all of the pixels in
a huge matrix of memory locations.

But of what use is this to the programmer you might be wondering. The
answer is that when you use user defined characters, MOVE and DRAW commands,
or any other method of putting anything on the screen, the computer simply
alters a few values in this giant table. But the computer takes time to
process your MOVE and DRAW commands to work out which values in the table
to alter. If you could bypass this stage, and set the values in this giant
table yourself without using the computer's general purpose graphics
commands, you can get exactly the result that you want, and much faster
than you would achieve if you were doing the operation through the
computer's commands. These have to process the parameters which you give,
and then calculate where abouts in the giant table you want to alter,
before they can actually do any useful work. Thus a lot of computer time
is wasted in performing calculations, which can actually be skipped if the
programmer is careful.

There are two possible ways of achieving this idea, both of which are useful
in different situations:

1. Save screen memory to disc.

This idea is fairly simple to understand. You, as the programmer, write a
program to plot the artwork for your program onto the screen, taking
however many hours it may take to complete all of the calculations
required to plot the graphics. You run this program once on your computer,
so that your masterpiece is stored in the screen memory of your computer
(ie. is on the monitor of your computer). You than transfer the entire
contents of the screen memory on your computer to floppy disc.

Then, in the final program which you want the user to operate, you include
a command to load this data back from floppy disc into the screen memory
of their computer. In a matter of a couple of seconds, graphics which took
possible hours to calculate will appear on their screen. This is a
technique which I have used in several of my programs. The main menu of
Shipwrecked II: Jupiter 3, where you select Play, Instructions, Game
Complete or Cheat with the starfield backdrop was done in this way - the
screen took nearly an hour for my computer to calculate, but I was able
to make it appear in seconds on your screen. I should also mention the title
screen to Shipwreck with the animated sea, not to mention the endless EUG
title screens I have done in this way - the Christmas EUG 35 screen with
the swirly blue background (credited erroneously to Robert Sprowson) took
two whole days to plot!

In order to achieve this, you simply need to understand two BASIC commands:

*SAVE Filename nnnn mmmm
*LOAD Filename nnnn

These load and save areas of the computer's memory to floppy disc or cassette
with the filename givan in place of the work Filename, starting at memory
location nnnn, and continuing until memory location mmmm (where nnnn and mmmm
are both in hexidecimal - base 16). Don't worry if you don't entirely
understand this - it is not necessary to entirely understand the workings
of these commands, or of hexidecimal to use them to store and retrieve
screen memory. All you need to do is substitute nnnn and mmmm for the
addresses of the start and finish of screen memory. The location of these
within your computer varies depeding upon which graphics mode you are using
(which you selected using the MODE command - see previous tutorial if you
are unsure of what this is), but is always constant for any particular
mode. the values for the different modes are given below:

Mode            nnnn    mmmm   NOTES:
0               3000    7FFF
1               3000    7FFF   - nnnn and mmmm values given to the left are
2               3000    7FFF   all in hexidecimal. Therefore they can be
3               4000    7FFF   substituted directly into the *LOAD and *SAVE
4               5800    7FFF   commands with no conversion required.
5               5800    7FFF
6               6000    7FFF   - Values are not valid for the BBC model A in
7               7C00    7FFF   modes 4,5,6 or 7.

Examples:

Suppose you are in mode 2, and want to store the screen to a floppy. From
the table above, nnnn is 3000 and mmmm is 7FFF for mode 2. Therefore, to
save the screen under the filename "Screen", you would type:

*SAVE Screen 3000 7FFF

Now, if you want to restore the screen again, and put your graphics back
on the screen again, you would use *LOAD. Notice that this time only a
value for nnnn is required, and not for mmmm:

*LOAD Screen 3000

You can try this out now, if you switch on your Electron, and insert a work
disc into your floppy drive. If you use ADFS, you may need to use *MOUNT
to select the floppy disc, and be able to write to it. Now enter mode 2
by typing:

MODE 2

Now type some text on the screen which will represent the graphics which
you want to save. When you have finished, save the contents of screen memory
to floppy disk as shown above, by typing:

*SAVE Screen 3000 7FFF

When the disk drive has finished, clear the text off the screen by typing:

CLS

The text which you typed onto the screen has now been wiped from the
computer's memory, but should still be stored on the floppy disc. We can
show that this is so by typing:

*LOAD Screen 3000

Your text should now reappear on the screen. You can repeat this with any
kind of complex graphics on screen, and it will still work. The same can
be done in any other graphics mode, simply by changing the values of nnnn
and mmmm to those given in the table above. For example in mode 5 you
would use:

*SAVE Screen 5800 7FFF

followed by:

*LOAD Screen 5800 7FFF

There are, however, a few precautionary points which should be mentioned
about this technique of saving screen memory:

- As you probably realise, in four colour modes, the four colours you
can use can be changed from the default black, red, yellow and white by
using VDU 19 to change the palette. The colours in the palette are not
saved when this technique is used, and must be restored by repeating the
VDU 19 commands again. If you define the palette to, for example, black,
blue, cyan and white, and create a picture which looks good in this colour
scheme, you must remember that unless you define the palette to these four
colours before performing *LOAD to restore the picture, it may appear
rather odd when reloaded, as it will appear in black, red, yellow and
white - the default colour scheme.

- The exact reason why this happens is rather complicated, but if you allow
the cursor to go down off the bottom line of the screen, and allow the screen
to scroll up one line, this technique stops working until you perform a
MODE command, or clear the screen using CLS. Basically what happens is that
the computer does not physically move every line of text on the screen up
one line, but instead makes a note that every line in screen memory is stored
one line lower than it should be. When you reload from disk, this note is
lost, and the computer draws every line lower than it should be. Each time
that CLS or MODE is executed, screen memory is cleared and reinitiated, so
that every line is stored in memory where you would expect it to be. Simply
remember not to allow the screen to scroll between clearing it, and saving
the contents of screen memory to disc.

- The files created when you save the contents of screen memory to disk
are fairly large - so large, in fact, that you can often only fit around
15 such files onto each disk that you use (the exact number depends upon
what modes the images are in). Therefore this technique is not feasable
for a large number of images. Each screen in a game like Shipwrecked cannot
be stored in this way - if I had stored every screen of the game like this,
it would have required six floppy disks to store the data for the game!
This means that saved screens must be reserved for the purposes of title
screens only.

Earlier in the article, I mentioned several examples of screens which I have
done for EUG using saved screens using this technique. These included the
title screens for both Shipwrecked games, and also several EUG title
screens. You may have noticed that these were actually animated (see the
starfield in Jupiter 3 and the EUG 35 title). This was achieved by palette
switching as used in the previous article. If you look again at the
programming technique demonstration from this article (on EUG 36), and
select option 5, the same effect will appear on your screen. The same
principal was applied in both animated screens mentioned above - the only
difference is that in these title screens the pattern on screen which is
being palette switched is rather more complex. Shipwreck's title screen
(with the animated water scene) was also created in this way, except that
for this screen there was also a machine code program altering the contents
of screen memory as well, to enhance the effect.

So, we have a technique which allows us to store a small number of very
detailed screens on floppy, and recall then at very great speed. But what if
we want to use this method for a large number of screens? And what if we
want a situation like a game, where the user can move sprites on the screen
around. This can also be done by altering the values in screen memory
directly, but in a different way...

2. Editing screen memory

The basic idea is this: in any program, you only usually require a certain,
small number of little 'blocks' to make up a whole picture. In a word
processor, for example, you only need the letters of the alphabet to appear
on the screen. These letters are small blocks of graphics which appear on
your screen (called characters). Because only these 26 blocks are required,
the word processor does not need to store every letter as all of the pixels
which make it up (ie. as a bitmap), but just as a code for that particular
letter. When the word processor wants to display a letter on the screen, it
looks up the letter code, and then copies the graphic data for what that
letter looks like onto the screen. Therefore, the graphic data for what
colour all of the pixels should be for that particular letter (which might
take several bytes) need only be stored once, and that letter can be stored
in your script in just one byte, for the letter code. Thus, the memory
taken up by your script is reduced dramatically.

The same principal can be used in graphics. Look at two brick walls in
an arcade adventure such as Shipwrecked - can you see the difference
between them? If they are the same, surely you only need to store the
graphic data for a brick wall once, and then copy it onto the screen
whenever you want a brick wall. In Shipwrecked, for example, the graphic
data to describe what a brick wall looks like took 128 bytes. Yet every
time I wanted that brick wall (which was over a hundred times) I could
simply use one byte to say "Put a brick wall here!".

The easiest way to use this block idea, as you may already have realised,
is using user defined characters. You redefine the letters of the alphabet
as different pictures, and then use the standard BASIC PRINT command to
output these pictures to the screen, as and when they are required. But,
as we already realised in the last article, this only allows you to use
one colour in each character. Even so, this is a reasonable technique if
you don't mind the lack of colour. Many commercial games actually never
addressed this problem, and had graphics which lacked colour somewhat.
Even Dizzy (for those who have never heard of it, a great arcade adventure
of the 1980s, which caused quite a cult following at the time on the
Spectrum and C64, but never quite reached the Elk) did not have more than
one colour (other than black) per block. Different blocks were, however,
different colours - trees were green and the ground was red - but there
was never any overlap between the two colour areas.

There is, however, a way of creating an effect just like user defined
characters, but in full colour, and the principal is very similar to
that used before in saving screen memory. Basically, you design you small
block on the screen, using whatever technique you like to draw it, and then
save the small part of screen memory which contains your design. This time,
however, you will not save it to floppy disc, but to another area of memory.
You can then copy this block back to screen memory whenever and wherever you
want it. If you want it, say, in the fifth row down, and twelve characters
along, you can calculate where abouts this corresponds to in screen memory,
and copy the block to this location. As the block is stored in your
computer's RAM, as opposed to on floppy, this transfer can be done by
machine code at very great speed (taking only a small fraction of a second).
For those programmers who are not familiar with machine code, a module
is included with this tutorial allowing you to do this. The program code
for this module is actually taken directly from Shipwrecked.

If you are not familiar with machine code, then you can probably skip the next
section on how to directly access screen memory, as it is impossible
to achieve any speed by accessing screen memory directly in BASIC - your
program will crawl along incredibly slowly. You could still use such a
technique in preparing a screen which you intend to save to floppy using
the technique described before with *SAVE and *LOAD.

Firstly, it is important to know how screen memory is laid out in memory.
The exact position of each character within the memory of your computer
varies from one graphics mode to another, but the basic principals are the
same:

- The screen area is divided up into characters. These are blocks of eight 
  pixels by eight pixels, and are the same size as the rectangular block
  of space taken up by one letter when you print text to the screen. Screen
  memory is divided up into blocks, with each the characters being defined
  by one of these blocks.
- The screen is stored row by row, with the top row first and the bottom
  row last.
- Within each of these rows, characters are stored one by one, from left to
  right.
- In all modes, screen memory ends at &7FFF (ie. at the end of RAM)

Footnote: By convention, memory addresses are specified in hexidecimal. I
          use the standard Acorn '&' prefix to indicate hexidecimal values.
          Those used to dealing with PCs are any other computers may be used
          to the American convention of using a dollar prefix in its place.
          It should be noted that the Elk expects & and will not accept $.

Example:

Suppose I want to draw a blob in character square (6,7), in mode 1. What is 
the address of this square? (given that each character takes 16 bytes of
screen memory to define in mode 1 - we'll come to how to calculate this in
a minute).

Well - looking at the table earlier, screen memory starts at &3000 in mode 1.
We want to find the start of row 7 in screen memory. This row has 7 rows of
characters above it, and which will be stored before it. Each of these rows
consists of 40 characters, which take up 16 bytes each. Therefore the total
memory taken up by these rows is 7 * 40 * 16 = 4480 bytes. [Each character
is 16 bytes, each row consists of 40 of these characters, therefore we
multiply by 40, and as there are 7 of these complete rows, we multiply by
7 to get the value for seven of these rows]

Now we have that the starting address of row 7 is at:

&3000 + 4480 = &4180

Now that we have found where abouts in memory this row starts, we need to
locate character 6. This should be fairly easy - we know that characters are
stored from left to right, so just add on the memory required to store six
characters to the left of the one we want, i.e. 16 * 6 = 96 bytes [Six
characters, each taking 16 bytes to store].

Therefore the address of character (6,7) will be:

&4180 + 96 = &41E0

Answer: Character (6,7) is stored from &41E0 to &41EF

Just to check the answer is correct, type this simple loop:

10 MODE 1
20 FOR ad=&41E0 TO &41EF
30 ?ad=255
40 NEXT

And yes, a white splodge does appear in square (6,7).

This whole procedure can actually be refined down, and expressed as a simple
formula:

Address = Base + ( y * No. characters per line + x ) * Memory per character

Where: Address= The memory location of the start of the character you want.
       Base   = Start of screen memory in current graphics mode.
       (x,y)  = Co-ordinate of square you want to access (same as PRINT TAB)

Since the number of characters per line, the number of bytes per character,
and the base address of screen memory are all constant for any particular
graphics mode, the values for the graphics mode you are using can be
substituted into the equation in your program. For mode 1, for example, you
would use:

Address = &3000 + (40 * y + x) * 16

Before continuing, one note should be borne in mind. You may remember that
a while back I mentioned that when you type text which overflows off the
bottom of the screen, the computer makes a note that each line is stored
in memory one line lower than it should be, but does not actually move
anything around in screen memory. The same effect can cause problems with
direct access to screen memory as well. The simple rule for beginners is,
NEVER attempt to use direct screen memory access when there is even the
slightest possibility that the screen might have been allowed to scroll up
at all (e.g. after using INPUT to get input from the user - how do you
know that they didn't type so much that it went of the bottom of the screen?)
If you know what you are doing, this rule can be ignored, and high-speed
scrolling can be achieved as a result, but that is not for the beginner! I
can tell you from first hand experience, that creating scrolling in Jupiter
3 by this technique was a nightmare - especially when the operating system
calls you need to make to achieve this are completely different on the BBC
to the Elk, so you need to find out which platform you are operating on,
and then make the relavant calls for that platform!

Now that you can locate a the memory occupied by a character in screen
memory, you need to know how the bytes within this block are laid out, so that
you can have pixel by pixel control over your monitor screen. This is also
required if you are to be able to calculate the amount of memory taken up
by each character's definition in a particular mode.

The graphics modes can be divided into three categories: monochrome modes
(ie. two colours), four colour modes, and sixteen colour modes. All of the
Elk's modes fall into these three groupings. Which of these colours each
pixel of the screen is depends upon the status of a number of binary bits.
These have two states, 0 or 1. Now, in a monochrome mode, one bit is
sufficient to define the colour of one pixel (bits have two states, 0 or 1,
and the pixels have two states, colour 0 or colour 1). In a four colour mode,
on the other hand, one bit will not be sufficient, as four different states
are required. Two bits will be enough to store the colour of one pixel,
however:

Bit 1 state     Bit 2 state     Colour
  0               0               0
  0               1               1
  1               0               2
  1               1               3

Those familiar with binary will spot the pattern straight away - simply
convert the binary value of the two bits into decimal, and you have the
logical colour number. A very similar pattern applies to MODE 2 - the Elk's
16 colour mode. Each pixel requires 4 bits to store its colour (2^4=16).
Once again, the colour of the pixel is the logical colour whose number is
given when the four bits are put together to form a binary value:

Bit 1 state  Bit 2 state  Bit 3 state  Bit 4 state  Colour  Default
  0            0            0            0            0       BLK
  0            0            0            1            1       RED
  0            0            1            0            2       GRN
  0            0            1            1            3       YEL
  0            1            0            0            4       BLE
  0            1            0            1            5       MGT
  0            1            1            0            6       CYN
  0            1            1            1            7       WHT
  1            0            0            0            8     BLK/WHT
  1            0            0            1            9     RED/CYN
  1            0            1            0            10    GRN/MGT
  1            0            1            1            11    YEL/BLE
  1            1            0            0            12    BLE/YEL
  1            1            0            1            13    MGT/GRN
  1            1            1            0            14    CYN/RED
  1            1            1            1            15    WHT/BLK

[Default: Default setting of this logical colour when MODE 2 is first
entered]

So... the Electron has modes where the definition of the colour of a
certain pixel can take 1, 2 or 4 bits. As each byte of the electron's
memory consists of 8 seperate bits, this means that in monochrome modes
we can fit 8 pixels into each byte (8/1=8). In four colour modes (where
each pixel requires two bits) we can fit 4 pixels into each byte (8/2=4).
Finally in MODE 2 (the sixteen colour mode where each pixel requires 4
bits) we can fit two pixels into each byte. Let's now look at how each is
laid out in more depth:

MONOCHROME MODES:

These are laid out in the simplest way, as eight pixels fit into each byte.
The character, remember, consists of an 8 by 8 square of pixels. The data
is stored in the same way as user defined characters are defined using
VDU23. The first byte of the definition defines the top row of eight pixels;
the second defines the second row down, etc. Thus the entire character can
be defined in eight bytes, and this is the number of bytes of the Elk's
memory which is used by each character. Note - the most significant bit of
each byte defines the left-most pixel of the row, and the least significant
bit defines the right-most pixel (just as with VDU 23 definitions)

FOUR COLOUR MODES:

This time each byte can only hold four pixels. Once again, each byte holds
a number of pixels which are in a horizontal line. This time, as before,
the first eight bytes run down in a vertical line. This time, though, not
all of the pixels in the character are being defined, and only the left
most 4 pixels. The right-most four pixels are defined in a second downward
vertical sweep. Thus the total memory allocation for each character is
sixteen bytes. The layout is shown more clearly using a diagram. This
shows the eight by eight block of pixels in a character, and each has
the offset of the memory location where this pixel is stored from the
start of the character definition. Offsets are given in hexidecimal:

PIXEL-BY PIXEL LAYOUT    MEMORY FLOW

00008888                   0      8
11119999                   �      �
2222AAAA                   �      �
3333BBBB                   �      �
4444CCCC                   �      �
5555DDDD                   �      �
6666EEEE                  \ /    \ /
7777FFFF                   7      F

Each of these sixteen bytes, as already discussed, contains four pixel
definitions. But within the byte's eight bits, they are not laid out as
you might at first imagine. If we call the four pixels A, B, C and D (A is
left-most, D is right-most), the lay out is:

[MOST SIGNIFICANT]    A1 B1 C1 D1 A0 B0 C0 D0    [LEAST SIGNIFICANT]

Where: A1: Most significant bit of A's definition  � Two bit definition
       A0: Least significant bit of A's definition �  of pixel A.

The same pattern holds for B, C and D.

Example:

Let's suppose we want to set the colour of the left-most pixel in a byte
of a four colour mode to be colour 3. We would use:

?address=(?address AND &77) OR &88

Explanation - The (?address AND &77) bit clears the two bits defining the
pixel that we want to change. The OR &88 then sets the two bits that we
want set. This way we ensure that when we are going way from colour 1 to
colour 2, the least significant bit of the definition is cleared as well
as the most significant bit being set.

It is important to notice the pattern in these bits - each pixel requires
a two bit definition, but these two bits are not next to each other in
the byte - instead all of the high-bytes are stored together, and all of
the low-bytes are stored together.

SIXTEEN COLOUR MODES

The pattern for sixteen colour modes is similar to that found in four
colour modes, except that each byte can only store two pixels (each
occupies four bits). As with previous cases, the pixels are stored
in a number of vertical sweeps starting at the left of the character,
and moving to the right. This time, though, four vertical sweeps are
required to cover the entire character, not two as with four colour
modes:

PIXEL-BY PIXEL LAYOUT    MEMORY FLOW

00880088                   0      8    10    18
11991199                   �      �     �     �
22AA22AA                   �      �     �     �
33BB33BB                   �      �     �     �
44CC44CC                   �      �     �     �
55DD55DD                   �      �     �     �
66EE66EE                  \ /    \ /   \ /   \ /
77FF77FF                   7      F    17    1F

NB: Offsets given in hexadecimal. Values in right half of left diagram
should have &10 added to them (only least significant character given)

The pattern of the layout of the pixel data in each of the bytes
is also similar to that for the four colour modes (the two pixels
are A and B, and each comprises of four bits 0-3, where 0 is least
significant and 3 is most significant).

[MOST SIGNIFICANT]    A3 B3 A2 B2 A1 B1 A0 B0    [LEAST SIGNIFICANT]

Notice that once again bits defining the pixels A and B are not
stored together, but those defining the least/most significant
bits are stored together.
00000000  50 72 6f 67 72 61 6d 6d  69 6e 67 20 54 65 63 68  |Programming Tech|
00000010  6e 69 71 75 65 0d 50 61  72 74 20 33 3a 20 47 72  |nique.Part 3: Gr|
00000020  61 70 68 69 63 73 20 2d  20 53 63 72 65 65 6e 20  |aphics - Screen |
00000030  4d 65 6d 6f 72 79 0d 0d  57 72 69 74 74 65 6e 20  |Memory..Written |
00000040  62 79 20 44 6f 6d 69 6e  69 63 20 46 6f 72 64 0d  |by Dominic Ford.|
00000050  0d 41 74 20 74 68 65 20  65 6e 64 20 6f 66 20 74  |.At the end of t|
00000060  68 65 20 6c 61 73 74 20  61 72 74 69 63 6c 65 2c  |he last article,|
00000070  20 79 6f 75 20 63 6f 75  6c 64 20 70 72 6f 67 72  | you could progr|
00000080  61 6d 20 67 72 61 70 68  69 63 73 20 69 6e 20 63  |am graphics in c|
00000090  6f 6c 6f 75 72 20 75 73  69 6e 67 0d 74 68 65 20  |olour using.the |
000000a0  62 75 69 6c 74 20 69 6e  20 4d 4f 56 45 20 61 6e  |built in MOVE an|
000000b0  64 20 44 52 41 57 20 63  6f 6d 6d 61 6e 64 73 20  |d DRAW commands |
000000c0  69 6e 20 42 41 53 49 43  2c 20 61 6e 64 20 63 6f  |in BASIC, and co|
000000d0  75 6c 64 20 70 72 6f 67  72 61 6d 20 66 61 73 74  |uld program fast|
000000e0  2c 0d 64 65 74 61 69 6c  65 64 20 67 72 61 70 68  |,.detailed graph|
000000f0  69 63 73 20 69 6e 20 62  6c 61 63 6b 20 61 6e 64  |ics in black and|
00000100  20 77 68 69 74 65 20 75  73 69 6e 67 20 75 73 65  | white using use|
00000110  72 20 64 65 66 69 6e 65  64 20 63 68 61 72 61 63  |r defined charac|
00000120  74 65 72 73 2e 20 42 75  74 0d 74 68 65 72 65 20  |ters. But.there |
00000130  77 61 73 20 61 20 70 72  6f 62 6c 65 6d 20 69 66  |was a problem if|
00000140  20 77 65 20 77 61 6e 74  65 64 20 67 72 61 70 68  | we wanted graph|
00000150  69 63 73 20 69 6e 20 62  6f 74 68 20 63 6f 6c 6f  |ics in both colo|
00000160  75 72 20 61 6e 64 20 64  65 74 61 69 6c 2c 20 61  |ur and detail, a|
00000170  73 0d 62 79 20 62 6f 74  68 20 6d 65 74 68 6f 64  |s.by both method|
00000180  73 20 74 68 65 20 70 72  6f 64 75 63 74 69 6f 6e  |s the production|
00000190  20 6f 66 20 73 75 63 68  20 67 72 61 70 68 69 63  | of such graphic|
000001a0  73 20 77 6f 75 6c 64 20  62 65 20 69 6e 63 72 65  |s would be incre|
000001b0  64 69 62 6c 79 20 73 6c  6f 77 2e 0d 0d 54 68 65  |dibly slow...The|
000001c0  72 65 20 69 73 20 61 20  73 6f 6c 75 74 69 6f 6e  |re is a solution|
000001d0  20 74 6f 20 74 68 69 73  20 70 72 6f 62 6c 65 6d  | to this problem|
000001e0  2c 20 77 68 69 63 68 20  69 6e 76 6f 6c 76 65 73  |, which involves|
000001f0  20 74 61 6b 69 6e 67 20  61 64 76 61 6e 74 61 67  | taking advantag|
00000200  65 20 6f 66 20 74 68 65  0d 77 61 79 20 69 6e 20  |e of the.way in |
00000210  77 68 69 63 68 20 74 68  65 20 63 6f 6d 70 75 74  |which the comput|
00000220  65 72 27 73 20 76 69 64  65 6f 20 73 79 73 74 65  |er's video syste|
00000230  6d 20 6f 70 65 72 61 74  65 73 2e 20 54 68 65 20  |m operates. The |
00000240  63 6f 6c 6f 75 72 20 6f  66 20 65 61 63 68 20 70  |colour of each p|
00000250  69 78 65 6c 0d 6f 6e 20  79 6f 75 72 20 6d 6f 6e  |ixel.on your mon|
00000260  69 74 6f 72 20 69 73 20  64 65 74 65 72 6d 69 6e  |itor is determin|
00000270  65 64 20 74 68 65 20 64  61 74 61 20 73 65 6e 74  |ed the data sent|
00000280  20 74 6f 20 74 68 65 20  6d 6f 6e 69 74 6f 72 20  | to the monitor |
00000290  62 79 20 79 6f 75 72 20  63 6f 6d 70 75 74 65 72  |by your computer|
000002a0  20 2d 0d 74 68 61 74 73  20 66 61 69 72 6c 79 20  | -.thats fairly |
000002b0  6f 62 76 69 6f 75 73 2e  20 42 75 74 20 69 66 20  |obvious. But if |
000002c0  79 6f 75 20 68 61 76 65  20 64 72 61 77 6e 20 61  |you have drawn a|
000002d0  20 76 65 72 79 20 63 6f  6d 70 6c 65 78 20 73 65  | very complex se|
000002e0  74 20 6f 66 20 73 68 61  70 65 73 20 6f 6e 0d 74  |t of shapes on.t|
000002f0  68 65 20 63 6f 6d 70 75  74 65 72 20 73 63 72 65  |he computer scre|
00000300  65 6e 2c 20 70 65 72 68  61 70 73 20 75 73 69 6e  |en, perhaps usin|
00000310  67 20 61 20 42 41 53 49  43 20 70 72 6f 67 72 61  |g a BASIC progra|
00000320  6d 20 77 68 69 63 68 20  74 6f 6f 6b 20 73 65 76  |m which took sev|
00000330  65 72 61 6c 20 68 6f 75  72 73 0d 74 6f 20 63 61  |eral hours.to ca|
00000340  6c 63 75 6c 61 74 65 20  61 6e 64 20 64 72 61 77  |lculate and draw|
00000350  20 74 68 65 20 72 65 73  75 6c 74 20 79 6f 75 20  | the result you |
00000360  73 65 65 20 6f 6e 20 74  68 65 20 73 63 72 65 65  |see on the scree|
00000370  6e 2c 20 68 6f 77 20 64  6f 65 73 20 74 68 65 20  |n, how does the |
00000380  0d 63 6f 6d 70 75 74 65  72 20 72 65 6d 65 6d 62  |.computer rememb|
00000390  65 72 20 74 68 65 20 63  6f 6c 6f 75 72 20 6f 66  |er the colour of|
000003a0  20 65 76 65 72 79 20 70  69 78 65 6c 20 6f 6e 20  | every pixel on |
000003b0  74 68 65 20 73 63 72 65  65 6e 2c 20 61 6e 64 20  |the screen, and |
000003c0  6b 6e 6f 77 20 77 68 61  74 0d 64 61 74 61 20 74  |know what.data t|
000003d0  6f 20 73 65 6e 64 20 74  6f 20 79 6f 75 72 20 6d  |o send to your m|
000003e0  6f 6e 69 74 6f 72 3f 20  54 68 65 20 61 6e 73 77  |onitor? The answ|
000003f0  65 72 20 69 73 20 73 69  6d 70 6c 65 3a 20 77 69  |er is simple: wi|
00000400  74 68 69 6e 20 79 6f 75  72 20 63 6f 6d 70 75 74  |thin your comput|
00000410  65 72 27 73 0d 6d 65 6d  6f 72 79 20 74 68 65 72  |er's.memory ther|
00000420  65 20 69 73 20 61 6e 20  61 72 65 61 20 73 65 74  |e is an area set|
00000430  20 61 73 69 64 65 20 74  6f 20 73 74 6f 72 65 20  | aside to store |
00000440  74 68 65 20 63 6f 6c 6f  75 72 20 6f 66 20 65 76  |the colour of ev|
00000450  65 72 79 20 70 69 78 65  6c 20 6f 6e 20 74 68 65  |ery pixel on the|
00000460  0d 73 63 72 65 65 6e 2c  20 61 6e 64 20 77 68 65  |.screen, and whe|
00000470  6e 20 74 68 65 20 6d 6f  6e 69 74 6f 72 20 72 65  |n the monitor re|
00000480  71 75 65 73 74 73 20 74  68 65 20 63 6f 6c 6f 75  |quests the colou|
00000490  72 20 6f 66 20 61 20 70  61 72 74 69 63 75 6c 61  |r of a particula|
000004a0  72 20 70 69 78 65 6c 2c  20 74 68 65 0d 63 6f 6d  |r pixel, the.com|
000004b0  70 75 74 65 72 20 73 69  6d 70 6c 79 20 72 65 61  |puter simply rea|
000004c0  64 73 20 74 68 65 20 63  6f 6c 6f 75 72 20 6f 66  |ds the colour of|
000004d0  20 74 68 65 20 70 69 78  65 6c 20 66 72 6f 6d 20  | the pixel from |
000004e0  74 68 69 73 20 61 72 65  61 20 6f 66 20 6d 65 6d  |this area of mem|
000004f0  6f 72 79 2e 0d 54 68 69  73 20 61 72 65 61 20 6f  |ory..This area o|
00000500  66 20 6d 65 6d 6f 72 79  20 69 73 20 63 61 6c 6c  |f memory is call|
00000510  65 64 20 22 53 63 72 65  65 6e 20 4d 65 6d 6f 72  |ed "Screen Memor|
00000520  79 22 2e 20 49 74 20 63  61 6e 20 62 65 20 63 6f  |y". It can be co|
00000530  6e 73 69 64 65 72 65 64  20 61 73 20 61 0d 73 6f  |nsidered as a.so|
00000540  72 74 20 6f 66 20 67 69  61 6e 74 20 74 61 62 6c  |rt of giant tabl|
00000550  65 2c 20 68 6f 6c 64 69  6e 67 20 64 61 74 61 20  |e, holding data |
00000560  66 6f 72 20 74 68 65 20  63 6f 6c 6f 75 72 73 20  |for the colours |
00000570  6f 66 20 61 6c 6c 20 6f  66 20 74 68 65 20 70 69  |of all of the pi|
00000580  78 65 6c 73 20 69 6e 0d  61 20 68 75 67 65 20 6d  |xels in.a huge m|
00000590  61 74 72 69 78 20 6f 66  20 6d 65 6d 6f 72 79 20  |atrix of memory |
000005a0  6c 6f 63 61 74 69 6f 6e  73 2e 0d 0d 42 75 74 20  |locations...But |
000005b0  6f 66 20 77 68 61 74 20  75 73 65 20 69 73 20 74  |of what use is t|
000005c0  68 69 73 20 74 6f 20 74  68 65 20 70 72 6f 67 72  |his to the progr|
000005d0  61 6d 6d 65 72 20 79 6f  75 20 6d 69 67 68 74 20  |ammer you might |
000005e0  62 65 20 77 6f 6e 64 65  72 69 6e 67 2e 20 54 68  |be wondering. Th|
000005f0  65 0d 61 6e 73 77 65 72  20 69 73 20 74 68 61 74  |e.answer is that|
00000600  20 77 68 65 6e 20 79 6f  75 20 75 73 65 20 75 73  | when you use us|
00000610  65 72 20 64 65 66 69 6e  65 64 20 63 68 61 72 61  |er defined chara|
00000620  63 74 65 72 73 2c 20 4d  4f 56 45 20 61 6e 64 20  |cters, MOVE and |
00000630  44 52 41 57 20 63 6f 6d  6d 61 6e 64 73 2c 0d 6f  |DRAW commands,.o|
00000640  72 20 61 6e 79 20 6f 74  68 65 72 20 6d 65 74 68  |r any other meth|
00000650  6f 64 20 6f 66 20 70 75  74 74 69 6e 67 20 61 6e  |od of putting an|
00000660  79 74 68 69 6e 67 20 6f  6e 20 74 68 65 20 73 63  |ything on the sc|
00000670  72 65 65 6e 2c 20 74 68  65 20 63 6f 6d 70 75 74  |reen, the comput|
00000680  65 72 20 73 69 6d 70 6c  79 0d 61 6c 74 65 72 73  |er simply.alters|
00000690  20 61 20 66 65 77 20 76  61 6c 75 65 73 20 69 6e  | a few values in|
000006a0  20 74 68 69 73 20 67 69  61 6e 74 20 74 61 62 6c  | this giant tabl|
000006b0  65 2e 20 42 75 74 20 74  68 65 20 63 6f 6d 70 75  |e. But the compu|
000006c0  74 65 72 20 74 61 6b 65  73 20 74 69 6d 65 20 74  |ter takes time t|
000006d0  6f 0d 70 72 6f 63 65 73  73 20 79 6f 75 72 20 4d  |o.process your M|
000006e0  4f 56 45 20 61 6e 64 20  44 52 41 57 20 63 6f 6d  |OVE and DRAW com|
000006f0  6d 61 6e 64 73 20 74 6f  20 77 6f 72 6b 20 6f 75  |mands to work ou|
00000700  74 20 77 68 69 63 68 20  76 61 6c 75 65 73 20 69  |t which values i|
00000710  6e 20 74 68 65 20 74 61  62 6c 65 0d 74 6f 20 61  |n the table.to a|
00000720  6c 74 65 72 2e 20 49 66  20 79 6f 75 20 63 6f 75  |lter. If you cou|
00000730  6c 64 20 62 79 70 61 73  73 20 74 68 69 73 20 73  |ld bypass this s|
00000740  74 61 67 65 2c 20 61 6e  64 20 73 65 74 20 74 68  |tage, and set th|
00000750  65 20 76 61 6c 75 65 73  20 69 6e 20 74 68 69 73  |e values in this|
00000760  20 67 69 61 6e 74 0d 74  61 62 6c 65 20 79 6f 75  | giant.table you|
00000770  72 73 65 6c 66 20 77 69  74 68 6f 75 74 20 75 73  |rself without us|
00000780  69 6e 67 20 74 68 65 20  63 6f 6d 70 75 74 65 72  |ing the computer|
00000790  27 73 20 67 65 6e 65 72  61 6c 20 70 75 72 70 6f  |'s general purpo|
000007a0  73 65 20 67 72 61 70 68  69 63 73 0d 63 6f 6d 6d  |se graphics.comm|
000007b0  61 6e 64 73 2c 20 79 6f  75 20 63 61 6e 20 67 65  |ands, you can ge|
000007c0  74 20 65 78 61 63 74 6c  79 20 74 68 65 20 72 65  |t exactly the re|
000007d0  73 75 6c 74 20 74 68 61  74 20 79 6f 75 20 77 61  |sult that you wa|
000007e0  6e 74 2c 20 61 6e 64 20  6d 75 63 68 20 66 61 73  |nt, and much fas|
000007f0  74 65 72 0d 74 68 61 6e  20 79 6f 75 20 77 6f 75  |ter.than you wou|
00000800  6c 64 20 61 63 68 69 65  76 65 20 69 66 20 79 6f  |ld achieve if yo|
00000810  75 20 77 65 72 65 20 64  6f 69 6e 67 20 74 68 65  |u were doing the|
00000820  20 6f 70 65 72 61 74 69  6f 6e 20 74 68 72 6f 75  | operation throu|
00000830  67 68 20 74 68 65 0d 63  6f 6d 70 75 74 65 72 27  |gh the.computer'|
00000840  73 20 63 6f 6d 6d 61 6e  64 73 2e 20 54 68 65 73  |s commands. Thes|
00000850  65 20 68 61 76 65 20 74  6f 20 70 72 6f 63 65 73  |e have to proces|
00000860  73 20 74 68 65 20 70 61  72 61 6d 65 74 65 72 73  |s the parameters|
00000870  20 77 68 69 63 68 20 79  6f 75 20 67 69 76 65 2c  | which you give,|
00000880  0d 61 6e 64 20 74 68 65  6e 20 63 61 6c 63 75 6c  |.and then calcul|
00000890  61 74 65 20 77 68 65 72  65 20 61 62 6f 75 74 73  |ate where abouts|
000008a0  20 69 6e 20 74 68 65 20  67 69 61 6e 74 20 74 61  | in the giant ta|
000008b0  62 6c 65 20 79 6f 75 20  77 61 6e 74 20 74 6f 20  |ble you want to |
000008c0  61 6c 74 65 72 2c 0d 62  65 66 6f 72 65 20 74 68  |alter,.before th|
000008d0  65 79 20 63 61 6e 20 61  63 74 75 61 6c 6c 79 20  |ey can actually |
000008e0  64 6f 20 61 6e 79 20 75  73 65 66 75 6c 20 77 6f  |do any useful wo|
000008f0  72 6b 2e 20 54 68 75 73  20 61 20 6c 6f 74 20 6f  |rk. Thus a lot o|
00000900  66 20 63 6f 6d 70 75 74  65 72 20 74 69 6d 65 0d  |f computer time.|
00000910  69 73 20 77 61 73 74 65  64 20 69 6e 20 70 65 72  |is wasted in per|
00000920  66 6f 72 6d 69 6e 67 20  63 61 6c 63 75 6c 61 74  |forming calculat|
00000930  69 6f 6e 73 2c 20 77 68  69 63 68 20 63 61 6e 20  |ions, which can |
00000940  61 63 74 75 61 6c 6c 79  20 62 65 20 73 6b 69 70  |actually be skip|
00000950  70 65 64 20 69 66 20 74  68 65 0d 70 72 6f 67 72  |ped if the.progr|
00000960  61 6d 6d 65 72 20 69 73  20 63 61 72 65 66 75 6c  |ammer is careful|
00000970  2e 0d 0d 54 68 65 72 65  20 61 72 65 20 74 77 6f  |...There are two|
00000980  20 70 6f 73 73 69 62 6c  65 20 77 61 79 73 20 6f  | possible ways o|
00000990  66 20 61 63 68 69 65 76  69 6e 67 20 74 68 69 73  |f achieving this|
000009a0  20 69 64 65 61 2c 20 62  6f 74 68 20 6f 66 20 77  | idea, both of w|
000009b0  68 69 63 68 20 61 72 65  20 75 73 65 66 75 6c 0d  |hich are useful.|
000009c0  69 6e 20 64 69 66 66 65  72 65 6e 74 20 73 69 74  |in different sit|
000009d0  75 61 74 69 6f 6e 73 3a  0d 0d 31 2e 20 53 61 76  |uations:..1. Sav|
000009e0  65 20 73 63 72 65 65 6e  20 6d 65 6d 6f 72 79 20  |e screen memory |
000009f0  74 6f 20 64 69 73 63 2e  0d 0d 54 68 69 73 20 69  |to disc...This i|
00000a00  64 65 61 20 69 73 20 66  61 69 72 6c 79 20 73 69  |dea is fairly si|
00000a10  6d 70 6c 65 20 74 6f 20  75 6e 64 65 72 73 74 61  |mple to understa|
00000a20  6e 64 2e 20 59 6f 75 2c  20 61 73 20 74 68 65 20  |nd. You, as the |
00000a30  70 72 6f 67 72 61 6d 6d  65 72 2c 20 77 72 69 74  |programmer, writ|
00000a40  65 20 61 0d 70 72 6f 67  72 61 6d 20 74 6f 20 70  |e a.program to p|
00000a50  6c 6f 74 20 74 68 65 20  61 72 74 77 6f 72 6b 20  |lot the artwork |
00000a60  66 6f 72 20 79 6f 75 72  20 70 72 6f 67 72 61 6d  |for your program|
00000a70  20 6f 6e 74 6f 20 74 68  65 20 73 63 72 65 65 6e  | onto the screen|
00000a80  2c 20 74 61 6b 69 6e 67  0d 68 6f 77 65 76 65 72  |, taking.however|
00000a90  20 6d 61 6e 79 20 68 6f  75 72 73 20 69 74 20 6d  | many hours it m|
00000aa0  61 79 20 74 61 6b 65 20  74 6f 20 63 6f 6d 70 6c  |ay take to compl|
00000ab0  65 74 65 20 61 6c 6c 20  6f 66 20 74 68 65 20 63  |ete all of the c|
00000ac0  61 6c 63 75 6c 61 74 69  6f 6e 73 0d 72 65 71 75  |alculations.requ|
00000ad0  69 72 65 64 20 74 6f 20  70 6c 6f 74 20 74 68 65  |ired to plot the|
00000ae0  20 67 72 61 70 68 69 63  73 2e 20 59 6f 75 20 72  | graphics. You r|
00000af0  75 6e 20 74 68 69 73 20  70 72 6f 67 72 61 6d 20  |un this program |
00000b00  6f 6e 63 65 20 6f 6e 20  79 6f 75 72 20 63 6f 6d  |once on your com|
00000b10  70 75 74 65 72 2c 0d 73  6f 20 74 68 61 74 20 79  |puter,.so that y|
00000b20  6f 75 72 20 6d 61 73 74  65 72 70 69 65 63 65 20  |our masterpiece |
00000b30  69 73 20 73 74 6f 72 65  64 20 69 6e 20 74 68 65  |is stored in the|
00000b40  20 73 63 72 65 65 6e 20  6d 65 6d 6f 72 79 20 6f  | screen memory o|
00000b50  66 20 79 6f 75 72 20 63  6f 6d 70 75 74 65 72 0d  |f your computer.|
00000b60  28 69 65 2e 20 69 73 20  6f 6e 20 74 68 65 20 6d  |(ie. is on the m|
00000b70  6f 6e 69 74 6f 72 20 6f  66 20 79 6f 75 72 20 63  |onitor of your c|
00000b80  6f 6d 70 75 74 65 72 29  2e 20 59 6f 75 20 74 68  |omputer). You th|
00000b90  61 6e 20 74 72 61 6e 73  66 65 72 20 74 68 65 20  |an transfer the |
00000ba0  65 6e 74 69 72 65 0d 63  6f 6e 74 65 6e 74 73 20  |entire.contents |
00000bb0  6f 66 20 74 68 65 20 73  63 72 65 65 6e 20 6d 65  |of the screen me|
00000bc0  6d 6f 72 79 20 6f 6e 20  79 6f 75 72 20 63 6f 6d  |mory on your com|
00000bd0  70 75 74 65 72 20 74 6f  20 66 6c 6f 70 70 79 20  |puter to floppy |
00000be0  64 69 73 63 2e 0d 0d 54  68 65 6e 2c 20 69 6e 20  |disc...Then, in |
00000bf0  74 68 65 20 66 69 6e 61  6c 20 70 72 6f 67 72 61  |the final progra|
00000c00  6d 20 77 68 69 63 68 20  79 6f 75 20 77 61 6e 74  |m which you want|
00000c10  20 74 68 65 20 75 73 65  72 20 74 6f 20 6f 70 65  | the user to ope|
00000c20  72 61 74 65 2c 20 79 6f  75 20 69 6e 63 6c 75 64  |rate, you includ|
00000c30  65 0d 61 20 63 6f 6d 6d  61 6e 64 20 74 6f 20 6c  |e.a command to l|
00000c40  6f 61 64 20 74 68 69 73  20 64 61 74 61 20 62 61  |oad this data ba|
00000c50  63 6b 20 66 72 6f 6d 20  66 6c 6f 70 70 79 20 64  |ck from floppy d|
00000c60  69 73 63 20 69 6e 74 6f  20 74 68 65 20 73 63 72  |isc into the scr|
00000c70  65 65 6e 20 6d 65 6d 6f  72 79 0d 6f 66 20 74 68  |een memory.of th|
00000c80  65 69 72 20 63 6f 6d 70  75 74 65 72 2e 20 49 6e  |eir computer. In|
00000c90  20 61 20 6d 61 74 74 65  72 20 6f 66 20 61 20 63  | a matter of a c|
00000ca0  6f 75 70 6c 65 20 6f 66  20 73 65 63 6f 6e 64 73  |ouple of seconds|
00000cb0  2c 20 67 72 61 70 68 69  63 73 20 77 68 69 63 68  |, graphics which|
00000cc0  20 74 6f 6f 6b 0d 70 6f  73 73 69 62 6c 65 20 68  | took.possible h|
00000cd0  6f 75 72 73 20 74 6f 20  63 61 6c 63 75 6c 61 74  |ours to calculat|
00000ce0  65 20 77 69 6c 6c 20 61  70 70 65 61 72 20 6f 6e  |e will appear on|
00000cf0  20 74 68 65 69 72 20 73  63 72 65 65 6e 2e 20 54  | their screen. T|
00000d00  68 69 73 20 69 73 20 61  0d 74 65 63 68 6e 69 71  |his is a.techniq|
00000d10  75 65 20 77 68 69 63 68  20 49 20 68 61 76 65 20  |ue which I have |
00000d20  75 73 65 64 20 69 6e 20  73 65 76 65 72 61 6c 20  |used in several |
00000d30  6f 66 20 6d 79 20 70 72  6f 67 72 61 6d 73 2e 20  |of my programs. |
00000d40  54 68 65 20 6d 61 69 6e  20 6d 65 6e 75 20 6f 66  |The main menu of|
00000d50  0d 53 68 69 70 77 72 65  63 6b 65 64 20 49 49 3a  |.Shipwrecked II:|
00000d60  20 4a 75 70 69 74 65 72  20 33 2c 20 77 68 65 72  | Jupiter 3, wher|
00000d70  65 20 79 6f 75 20 73 65  6c 65 63 74 20 50 6c 61  |e you select Pla|
00000d80  79 2c 20 49 6e 73 74 72  75 63 74 69 6f 6e 73 2c  |y, Instructions,|
00000d90  20 47 61 6d 65 0d 43 6f  6d 70 6c 65 74 65 20 6f  | Game.Complete o|
00000da0  72 20 43 68 65 61 74 20  77 69 74 68 20 74 68 65  |r Cheat with the|
00000db0  20 73 74 61 72 66 69 65  6c 64 20 62 61 63 6b 64  | starfield backd|
00000dc0  72 6f 70 20 77 61 73 20  64 6f 6e 65 20 69 6e 20  |rop was done in |
00000dd0  74 68 69 73 20 77 61 79  20 2d 20 74 68 65 0d 73  |this way - the.s|
00000de0  63 72 65 65 6e 20 74 6f  6f 6b 20 6e 65 61 72 6c  |creen took nearl|
00000df0  79 20 61 6e 20 68 6f 75  72 20 66 6f 72 20 6d 79  |y an hour for my|
00000e00  20 63 6f 6d 70 75 74 65  72 20 74 6f 20 63 61 6c  | computer to cal|
00000e10  63 75 6c 61 74 65 2c 20  62 75 74 20 49 20 77 61  |culate, but I wa|
00000e20  73 20 61 62 6c 65 0d 74  6f 20 6d 61 6b 65 20 69  |s able.to make i|
00000e30  74 20 61 70 70 65 61 72  20 69 6e 20 73 65 63 6f  |t appear in seco|
00000e40  6e 64 73 20 6f 6e 20 79  6f 75 72 20 73 63 72 65  |nds on your scre|
00000e50  65 6e 2e 20 49 20 73 68  6f 75 6c 64 20 61 6c 73  |en. I should als|
00000e60  6f 20 6d 65 6e 74 69 6f  6e 20 74 68 65 20 74 69  |o mention the ti|
00000e70  74 6c 65 0d 73 63 72 65  65 6e 20 74 6f 20 53 68  |tle.screen to Sh|
00000e80  69 70 77 72 65 63 6b 20  77 69 74 68 20 74 68 65  |ipwreck with the|
00000e90  20 61 6e 69 6d 61 74 65  64 20 73 65 61 2c 20 6e  | animated sea, n|
00000ea0  6f 74 20 74 6f 20 6d 65  6e 74 69 6f 6e 20 74 68  |ot to mention th|
00000eb0  65 20 65 6e 64 6c 65 73  73 20 45 55 47 0d 74 69  |e endless EUG.ti|
00000ec0  74 6c 65 20 73 63 72 65  65 6e 73 20 49 20 68 61  |tle screens I ha|
00000ed0  76 65 20 64 6f 6e 65 20  69 6e 20 74 68 69 73 20  |ve done in this |
00000ee0  77 61 79 20 2d 20 74 68  65 20 43 68 72 69 73 74  |way - the Christ|
00000ef0  6d 61 73 20 45 55 47 20  33 35 20 73 63 72 65 65  |mas EUG 35 scree|
00000f00  6e 20 77 69 74 68 0d 74  68 65 20 73 77 69 72 6c  |n with.the swirl|
00000f10  79 20 62 6c 75 65 20 62  61 63 6b 67 72 6f 75 6e  |y blue backgroun|
00000f20  64 20 28 63 72 65 64 69  74 65 64 20 65 72 72 6f  |d (credited erro|
00000f30  6e 65 6f 75 73 6c 79 20  74 6f 20 52 6f 62 65 72  |neously to Rober|
00000f40  74 20 53 70 72 6f 77 73  6f 6e 29 20 74 6f 6f 6b  |t Sprowson) took|
00000f50  0d 74 77 6f 20 77 68 6f  6c 65 20 64 61 79 73 20  |.two whole days |
00000f60  74 6f 20 70 6c 6f 74 21  0d 0d 49 6e 20 6f 72 64  |to plot!..In ord|
00000f70  65 72 20 74 6f 20 61 63  68 69 65 76 65 20 74 68  |er to achieve th|
00000f80  69 73 2c 20 79 6f 75 20  73 69 6d 70 6c 79 20 6e  |is, you simply n|
00000f90  65 65 64 20 74 6f 20 75  6e 64 65 72 73 74 61 6e  |eed to understan|
00000fa0  64 20 74 77 6f 20 42 41  53 49 43 20 63 6f 6d 6d  |d two BASIC comm|
00000fb0  61 6e 64 73 3a 0d 0d 2a  53 41 56 45 20 46 69 6c  |ands:..*SAVE Fil|
00000fc0  65 6e 61 6d 65 20 6e 6e  6e 6e 20 6d 6d 6d 6d 0d  |ename nnnn mmmm.|
00000fd0  2a 4c 4f 41 44 20 46 69  6c 65 6e 61 6d 65 20 6e  |*LOAD Filename n|
00000fe0  6e 6e 6e 0d 0d 54 68 65  73 65 20 6c 6f 61 64 20  |nnn..These load |
00000ff0  61 6e 64 20 73 61 76 65  20 61 72 65 61 73 20 6f  |and save areas o|
00001000  66 20 74 68 65 20 63 6f  6d 70 75 74 65 72 27 73  |f the computer's|
00001010  20 6d 65 6d 6f 72 79 20  74 6f 20 66 6c 6f 70 70  | memory to flopp|
00001020  79 20 64 69 73 63 20 6f  72 20 63 61 73 73 65 74  |y disc or casset|
00001030  74 65 0d 77 69 74 68 20  74 68 65 20 66 69 6c 65  |te.with the file|
00001040  6e 61 6d 65 20 67 69 76  61 6e 20 69 6e 20 70 6c  |name givan in pl|
00001050  61 63 65 20 6f 66 20 74  68 65 20 77 6f 72 6b 20  |ace of the work |
00001060  46 69 6c 65 6e 61 6d 65  2c 20 73 74 61 72 74 69  |Filename, starti|
00001070  6e 67 20 61 74 20 6d 65  6d 6f 72 79 0d 6c 6f 63  |ng at memory.loc|
00001080  61 74 69 6f 6e 20 6e 6e  6e 6e 2c 20 61 6e 64 20  |ation nnnn, and |
00001090  63 6f 6e 74 69 6e 75 69  6e 67 20 75 6e 74 69 6c  |continuing until|
000010a0  20 6d 65 6d 6f 72 79 20  6c 6f 63 61 74 69 6f 6e  | memory location|
000010b0  20 6d 6d 6d 6d 20 28 77  68 65 72 65 20 6e 6e 6e  | mmmm (where nnn|
000010c0  6e 20 61 6e 64 20 6d 6d  6d 6d 0d 61 72 65 20 62  |n and mmmm.are b|
000010d0  6f 74 68 20 69 6e 20 68  65 78 69 64 65 63 69 6d  |oth in hexidecim|
000010e0  61 6c 20 2d 20 62 61 73  65 20 31 36 29 2e 20 44  |al - base 16). D|
000010f0  6f 6e 27 74 20 77 6f 72  72 79 20 69 66 20 79 6f  |on't worry if yo|
00001100  75 20 64 6f 6e 27 74 20  65 6e 74 69 72 65 6c 79  |u don't entirely|
00001110  0d 75 6e 64 65 72 73 74  61 6e 64 20 74 68 69 73  |.understand this|
00001120  20 2d 20 69 74 20 69 73  20 6e 6f 74 20 6e 65 63  | - it is not nec|
00001130  65 73 73 61 72 79 20 74  6f 20 65 6e 74 69 72 65  |essary to entire|
00001140  6c 79 20 75 6e 64 65 72  73 74 61 6e 64 20 74 68  |ly understand th|
00001150  65 20 77 6f 72 6b 69 6e  67 73 0d 6f 66 20 74 68  |e workings.of th|
00001160  65 73 65 20 63 6f 6d 6d  61 6e 64 73 2c 20 6f 72  |ese commands, or|
00001170  20 6f 66 20 68 65 78 69  64 65 63 69 6d 61 6c 20  | of hexidecimal |
00001180  74 6f 20 75 73 65 20 74  68 65 6d 20 74 6f 20 73  |to use them to s|
00001190  74 6f 72 65 20 61 6e 64  20 72 65 74 72 69 65 76  |tore and retriev|
000011a0  65 0d 73 63 72 65 65 6e  20 6d 65 6d 6f 72 79 2e  |e.screen memory.|
000011b0  20 41 6c 6c 20 79 6f 75  20 6e 65 65 64 20 74 6f  | All you need to|
000011c0  20 64 6f 20 69 73 20 73  75 62 73 74 69 74 75 74  | do is substitut|
000011d0  65 20 6e 6e 6e 6e 20 61  6e 64 20 6d 6d 6d 6d 20  |e nnnn and mmmm |
000011e0  66 6f 72 20 74 68 65 0d  61 64 64 72 65 73 73 65  |for the.addresse|
000011f0  73 20 6f 66 20 74 68 65  20 73 74 61 72 74 20 61  |s of the start a|
00001200  6e 64 20 66 69 6e 69 73  68 20 6f 66 20 73 63 72  |nd finish of scr|
00001210  65 65 6e 20 6d 65 6d 6f  72 79 2e 20 54 68 65 20  |een memory. The |
00001220  6c 6f 63 61 74 69 6f 6e  20 6f 66 20 74 68 65 73  |location of thes|
00001230  65 0d 77 69 74 68 69 6e  20 79 6f 75 72 20 63 6f  |e.within your co|
00001240  6d 70 75 74 65 72 20 76  61 72 69 65 73 20 64 65  |mputer varies de|
00001250  70 65 64 69 6e 67 20 75  70 6f 6e 20 77 68 69 63  |peding upon whic|
00001260  68 20 67 72 61 70 68 69  63 73 20 6d 6f 64 65 20  |h graphics mode |
00001270  79 6f 75 20 61 72 65 20  75 73 69 6e 67 0d 28 77  |you are using.(w|
00001280  68 69 63 68 20 79 6f 75  20 73 65 6c 65 63 74 65  |hich you selecte|
00001290  64 20 75 73 69 6e 67 20  74 68 65 20 4d 4f 44 45  |d using the MODE|
000012a0  20 63 6f 6d 6d 61 6e 64  20 2d 20 73 65 65 20 70  | command - see p|
000012b0  72 65 76 69 6f 75 73 20  74 75 74 6f 72 69 61 6c  |revious tutorial|
000012c0  20 69 66 20 79 6f 75 0d  61 72 65 20 75 6e 73 75  | if you.are unsu|
000012d0  72 65 20 6f 66 20 77 68  61 74 20 74 68 69 73 20  |re of what this |
000012e0  69 73 29 2c 20 62 75 74  20 69 73 20 61 6c 77 61  |is), but is alwa|
000012f0  79 73 20 63 6f 6e 73 74  61 6e 74 20 66 6f 72 20  |ys constant for |
00001300  61 6e 79 20 70 61 72 74  69 63 75 6c 61 72 0d 6d  |any particular.m|
00001310  6f 64 65 2e 20 74 68 65  20 76 61 6c 75 65 73 20  |ode. the values |
00001320  66 6f 72 20 74 68 65 20  64 69 66 66 65 72 65 6e  |for the differen|
00001330  74 20 6d 6f 64 65 73 20  61 72 65 20 67 69 76 65  |t modes are give|
00001340  6e 20 62 65 6c 6f 77 3a  0d 0d 4d 6f 64 65 20 20  |n below:..Mode  |
00001350  20 20 20 20 20 20 20 20  20 20 6e 6e 6e 6e 20 20  |          nnnn  |
00001360  20 20 6d 6d 6d 6d 20 20  20 4e 4f 54 45 53 3a 0d  |  mmmm   NOTES:.|
00001370  30 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |0               |
00001380  33 30 30 30 20 20 20 20  37 46 46 46 0d 31 20 20  |3000    7FFF.1  |
00001390  20 20 20 20 20 20 20 20  20 20 20 20 20 33 30 30  |             300|
000013a0  30 20 20 20 20 37 46 46  46 20 20 20 2d 20 6e 6e  |0    7FFF   - nn|
000013b0  6e 6e 20 61 6e 64 20 6d  6d 6d 6d 20 76 61 6c 75  |nn and mmmm valu|
000013c0  65 73 20 67 69 76 65 6e  20 74 6f 20 74 68 65 20  |es given to the |
000013d0  6c 65 66 74 20 61 72 65  0d 32 20 20 20 20 20 20  |left are.2      |
000013e0  20 20 20 20 20 20 20 20  20 33 30 30 30 20 20 20  |         3000   |
000013f0  20 37 46 46 46 20 20 20  61 6c 6c 20 69 6e 20 68  | 7FFF   all in h|
00001400  65 78 69 64 65 63 69 6d  61 6c 2e 20 54 68 65 72  |exidecimal. Ther|
00001410  65 66 6f 72 65 20 74 68  65 79 20 63 61 6e 20 62  |efore they can b|
00001420  65 0d 33 20 20 20 20 20  20 20 20 20 20 20 20 20  |e.3             |
00001430  20 20 34 30 30 30 20 20  20 20 37 46 46 46 20 20  |  4000    7FFF  |
00001440  20 73 75 62 73 74 69 74  75 74 65 64 20 64 69 72  | substituted dir|
00001450  65 63 74 6c 79 20 69 6e  74 6f 20 74 68 65 20 2a  |ectly into the *|
00001460  4c 4f 41 44 20 61 6e 64  20 2a 53 41 56 45 0d 34  |LOAD and *SAVE.4|
00001470  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 35  |               5|
00001480  38 30 30 20 20 20 20 37  46 46 46 20 20 20 63 6f  |800    7FFF   co|
00001490  6d 6d 61 6e 64 73 20 77  69 74 68 20 6e 6f 20 63  |mmands with no c|
000014a0  6f 6e 76 65 72 73 69 6f  6e 20 72 65 71 75 69 72  |onversion requir|
000014b0  65 64 2e 0d 35 20 20 20  20 20 20 20 20 20 20 20  |ed..5           |
000014c0  20 20 20 20 35 38 30 30  20 20 20 20 37 46 46 46  |    5800    7FFF|
000014d0  0d 36 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.6              |
000014e0  20 36 30 30 30 20 20 20  20 37 46 46 46 20 20 20  | 6000    7FFF   |
000014f0  2d 20 56 61 6c 75 65 73  20 61 72 65 20 6e 6f 74  |- Values are not|
00001500  20 76 61 6c 69 64 20 66  6f 72 20 74 68 65 20 42  | valid for the B|
00001510  42 43 20 6d 6f 64 65 6c  20 41 20 69 6e 0d 37 20  |BC model A in.7 |
00001520  20 20 20 20 20 20 20 20  20 20 20 20 20 20 37 43  |              7C|
00001530  30 30 20 20 20 20 37 46  46 46 20 20 20 6d 6f 64  |00    7FFF   mod|
00001540  65 73 20 34 2c 35 2c 36  20 6f 72 20 37 2e 0d 0d  |es 4,5,6 or 7...|
00001550  45 78 61 6d 70 6c 65 73  3a 0d 0d 53 75 70 70 6f  |Examples:..Suppo|
00001560  73 65 20 79 6f 75 20 61  72 65 20 69 6e 20 6d 6f  |se you are in mo|
00001570  64 65 20 32 2c 20 61 6e  64 20 77 61 6e 74 20 74  |de 2, and want t|
00001580  6f 20 73 74 6f 72 65 20  74 68 65 20 73 63 72 65  |o store the scre|
00001590  65 6e 20 74 6f 20 61 20  66 6c 6f 70 70 79 2e 20  |en to a floppy. |
000015a0  46 72 6f 6d 0d 74 68 65  20 74 61 62 6c 65 20 61  |From.the table a|
000015b0  62 6f 76 65 2c 20 6e 6e  6e 6e 20 69 73 20 33 30  |bove, nnnn is 30|
000015c0  30 30 20 61 6e 64 20 6d  6d 6d 6d 20 69 73 20 37  |00 and mmmm is 7|
000015d0  46 46 46 20 66 6f 72 20  6d 6f 64 65 20 32 2e 20  |FFF for mode 2. |
000015e0  54 68 65 72 65 66 6f 72  65 2c 20 74 6f 0d 73 61  |Therefore, to.sa|
000015f0  76 65 20 74 68 65 20 73  63 72 65 65 6e 20 75 6e  |ve the screen un|
00001600  64 65 72 20 74 68 65 20  66 69 6c 65 6e 61 6d 65  |der the filename|
00001610  20 22 53 63 72 65 65 6e  22 2c 20 79 6f 75 20 77  | "Screen", you w|
00001620  6f 75 6c 64 20 74 79 70  65 3a 0d 0d 2a 53 41 56  |ould type:..*SAV|
00001630  45 20 53 63 72 65 65 6e  20 33 30 30 30 20 37 46  |E Screen 3000 7F|
00001640  46 46 0d 0d 4e 6f 77 2c  20 69 66 20 79 6f 75 20  |FF..Now, if you |
00001650  77 61 6e 74 20 74 6f 20  72 65 73 74 6f 72 65 20  |want to restore |
00001660  74 68 65 20 73 63 72 65  65 6e 20 61 67 61 69 6e  |the screen again|
00001670  2c 20 61 6e 64 20 70 75  74 20 79 6f 75 72 20 67  |, and put your g|
00001680  72 61 70 68 69 63 73 20  62 61 63 6b 0d 6f 6e 20  |raphics back.on |
00001690  74 68 65 20 73 63 72 65  65 6e 20 61 67 61 69 6e  |the screen again|
000016a0  2c 20 79 6f 75 20 77 6f  75 6c 64 20 75 73 65 20  |, you would use |
000016b0  2a 4c 4f 41 44 2e 20 4e  6f 74 69 63 65 20 74 68  |*LOAD. Notice th|
000016c0  61 74 20 74 68 69 73 20  74 69 6d 65 20 6f 6e 6c  |at this time onl|
000016d0  79 20 61 0d 76 61 6c 75  65 20 66 6f 72 20 6e 6e  |y a.value for nn|
000016e0  6e 6e 20 69 73 20 72 65  71 75 69 72 65 64 2c 20  |nn is required, |
000016f0  61 6e 64 20 6e 6f 74 20  66 6f 72 20 6d 6d 6d 6d  |and not for mmmm|
00001700  3a 0d 0d 2a 4c 4f 41 44  20 53 63 72 65 65 6e 20  |:..*LOAD Screen |
00001710  33 30 30 30 0d 0d 59 6f  75 20 63 61 6e 20 74 72  |3000..You can tr|
00001720  79 20 74 68 69 73 20 6f  75 74 20 6e 6f 77 2c 20  |y this out now, |
00001730  69 66 20 79 6f 75 20 73  77 69 74 63 68 20 6f 6e  |if you switch on|
00001740  20 79 6f 75 72 20 45 6c  65 63 74 72 6f 6e 2c 20  | your Electron, |
00001750  61 6e 64 20 69 6e 73 65  72 74 20 61 20 77 6f 72  |and insert a wor|
00001760  6b 0d 64 69 73 63 20 69  6e 74 6f 20 79 6f 75 72  |k.disc into your|
00001770  20 66 6c 6f 70 70 79 20  64 72 69 76 65 2e 20 49  | floppy drive. I|
00001780  66 20 79 6f 75 20 75 73  65 20 41 44 46 53 2c 20  |f you use ADFS, |
00001790  79 6f 75 20 6d 61 79 20  6e 65 65 64 20 74 6f 20  |you may need to |
000017a0  75 73 65 20 2a 4d 4f 55  4e 54 0d 74 6f 20 73 65  |use *MOUNT.to se|
000017b0  6c 65 63 74 20 74 68 65  20 66 6c 6f 70 70 79 20  |lect the floppy |
000017c0  64 69 73 63 2c 20 61 6e  64 20 62 65 20 61 62 6c  |disc, and be abl|
000017d0  65 20 74 6f 20 77 72 69  74 65 20 74 6f 20 69 74  |e to write to it|
000017e0  2e 20 4e 6f 77 20 65 6e  74 65 72 20 6d 6f 64 65  |. Now enter mode|
000017f0  20 32 0d 62 79 20 74 79  70 69 6e 67 3a 0d 0d 4d  | 2.by typing:..M|
00001800  4f 44 45 20 32 0d 0d 4e  6f 77 20 74 79 70 65 20  |ODE 2..Now type |
00001810  73 6f 6d 65 20 74 65 78  74 20 6f 6e 20 74 68 65  |some text on the|
00001820  20 73 63 72 65 65 6e 20  77 68 69 63 68 20 77 69  | screen which wi|
00001830  6c 6c 20 72 65 70 72 65  73 65 6e 74 20 74 68 65  |ll represent the|
00001840  20 67 72 61 70 68 69 63  73 20 77 68 69 63 68 0d  | graphics which.|
00001850  79 6f 75 20 77 61 6e 74  20 74 6f 20 73 61 76 65  |you want to save|
00001860  2e 20 57 68 65 6e 20 79  6f 75 20 68 61 76 65 20  |. When you have |
00001870  66 69 6e 69 73 68 65 64  2c 20 73 61 76 65 20 74  |finished, save t|
00001880  68 65 20 63 6f 6e 74 65  6e 74 73 20 6f 66 20 73  |he contents of s|
00001890  63 72 65 65 6e 20 6d 65  6d 6f 72 79 0d 74 6f 20  |creen memory.to |
000018a0  66 6c 6f 70 70 79 20 64  69 73 6b 20 61 73 20 73  |floppy disk as s|
000018b0  68 6f 77 6e 20 61 62 6f  76 65 2c 20 62 79 20 74  |hown above, by t|
000018c0  79 70 69 6e 67 3a 0d 0d  2a 53 41 56 45 20 53 63  |yping:..*SAVE Sc|
000018d0  72 65 65 6e 20 33 30 30  30 20 37 46 46 46 0d 0d  |reen 3000 7FFF..|
000018e0  57 68 65 6e 20 74 68 65  20 64 69 73 6b 20 64 72  |When the disk dr|
000018f0  69 76 65 20 68 61 73 20  66 69 6e 69 73 68 65 64  |ive has finished|
00001900  2c 20 63 6c 65 61 72 20  74 68 65 20 74 65 78 74  |, clear the text|
00001910  20 6f 66 66 20 74 68 65  20 73 63 72 65 65 6e 20  | off the screen |
00001920  62 79 20 74 79 70 69 6e  67 3a 0d 0d 43 4c 53 0d  |by typing:..CLS.|
00001930  0d 54 68 65 20 74 65 78  74 20 77 68 69 63 68 20  |.The text which |
00001940  79 6f 75 20 74 79 70 65  64 20 6f 6e 74 6f 20 74  |you typed onto t|
00001950  68 65 20 73 63 72 65 65  6e 20 68 61 73 20 6e 6f  |he screen has no|
00001960  77 20 62 65 65 6e 20 77  69 70 65 64 20 66 72 6f  |w been wiped fro|
00001970  6d 20 74 68 65 0d 63 6f  6d 70 75 74 65 72 27 73  |m the.computer's|
00001980  20 6d 65 6d 6f 72 79 2c  20 62 75 74 20 73 68 6f  | memory, but sho|
00001990  75 6c 64 20 73 74 69 6c  6c 20 62 65 20 73 74 6f  |uld still be sto|
000019a0  72 65 64 20 6f 6e 20 74  68 65 20 66 6c 6f 70 70  |red on the flopp|
000019b0  79 20 64 69 73 63 2e 20  57 65 20 63 61 6e 0d 73  |y disc. We can.s|
000019c0  68 6f 77 20 74 68 61 74  20 74 68 69 73 20 69 73  |how that this is|
000019d0  20 73 6f 20 62 79 20 74  79 70 69 6e 67 3a 0d 0d  | so by typing:..|
000019e0  2a 4c 4f 41 44 20 53 63  72 65 65 6e 20 33 30 30  |*LOAD Screen 300|
000019f0  30 0d 0d 59 6f 75 72 20  74 65 78 74 20 73 68 6f  |0..Your text sho|
00001a00  75 6c 64 20 6e 6f 77 20  72 65 61 70 70 65 61 72  |uld now reappear|
00001a10  20 6f 6e 20 74 68 65 20  73 63 72 65 65 6e 2e 20  | on the screen. |
00001a20  59 6f 75 20 63 61 6e 20  72 65 70 65 61 74 20 74  |You can repeat t|
00001a30  68 69 73 20 77 69 74 68  20 61 6e 79 0d 6b 69 6e  |his with any.kin|
00001a40  64 20 6f 66 20 63 6f 6d  70 6c 65 78 20 67 72 61  |d of complex gra|
00001a50  70 68 69 63 73 20 6f 6e  20 73 63 72 65 65 6e 2c  |phics on screen,|
00001a60  20 61 6e 64 20 69 74 20  77 69 6c 6c 20 73 74 69  | and it will sti|
00001a70  6c 6c 20 77 6f 72 6b 2e  20 54 68 65 20 73 61 6d  |ll work. The sam|
00001a80  65 20 63 61 6e 0d 62 65  20 64 6f 6e 65 20 69 6e  |e can.be done in|
00001a90  20 61 6e 79 20 6f 74 68  65 72 20 67 72 61 70 68  | any other graph|
00001aa0  69 63 73 20 6d 6f 64 65  2c 20 73 69 6d 70 6c 79  |ics mode, simply|
00001ab0  20 62 79 20 63 68 61 6e  67 69 6e 67 20 74 68 65  | by changing the|
00001ac0  20 76 61 6c 75 65 73 20  6f 66 20 6e 6e 6e 6e 0d  | values of nnnn.|
00001ad0  61 6e 64 20 6d 6d 6d 6d  20 74 6f 20 74 68 6f 73  |and mmmm to thos|
00001ae0  65 20 67 69 76 65 6e 20  69 6e 20 74 68 65 20 74  |e given in the t|
00001af0  61 62 6c 65 20 61 62 6f  76 65 2e 20 46 6f 72 20  |able above. For |
00001b00  65 78 61 6d 70 6c 65 20  69 6e 20 6d 6f 64 65 20  |example in mode |
00001b10  35 20 79 6f 75 0d 77 6f  75 6c 64 20 75 73 65 3a  |5 you.would use:|
00001b20  0d 0d 2a 53 41 56 45 20  53 63 72 65 65 6e 20 35  |..*SAVE Screen 5|
00001b30  38 30 30 20 37 46 46 46  0d 0d 66 6f 6c 6c 6f 77  |800 7FFF..follow|
00001b40  65 64 20 62 79 3a 0d 0d  2a 4c 4f 41 44 20 53 63  |ed by:..*LOAD Sc|
00001b50  72 65 65 6e 20 35 38 30  30 20 37 46 46 46 0d 0d  |reen 5800 7FFF..|
00001b60  54 68 65 72 65 20 61 72  65 2c 20 68 6f 77 65 76  |There are, howev|
00001b70  65 72 2c 20 61 20 66 65  77 20 70 72 65 63 61 75  |er, a few precau|
00001b80  74 69 6f 6e 61 72 79 20  70 6f 69 6e 74 73 20 77  |tionary points w|
00001b90  68 69 63 68 20 73 68 6f  75 6c 64 20 62 65 20 6d  |hich should be m|
00001ba0  65 6e 74 69 6f 6e 65 64  0d 61 62 6f 75 74 20 74  |entioned.about t|
00001bb0  68 69 73 20 74 65 63 68  6e 69 71 75 65 20 6f 66  |his technique of|
00001bc0  20 73 61 76 69 6e 67 20  73 63 72 65 65 6e 20 6d  | saving screen m|
00001bd0  65 6d 6f 72 79 3a 0d 0d  2d 20 41 73 20 79 6f 75  |emory:..- As you|
00001be0  20 70 72 6f 62 61 62 6c  79 20 72 65 61 6c 69 73  | probably realis|
00001bf0  65 2c 20 69 6e 20 66 6f  75 72 20 63 6f 6c 6f 75  |e, in four colou|
00001c00  72 20 6d 6f 64 65 73 2c  20 74 68 65 20 66 6f 75  |r modes, the fou|
00001c10  72 20 63 6f 6c 6f 75 72  73 20 79 6f 75 0d 63 61  |r colours you.ca|
00001c20  6e 20 75 73 65 20 63 61  6e 20 62 65 20 63 68 61  |n use can be cha|
00001c30  6e 67 65 64 20 66 72 6f  6d 20 74 68 65 20 64 65  |nged from the de|
00001c40  66 61 75 6c 74 20 62 6c  61 63 6b 2c 20 72 65 64  |fault black, red|
00001c50  2c 20 79 65 6c 6c 6f 77  20 61 6e 64 20 77 68 69  |, yellow and whi|
00001c60  74 65 20 62 79 0d 75 73  69 6e 67 20 56 44 55 20  |te by.using VDU |
00001c70  31 39 20 74 6f 20 63 68  61 6e 67 65 20 74 68 65  |19 to change the|
00001c80  20 70 61 6c 65 74 74 65  2e 20 54 68 65 20 63 6f  | palette. The co|
00001c90  6c 6f 75 72 73 20 69 6e  20 74 68 65 20 70 61 6c  |lours in the pal|
00001ca0  65 74 74 65 20 61 72 65  20 6e 6f 74 0d 73 61 76  |ette are not.sav|
00001cb0  65 64 20 77 68 65 6e 20  74 68 69 73 20 74 65 63  |ed when this tec|
00001cc0  68 6e 69 71 75 65 20 69  73 20 75 73 65 64 2c 20  |hnique is used, |
00001cd0  61 6e 64 20 6d 75 73 74  20 62 65 20 72 65 73 74  |and must be rest|
00001ce0  6f 72 65 64 20 62 79 20  72 65 70 65 61 74 69 6e  |ored by repeatin|
00001cf0  67 20 74 68 65 0d 56 44  55 20 31 39 20 63 6f 6d  |g the.VDU 19 com|
00001d00  6d 61 6e 64 73 20 61 67  61 69 6e 2e 20 49 66 20  |mands again. If |
00001d10  79 6f 75 20 64 65 66 69  6e 65 20 74 68 65 20 70  |you define the p|
00001d20  61 6c 65 74 74 65 20 74  6f 2c 20 66 6f 72 20 65  |alette to, for e|
00001d30  78 61 6d 70 6c 65 2c 20  62 6c 61 63 6b 2c 0d 62  |xample, black,.b|
00001d40  6c 75 65 2c 20 63 79 61  6e 20 61 6e 64 20 77 68  |lue, cyan and wh|
00001d50  69 74 65 2c 20 61 6e 64  20 63 72 65 61 74 65 20  |ite, and create |
00001d60  61 20 70 69 63 74 75 72  65 20 77 68 69 63 68 20  |a picture which |
00001d70  6c 6f 6f 6b 73 20 67 6f  6f 64 20 69 6e 20 74 68  |looks good in th|
00001d80  69 73 20 63 6f 6c 6f 75  72 0d 73 63 68 65 6d 65  |is colour.scheme|
00001d90  2c 20 79 6f 75 20 6d 75  73 74 20 72 65 6d 65 6d  |, you must remem|
00001da0  62 65 72 20 74 68 61 74  20 75 6e 6c 65 73 73 20  |ber that unless |
00001db0  79 6f 75 20 64 65 66 69  6e 65 20 74 68 65 20 70  |you define the p|
00001dc0  61 6c 65 74 74 65 20 74  6f 20 74 68 65 73 65 20  |alette to these |
00001dd0  66 6f 75 72 0d 63 6f 6c  6f 75 72 73 20 62 65 66  |four.colours bef|
00001de0  6f 72 65 20 70 65 72 66  6f 72 6d 69 6e 67 20 2a  |ore performing *|
00001df0  4c 4f 41 44 20 74 6f 20  72 65 73 74 6f 72 65 20  |LOAD to restore |
00001e00  74 68 65 20 70 69 63 74  75 72 65 2c 20 69 74 20  |the picture, it |
00001e10  6d 61 79 20 61 70 70 65  61 72 0d 72 61 74 68 65  |may appear.rathe|
00001e20  72 20 6f 64 64 20 77 68  65 6e 20 72 65 6c 6f 61  |r odd when reloa|
00001e30  64 65 64 2c 20 61 73 20  69 74 20 77 69 6c 6c 20  |ded, as it will |
00001e40  61 70 70 65 61 72 20 69  6e 20 62 6c 61 63 6b 2c  |appear in black,|
00001e50  20 72 65 64 2c 20 79 65  6c 6c 6f 77 20 61 6e 64  | red, yellow and|
00001e60  0d 77 68 69 74 65 20 2d  20 74 68 65 20 64 65 66  |.white - the def|
00001e70  61 75 6c 74 20 63 6f 6c  6f 75 72 20 73 63 68 65  |ault colour sche|
00001e80  6d 65 2e 0d 0d 2d 20 54  68 65 20 65 78 61 63 74  |me...- The exact|
00001e90  20 72 65 61 73 6f 6e 20  77 68 79 20 74 68 69 73  | reason why this|
00001ea0  20 68 61 70 70 65 6e 73  20 69 73 20 72 61 74 68  | happens is rath|
00001eb0  65 72 20 63 6f 6d 70 6c  69 63 61 74 65 64 2c 20  |er complicated, |
00001ec0  62 75 74 20 69 66 20 79  6f 75 20 61 6c 6c 6f 77  |but if you allow|
00001ed0  0d 74 68 65 20 63 75 72  73 6f 72 20 74 6f 20 67  |.the cursor to g|
00001ee0  6f 20 64 6f 77 6e 20 6f  66 66 20 74 68 65 20 62  |o down off the b|
00001ef0  6f 74 74 6f 6d 20 6c 69  6e 65 20 6f 66 20 74 68  |ottom line of th|
00001f00  65 20 73 63 72 65 65 6e  2c 20 61 6e 64 20 61 6c  |e screen, and al|
00001f10  6c 6f 77 20 74 68 65 20  73 63 72 65 65 6e 0d 74  |low the screen.t|
00001f20  6f 20 73 63 72 6f 6c 6c  20 75 70 20 6f 6e 65 20  |o scroll up one |
00001f30  6c 69 6e 65 2c 20 74 68  69 73 20 74 65 63 68 6e  |line, this techn|
00001f40  69 71 75 65 20 73 74 6f  70 73 20 77 6f 72 6b 69  |ique stops worki|
00001f50  6e 67 20 75 6e 74 69 6c  20 79 6f 75 20 70 65 72  |ng until you per|
00001f60  66 6f 72 6d 20 61 0d 4d  4f 44 45 20 63 6f 6d 6d  |form a.MODE comm|
00001f70  61 6e 64 2c 20 6f 72 20  63 6c 65 61 72 20 74 68  |and, or clear th|
00001f80  65 20 73 63 72 65 65 6e  20 75 73 69 6e 67 20 43  |e screen using C|
00001f90  4c 53 2e 20 42 61 73 69  63 61 6c 6c 79 20 77 68  |LS. Basically wh|
00001fa0  61 74 20 68 61 70 70 65  6e 73 20 69 73 20 74 68  |at happens is th|
00001fb0  61 74 0d 74 68 65 20 63  6f 6d 70 75 74 65 72 20  |at.the computer |
00001fc0  64 6f 65 73 20 6e 6f 74  20 70 68 79 73 69 63 61  |does not physica|
00001fd0  6c 6c 79 20 6d 6f 76 65  20 65 76 65 72 79 20 6c  |lly move every l|
00001fe0  69 6e 65 20 6f 66 20 74  65 78 74 20 6f 6e 20 74  |ine of text on t|
00001ff0  68 65 20 73 63 72 65 65  6e 20 75 70 0d 6f 6e 65  |he screen up.one|
00002000  20 6c 69 6e 65 2c 20 62  75 74 20 69 6e 73 74 65  | line, but inste|
00002010  61 64 20 6d 61 6b 65 73  20 61 20 6e 6f 74 65 20  |ad makes a note |
00002020  74 68 61 74 20 65 76 65  72 79 20 6c 69 6e 65 20  |that every line |
00002030  69 6e 20 73 63 72 65 65  6e 20 6d 65 6d 6f 72 79  |in screen memory|
00002040  20 69 73 20 73 74 6f 72  65 64 0d 6f 6e 65 20 6c  | is stored.one l|
00002050  69 6e 65 20 6c 6f 77 65  72 20 74 68 61 6e 20 69  |ine lower than i|
00002060  74 20 73 68 6f 75 6c 64  20 62 65 2e 20 57 68 65  |t should be. Whe|
00002070  6e 20 79 6f 75 20 72 65  6c 6f 61 64 20 66 72 6f  |n you reload fro|
00002080  6d 20 64 69 73 6b 2c 20  74 68 69 73 20 6e 6f 74  |m disk, this not|
00002090  65 20 69 73 0d 6c 6f 73  74 2c 20 61 6e 64 20 74  |e is.lost, and t|
000020a0  68 65 20 63 6f 6d 70 75  74 65 72 20 64 72 61 77  |he computer draw|
000020b0  73 20 65 76 65 72 79 20  6c 69 6e 65 20 6c 6f 77  |s every line low|
000020c0  65 72 20 74 68 61 6e 20  69 74 20 73 68 6f 75 6c  |er than it shoul|
000020d0  64 20 62 65 2e 20 45 61  63 68 20 74 69 6d 65 0d  |d be. Each time.|
000020e0  74 68 61 74 20 43 4c 53  20 6f 72 20 4d 4f 44 45  |that CLS or MODE|
000020f0  20 69 73 20 65 78 65 63  75 74 65 64 2c 20 73 63  | is executed, sc|
00002100  72 65 65 6e 20 6d 65 6d  6f 72 79 20 69 73 20 63  |reen memory is c|
00002110  6c 65 61 72 65 64 20 61  6e 64 20 72 65 69 6e 69  |leared and reini|
00002120  74 69 61 74 65 64 2c 20  73 6f 0d 74 68 61 74 20  |tiated, so.that |
00002130  65 76 65 72 79 20 6c 69  6e 65 20 69 73 20 73 74  |every line is st|
00002140  6f 72 65 64 20 69 6e 20  6d 65 6d 6f 72 79 20 77  |ored in memory w|
00002150  68 65 72 65 20 79 6f 75  20 77 6f 75 6c 64 20 65  |here you would e|
00002160  78 70 65 63 74 20 69 74  20 74 6f 20 62 65 2e 20  |xpect it to be. |
00002170  53 69 6d 70 6c 79 0d 72  65 6d 65 6d 62 65 72 20  |Simply.remember |
00002180  6e 6f 74 20 74 6f 20 61  6c 6c 6f 77 20 74 68 65  |not to allow the|
00002190  20 73 63 72 65 65 6e 20  74 6f 20 73 63 72 6f 6c  | screen to scrol|
000021a0  6c 20 62 65 74 77 65 65  6e 20 63 6c 65 61 72 69  |l between cleari|
000021b0  6e 67 20 69 74 2c 20 61  6e 64 20 73 61 76 69 6e  |ng it, and savin|
000021c0  67 0d 74 68 65 20 63 6f  6e 74 65 6e 74 73 20 6f  |g.the contents o|
000021d0  66 20 73 63 72 65 65 6e  20 6d 65 6d 6f 72 79 20  |f screen memory |
000021e0  74 6f 20 64 69 73 63 2e  0d 0d 2d 20 54 68 65 20  |to disc...- The |
000021f0  66 69 6c 65 73 20 63 72  65 61 74 65 64 20 77 68  |files created wh|
00002200  65 6e 20 79 6f 75 20 73  61 76 65 20 74 68 65 20  |en you save the |
00002210  63 6f 6e 74 65 6e 74 73  20 6f 66 20 73 63 72 65  |contents of scre|
00002220  65 6e 20 6d 65 6d 6f 72  79 20 74 6f 20 64 69 73  |en memory to dis|
00002230  6b 0d 61 72 65 20 66 61  69 72 6c 79 20 6c 61 72  |k.are fairly lar|
00002240  67 65 20 2d 20 73 6f 20  6c 61 72 67 65 2c 20 69  |ge - so large, i|
00002250  6e 20 66 61 63 74 2c 20  74 68 61 74 20 79 6f 75  |n fact, that you|
00002260  20 63 61 6e 20 6f 66 74  65 6e 20 6f 6e 6c 79 20  | can often only |
00002270  66 69 74 20 61 72 6f 75  6e 64 0d 31 35 20 73 75  |fit around.15 su|
00002280  63 68 20 66 69 6c 65 73  20 6f 6e 74 6f 20 65 61  |ch files onto ea|
00002290  63 68 20 64 69 73 6b 20  74 68 61 74 20 79 6f 75  |ch disk that you|
000022a0  20 75 73 65 20 28 74 68  65 20 65 78 61 63 74 20  | use (the exact |
000022b0  6e 75 6d 62 65 72 20 64  65 70 65 6e 64 73 20 75  |number depends u|
000022c0  70 6f 6e 0d 77 68 61 74  20 6d 6f 64 65 73 20 74  |pon.what modes t|
000022d0  68 65 20 69 6d 61 67 65  73 20 61 72 65 20 69 6e  |he images are in|
000022e0  29 2e 20 54 68 65 72 65  66 6f 72 65 20 74 68 69  |). Therefore thi|
000022f0  73 20 74 65 63 68 6e 69  71 75 65 20 69 73 20 6e  |s technique is n|
00002300  6f 74 20 66 65 61 73 61  62 6c 65 0d 66 6f 72 20  |ot feasable.for |
00002310  61 20 6c 61 72 67 65 20  6e 75 6d 62 65 72 20 6f  |a large number o|
00002320  66 20 69 6d 61 67 65 73  2e 20 45 61 63 68 20 73  |f images. Each s|
00002330  63 72 65 65 6e 20 69 6e  20 61 20 67 61 6d 65 20  |creen in a game |
00002340  6c 69 6b 65 20 53 68 69  70 77 72 65 63 6b 65 64  |like Shipwrecked|
00002350  20 63 61 6e 6e 6f 74 0d  62 65 20 73 74 6f 72 65  | cannot.be store|
00002360  64 20 69 6e 20 74 68 69  73 20 77 61 79 20 2d 20  |d in this way - |
00002370  69 66 20 49 20 68 61 64  20 73 74 6f 72 65 64 20  |if I had stored |
00002380  65 76 65 72 79 20 73 63  72 65 65 6e 20 6f 66 20  |every screen of |
00002390  74 68 65 20 67 61 6d 65  20 6c 69 6b 65 20 74 68  |the game like th|
000023a0  69 73 2c 0d 69 74 20 77  6f 75 6c 64 20 68 61 76  |is,.it would hav|
000023b0  65 20 72 65 71 75 69 72  65 64 20 73 69 78 20 66  |e required six f|
000023c0  6c 6f 70 70 79 20 64 69  73 6b 73 20 74 6f 20 73  |loppy disks to s|
000023d0  74 6f 72 65 20 74 68 65  20 64 61 74 61 20 66 6f  |tore the data fo|
000023e0  72 20 74 68 65 20 67 61  6d 65 21 0d 54 68 69 73  |r the game!.This|
000023f0  20 6d 65 61 6e 73 20 74  68 61 74 20 73 61 76 65  | means that save|
00002400  64 20 73 63 72 65 65 6e  73 20 6d 75 73 74 20 62  |d screens must b|
00002410  65 20 72 65 73 65 72 76  65 64 20 66 6f 72 20 74  |e reserved for t|
00002420  68 65 20 70 75 72 70 6f  73 65 73 20 6f 66 20 74  |he purposes of t|
00002430  69 74 6c 65 0d 73 63 72  65 65 6e 73 20 6f 6e 6c  |itle.screens onl|
00002440  79 2e 0d 0d 45 61 72 6c  69 65 72 20 69 6e 20 74  |y...Earlier in t|
00002450  68 65 20 61 72 74 69 63  6c 65 2c 20 49 20 6d 65  |he article, I me|
00002460  6e 74 69 6f 6e 65 64 20  73 65 76 65 72 61 6c 20  |ntioned several |
00002470  65 78 61 6d 70 6c 65 73  20 6f 66 20 73 63 72 65  |examples of scre|
00002480  65 6e 73 20 77 68 69 63  68 20 49 20 68 61 76 65  |ens which I have|
00002490  0d 64 6f 6e 65 20 66 6f  72 20 45 55 47 20 75 73  |.done for EUG us|
000024a0  69 6e 67 20 73 61 76 65  64 20 73 63 72 65 65 6e  |ing saved screen|
000024b0  73 20 75 73 69 6e 67 20  74 68 69 73 20 74 65 63  |s using this tec|
000024c0  68 6e 69 71 75 65 2e 20  54 68 65 73 65 20 69 6e  |hnique. These in|
000024d0  63 6c 75 64 65 64 20 74  68 65 0d 74 69 74 6c 65  |cluded the.title|
000024e0  20 73 63 72 65 65 6e 73  20 66 6f 72 20 62 6f 74  | screens for bot|
000024f0  68 20 53 68 69 70 77 72  65 63 6b 65 64 20 67 61  |h Shipwrecked ga|
00002500  6d 65 73 2c 20 61 6e 64  20 61 6c 73 6f 20 73 65  |mes, and also se|
00002510  76 65 72 61 6c 20 45 55  47 20 74 69 74 6c 65 0d  |veral EUG title.|
00002520  73 63 72 65 65 6e 73 2e  20 59 6f 75 20 6d 61 79  |screens. You may|
00002530  20 68 61 76 65 20 6e 6f  74 69 63 65 64 20 74 68  | have noticed th|
00002540  61 74 20 74 68 65 73 65  20 77 65 72 65 20 61 63  |at these were ac|
00002550  74 75 61 6c 6c 79 20 61  6e 69 6d 61 74 65 64 20  |tually animated |
00002560  28 73 65 65 20 74 68 65  0d 73 74 61 72 66 69 65  |(see the.starfie|
00002570  6c 64 20 69 6e 20 4a 75  70 69 74 65 72 20 33 20  |ld in Jupiter 3 |
00002580  61 6e 64 20 74 68 65 20  45 55 47 20 33 35 20 74  |and the EUG 35 t|
00002590  69 74 6c 65 29 2e 20 54  68 69 73 20 77 61 73 20  |itle). This was |
000025a0  61 63 68 69 65 76 65 64  20 62 79 20 70 61 6c 65  |achieved by pale|
000025b0  74 74 65 0d 73 77 69 74  63 68 69 6e 67 20 61 73  |tte.switching as|
000025c0  20 75 73 65 64 20 69 6e  20 74 68 65 20 70 72 65  | used in the pre|
000025d0  76 69 6f 75 73 20 61 72  74 69 63 6c 65 2e 20 49  |vious article. I|
000025e0  66 20 79 6f 75 20 6c 6f  6f 6b 20 61 67 61 69 6e  |f you look again|
000025f0  20 61 74 20 74 68 65 0d  70 72 6f 67 72 61 6d 6d  | at the.programm|
00002600  69 6e 67 20 74 65 63 68  6e 69 71 75 65 20 64 65  |ing technique de|
00002610  6d 6f 6e 73 74 72 61 74  69 6f 6e 20 66 72 6f 6d  |monstration from|
00002620  20 74 68 69 73 20 61 72  74 69 63 6c 65 20 28 6f  | this article (o|
00002630  6e 20 45 55 47 20 33 36  29 2c 20 61 6e 64 0d 73  |n EUG 36), and.s|
00002640  65 6c 65 63 74 20 6f 70  74 69 6f 6e 20 35 2c 20  |elect option 5, |
00002650  74 68 65 20 73 61 6d 65  20 65 66 66 65 63 74 20  |the same effect |
00002660  77 69 6c 6c 20 61 70 70  65 61 72 20 6f 6e 20 79  |will appear on y|
00002670  6f 75 72 20 73 63 72 65  65 6e 2e 20 54 68 65 20  |our screen. The |
00002680  73 61 6d 65 0d 70 72 69  6e 63 69 70 61 6c 20 77  |same.principal w|
00002690  61 73 20 61 70 70 6c 69  65 64 20 69 6e 20 62 6f  |as applied in bo|
000026a0  74 68 20 61 6e 69 6d 61  74 65 64 20 73 63 72 65  |th animated scre|
000026b0  65 6e 73 20 6d 65 6e 74  69 6f 6e 65 64 20 61 62  |ens mentioned ab|
000026c0  6f 76 65 20 2d 20 74 68  65 20 6f 6e 6c 79 0d 64  |ove - the only.d|
000026d0  69 66 66 65 72 65 6e 63  65 20 69 73 20 74 68 61  |ifference is tha|
000026e0  74 20 69 6e 20 74 68 65  73 65 20 74 69 74 6c 65  |t in these title|
000026f0  20 73 63 72 65 65 6e 73  20 74 68 65 20 70 61 74  | screens the pat|
00002700  74 65 72 6e 20 6f 6e 20  73 63 72 65 65 6e 20 77  |tern on screen w|
00002710  68 69 63 68 20 69 73 0d  62 65 69 6e 67 20 70 61  |hich is.being pa|
00002720  6c 65 74 74 65 20 73 77  69 74 63 68 65 64 20 69  |lette switched i|
00002730  73 20 72 61 74 68 65 72  20 6d 6f 72 65 20 63 6f  |s rather more co|
00002740  6d 70 6c 65 78 2e 20 53  68 69 70 77 72 65 63 6b  |mplex. Shipwreck|
00002750  27 73 20 74 69 74 6c 65  20 73 63 72 65 65 6e 0d  |'s title screen.|
00002760  28 77 69 74 68 20 74 68  65 20 61 6e 69 6d 61 74  |(with the animat|
00002770  65 64 20 77 61 74 65 72  20 73 63 65 6e 65 29 20  |ed water scene) |
00002780  77 61 73 20 61 6c 73 6f  20 63 72 65 61 74 65 64  |was also created|
00002790  20 69 6e 20 74 68 69 73  20 77 61 79 2c 20 65 78  | in this way, ex|
000027a0  63 65 70 74 20 74 68 61  74 0d 66 6f 72 20 74 68  |cept that.for th|
000027b0  69 73 20 73 63 72 65 65  6e 20 74 68 65 72 65 20  |is screen there |
000027c0  77 61 73 20 61 6c 73 6f  20 61 20 6d 61 63 68 69  |was also a machi|
000027d0  6e 65 20 63 6f 64 65 20  70 72 6f 67 72 61 6d 20  |ne code program |
000027e0  61 6c 74 65 72 69 6e 67  20 74 68 65 20 63 6f 6e  |altering the con|
000027f0  74 65 6e 74 73 0d 6f 66  20 73 63 72 65 65 6e 20  |tents.of screen |
00002800  6d 65 6d 6f 72 79 20 61  73 20 77 65 6c 6c 2c 20  |memory as well, |
00002810  74 6f 20 65 6e 68 61 6e  63 65 20 74 68 65 20 65  |to enhance the e|
00002820  66 66 65 63 74 2e 0d 0d  53 6f 2c 20 77 65 20 68  |ffect...So, we h|
00002830  61 76 65 20 61 20 74 65  63 68 6e 69 71 75 65 20  |ave a technique |
00002840  77 68 69 63 68 20 61 6c  6c 6f 77 73 20 75 73 20  |which allows us |
00002850  74 6f 20 73 74 6f 72 65  20 61 20 73 6d 61 6c 6c  |to store a small|
00002860  20 6e 75 6d 62 65 72 20  6f 66 20 76 65 72 79 0d  | number of very.|
00002870  64 65 74 61 69 6c 65 64  20 73 63 72 65 65 6e 73  |detailed screens|
00002880  20 6f 6e 20 66 6c 6f 70  70 79 2c 20 61 6e 64 20  | on floppy, and |
00002890  72 65 63 61 6c 6c 20 74  68 65 6e 20 61 74 20 76  |recall then at v|
000028a0  65 72 79 20 67 72 65 61  74 20 73 70 65 65 64 2e  |ery great speed.|
000028b0  20 42 75 74 20 77 68 61  74 20 69 66 0d 77 65 20  | But what if.we |
000028c0  77 61 6e 74 20 74 6f 20  75 73 65 20 74 68 69 73  |want to use this|
000028d0  20 6d 65 74 68 6f 64 20  66 6f 72 20 61 20 6c 61  | method for a la|
000028e0  72 67 65 20 6e 75 6d 62  65 72 20 6f 66 20 73 63  |rge number of sc|
000028f0  72 65 65 6e 73 3f 20 41  6e 64 20 77 68 61 74 20  |reens? And what |
00002900  69 66 20 77 65 0d 77 61  6e 74 20 61 20 73 69 74  |if we.want a sit|
00002910  75 61 74 69 6f 6e 20 6c  69 6b 65 20 61 20 67 61  |uation like a ga|
00002920  6d 65 2c 20 77 68 65 72  65 20 74 68 65 20 75 73  |me, where the us|
00002930  65 72 20 63 61 6e 20 6d  6f 76 65 20 73 70 72 69  |er can move spri|
00002940  74 65 73 20 6f 6e 20 74  68 65 20 73 63 72 65 65  |tes on the scree|
00002950  6e 0d 61 72 6f 75 6e 64  2e 20 54 68 69 73 20 63  |n.around. This c|
00002960  61 6e 20 61 6c 73 6f 20  62 65 20 64 6f 6e 65 20  |an also be done |
00002970  62 79 20 61 6c 74 65 72  69 6e 67 20 74 68 65 20  |by altering the |
00002980  76 61 6c 75 65 73 20 69  6e 20 73 63 72 65 65 6e  |values in screen|
00002990  20 6d 65 6d 6f 72 79 0d  64 69 72 65 63 74 6c 79  | memory.directly|
000029a0  2c 20 62 75 74 20 69 6e  20 61 20 64 69 66 66 65  |, but in a diffe|
000029b0  72 65 6e 74 20 77 61 79  2e 2e 2e 0d 0d 32 2e 20  |rent way.....2. |
000029c0  45 64 69 74 69 6e 67 20  73 63 72 65 65 6e 20 6d  |Editing screen m|
000029d0  65 6d 6f 72 79 0d 0d 54  68 65 20 62 61 73 69 63  |emory..The basic|
000029e0  20 69 64 65 61 20 69 73  20 74 68 69 73 3a 20 69  | idea is this: i|
000029f0  6e 20 61 6e 79 20 70 72  6f 67 72 61 6d 2c 20 79  |n any program, y|
00002a00  6f 75 20 6f 6e 6c 79 20  75 73 75 61 6c 6c 79 20  |ou only usually |
00002a10  72 65 71 75 69 72 65 20  61 20 63 65 72 74 61 69  |require a certai|
00002a20  6e 2c 0d 73 6d 61 6c 6c  20 6e 75 6d 62 65 72 20  |n,.small number |
00002a30  6f 66 20 6c 69 74 74 6c  65 20 27 62 6c 6f 63 6b  |of little 'block|
00002a40  73 27 20 74 6f 20 6d 61  6b 65 20 75 70 20 61 20  |s' to make up a |
00002a50  77 68 6f 6c 65 20 70 69  63 74 75 72 65 2e 20 49  |whole picture. I|
00002a60  6e 20 61 20 77 6f 72 64  0d 70 72 6f 63 65 73 73  |n a word.process|
00002a70  6f 72 2c 20 66 6f 72 20  65 78 61 6d 70 6c 65 2c  |or, for example,|
00002a80  20 79 6f 75 20 6f 6e 6c  79 20 6e 65 65 64 20 74  | you only need t|
00002a90  68 65 20 6c 65 74 74 65  72 73 20 6f 66 20 74 68  |he letters of th|
00002aa0  65 20 61 6c 70 68 61 62  65 74 20 74 6f 20 61 70  |e alphabet to ap|
00002ab0  70 65 61 72 0d 6f 6e 20  74 68 65 20 73 63 72 65  |pear.on the scre|
00002ac0  65 6e 2e 20 54 68 65 73  65 20 6c 65 74 74 65 72  |en. These letter|
00002ad0  73 20 61 72 65 20 73 6d  61 6c 6c 20 62 6c 6f 63  |s are small bloc|
00002ae0  6b 73 20 6f 66 20 67 72  61 70 68 69 63 73 20 77  |ks of graphics w|
00002af0  68 69 63 68 20 61 70 70  65 61 72 20 6f 6e 0d 79  |hich appear on.y|
00002b00  6f 75 72 20 73 63 72 65  65 6e 20 28 63 61 6c 6c  |our screen (call|
00002b10  65 64 20 63 68 61 72 61  63 74 65 72 73 29 2e 20  |ed characters). |
00002b20  42 65 63 61 75 73 65 20  6f 6e 6c 79 20 74 68 65  |Because only the|
00002b30  73 65 20 32 36 20 62 6c  6f 63 6b 73 20 61 72 65  |se 26 blocks are|
00002b40  20 72 65 71 75 69 72 65  64 2c 0d 74 68 65 20 77  | required,.the w|
00002b50  6f 72 64 20 70 72 6f 63  65 73 73 6f 72 20 64 6f  |ord processor do|
00002b60  65 73 20 6e 6f 74 20 6e  65 65 64 20 74 6f 20 73  |es not need to s|
00002b70  74 6f 72 65 20 65 76 65  72 79 20 6c 65 74 74 65  |tore every lette|
00002b80  72 20 61 73 20 61 6c 6c  20 6f 66 20 74 68 65 20  |r as all of the |
00002b90  70 69 78 65 6c 73 0d 77  68 69 63 68 20 6d 61 6b  |pixels.which mak|
00002ba0  65 20 69 74 20 75 70 20  28 69 65 2e 20 61 73 20  |e it up (ie. as |
00002bb0  61 20 62 69 74 6d 61 70  29 2c 20 62 75 74 20 6a  |a bitmap), but j|
00002bc0  75 73 74 20 61 73 20 61  20 63 6f 64 65 20 66 6f  |ust as a code fo|
00002bd0  72 20 74 68 61 74 20 70  61 72 74 69 63 75 6c 61  |r that particula|
00002be0  72 0d 6c 65 74 74 65 72  2e 20 57 68 65 6e 20 74  |r.letter. When t|
00002bf0  68 65 20 77 6f 72 64 20  70 72 6f 63 65 73 73 6f  |he word processo|
00002c00  72 20 77 61 6e 74 73 20  74 6f 20 64 69 73 70 6c  |r wants to displ|
00002c10  61 79 20 61 20 6c 65 74  74 65 72 20 6f 6e 20 74  |ay a letter on t|
00002c20  68 65 20 73 63 72 65 65  6e 2c 20 69 74 0d 6c 6f  |he screen, it.lo|
00002c30  6f 6b 73 20 75 70 20 74  68 65 20 6c 65 74 74 65  |oks up the lette|
00002c40  72 20 63 6f 64 65 2c 20  61 6e 64 20 74 68 65 6e  |r code, and then|
00002c50  20 63 6f 70 69 65 73 20  74 68 65 20 67 72 61 70  | copies the grap|
00002c60  68 69 63 20 64 61 74 61  20 66 6f 72 20 77 68 61  |hic data for wha|
00002c70  74 20 74 68 61 74 0d 6c  65 74 74 65 72 20 6c 6f  |t that.letter lo|
00002c80  6f 6b 73 20 6c 69 6b 65  20 6f 6e 74 6f 20 74 68  |oks like onto th|
00002c90  65 20 73 63 72 65 65 6e  2e 20 54 68 65 72 65 66  |e screen. Theref|
00002ca0  6f 72 65 2c 20 74 68 65  20 67 72 61 70 68 69 63  |ore, the graphic|
00002cb0  20 64 61 74 61 20 66 6f  72 20 77 68 61 74 0d 63  | data for what.c|
00002cc0  6f 6c 6f 75 72 20 61 6c  6c 20 6f 66 20 74 68 65  |olour all of the|
00002cd0  20 70 69 78 65 6c 73 20  73 68 6f 75 6c 64 20 62  | pixels should b|
00002ce0  65 20 66 6f 72 20 74 68  61 74 20 70 61 72 74 69  |e for that parti|
00002cf0  63 75 6c 61 72 20 6c 65  74 74 65 72 20 28 77 68  |cular letter (wh|
00002d00  69 63 68 20 6d 69 67 68  74 0d 74 61 6b 65 20 73  |ich might.take s|
00002d10  65 76 65 72 61 6c 20 62  79 74 65 73 29 20 6e 65  |everal bytes) ne|
00002d20  65 64 20 6f 6e 6c 79 20  62 65 20 73 74 6f 72 65  |ed only be store|
00002d30  64 20 6f 6e 63 65 2c 20  61 6e 64 20 74 68 61 74  |d once, and that|
00002d40  20 6c 65 74 74 65 72 20  63 61 6e 20 62 65 20 73  | letter can be s|
00002d50  74 6f 72 65 64 0d 69 6e  20 79 6f 75 72 20 73 63  |tored.in your sc|
00002d60  72 69 70 74 20 69 6e 20  6a 75 73 74 20 6f 6e 65  |ript in just one|
00002d70  20 62 79 74 65 2c 20 66  6f 72 20 74 68 65 20 6c  | byte, for the l|
00002d80  65 74 74 65 72 20 63 6f  64 65 2e 20 54 68 75 73  |etter code. Thus|
00002d90  2c 20 74 68 65 20 6d 65  6d 6f 72 79 0d 74 61 6b  |, the memory.tak|
00002da0  65 6e 20 75 70 20 62 79  20 79 6f 75 72 20 73 63  |en up by your sc|
00002db0  72 69 70 74 20 69 73 20  72 65 64 75 63 65 64 20  |ript is reduced |
00002dc0  64 72 61 6d 61 74 69 63  61 6c 6c 79 2e 0d 0d 54  |dramatically...T|
00002dd0  68 65 20 73 61 6d 65 20  70 72 69 6e 63 69 70 61  |he same principa|
00002de0  6c 20 63 61 6e 20 62 65  20 75 73 65 64 20 69 6e  |l can be used in|
00002df0  20 67 72 61 70 68 69 63  73 2e 20 4c 6f 6f 6b 20  | graphics. Look |
00002e00  61 74 20 74 77 6f 20 62  72 69 63 6b 20 77 61 6c  |at two brick wal|
00002e10  6c 73 20 69 6e 0d 61 6e  20 61 72 63 61 64 65 20  |ls in.an arcade |
00002e20  61 64 76 65 6e 74 75 72  65 20 73 75 63 68 20 61  |adventure such a|
00002e30  73 20 53 68 69 70 77 72  65 63 6b 65 64 20 2d 20  |s Shipwrecked - |
00002e40  63 61 6e 20 79 6f 75 20  73 65 65 20 74 68 65 20  |can you see the |
00002e50  64 69 66 66 65 72 65 6e  63 65 0d 62 65 74 77 65  |difference.betwe|
00002e60  65 6e 20 74 68 65 6d 3f  20 49 66 20 74 68 65 79  |en them? If they|
00002e70  20 61 72 65 20 74 68 65  20 73 61 6d 65 2c 20 73  | are the same, s|
00002e80  75 72 65 6c 79 20 79 6f  75 20 6f 6e 6c 79 20 6e  |urely you only n|
00002e90  65 65 64 20 74 6f 20 73  74 6f 72 65 20 74 68 65  |eed to store the|
00002ea0  0d 67 72 61 70 68 69 63  20 64 61 74 61 20 66 6f  |.graphic data fo|
00002eb0  72 20 61 20 62 72 69 63  6b 20 77 61 6c 6c 20 6f  |r a brick wall o|
00002ec0  6e 63 65 2c 20 61 6e 64  20 74 68 65 6e 20 63 6f  |nce, and then co|
00002ed0  70 79 20 69 74 20 6f 6e  74 6f 20 74 68 65 20 73  |py it onto the s|
00002ee0  63 72 65 65 6e 0d 77 68  65 6e 65 76 65 72 20 79  |creen.whenever y|
00002ef0  6f 75 20 77 61 6e 74 20  61 20 62 72 69 63 6b 20  |ou want a brick |
00002f00  77 61 6c 6c 2e 20 49 6e  20 53 68 69 70 77 72 65  |wall. In Shipwre|
00002f10  63 6b 65 64 2c 20 66 6f  72 20 65 78 61 6d 70 6c  |cked, for exampl|
00002f20  65 2c 20 74 68 65 20 67  72 61 70 68 69 63 0d 64  |e, the graphic.d|
00002f30  61 74 61 20 74 6f 20 64  65 73 63 72 69 62 65 20  |ata to describe |
00002f40  77 68 61 74 20 61 20 62  72 69 63 6b 20 77 61 6c  |what a brick wal|
00002f50  6c 20 6c 6f 6f 6b 73 20  6c 69 6b 65 20 74 6f 6f  |l looks like too|
00002f60  6b 20 31 32 38 20 62 79  74 65 73 2e 20 59 65 74  |k 128 bytes. Yet|
00002f70  20 65 76 65 72 79 0d 74  69 6d 65 20 49 20 77 61  | every.time I wa|
00002f80  6e 74 65 64 20 74 68 61  74 20 62 72 69 63 6b 20  |nted that brick |
00002f90  77 61 6c 6c 20 28 77 68  69 63 68 20 77 61 73 20  |wall (which was |
00002fa0  6f 76 65 72 20 61 20 68  75 6e 64 72 65 64 20 74  |over a hundred t|
00002fb0  69 6d 65 73 29 20 49 20  63 6f 75 6c 64 0d 73 69  |imes) I could.si|
00002fc0  6d 70 6c 79 20 75 73 65  20 6f 6e 65 20 62 79 74  |mply use one byt|
00002fd0  65 20 74 6f 20 73 61 79  20 22 50 75 74 20 61 20  |e to say "Put a |
00002fe0  62 72 69 63 6b 20 77 61  6c 6c 20 68 65 72 65 21  |brick wall here!|
00002ff0  22 2e 0d 0d 54 68 65 20  65 61 73 69 65 73 74 20  |"...The easiest |
00003000  77 61 79 20 74 6f 20 75  73 65 20 74 68 69 73 20  |way to use this |
00003010  62 6c 6f 63 6b 20 69 64  65 61 2c 20 61 73 20 79  |block idea, as y|
00003020  6f 75 20 6d 61 79 20 61  6c 72 65 61 64 79 20 68  |ou may already h|
00003030  61 76 65 20 72 65 61 6c  69 73 65 64 2c 0d 69 73  |ave realised,.is|
00003040  20 75 73 69 6e 67 20 75  73 65 72 20 64 65 66 69  | using user defi|
00003050  6e 65 64 20 63 68 61 72  61 63 74 65 72 73 2e 20  |ned characters. |
00003060  59 6f 75 20 72 65 64 65  66 69 6e 65 20 74 68 65  |You redefine the|
00003070  20 6c 65 74 74 65 72 73  20 6f 66 20 74 68 65 20  | letters of the |
00003080  61 6c 70 68 61 62 65 74  0d 61 73 20 64 69 66 66  |alphabet.as diff|
00003090  65 72 65 6e 74 20 70 69  63 74 75 72 65 73 2c 20  |erent pictures, |
000030a0  61 6e 64 20 74 68 65 6e  20 75 73 65 20 74 68 65  |and then use the|
000030b0  20 73 74 61 6e 64 61 72  64 20 42 41 53 49 43 20  | standard BASIC |
000030c0  50 52 49 4e 54 20 63 6f  6d 6d 61 6e 64 20 74 6f  |PRINT command to|
000030d0  0d 6f 75 74 70 75 74 20  74 68 65 73 65 20 70 69  |.output these pi|
000030e0  63 74 75 72 65 73 20 74  6f 20 74 68 65 20 73 63  |ctures to the sc|
000030f0  72 65 65 6e 2c 20 61 73  20 61 6e 64 20 77 68 65  |reen, as and whe|
00003100  6e 20 74 68 65 79 20 61  72 65 20 72 65 71 75 69  |n they are requi|
00003110  72 65 64 2e 20 42 75 74  2c 0d 61 73 20 77 65 20  |red. But,.as we |
00003120  61 6c 72 65 61 64 79 20  72 65 61 6c 69 73 65 64  |already realised|
00003130  20 69 6e 20 74 68 65 20  6c 61 73 74 20 61 72 74  | in the last art|
00003140  69 63 6c 65 2c 20 74 68  69 73 20 6f 6e 6c 79 20  |icle, this only |
00003150  61 6c 6c 6f 77 73 20 79  6f 75 20 74 6f 20 75 73  |allows you to us|
00003160  65 0d 6f 6e 65 20 63 6f  6c 6f 75 72 20 69 6e 20  |e.one colour in |
00003170  65 61 63 68 20 63 68 61  72 61 63 74 65 72 2e 20  |each character. |
00003180  45 76 65 6e 20 73 6f 2c  20 74 68 69 73 20 69 73  |Even so, this is|
00003190  20 61 20 72 65 61 73 6f  6e 61 62 6c 65 20 74 65  | a reasonable te|
000031a0  63 68 6e 69 71 75 65 20  69 66 0d 79 6f 75 20 64  |chnique if.you d|
000031b0  6f 6e 27 74 20 6d 69 6e  64 20 74 68 65 20 6c 61  |on't mind the la|
000031c0  63 6b 20 6f 66 20 63 6f  6c 6f 75 72 2e 20 4d 61  |ck of colour. Ma|
000031d0  6e 79 20 63 6f 6d 6d 65  72 63 69 61 6c 20 67 61  |ny commercial ga|
000031e0  6d 65 73 20 61 63 74 75  61 6c 6c 79 20 6e 65 76  |mes actually nev|
000031f0  65 72 0d 61 64 64 72 65  73 73 65 64 20 74 68 69  |er.addressed thi|
00003200  73 20 70 72 6f 62 6c 65  6d 2c 20 61 6e 64 20 68  |s problem, and h|
00003210  61 64 20 67 72 61 70 68  69 63 73 20 77 68 69 63  |ad graphics whic|
00003220  68 20 6c 61 63 6b 65 64  20 63 6f 6c 6f 75 72 20  |h lacked colour |
00003230  73 6f 6d 65 77 68 61 74  2e 0d 45 76 65 6e 20 44  |somewhat..Even D|
00003240  69 7a 7a 79 20 28 66 6f  72 20 74 68 6f 73 65 20  |izzy (for those |
00003250  77 68 6f 20 68 61 76 65  20 6e 65 76 65 72 20 68  |who have never h|
00003260  65 61 72 64 20 6f 66 20  69 74 2c 20 61 20 67 72  |eard of it, a gr|
00003270  65 61 74 20 61 72 63 61  64 65 20 61 64 76 65 6e  |eat arcade adven|
00003280  74 75 72 65 0d 6f 66 20  74 68 65 20 31 39 38 30  |ture.of the 1980|
00003290  73 2c 20 77 68 69 63 68  20 63 61 75 73 65 64 20  |s, which caused |
000032a0  71 75 69 74 65 20 61 20  63 75 6c 74 20 66 6f 6c  |quite a cult fol|
000032b0  6c 6f 77 69 6e 67 20 61  74 20 74 68 65 20 74 69  |lowing at the ti|
000032c0  6d 65 20 6f 6e 20 74 68  65 0d 53 70 65 63 74 72  |me on the.Spectr|
000032d0  75 6d 20 61 6e 64 20 43  36 34 2c 20 62 75 74 20  |um and C64, but |
000032e0  6e 65 76 65 72 20 71 75  69 74 65 20 72 65 61 63  |never quite reac|
000032f0  68 65 64 20 74 68 65 20  45 6c 6b 29 20 64 69 64  |hed the Elk) did|
00003300  20 6e 6f 74 20 68 61 76  65 20 6d 6f 72 65 20 74  | not have more t|
00003310  68 61 6e 0d 6f 6e 65 20  63 6f 6c 6f 75 72 20 28  |han.one colour (|
00003320  6f 74 68 65 72 20 74 68  61 6e 20 62 6c 61 63 6b  |other than black|
00003330  29 20 70 65 72 20 62 6c  6f 63 6b 2e 20 44 69 66  |) per block. Dif|
00003340  66 65 72 65 6e 74 20 62  6c 6f 63 6b 73 20 77 65  |ferent blocks we|
00003350  72 65 2c 20 68 6f 77 65  76 65 72 2c 0d 64 69 66  |re, however,.dif|
00003360  66 65 72 65 6e 74 20 63  6f 6c 6f 75 72 73 20 2d  |ferent colours -|
00003370  20 74 72 65 65 73 20 77  65 72 65 20 67 72 65 65  | trees were gree|
00003380  6e 20 61 6e 64 20 74 68  65 20 67 72 6f 75 6e 64  |n and the ground|
00003390  20 77 61 73 20 72 65 64  20 2d 20 62 75 74 20 74  | was red - but t|
000033a0  68 65 72 65 0d 77 61 73  20 6e 65 76 65 72 20 61  |here.was never a|
000033b0  6e 79 20 6f 76 65 72 6c  61 70 20 62 65 74 77 65  |ny overlap betwe|
000033c0  65 6e 20 74 68 65 20 74  77 6f 20 63 6f 6c 6f 75  |en the two colou|
000033d0  72 20 61 72 65 61 73 2e  0d 0d 54 68 65 72 65 20  |r areas...There |
000033e0  69 73 2c 20 68 6f 77 65  76 65 72 2c 20 61 20 77  |is, however, a w|
000033f0  61 79 20 6f 66 20 63 72  65 61 74 69 6e 67 20 61  |ay of creating a|
00003400  6e 20 65 66 66 65 63 74  20 6a 75 73 74 20 6c 69  |n effect just li|
00003410  6b 65 20 75 73 65 72 20  64 65 66 69 6e 65 64 0d  |ke user defined.|
00003420  63 68 61 72 61 63 74 65  72 73 2c 20 62 75 74 20  |characters, but |
00003430  69 6e 20 66 75 6c 6c 20  63 6f 6c 6f 75 72 2c 20  |in full colour, |
00003440  61 6e 64 20 74 68 65 20  70 72 69 6e 63 69 70 61  |and the principa|
00003450  6c 20 69 73 20 76 65 72  79 20 73 69 6d 69 6c 61  |l is very simila|
00003460  72 20 74 6f 0d 74 68 61  74 20 75 73 65 64 20 62  |r to.that used b|
00003470  65 66 6f 72 65 20 69 6e  20 73 61 76 69 6e 67 20  |efore in saving |
00003480  73 63 72 65 65 6e 20 6d  65 6d 6f 72 79 2e 20 42  |screen memory. B|
00003490  61 73 69 63 61 6c 6c 79  2c 20 79 6f 75 20 64 65  |asically, you de|
000034a0  73 69 67 6e 20 79 6f 75  20 73 6d 61 6c 6c 0d 62  |sign you small.b|
000034b0  6c 6f 63 6b 20 6f 6e 20  74 68 65 20 73 63 72 65  |lock on the scre|
000034c0  65 6e 2c 20 75 73 69 6e  67 20 77 68 61 74 65 76  |en, using whatev|
000034d0  65 72 20 74 65 63 68 6e  69 71 75 65 20 79 6f 75  |er technique you|
000034e0  20 6c 69 6b 65 20 74 6f  20 64 72 61 77 20 69 74  | like to draw it|
000034f0  2c 20 61 6e 64 20 74 68  65 6e 0d 73 61 76 65 20  |, and then.save |
00003500  74 68 65 20 73 6d 61 6c  6c 20 70 61 72 74 20 6f  |the small part o|
00003510  66 20 73 63 72 65 65 6e  20 6d 65 6d 6f 72 79 20  |f screen memory |
00003520  77 68 69 63 68 20 63 6f  6e 74 61 69 6e 73 20 79  |which contains y|
00003530  6f 75 72 20 64 65 73 69  67 6e 2e 20 54 68 69 73  |our design. This|
00003540  20 74 69 6d 65 2c 0d 68  6f 77 65 76 65 72 2c 20  | time,.however, |
00003550  79 6f 75 20 77 69 6c 6c  20 6e 6f 74 20 73 61 76  |you will not sav|
00003560  65 20 69 74 20 74 6f 20  66 6c 6f 70 70 79 20 64  |e it to floppy d|
00003570  69 73 63 2c 20 62 75 74  20 74 6f 20 61 6e 6f 74  |isc, but to anot|
00003580  68 65 72 20 61 72 65 61  20 6f 66 20 6d 65 6d 6f  |her area of memo|
00003590  72 79 2e 0d 59 6f 75 20  63 61 6e 20 74 68 65 6e  |ry..You can then|
000035a0  20 63 6f 70 79 20 74 68  69 73 20 62 6c 6f 63 6b  | copy this block|
000035b0  20 62 61 63 6b 20 74 6f  20 73 63 72 65 65 6e 20  | back to screen |
000035c0  6d 65 6d 6f 72 79 20 77  68 65 6e 65 76 65 72 20  |memory whenever |
000035d0  61 6e 64 20 77 68 65 72  65 76 65 72 20 79 6f 75  |and wherever you|
000035e0  0d 77 61 6e 74 20 69 74  2e 20 49 66 20 79 6f 75  |.want it. If you|
000035f0  20 77 61 6e 74 20 69 74  2c 20 73 61 79 2c 20 69  | want it, say, i|
00003600  6e 20 74 68 65 20 66 69  66 74 68 20 72 6f 77 20  |n the fifth row |
00003610  64 6f 77 6e 2c 20 61 6e  64 20 74 77 65 6c 76 65  |down, and twelve|
00003620  20 63 68 61 72 61 63 74  65 72 73 0d 61 6c 6f 6e  | characters.alon|
00003630  67 2c 20 79 6f 75 20 63  61 6e 20 63 61 6c 63 75  |g, you can calcu|
00003640  6c 61 74 65 20 77 68 65  72 65 20 61 62 6f 75 74  |late where about|
00003650  73 20 74 68 69 73 20 63  6f 72 72 65 73 70 6f 6e  |s this correspon|
00003660  64 73 20 74 6f 20 69 6e  20 73 63 72 65 65 6e 20  |ds to in screen |
00003670  6d 65 6d 6f 72 79 2c 0d  61 6e 64 20 63 6f 70 79  |memory,.and copy|
00003680  20 74 68 65 20 62 6c 6f  63 6b 20 74 6f 20 74 68  | the block to th|
00003690  69 73 20 6c 6f 63 61 74  69 6f 6e 2e 20 41 73 20  |is location. As |
000036a0  74 68 65 20 62 6c 6f 63  6b 20 69 73 20 73 74 6f  |the block is sto|
000036b0  72 65 64 20 69 6e 20 79  6f 75 72 0d 63 6f 6d 70  |red in your.comp|
000036c0  75 74 65 72 27 73 20 52  41 4d 2c 20 61 73 20 6f  |uter's RAM, as o|
000036d0  70 70 6f 73 65 64 20 74  6f 20 6f 6e 20 66 6c 6f  |pposed to on flo|
000036e0  70 70 79 2c 20 74 68 69  73 20 74 72 61 6e 73 66  |ppy, this transf|
000036f0  65 72 20 63 61 6e 20 62  65 20 64 6f 6e 65 20 62  |er can be done b|
00003700  79 0d 6d 61 63 68 69 6e  65 20 63 6f 64 65 20 61  |y.machine code a|
00003710  74 20 76 65 72 79 20 67  72 65 61 74 20 73 70 65  |t very great spe|
00003720  65 64 20 28 74 61 6b 69  6e 67 20 6f 6e 6c 79 20  |ed (taking only |
00003730  61 20 73 6d 61 6c 6c 20  66 72 61 63 74 69 6f 6e  |a small fraction|
00003740  20 6f 66 20 61 20 73 65  63 6f 6e 64 29 2e 0d 46  | of a second)..F|
00003750  6f 72 20 74 68 6f 73 65  20 70 72 6f 67 72 61 6d  |or those program|
00003760  6d 65 72 73 20 77 68 6f  20 61 72 65 20 6e 6f 74  |mers who are not|
00003770  20 66 61 6d 69 6c 69 61  72 20 77 69 74 68 20 6d  | familiar with m|
00003780  61 63 68 69 6e 65 20 63  6f 64 65 2c 20 61 20 6d  |achine code, a m|
00003790  6f 64 75 6c 65 0d 69 73  20 69 6e 63 6c 75 64 65  |odule.is include|
000037a0  64 20 77 69 74 68 20 74  68 69 73 20 74 75 74 6f  |d with this tuto|
000037b0  72 69 61 6c 20 61 6c 6c  6f 77 69 6e 67 20 79 6f  |rial allowing yo|
000037c0  75 20 74 6f 20 64 6f 20  74 68 69 73 2e 20 54 68  |u to do this. Th|
000037d0  65 20 70 72 6f 67 72 61  6d 20 63 6f 64 65 0d 66  |e program code.f|
000037e0  6f 72 20 74 68 69 73 20  6d 6f 64 75 6c 65 20 69  |or this module i|
000037f0  73 20 61 63 74 75 61 6c  6c 79 20 74 61 6b 65 6e  |s actually taken|
00003800  20 64 69 72 65 63 74 6c  79 20 66 72 6f 6d 20 53  | directly from S|
00003810  68 69 70 77 72 65 63 6b  65 64 2e 0d 0d 49 66 20  |hipwrecked...If |
00003820  79 6f 75 20 61 72 65 20  6e 6f 74 20 66 61 6d 69  |you are not fami|
00003830  6c 69 61 72 20 77 69 74  68 20 6d 61 63 68 69 6e  |liar with machin|
00003840  65 20 63 6f 64 65 2c 20  74 68 65 6e 20 79 6f 75  |e code, then you|
00003850  20 63 61 6e 20 70 72 6f  62 61 62 6c 79 20 73 6b  | can probably sk|
00003860  69 70 20 74 68 65 20 6e  65 78 74 0d 73 65 63 74  |ip the next.sect|
00003870  69 6f 6e 20 6f 6e 20 68  6f 77 20 74 6f 20 64 69  |ion on how to di|
00003880  72 65 63 74 6c 79 20 61  63 63 65 73 73 20 73 63  |rectly access sc|
00003890  72 65 65 6e 20 6d 65 6d  6f 72 79 2c 20 61 73 20  |reen memory, as |
000038a0  69 74 20 69 73 20 69 6d  70 6f 73 73 69 62 6c 65  |it is impossible|
000038b0  0d 74 6f 20 61 63 68 69  65 76 65 20 61 6e 79 20  |.to achieve any |
000038c0  73 70 65 65 64 20 62 79  20 61 63 63 65 73 73 69  |speed by accessi|
000038d0  6e 67 20 73 63 72 65 65  6e 20 6d 65 6d 6f 72 79  |ng screen memory|
000038e0  20 64 69 72 65 63 74 6c  79 20 69 6e 20 42 41 53  | directly in BAS|
000038f0  49 43 20 2d 20 79 6f 75  72 0d 70 72 6f 67 72 61  |IC - your.progra|
00003900  6d 20 77 69 6c 6c 20 63  72 61 77 6c 20 61 6c 6f  |m will crawl alo|
00003910  6e 67 20 69 6e 63 72 65  64 69 62 6c 79 20 73 6c  |ng incredibly sl|
00003920  6f 77 6c 79 2e 20 59 6f  75 20 63 6f 75 6c 64 20  |owly. You could |
00003930  73 74 69 6c 6c 20 75 73  65 20 73 75 63 68 20 61  |still use such a|
00003940  0d 74 65 63 68 6e 69 71  75 65 20 69 6e 20 70 72  |.technique in pr|
00003950  65 70 61 72 69 6e 67 20  61 20 73 63 72 65 65 6e  |eparing a screen|
00003960  20 77 68 69 63 68 20 79  6f 75 20 69 6e 74 65 6e  | which you inten|
00003970  64 20 74 6f 20 73 61 76  65 20 74 6f 20 66 6c 6f  |d to save to flo|
00003980  70 70 79 20 75 73 69 6e  67 0d 74 68 65 20 74 65  |ppy using.the te|
00003990  63 68 6e 69 71 75 65 20  64 65 73 63 72 69 62 65  |chnique describe|
000039a0  64 20 62 65 66 6f 72 65  20 77 69 74 68 20 2a 53  |d before with *S|
000039b0  41 56 45 20 61 6e 64 20  2a 4c 4f 41 44 2e 0d 0d  |AVE and *LOAD...|
000039c0  46 69 72 73 74 6c 79 2c  20 69 74 20 69 73 20 69  |Firstly, it is i|
000039d0  6d 70 6f 72 74 61 6e 74  20 74 6f 20 6b 6e 6f 77  |mportant to know|
000039e0  20 68 6f 77 20 73 63 72  65 65 6e 20 6d 65 6d 6f  | how screen memo|
000039f0  72 79 20 69 73 20 6c 61  69 64 20 6f 75 74 20 69  |ry is laid out i|
00003a00  6e 20 6d 65 6d 6f 72 79  2e 0d 54 68 65 20 65 78  |n memory..The ex|
00003a10  61 63 74 20 70 6f 73 69  74 69 6f 6e 20 6f 66 20  |act position of |
00003a20  65 61 63 68 20 63 68 61  72 61 63 74 65 72 20 77  |each character w|
00003a30  69 74 68 69 6e 20 74 68  65 20 6d 65 6d 6f 72 79  |ithin the memory|
00003a40  20 6f 66 20 79 6f 75 72  20 63 6f 6d 70 75 74 65  | of your compute|
00003a50  72 0d 76 61 72 69 65 73  20 66 72 6f 6d 20 6f 6e  |r.varies from on|
00003a60  65 20 67 72 61 70 68 69  63 73 20 6d 6f 64 65 20  |e graphics mode |
00003a70  74 6f 20 61 6e 6f 74 68  65 72 2c 20 62 75 74 20  |to another, but |
00003a80  74 68 65 20 62 61 73 69  63 20 70 72 69 6e 63 69  |the basic princi|
00003a90  70 61 6c 73 20 61 72 65  20 74 68 65 0d 73 61 6d  |pals are the.sam|
00003aa0  65 3a 0d 0d 2d 20 54 68  65 20 73 63 72 65 65 6e  |e:..- The screen|
00003ab0  20 61 72 65 61 20 69 73  20 64 69 76 69 64 65 64  | area is divided|
00003ac0  20 75 70 20 69 6e 74 6f  20 63 68 61 72 61 63 74  | up into charact|
00003ad0  65 72 73 2e 20 54 68 65  73 65 20 61 72 65 20 62  |ers. These are b|
00003ae0  6c 6f 63 6b 73 20 6f 66  20 65 69 67 68 74 20 0d  |locks of eight .|
00003af0  20 20 70 69 78 65 6c 73  20 62 79 20 65 69 67 68  |  pixels by eigh|
00003b00  74 20 70 69 78 65 6c 73  2c 20 61 6e 64 20 61 72  |t pixels, and ar|
00003b10  65 20 74 68 65 20 73 61  6d 65 20 73 69 7a 65 20  |e the same size |
00003b20  61 73 20 74 68 65 20 72  65 63 74 61 6e 67 75 6c  |as the rectangul|
00003b30  61 72 20 62 6c 6f 63 6b  0d 20 20 6f 66 20 73 70  |ar block.  of sp|
00003b40  61 63 65 20 74 61 6b 65  6e 20 75 70 20 62 79 20  |ace taken up by |
00003b50  6f 6e 65 20 6c 65 74 74  65 72 20 77 68 65 6e 20  |one letter when |
00003b60  79 6f 75 20 70 72 69 6e  74 20 74 65 78 74 20 74  |you print text t|
00003b70  6f 20 74 68 65 20 73 63  72 65 65 6e 2e 20 53 63  |o the screen. Sc|
00003b80  72 65 65 6e 0d 20 20 6d  65 6d 6f 72 79 20 69 73  |reen.  memory is|
00003b90  20 64 69 76 69 64 65 64  20 75 70 20 69 6e 74 6f  | divided up into|
00003ba0  20 62 6c 6f 63 6b 73 2c  20 77 69 74 68 20 65 61  | blocks, with ea|
00003bb0  63 68 20 74 68 65 20 63  68 61 72 61 63 74 65 72  |ch the character|
00003bc0  73 20 62 65 69 6e 67 20  64 65 66 69 6e 65 64 0d  |s being defined.|
00003bd0  20 20 62 79 20 6f 6e 65  20 6f 66 20 74 68 65 73  |  by one of thes|
00003be0  65 20 62 6c 6f 63 6b 73  2e 0d 2d 20 54 68 65 20  |e blocks..- The |
00003bf0  73 63 72 65 65 6e 20 69  73 20 73 74 6f 72 65 64  |screen is stored|
00003c00  20 72 6f 77 20 62 79 20  72 6f 77 2c 20 77 69 74  | row by row, wit|
00003c10  68 20 74 68 65 20 74 6f  70 20 72 6f 77 20 66 69  |h the top row fi|
00003c20  72 73 74 20 61 6e 64 20  74 68 65 20 62 6f 74 74  |rst and the bott|
00003c30  6f 6d 0d 20 20 72 6f 77  20 6c 61 73 74 2e 0d 2d  |om.  row last..-|
00003c40  20 57 69 74 68 69 6e 20  65 61 63 68 20 6f 66 20  | Within each of |
00003c50  74 68 65 73 65 20 72 6f  77 73 2c 20 63 68 61 72  |these rows, char|
00003c60  61 63 74 65 72 73 20 61  72 65 20 73 74 6f 72 65  |acters are store|
00003c70  64 20 6f 6e 65 20 62 79  20 6f 6e 65 2c 20 66 72  |d one by one, fr|
00003c80  6f 6d 20 6c 65 66 74 20  74 6f 0d 20 20 72 69 67  |om left to.  rig|
00003c90  68 74 2e 0d 2d 20 49 6e  20 61 6c 6c 20 6d 6f 64  |ht..- In all mod|
00003ca0  65 73 2c 20 73 63 72 65  65 6e 20 6d 65 6d 6f 72  |es, screen memor|
00003cb0  79 20 65 6e 64 73 20 61  74 20 26 37 46 46 46 20  |y ends at &7FFF |
00003cc0  28 69 65 2e 20 61 74 20  74 68 65 20 65 6e 64 20  |(ie. at the end |
00003cd0  6f 66 20 52 41 4d 29 0d  0d 46 6f 6f 74 6e 6f 74  |of RAM)..Footnot|
00003ce0  65 3a 20 42 79 20 63 6f  6e 76 65 6e 74 69 6f 6e  |e: By convention|
00003cf0  2c 20 6d 65 6d 6f 72 79  20 61 64 64 72 65 73 73  |, memory address|
00003d00  65 73 20 61 72 65 20 73  70 65 63 69 66 69 65 64  |es are specified|
00003d10  20 69 6e 20 68 65 78 69  64 65 63 69 6d 61 6c 2e  | in hexidecimal.|
00003d20  20 49 0d 20 20 20 20 20  20 20 20 20 20 75 73 65  | I.          use|
00003d30  20 74 68 65 20 73 74 61  6e 64 61 72 64 20 41 63  | the standard Ac|
00003d40  6f 72 6e 20 27 26 27 20  70 72 65 66 69 78 20 74  |orn '&' prefix t|
00003d50  6f 20 69 6e 64 69 63 61  74 65 20 68 65 78 69 64  |o indicate hexid|
00003d60  65 63 69 6d 61 6c 20 76  61 6c 75 65 73 2e 0d 20  |ecimal values.. |
00003d70  20 20 20 20 20 20 20 20  20 54 68 6f 73 65 20 75  |         Those u|
00003d80  73 65 64 20 74 6f 20 64  65 61 6c 69 6e 67 20 77  |sed to dealing w|
00003d90  69 74 68 20 50 43 73 20  61 72 65 20 61 6e 79 20  |ith PCs are any |
00003da0  6f 74 68 65 72 20 63 6f  6d 70 75 74 65 72 73 20  |other computers |
00003db0  6d 61 79 20 62 65 20 75  73 65 64 0d 20 20 20 20  |may be used.    |
00003dc0  20 20 20 20 20 20 74 6f  20 74 68 65 20 41 6d 65  |      to the Ame|
00003dd0  72 69 63 61 6e 20 63 6f  6e 76 65 6e 74 69 6f 6e  |rican convention|
00003de0  20 6f 66 20 75 73 69 6e  67 20 61 20 64 6f 6c 6c  | of using a doll|
00003df0  61 72 20 70 72 65 66 69  78 20 69 6e 20 69 74 73  |ar prefix in its|
00003e00  20 70 6c 61 63 65 2e 0d  20 20 20 20 20 20 20 20  | place..        |
00003e10  20 20 49 74 20 73 68 6f  75 6c 64 20 62 65 20 6e  |  It should be n|
00003e20  6f 74 65 64 20 74 68 61  74 20 74 68 65 20 45 6c  |oted that the El|
00003e30  6b 20 65 78 70 65 63 74  73 20 26 20 61 6e 64 20  |k expects & and |
00003e40  77 69 6c 6c 20 6e 6f 74  20 61 63 63 65 70 74 20  |will not accept |
00003e50  24 2e 0d 0d 45 78 61 6d  70 6c 65 3a 0d 0d 53 75  |$...Example:..Su|
00003e60  70 70 6f 73 65 20 49 20  77 61 6e 74 20 74 6f 20  |ppose I want to |
00003e70  64 72 61 77 20 61 20 62  6c 6f 62 20 69 6e 20 63  |draw a blob in c|
00003e80  68 61 72 61 63 74 65 72  20 73 71 75 61 72 65 20  |haracter square |
00003e90  28 36 2c 37 29 2c 20 69  6e 20 6d 6f 64 65 20 31  |(6,7), in mode 1|
00003ea0  2e 20 57 68 61 74 20 69  73 20 0d 74 68 65 20 61  |. What is .the a|
00003eb0  64 64 72 65 73 73 20 6f  66 20 74 68 69 73 20 73  |ddress of this s|
00003ec0  71 75 61 72 65 3f 20 28  67 69 76 65 6e 20 74 68  |quare? (given th|
00003ed0  61 74 20 65 61 63 68 20  63 68 61 72 61 63 74 65  |at each characte|
00003ee0  72 20 74 61 6b 65 73 20  31 36 20 62 79 74 65 73  |r takes 16 bytes|
00003ef0  20 6f 66 0d 73 63 72 65  65 6e 20 6d 65 6d 6f 72  | of.screen memor|
00003f00  79 20 74 6f 20 64 65 66  69 6e 65 20 69 6e 20 6d  |y to define in m|
00003f10  6f 64 65 20 31 20 2d 20  77 65 27 6c 6c 20 63 6f  |ode 1 - we'll co|
00003f20  6d 65 20 74 6f 20 68 6f  77 20 74 6f 20 63 61 6c  |me to how to cal|
00003f30  63 75 6c 61 74 65 20 74  68 69 73 20 69 6e 0d 61  |culate this in.a|
00003f40  20 6d 69 6e 75 74 65 29  2e 0d 0d 57 65 6c 6c 20  | minute)...Well |
00003f50  2d 20 6c 6f 6f 6b 69 6e  67 20 61 74 20 74 68 65  |- looking at the|
00003f60  20 74 61 62 6c 65 20 65  61 72 6c 69 65 72 2c 20  | table earlier, |
00003f70  73 63 72 65 65 6e 20 6d  65 6d 6f 72 79 20 73 74  |screen memory st|
00003f80  61 72 74 73 20 61 74 20  26 33 30 30 30 20 69 6e  |arts at &3000 in|
00003f90  20 6d 6f 64 65 20 31 2e  0d 57 65 20 77 61 6e 74  | mode 1..We want|
00003fa0  20 74 6f 20 66 69 6e 64  20 74 68 65 20 73 74 61  | to find the sta|
00003fb0  72 74 20 6f 66 20 72 6f  77 20 37 20 69 6e 20 73  |rt of row 7 in s|
00003fc0  63 72 65 65 6e 20 6d 65  6d 6f 72 79 2e 20 54 68  |creen memory. Th|
00003fd0  69 73 20 72 6f 77 20 68  61 73 20 37 20 72 6f 77  |is row has 7 row|
00003fe0  73 20 6f 66 0d 63 68 61  72 61 63 74 65 72 73 20  |s of.characters |
00003ff0  61 62 6f 76 65 20 69 74  2c 20 61 6e 64 20 77 68  |above it, and wh|
00004000  69 63 68 20 77 69 6c 6c  20 62 65 20 73 74 6f 72  |ich will be stor|
00004010  65 64 20 62 65 66 6f 72  65 20 69 74 2e 20 45 61  |ed before it. Ea|
00004020  63 68 20 6f 66 20 74 68  65 73 65 20 72 6f 77 73  |ch of these rows|
00004030  0d 63 6f 6e 73 69 73 74  73 20 6f 66 20 34 30 20  |.consists of 40 |
00004040  63 68 61 72 61 63 74 65  72 73 2c 20 77 68 69 63  |characters, whic|
00004050  68 20 74 61 6b 65 20 75  70 20 31 36 20 62 79 74  |h take up 16 byt|
00004060  65 73 20 65 61 63 68 2e  20 54 68 65 72 65 66 6f  |es each. Therefo|
00004070  72 65 20 74 68 65 20 74  6f 74 61 6c 0d 6d 65 6d  |re the total.mem|
00004080  6f 72 79 20 74 61 6b 65  6e 20 75 70 20 62 79 20  |ory taken up by |
00004090  74 68 65 73 65 20 72 6f  77 73 20 69 73 20 37 20  |these rows is 7 |
000040a0  2a 20 34 30 20 2a 20 31  36 20 3d 20 34 34 38 30  |* 40 * 16 = 4480|
000040b0  20 62 79 74 65 73 2e 20  5b 45 61 63 68 20 63 68  | bytes. [Each ch|
000040c0  61 72 61 63 74 65 72 0d  69 73 20 31 36 20 62 79  |aracter.is 16 by|
000040d0  74 65 73 2c 20 65 61 63  68 20 72 6f 77 20 63 6f  |tes, each row co|
000040e0  6e 73 69 73 74 73 20 6f  66 20 34 30 20 6f 66 20  |nsists of 40 of |
000040f0  74 68 65 73 65 20 63 68  61 72 61 63 74 65 72 73  |these characters|
00004100  2c 20 74 68 65 72 65 66  6f 72 65 20 77 65 0d 6d  |, therefore we.m|
00004110  75 6c 74 69 70 6c 79 20  62 79 20 34 30 2c 20 61  |ultiply by 40, a|
00004120  6e 64 20 61 73 20 74 68  65 72 65 20 61 72 65 20  |nd as there are |
00004130  37 20 6f 66 20 74 68 65  73 65 20 63 6f 6d 70 6c  |7 of these compl|
00004140  65 74 65 20 72 6f 77 73  2c 20 77 65 20 6d 75 6c  |ete rows, we mul|
00004150  74 69 70 6c 79 20 62 79  0d 37 20 74 6f 20 67 65  |tiply by.7 to ge|
00004160  74 20 74 68 65 20 76 61  6c 75 65 20 66 6f 72 20  |t the value for |
00004170  73 65 76 65 6e 20 6f 66  20 74 68 65 73 65 20 72  |seven of these r|
00004180  6f 77 73 5d 0d 0d 4e 6f  77 20 77 65 20 68 61 76  |ows]..Now we hav|
00004190  65 20 74 68 61 74 20 74  68 65 20 73 74 61 72 74  |e that the start|
000041a0  69 6e 67 20 61 64 64 72  65 73 73 20 6f 66 20 72  |ing address of r|
000041b0  6f 77 20 37 20 69 73 20  61 74 3a 0d 0d 26 33 30  |ow 7 is at:..&30|
000041c0  30 30 20 2b 20 34 34 38  30 20 3d 20 26 34 31 38  |00 + 4480 = &418|
000041d0  30 0d 0d 4e 6f 77 20 74  68 61 74 20 77 65 20 68  |0..Now that we h|
000041e0  61 76 65 20 66 6f 75 6e  64 20 77 68 65 72 65 20  |ave found where |
000041f0  61 62 6f 75 74 73 20 69  6e 20 6d 65 6d 6f 72 79  |abouts in memory|
00004200  20 74 68 69 73 20 72 6f  77 20 73 74 61 72 74 73  | this row starts|
00004210  2c 20 77 65 20 6e 65 65  64 20 74 6f 0d 6c 6f 63  |, we need to.loc|
00004220  61 74 65 20 63 68 61 72  61 63 74 65 72 20 36 2e  |ate character 6.|
00004230  20 54 68 69 73 20 73 68  6f 75 6c 64 20 62 65 20  | This should be |
00004240  66 61 69 72 6c 79 20 65  61 73 79 20 2d 20 77 65  |fairly easy - we|
00004250  20 6b 6e 6f 77 20 74 68  61 74 20 63 68 61 72 61  | know that chara|
00004260  63 74 65 72 73 20 61 72  65 0d 73 74 6f 72 65 64  |cters are.stored|
00004270  20 66 72 6f 6d 20 6c 65  66 74 20 74 6f 20 72 69  | from left to ri|
00004280  67 68 74 2c 20 73 6f 20  6a 75 73 74 20 61 64 64  |ght, so just add|
00004290  20 6f 6e 20 74 68 65 20  6d 65 6d 6f 72 79 20 72  | on the memory r|
000042a0  65 71 75 69 72 65 64 20  74 6f 20 73 74 6f 72 65  |equired to store|
000042b0  20 73 69 78 0d 63 68 61  72 61 63 74 65 72 73 20  | six.characters |
000042c0  74 6f 20 74 68 65 20 6c  65 66 74 20 6f 66 20 74  |to the left of t|
000042d0  68 65 20 6f 6e 65 20 77  65 20 77 61 6e 74 2c 20  |he one we want, |
000042e0  69 2e 65 2e 20 31 36 20  2a 20 36 20 3d 20 39 36  |i.e. 16 * 6 = 96|
000042f0  20 62 79 74 65 73 20 5b  53 69 78 0d 63 68 61 72  | bytes [Six.char|
00004300  61 63 74 65 72 73 2c 20  65 61 63 68 20 74 61 6b  |acters, each tak|
00004310  69 6e 67 20 31 36 20 62  79 74 65 73 20 74 6f 20  |ing 16 bytes to |
00004320  73 74 6f 72 65 5d 2e 0d  0d 54 68 65 72 65 66 6f  |store]...Therefo|
00004330  72 65 20 74 68 65 20 61  64 64 72 65 73 73 20 6f  |re the address o|
00004340  66 20 63 68 61 72 61 63  74 65 72 20 28 36 2c 37  |f character (6,7|
00004350  29 20 77 69 6c 6c 20 62  65 3a 0d 0d 26 34 31 38  |) will be:..&418|
00004360  30 20 2b 20 39 36 20 3d  20 26 34 31 45 30 0d 0d  |0 + 96 = &41E0..|
00004370  41 6e 73 77 65 72 3a 20  43 68 61 72 61 63 74 65  |Answer: Characte|
00004380  72 20 28 36 2c 37 29 20  69 73 20 73 74 6f 72 65  |r (6,7) is store|
00004390  64 20 66 72 6f 6d 20 26  34 31 45 30 20 74 6f 20  |d from &41E0 to |
000043a0  26 34 31 45 46 0d 0d 4a  75 73 74 20 74 6f 20 63  |&41EF..Just to c|
000043b0  68 65 63 6b 20 74 68 65  20 61 6e 73 77 65 72 20  |heck the answer |
000043c0  69 73 20 63 6f 72 72 65  63 74 2c 20 74 79 70 65  |is correct, type|
000043d0  20 74 68 69 73 20 73 69  6d 70 6c 65 20 6c 6f 6f  | this simple loo|
000043e0  70 3a 0d 0d 31 30 20 4d  4f 44 45 20 31 0d 32 30  |p:..10 MODE 1.20|
000043f0  20 46 4f 52 20 61 64 3d  26 34 31 45 30 20 54 4f  | FOR ad=&41E0 TO|
00004400  20 26 34 31 45 46 0d 33  30 20 3f 61 64 3d 32 35  | &41EF.30 ?ad=25|
00004410  35 0d 34 30 20 4e 45 58  54 0d 0d 41 6e 64 20 79  |5.40 NEXT..And y|
00004420  65 73 2c 20 61 20 77 68  69 74 65 20 73 70 6c 6f  |es, a white splo|
00004430  64 67 65 20 64 6f 65 73  20 61 70 70 65 61 72 20  |dge does appear |
00004440  69 6e 20 73 71 75 61 72  65 20 28 36 2c 37 29 2e  |in square (6,7).|
00004450  0d 0d 54 68 69 73 20 77  68 6f 6c 65 20 70 72 6f  |..This whole pro|
00004460  63 65 64 75 72 65 20 63  61 6e 20 61 63 74 75 61  |cedure can actua|
00004470  6c 6c 79 20 62 65 20 72  65 66 69 6e 65 64 20 64  |lly be refined d|
00004480  6f 77 6e 2c 20 61 6e 64  20 65 78 70 72 65 73 73  |own, and express|
00004490  65 64 20 61 73 20 61 20  73 69 6d 70 6c 65 0d 66  |ed as a simple.f|
000044a0  6f 72 6d 75 6c 61 3a 0d  0d 41 64 64 72 65 73 73  |ormula:..Address|
000044b0  20 3d 20 42 61 73 65 20  2b 20 28 20 79 20 2a 20  | = Base + ( y * |
000044c0  4e 6f 2e 20 63 68 61 72  61 63 74 65 72 73 20 70  |No. characters p|
000044d0  65 72 20 6c 69 6e 65 20  2b 20 78 20 29 20 2a 20  |er line + x ) * |
000044e0  4d 65 6d 6f 72 79 20 70  65 72 20 63 68 61 72 61  |Memory per chara|
000044f0  63 74 65 72 0d 0d 57 68  65 72 65 3a 20 41 64 64  |cter..Where: Add|
00004500  72 65 73 73 3d 20 54 68  65 20 6d 65 6d 6f 72 79  |ress= The memory|
00004510  20 6c 6f 63 61 74 69 6f  6e 20 6f 66 20 74 68 65  | location of the|
00004520  20 73 74 61 72 74 20 6f  66 20 74 68 65 20 63 68  | start of the ch|
00004530  61 72 61 63 74 65 72 20  79 6f 75 20 77 61 6e 74  |aracter you want|
00004540  2e 0d 20 20 20 20 20 20  20 42 61 73 65 20 20 20  |..       Base   |
00004550  3d 20 53 74 61 72 74 20  6f 66 20 73 63 72 65 65  |= Start of scree|
00004560  6e 20 6d 65 6d 6f 72 79  20 69 6e 20 63 75 72 72  |n memory in curr|
00004570  65 6e 74 20 67 72 61 70  68 69 63 73 20 6d 6f 64  |ent graphics mod|
00004580  65 2e 0d 20 20 20 20 20  20 20 28 78 2c 79 29 20  |e..       (x,y) |
00004590  20 3d 20 43 6f 2d 6f 72  64 69 6e 61 74 65 20 6f  | = Co-ordinate o|
000045a0  66 20 73 71 75 61 72 65  20 79 6f 75 20 77 61 6e  |f square you wan|
000045b0  74 20 74 6f 20 61 63 63  65 73 73 20 28 73 61 6d  |t to access (sam|
000045c0  65 20 61 73 20 50 52 49  4e 54 20 54 41 42 29 0d  |e as PRINT TAB).|
000045d0  0d 53 69 6e 63 65 20 74  68 65 20 6e 75 6d 62 65  |.Since the numbe|
000045e0  72 20 6f 66 20 63 68 61  72 61 63 74 65 72 73 20  |r of characters |
000045f0  70 65 72 20 6c 69 6e 65  2c 20 74 68 65 20 6e 75  |per line, the nu|
00004600  6d 62 65 72 20 6f 66 20  62 79 74 65 73 20 70 65  |mber of bytes pe|
00004610  72 20 63 68 61 72 61 63  74 65 72 2c 0d 61 6e 64  |r character,.and|
00004620  20 74 68 65 20 62 61 73  65 20 61 64 64 72 65 73  | the base addres|
00004630  73 20 6f 66 20 73 63 72  65 65 6e 20 6d 65 6d 6f  |s of screen memo|
00004640  72 79 20 61 72 65 20 61  6c 6c 20 63 6f 6e 73 74  |ry are all const|
00004650  61 6e 74 20 66 6f 72 20  61 6e 79 20 70 61 72 74  |ant for any part|
00004660  69 63 75 6c 61 72 0d 67  72 61 70 68 69 63 73 20  |icular.graphics |
00004670  6d 6f 64 65 2c 20 74 68  65 20 76 61 6c 75 65 73  |mode, the values|
00004680  20 66 6f 72 20 74 68 65  20 67 72 61 70 68 69 63  | for the graphic|
00004690  73 20 6d 6f 64 65 20 79  6f 75 20 61 72 65 20 75  |s mode you are u|
000046a0  73 69 6e 67 20 63 61 6e  20 62 65 0d 73 75 62 73  |sing can be.subs|
000046b0  74 69 74 75 74 65 64 20  69 6e 74 6f 20 74 68 65  |tituted into the|
000046c0  20 65 71 75 61 74 69 6f  6e 20 69 6e 20 79 6f 75  | equation in you|
000046d0  72 20 70 72 6f 67 72 61  6d 2e 20 46 6f 72 20 6d  |r program. For m|
000046e0  6f 64 65 20 31 2c 20 66  6f 72 20 65 78 61 6d 70  |ode 1, for examp|
000046f0  6c 65 2c 20 79 6f 75 0d  77 6f 75 6c 64 20 75 73  |le, you.would us|
00004700  65 3a 0d 0d 41 64 64 72  65 73 73 20 3d 20 26 33  |e:..Address = &3|
00004710  30 30 30 20 2b 20 28 34  30 20 2a 20 79 20 2b 20  |000 + (40 * y + |
00004720  78 29 20 2a 20 31 36 0d  0d 42 65 66 6f 72 65 20  |x) * 16..Before |
00004730  63 6f 6e 74 69 6e 75 69  6e 67 2c 20 6f 6e 65 20  |continuing, one |
00004740  6e 6f 74 65 20 73 68 6f  75 6c 64 20 62 65 20 62  |note should be b|
00004750  6f 72 6e 65 20 69 6e 20  6d 69 6e 64 2e 20 59 6f  |orne in mind. Yo|
00004760  75 20 6d 61 79 20 72 65  6d 65 6d 62 65 72 20 74  |u may remember t|
00004770  68 61 74 0d 61 20 77 68  69 6c 65 20 62 61 63 6b  |hat.a while back|
00004780  20 49 20 6d 65 6e 74 69  6f 6e 65 64 20 74 68 61  | I mentioned tha|
00004790  74 20 77 68 65 6e 20 79  6f 75 20 74 79 70 65 20  |t when you type |
000047a0  74 65 78 74 20 77 68 69  63 68 20 6f 76 65 72 66  |text which overf|
000047b0  6c 6f 77 73 20 6f 66 66  20 74 68 65 0d 62 6f 74  |lows off the.bot|
000047c0  74 6f 6d 20 6f 66 20 74  68 65 20 73 63 72 65 65  |tom of the scree|
000047d0  6e 2c 20 74 68 65 20 63  6f 6d 70 75 74 65 72 20  |n, the computer |
000047e0  6d 61 6b 65 73 20 61 20  6e 6f 74 65 20 74 68 61  |makes a note tha|
000047f0  74 20 65 61 63 68 20 6c  69 6e 65 20 69 73 20 73  |t each line is s|
00004800  74 6f 72 65 64 0d 69 6e  20 6d 65 6d 6f 72 79 20  |tored.in memory |
00004810  6f 6e 65 20 6c 69 6e 65  20 6c 6f 77 65 72 20 74  |one line lower t|
00004820  68 61 6e 20 69 74 20 73  68 6f 75 6c 64 20 62 65  |han it should be|
00004830  2c 20 62 75 74 20 64 6f  65 73 20 6e 6f 74 20 61  |, but does not a|
00004840  63 74 75 61 6c 6c 79 20  6d 6f 76 65 0d 61 6e 79  |ctually move.any|
00004850  74 68 69 6e 67 20 61 72  6f 75 6e 64 20 69 6e 20  |thing around in |
00004860  73 63 72 65 65 6e 20 6d  65 6d 6f 72 79 2e 20 54  |screen memory. T|
00004870  68 65 20 73 61 6d 65 20  65 66 66 65 63 74 20 63  |he same effect c|
00004880  61 6e 20 63 61 75 73 65  20 70 72 6f 62 6c 65 6d  |an cause problem|
00004890  73 20 77 69 74 68 0d 64  69 72 65 63 74 20 61 63  |s with.direct ac|
000048a0  63 65 73 73 20 74 6f 20  73 63 72 65 65 6e 20 6d  |cess to screen m|
000048b0  65 6d 6f 72 79 20 61 73  20 77 65 6c 6c 2e 20 54  |emory as well. T|
000048c0  68 65 20 73 69 6d 70 6c  65 20 72 75 6c 65 20 66  |he simple rule f|
000048d0  6f 72 20 62 65 67 69 6e  6e 65 72 73 20 69 73 2c  |or beginners is,|
000048e0  0d 4e 45 56 45 52 20 61  74 74 65 6d 70 74 20 74  |.NEVER attempt t|
000048f0  6f 20 75 73 65 20 64 69  72 65 63 74 20 73 63 72  |o use direct scr|
00004900  65 65 6e 20 6d 65 6d 6f  72 79 20 61 63 63 65 73  |een memory acces|
00004910  73 20 77 68 65 6e 20 74  68 65 72 65 20 69 73 20  |s when there is |
00004920  65 76 65 6e 20 74 68 65  0d 73 6c 69 67 68 74 65  |even the.slighte|
00004930  73 74 20 70 6f 73 73 69  62 69 6c 69 74 79 20 74  |st possibility t|
00004940  68 61 74 20 74 68 65 20  73 63 72 65 65 6e 20 6d  |hat the screen m|
00004950  69 67 68 74 20 68 61 76  65 20 62 65 65 6e 20 61  |ight have been a|
00004960  6c 6c 6f 77 65 64 20 74  6f 20 73 63 72 6f 6c 6c  |llowed to scroll|
00004970  20 75 70 0d 61 74 20 61  6c 6c 20 28 65 2e 67 2e  | up.at all (e.g.|
00004980  20 61 66 74 65 72 20 75  73 69 6e 67 20 49 4e 50  | after using INP|
00004990  55 54 20 74 6f 20 67 65  74 20 69 6e 70 75 74 20  |UT to get input |
000049a0  66 72 6f 6d 20 74 68 65  20 75 73 65 72 20 2d 20  |from the user - |
000049b0  68 6f 77 20 64 6f 20 79  6f 75 0d 6b 6e 6f 77 20  |how do you.know |
000049c0  74 68 61 74 20 74 68 65  79 20 64 69 64 6e 27 74  |that they didn't|
000049d0  20 74 79 70 65 20 73 6f  20 6d 75 63 68 20 74 68  | type so much th|
000049e0  61 74 20 69 74 20 77 65  6e 74 20 6f 66 20 74 68  |at it went of th|
000049f0  65 20 62 6f 74 74 6f 6d  20 6f 66 20 74 68 65 20  |e bottom of the |
00004a00  73 63 72 65 65 6e 3f 29  0d 49 66 20 79 6f 75 20  |screen?).If you |
00004a10  6b 6e 6f 77 20 77 68 61  74 20 79 6f 75 20 61 72  |know what you ar|
00004a20  65 20 64 6f 69 6e 67 2c  20 74 68 69 73 20 72 75  |e doing, this ru|
00004a30  6c 65 20 63 61 6e 20 62  65 20 69 67 6e 6f 72 65  |le can be ignore|
00004a40  64 2c 20 61 6e 64 20 68  69 67 68 2d 73 70 65 65  |d, and high-spee|
00004a50  64 0d 73 63 72 6f 6c 6c  69 6e 67 20 63 61 6e 20  |d.scrolling can |
00004a60  62 65 20 61 63 68 69 65  76 65 64 20 61 73 20 61  |be achieved as a|
00004a70  20 72 65 73 75 6c 74 2c  20 62 75 74 20 74 68 61  | result, but tha|
00004a80  74 20 69 73 20 6e 6f 74  20 66 6f 72 20 74 68 65  |t is not for the|
00004a90  20 62 65 67 69 6e 6e 65  72 21 20 49 0d 63 61 6e  | beginner! I.can|
00004aa0  20 74 65 6c 6c 20 79 6f  75 20 66 72 6f 6d 20 66  | tell you from f|
00004ab0  69 72 73 74 20 68 61 6e  64 20 65 78 70 65 72 69  |irst hand experi|
00004ac0  65 6e 63 65 2c 20 74 68  61 74 20 63 72 65 61 74  |ence, that creat|
00004ad0  69 6e 67 20 73 63 72 6f  6c 6c 69 6e 67 20 69 6e  |ing scrolling in|
00004ae0  20 4a 75 70 69 74 65 72  0d 33 20 62 79 20 74 68  | Jupiter.3 by th|
00004af0  69 73 20 74 65 63 68 6e  69 71 75 65 20 77 61 73  |is technique was|
00004b00  20 61 20 6e 69 67 68 74  6d 61 72 65 20 2d 20 65  | a nightmare - e|
00004b10  73 70 65 63 69 61 6c 6c  79 20 77 68 65 6e 20 74  |specially when t|
00004b20  68 65 20 6f 70 65 72 61  74 69 6e 67 20 73 79 73  |he operating sys|
00004b30  74 65 6d 0d 63 61 6c 6c  73 20 79 6f 75 20 6e 65  |tem.calls you ne|
00004b40  65 64 20 74 6f 20 6d 61  6b 65 20 74 6f 20 61 63  |ed to make to ac|
00004b50  68 69 65 76 65 20 74 68  69 73 20 61 72 65 20 63  |hieve this are c|
00004b60  6f 6d 70 6c 65 74 65 6c  79 20 64 69 66 66 65 72  |ompletely differ|
00004b70  65 6e 74 20 6f 6e 20 74  68 65 20 42 42 43 0d 74  |ent on the BBC.t|
00004b80  6f 20 74 68 65 20 45 6c  6b 2c 20 73 6f 20 79 6f  |o the Elk, so yo|
00004b90  75 20 6e 65 65 64 20 74  6f 20 66 69 6e 64 20 6f  |u need to find o|
00004ba0  75 74 20 77 68 69 63 68  20 70 6c 61 74 66 6f 72  |ut which platfor|
00004bb0  6d 20 79 6f 75 20 61 72  65 20 6f 70 65 72 61 74  |m you are operat|
00004bc0  69 6e 67 20 6f 6e 2c 0d  61 6e 64 20 74 68 65 6e  |ing on,.and then|
00004bd0  20 6d 61 6b 65 20 74 68  65 20 72 65 6c 61 76 61  | make the relava|
00004be0  6e 74 20 63 61 6c 6c 73  20 66 6f 72 20 74 68 61  |nt calls for tha|
00004bf0  74 20 70 6c 61 74 66 6f  72 6d 21 0d 0d 4e 6f 77  |t platform!..Now|
00004c00  20 74 68 61 74 20 79 6f  75 20 63 61 6e 20 6c 6f  | that you can lo|
00004c10  63 61 74 65 20 61 20 74  68 65 20 6d 65 6d 6f 72  |cate a the memor|
00004c20  79 20 6f 63 63 75 70 69  65 64 20 62 79 20 61 20  |y occupied by a |
00004c30  63 68 61 72 61 63 74 65  72 20 69 6e 20 73 63 72  |character in scr|
00004c40  65 65 6e 0d 6d 65 6d 6f  72 79 2c 20 79 6f 75 20  |een.memory, you |
00004c50  6e 65 65 64 20 74 6f 20  6b 6e 6f 77 20 68 6f 77  |need to know how|
00004c60  20 74 68 65 20 62 79 74  65 73 20 77 69 74 68 69  | the bytes withi|
00004c70  6e 20 74 68 69 73 20 62  6c 6f 63 6b 20 61 72 65  |n this block are|
00004c80  20 6c 61 69 64 20 6f 75  74 2c 20 73 6f 20 74 68  | laid out, so th|
00004c90  61 74 0d 79 6f 75 20 63  61 6e 20 68 61 76 65 20  |at.you can have |
00004ca0  70 69 78 65 6c 20 62 79  20 70 69 78 65 6c 20 63  |pixel by pixel c|
00004cb0  6f 6e 74 72 6f 6c 20 6f  76 65 72 20 79 6f 75 72  |ontrol over your|
00004cc0  20 6d 6f 6e 69 74 6f 72  20 73 63 72 65 65 6e 2e  | monitor screen.|
00004cd0  20 54 68 69 73 20 69 73  20 61 6c 73 6f 0d 72 65  | This is also.re|
00004ce0  71 75 69 72 65 64 20 69  66 20 79 6f 75 20 61 72  |quired if you ar|
00004cf0  65 20 74 6f 20 62 65 20  61 62 6c 65 20 74 6f 20  |e to be able to |
00004d00  63 61 6c 63 75 6c 61 74  65 20 74 68 65 20 61 6d  |calculate the am|
00004d10  6f 75 6e 74 20 6f 66 20  6d 65 6d 6f 72 79 20 74  |ount of memory t|
00004d20  61 6b 65 6e 20 75 70 0d  62 79 20 65 61 63 68 20  |aken up.by each |
00004d30  63 68 61 72 61 63 74 65  72 27 73 20 64 65 66 69  |character's defi|
00004d40  6e 69 74 69 6f 6e 20 69  6e 20 61 20 70 61 72 74  |nition in a part|
00004d50  69 63 75 6c 61 72 20 6d  6f 64 65 2e 0d 0d 54 68  |icular mode...Th|
00004d60  65 20 67 72 61 70 68 69  63 73 20 6d 6f 64 65 73  |e graphics modes|
00004d70  20 63 61 6e 20 62 65 20  64 69 76 69 64 65 64 20  | can be divided |
00004d80  69 6e 74 6f 20 74 68 72  65 65 20 63 61 74 65 67  |into three categ|
00004d90  6f 72 69 65 73 3a 20 6d  6f 6e 6f 63 68 72 6f 6d  |ories: monochrom|
00004da0  65 20 6d 6f 64 65 73 0d  28 69 65 2e 20 74 77 6f  |e modes.(ie. two|
00004db0  20 63 6f 6c 6f 75 72 73  29 2c 20 66 6f 75 72 20  | colours), four |
00004dc0  63 6f 6c 6f 75 72 20 6d  6f 64 65 73 2c 20 61 6e  |colour modes, an|
00004dd0  64 20 73 69 78 74 65 65  6e 20 63 6f 6c 6f 75 72  |d sixteen colour|
00004de0  20 6d 6f 64 65 73 2e 20  41 6c 6c 20 6f 66 20 74  | modes. All of t|
00004df0  68 65 0d 45 6c 6b 27 73  20 6d 6f 64 65 73 20 66  |he.Elk's modes f|
00004e00  61 6c 6c 20 69 6e 74 6f  20 74 68 65 73 65 20 74  |all into these t|
00004e10  68 72 65 65 20 67 72 6f  75 70 69 6e 67 73 2e 20  |hree groupings. |
00004e20  57 68 69 63 68 20 6f 66  20 74 68 65 73 65 20 63  |Which of these c|
00004e30  6f 6c 6f 75 72 73 20 65  61 63 68 0d 70 69 78 65  |olours each.pixe|
00004e40  6c 20 6f 66 20 74 68 65  20 73 63 72 65 65 6e 20  |l of the screen |
00004e50  69 73 20 64 65 70 65 6e  64 73 20 75 70 6f 6e 20  |is depends upon |
00004e60  74 68 65 20 73 74 61 74  75 73 20 6f 66 20 61 20  |the status of a |
00004e70  6e 75 6d 62 65 72 20 6f  66 20 62 69 6e 61 72 79  |number of binary|
00004e80  20 62 69 74 73 2e 0d 54  68 65 73 65 20 68 61 76  | bits..These hav|
00004e90  65 20 74 77 6f 20 73 74  61 74 65 73 2c 20 30 20  |e two states, 0 |
00004ea0  6f 72 20 31 2e 20 4e 6f  77 2c 20 69 6e 20 61 20  |or 1. Now, in a |
00004eb0  6d 6f 6e 6f 63 68 72 6f  6d 65 20 6d 6f 64 65 2c  |monochrome mode,|
00004ec0  20 6f 6e 65 20 62 69 74  20 69 73 0d 73 75 66 66  | one bit is.suff|
00004ed0  69 63 69 65 6e 74 20 74  6f 20 64 65 66 69 6e 65  |icient to define|
00004ee0  20 74 68 65 20 63 6f 6c  6f 75 72 20 6f 66 20 6f  | the colour of o|
00004ef0  6e 65 20 70 69 78 65 6c  20 28 62 69 74 73 20 68  |ne pixel (bits h|
00004f00  61 76 65 20 74 77 6f 20  73 74 61 74 65 73 2c 20  |ave two states, |
00004f10  30 20 6f 72 20 31 2c 0d  61 6e 64 20 74 68 65 20  |0 or 1,.and the |
00004f20  70 69 78 65 6c 73 20 68  61 76 65 20 74 77 6f 20  |pixels have two |
00004f30  73 74 61 74 65 73 2c 20  63 6f 6c 6f 75 72 20 30  |states, colour 0|
00004f40  20 6f 72 20 63 6f 6c 6f  75 72 20 31 29 2e 20 49  | or colour 1). I|
00004f50  6e 20 61 20 66 6f 75 72  20 63 6f 6c 6f 75 72 20  |n a four colour |
00004f60  6d 6f 64 65 2c 0d 6f 6e  20 74 68 65 20 6f 74 68  |mode,.on the oth|
00004f70  65 72 20 68 61 6e 64 2c  20 6f 6e 65 20 62 69 74  |er hand, one bit|
00004f80  20 77 69 6c 6c 20 6e 6f  74 20 62 65 20 73 75 66  | will not be suf|
00004f90  66 69 63 69 65 6e 74 2c  20 61 73 20 66 6f 75 72  |ficient, as four|
00004fa0  20 64 69 66 66 65 72 65  6e 74 20 73 74 61 74 65  | different state|
00004fb0  73 0d 61 72 65 20 72 65  71 75 69 72 65 64 2e 20  |s.are required. |
00004fc0  54 77 6f 20 62 69 74 73  20 77 69 6c 6c 20 62 65  |Two bits will be|
00004fd0  20 65 6e 6f 75 67 68 20  74 6f 20 73 74 6f 72 65  | enough to store|
00004fe0  20 74 68 65 20 63 6f 6c  6f 75 72 20 6f 66 20 6f  | the colour of o|
00004ff0  6e 65 20 70 69 78 65 6c  2c 0d 68 6f 77 65 76 65  |ne pixel,.howeve|
00005000  72 3a 0d 0d 42 69 74 20  31 20 73 74 61 74 65 20  |r:..Bit 1 state |
00005010  20 20 20 20 42 69 74 20  32 20 73 74 61 74 65 20  |    Bit 2 state |
00005020  20 20 20 20 43 6f 6c 6f  75 72 0d 20 20 30 20 20  |    Colour.  0  |
00005030  20 20 20 20 20 20 20 20  20 20 20 20 20 30 20 20  |             0  |
00005040  20 20 20 20 20 20 20 20  20 20 20 20 20 30 0d 20  |             0. |
00005050  20 30 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | 0              |
00005060  20 31 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | 1              |
00005070  20 31 0d 20 20 31 20 20  20 20 20 20 20 20 20 20  | 1.  1          |
00005080  20 20 20 20 20 30 20 20  20 20 20 20 20 20 20 20  |     0          |
00005090  20 20 20 20 20 32 0d 20  20 31 20 20 20 20 20 20  |     2.  1      |
000050a0  20 20 20 20 20 20 20 20  20 31 20 20 20 20 20 20  |         1      |
000050b0  20 20 20 20 20 20 20 20  20 33 0d 0d 54 68 6f 73  |         3..Thos|
000050c0  65 20 66 61 6d 69 6c 69  61 72 20 77 69 74 68 20  |e familiar with |
000050d0  62 69 6e 61 72 79 20 77  69 6c 6c 20 73 70 6f 74  |binary will spot|
000050e0  20 74 68 65 20 70 61 74  74 65 72 6e 20 73 74 72  | the pattern str|
000050f0  61 69 67 68 74 20 61 77  61 79 20 2d 20 73 69 6d  |aight away - sim|
00005100  70 6c 79 0d 63 6f 6e 76  65 72 74 20 74 68 65 20  |ply.convert the |
00005110  62 69 6e 61 72 79 20 76  61 6c 75 65 20 6f 66 20  |binary value of |
00005120  74 68 65 20 74 77 6f 20  62 69 74 73 20 69 6e 74  |the two bits int|
00005130  6f 20 64 65 63 69 6d 61  6c 2c 20 61 6e 64 20 79  |o decimal, and y|
00005140  6f 75 20 68 61 76 65 20  74 68 65 0d 6c 6f 67 69  |ou have the.logi|
00005150  63 61 6c 20 63 6f 6c 6f  75 72 20 6e 75 6d 62 65  |cal colour numbe|
00005160  72 2e 20 41 20 76 65 72  79 20 73 69 6d 69 6c 61  |r. A very simila|
00005170  72 20 70 61 74 74 65 72  6e 20 61 70 70 6c 69 65  |r pattern applie|
00005180  73 20 74 6f 20 4d 4f 44  45 20 32 20 2d 20 74 68  |s to MODE 2 - th|
00005190  65 20 45 6c 6b 27 73 0d  31 36 20 63 6f 6c 6f 75  |e Elk's.16 colou|
000051a0  72 20 6d 6f 64 65 2e 20  45 61 63 68 20 70 69 78  |r mode. Each pix|
000051b0  65 6c 20 72 65 71 75 69  72 65 73 20 34 20 62 69  |el requires 4 bi|
000051c0  74 73 20 74 6f 20 73 74  6f 72 65 20 69 74 73 20  |ts to store its |
000051d0  63 6f 6c 6f 75 72 20 28  32 5e 34 3d 31 36 29 2e  |colour (2^4=16).|
000051e0  0d 4f 6e 63 65 20 61 67  61 69 6e 2c 20 74 68 65  |.Once again, the|
000051f0  20 63 6f 6c 6f 75 72 20  6f 66 20 74 68 65 20 70  | colour of the p|
00005200  69 78 65 6c 20 69 73 20  74 68 65 20 6c 6f 67 69  |ixel is the logi|
00005210  63 61 6c 20 63 6f 6c 6f  75 72 20 77 68 6f 73 65  |cal colour whose|
00005220  20 6e 75 6d 62 65 72 20  69 73 0d 67 69 76 65 6e  | number is.given|
00005230  20 77 68 65 6e 20 74 68  65 20 66 6f 75 72 20 62  | when the four b|
00005240  69 74 73 20 61 72 65 20  70 75 74 20 74 6f 67 65  |its are put toge|
00005250  74 68 65 72 20 74 6f 20  66 6f 72 6d 20 61 20 62  |ther to form a b|
00005260  69 6e 61 72 79 20 76 61  6c 75 65 3a 0d 0d 42 69  |inary value:..Bi|
00005270  74 20 31 20 73 74 61 74  65 20 20 42 69 74 20 32  |t 1 state  Bit 2|
00005280  20 73 74 61 74 65 20 20  42 69 74 20 33 20 73 74  | state  Bit 3 st|
00005290  61 74 65 20 20 42 69 74  20 34 20 73 74 61 74 65  |ate  Bit 4 state|
000052a0  20 20 43 6f 6c 6f 75 72  20 20 44 65 66 61 75 6c  |  Colour  Defaul|
000052b0  74 0d 20 20 30 20 20 20  20 20 20 20 20 20 20 20  |t.  0           |
000052c0  20 30 20 20 20 20 20 20  20 20 20 20 20 20 30 20  | 0            0 |
000052d0  20 20 20 20 20 20 20 20  20 20 20 30 20 20 20 20  |           0    |
000052e0  20 20 20 20 20 20 20 20  30 20 20 20 20 20 20 20  |        0       |
000052f0  42 4c 4b 0d 20 20 30 20  20 20 20 20 20 20 20 20  |BLK.  0         |
00005300  20 20 20 30 20 20 20 20  20 20 20 20 20 20 20 20  |   0            |
00005310  30 20 20 20 20 20 20 20  20 20 20 20 20 31 20 20  |0            1  |
00005320  20 20 20 20 20 20 20 20  20 20 31 20 20 20 20 20  |          1     |
00005330  20 20 52 45 44 0d 20 20  30 20 20 20 20 20 20 20  |  RED.  0       |
00005340  20 20 20 20 20 30 20 20  20 20 20 20 20 20 20 20  |     0          |
00005350  20 20 31 20 20 20 20 20  20 20 20 20 20 20 20 30  |  1            0|
00005360  20 20 20 20 20 20 20 20  20 20 20 20 32 20 20 20  |            2   |
00005370  20 20 20 20 47 52 4e 0d  20 20 30 20 20 20 20 20  |    GRN.  0     |
00005380  20 20 20 20 20 20 20 30  20 20 20 20 20 20 20 20  |       0        |
00005390  20 20 20 20 31 20 20 20  20 20 20 20 20 20 20 20  |    1           |
000053a0  20 31 20 20 20 20 20 20  20 20 20 20 20 20 33 20  | 1            3 |
000053b0  20 20 20 20 20 20 59 45  4c 0d 20 20 30 20 20 20  |      YEL.  0   |
000053c0  20 20 20 20 20 20 20 20  20 31 20 20 20 20 20 20  |         1      |
000053d0  20 20 20 20 20 20 30 20  20 20 20 20 20 20 20 20  |      0         |
000053e0  20 20 20 30 20 20 20 20  20 20 20 20 20 20 20 20  |   0            |
000053f0  34 20 20 20 20 20 20 20  42 4c 45 0d 20 20 30 20  |4       BLE.  0 |
00005400  20 20 20 20 20 20 20 20  20 20 20 31 20 20 20 20  |           1    |
00005410  20 20 20 20 20 20 20 20  30 20 20 20 20 20 20 20  |        0       |
00005420  20 20 20 20 20 31 20 20  20 20 20 20 20 20 20 20  |     1          |
00005430  20 20 35 20 20 20 20 20  20 20 4d 47 54 0d 20 20  |  5       MGT.  |
00005440  30 20 20 20 20 20 20 20  20 20 20 20 20 31 20 20  |0            1  |
00005450  20 20 20 20 20 20 20 20  20 20 31 20 20 20 20 20  |          1     |
00005460  20 20 20 20 20 20 20 30  20 20 20 20 20 20 20 20  |       0        |
00005470  20 20 20 20 36 20 20 20  20 20 20 20 43 59 4e 0d  |    6       CYN.|
00005480  20 20 30 20 20 20 20 20  20 20 20 20 20 20 20 31  |  0            1|
00005490  20 20 20 20 20 20 20 20  20 20 20 20 31 20 20 20  |            1   |
000054a0  20 20 20 20 20 20 20 20  20 31 20 20 20 20 20 20  |         1      |
000054b0  20 20 20 20 20 20 37 20  20 20 20 20 20 20 57 48  |      7       WH|
000054c0  54 0d 20 20 31 20 20 20  20 20 20 20 20 20 20 20  |T.  1           |
000054d0  20 30 20 20 20 20 20 20  20 20 20 20 20 20 30 20  | 0            0 |
000054e0  20 20 20 20 20 20 20 20  20 20 20 30 20 20 20 20  |           0    |
000054f0  20 20 20 20 20 20 20 20  38 20 20 20 20 20 42 4c  |        8     BL|
00005500  4b 2f 57 48 54 0d 20 20  31 20 20 20 20 20 20 20  |K/WHT.  1       |
00005510  20 20 20 20 20 30 20 20  20 20 20 20 20 20 20 20  |     0          |
00005520  20 20 30 20 20 20 20 20  20 20 20 20 20 20 20 31  |  0            1|
00005530  20 20 20 20 20 20 20 20  20 20 20 20 39 20 20 20  |            9   |
00005540  20 20 52 45 44 2f 43 59  4e 0d 20 20 31 20 20 20  |  RED/CYN.  1   |
00005550  20 20 20 20 20 20 20 20  20 30 20 20 20 20 20 20  |         0      |
00005560  20 20 20 20 20 20 31 20  20 20 20 20 20 20 20 20  |      1         |
00005570  20 20 20 30 20 20 20 20  20 20 20 20 20 20 20 20  |   0            |
00005580  31 30 20 20 20 20 47 52  4e 2f 4d 47 54 0d 20 20  |10    GRN/MGT.  |
00005590  31 20 20 20 20 20 20 20  20 20 20 20 20 30 20 20  |1            0  |
000055a0  20 20 20 20 20 20 20 20  20 20 31 20 20 20 20 20  |          1     |
000055b0  20 20 20 20 20 20 20 31  20 20 20 20 20 20 20 20  |       1        |
000055c0  20 20 20 20 31 31 20 20  20 20 59 45 4c 2f 42 4c  |    11    YEL/BL|
000055d0  45 0d 20 20 31 20 20 20  20 20 20 20 20 20 20 20  |E.  1           |
000055e0  20 31 20 20 20 20 20 20  20 20 20 20 20 20 30 20  | 1            0 |
000055f0  20 20 20 20 20 20 20 20  20 20 20 30 20 20 20 20  |           0    |
00005600  20 20 20 20 20 20 20 20  31 32 20 20 20 20 42 4c  |        12    BL|
00005610  45 2f 59 45 4c 0d 20 20  31 20 20 20 20 20 20 20  |E/YEL.  1       |
00005620  20 20 20 20 20 31 20 20  20 20 20 20 20 20 20 20  |     1          |
00005630  20 20 30 20 20 20 20 20  20 20 20 20 20 20 20 31  |  0            1|
00005640  20 20 20 20 20 20 20 20  20 20 20 20 31 33 20 20  |            13  |
00005650  20 20 4d 47 54 2f 47 52  4e 0d 20 20 31 20 20 20  |  MGT/GRN.  1   |
00005660  20 20 20 20 20 20 20 20  20 31 20 20 20 20 20 20  |         1      |
00005670  20 20 20 20 20 20 31 20  20 20 20 20 20 20 20 20  |      1         |
00005680  20 20 20 30 20 20 20 20  20 20 20 20 20 20 20 20  |   0            |
00005690  31 34 20 20 20 20 43 59  4e 2f 52 45 44 0d 20 20  |14    CYN/RED.  |
000056a0  31 20 20 20 20 20 20 20  20 20 20 20 20 31 20 20  |1            1  |
000056b0  20 20 20 20 20 20 20 20  20 20 31 20 20 20 20 20  |          1     |
000056c0  20 20 20 20 20 20 20 31  20 20 20 20 20 20 20 20  |       1        |
000056d0  20 20 20 20 31 35 20 20  20 20 57 48 54 2f 42 4c  |    15    WHT/BL|
000056e0  4b 0d 0d 5b 44 65 66 61  75 6c 74 3a 20 44 65 66  |K..[Default: Def|
000056f0  61 75 6c 74 20 73 65 74  74 69 6e 67 20 6f 66 20  |ault setting of |
00005700  74 68 69 73 20 6c 6f 67  69 63 61 6c 20 63 6f 6c  |this logical col|
00005710  6f 75 72 20 77 68 65 6e  20 4d 4f 44 45 20 32 20  |our when MODE 2 |
00005720  69 73 20 66 69 72 73 74  0d 65 6e 74 65 72 65 64  |is first.entered|
00005730  5d 0d 0d 53 6f 2e 2e 2e  20 74 68 65 20 45 6c 65  |]..So... the Ele|
00005740  63 74 72 6f 6e 20 68 61  73 20 6d 6f 64 65 73 20  |ctron has modes |
00005750  77 68 65 72 65 20 74 68  65 20 64 65 66 69 6e 69  |where the defini|
00005760  74 69 6f 6e 20 6f 66 20  74 68 65 20 63 6f 6c 6f  |tion of the colo|
00005770  75 72 20 6f 66 20 61 0d  63 65 72 74 61 69 6e 20  |ur of a.certain |
00005780  70 69 78 65 6c 20 63 61  6e 20 74 61 6b 65 20 31  |pixel can take 1|
00005790  2c 20 32 20 6f 72 20 34  20 62 69 74 73 2e 20 41  |, 2 or 4 bits. A|
000057a0  73 20 65 61 63 68 20 62  79 74 65 20 6f 66 20 74  |s each byte of t|
000057b0  68 65 20 65 6c 65 63 74  72 6f 6e 27 73 0d 6d 65  |he electron's.me|
000057c0  6d 6f 72 79 20 63 6f 6e  73 69 73 74 73 20 6f 66  |mory consists of|
000057d0  20 38 20 73 65 70 65 72  61 74 65 20 62 69 74 73  | 8 seperate bits|
000057e0  2c 20 74 68 69 73 20 6d  65 61 6e 73 20 74 68 61  |, this means tha|
000057f0  74 20 69 6e 20 6d 6f 6e  6f 63 68 72 6f 6d 65 20  |t in monochrome |
00005800  6d 6f 64 65 73 0d 77 65  20 63 61 6e 20 66 69 74  |modes.we can fit|
00005810  20 38 20 70 69 78 65 6c  73 20 69 6e 74 6f 20 65  | 8 pixels into e|
00005820  61 63 68 20 62 79 74 65  20 28 38 2f 31 3d 38 29  |ach byte (8/1=8)|
00005830  2e 20 49 6e 20 66 6f 75  72 20 63 6f 6c 6f 75 72  |. In four colour|
00005840  20 6d 6f 64 65 73 20 28  77 68 65 72 65 0d 65 61  | modes (where.ea|
00005850  63 68 20 70 69 78 65 6c  20 72 65 71 75 69 72 65  |ch pixel require|
00005860  73 20 74 77 6f 20 62 69  74 73 29 20 77 65 20 63  |s two bits) we c|
00005870  61 6e 20 66 69 74 20 34  20 70 69 78 65 6c 73 20  |an fit 4 pixels |
00005880  69 6e 74 6f 20 65 61 63  68 20 62 79 74 65 20 28  |into each byte (|
00005890  38 2f 32 3d 34 29 2e 0d  46 69 6e 61 6c 6c 79 20  |8/2=4)..Finally |
000058a0  69 6e 20 4d 4f 44 45 20  32 20 28 74 68 65 20 73  |in MODE 2 (the s|
000058b0  69 78 74 65 65 6e 20 63  6f 6c 6f 75 72 20 6d 6f  |ixteen colour mo|
000058c0  64 65 20 77 68 65 72 65  20 65 61 63 68 20 70 69  |de where each pi|
000058d0  78 65 6c 20 72 65 71 75  69 72 65 73 20 34 0d 62  |xel requires 4.b|
000058e0  69 74 73 29 20 77 65 20  63 61 6e 20 66 69 74 20  |its) we can fit |
000058f0  74 77 6f 20 70 69 78 65  6c 73 20 69 6e 74 6f 20  |two pixels into |
00005900  65 61 63 68 20 62 79 74  65 2e 20 4c 65 74 27 73  |each byte. Let's|
00005910  20 6e 6f 77 20 6c 6f 6f  6b 20 61 74 20 68 6f 77  | now look at how|
00005920  20 65 61 63 68 20 69 73  0d 6c 61 69 64 20 6f 75  | each is.laid ou|
00005930  74 20 69 6e 20 6d 6f 72  65 20 64 65 70 74 68 3a  |t in more depth:|
00005940  0d 0d 4d 4f 4e 4f 43 48  52 4f 4d 45 20 4d 4f 44  |..MONOCHROME MOD|
00005950  45 53 3a 0d 0d 54 68 65  73 65 20 61 72 65 20 6c  |ES:..These are l|
00005960  61 69 64 20 6f 75 74 20  69 6e 20 74 68 65 20 73  |aid out in the s|
00005970  69 6d 70 6c 65 73 74 20  77 61 79 2c 20 61 73 20  |implest way, as |
00005980  65 69 67 68 74 20 70 69  78 65 6c 73 20 66 69 74  |eight pixels fit|
00005990  20 69 6e 74 6f 20 65 61  63 68 20 62 79 74 65 2e  | into each byte.|
000059a0  0d 54 68 65 20 63 68 61  72 61 63 74 65 72 2c 20  |.The character, |
000059b0  72 65 6d 65 6d 62 65 72  2c 20 63 6f 6e 73 69 73  |remember, consis|
000059c0  74 73 20 6f 66 20 61 6e  20 38 20 62 79 20 38 20  |ts of an 8 by 8 |
000059d0  73 71 75 61 72 65 20 6f  66 20 70 69 78 65 6c 73  |square of pixels|
000059e0  2e 20 54 68 65 20 64 61  74 61 0d 69 73 20 73 74  |. The data.is st|
000059f0  6f 72 65 64 20 69 6e 20  74 68 65 20 73 61 6d 65  |ored in the same|
00005a00  20 77 61 79 20 61 73 20  75 73 65 72 20 64 65 66  | way as user def|
00005a10  69 6e 65 64 20 63 68 61  72 61 63 74 65 72 73 20  |ined characters |
00005a20  61 72 65 20 64 65 66 69  6e 65 64 20 75 73 69 6e  |are defined usin|
00005a30  67 0d 56 44 55 32 33 2e  20 54 68 65 20 66 69 72  |g.VDU23. The fir|
00005a40  73 74 20 62 79 74 65 20  6f 66 20 74 68 65 20 64  |st byte of the d|
00005a50  65 66 69 6e 69 74 69 6f  6e 20 64 65 66 69 6e 65  |efinition define|
00005a60  73 20 74 68 65 20 74 6f  70 20 72 6f 77 20 6f 66  |s the top row of|
00005a70  20 65 69 67 68 74 20 70  69 78 65 6c 73 3b 0d 74  | eight pixels;.t|
00005a80  68 65 20 73 65 63 6f 6e  64 20 64 65 66 69 6e 65  |he second define|
00005a90  73 20 74 68 65 20 73 65  63 6f 6e 64 20 72 6f 77  |s the second row|
00005aa0  20 64 6f 77 6e 2c 20 65  74 63 2e 20 54 68 75 73  | down, etc. Thus|
00005ab0  20 74 68 65 20 65 6e 74  69 72 65 20 63 68 61 72  | the entire char|
00005ac0  61 63 74 65 72 20 63 61  6e 0d 62 65 20 64 65 66  |acter can.be def|
00005ad0  69 6e 65 64 20 69 6e 20  65 69 67 68 74 20 62 79  |ined in eight by|
00005ae0  74 65 73 2c 20 61 6e 64  20 74 68 69 73 20 69 73  |tes, and this is|
00005af0  20 74 68 65 20 6e 75 6d  62 65 72 20 6f 66 20 62  | the number of b|
00005b00  79 74 65 73 20 6f 66 20  74 68 65 20 45 6c 6b 27  |ytes of the Elk'|
00005b10  73 0d 6d 65 6d 6f 72 79  20 77 68 69 63 68 20 69  |s.memory which i|
00005b20  73 20 75 73 65 64 20 62  79 20 65 61 63 68 20 63  |s used by each c|
00005b30  68 61 72 61 63 74 65 72  2e 20 4e 6f 74 65 20 2d  |haracter. Note -|
00005b40  20 74 68 65 20 6d 6f 73  74 20 73 69 67 6e 69 66  | the most signif|
00005b50  69 63 61 6e 74 20 62 69  74 20 6f 66 0d 65 61 63  |icant bit of.eac|
00005b60  68 20 62 79 74 65 20 64  65 66 69 6e 65 73 20 74  |h byte defines t|
00005b70  68 65 20 6c 65 66 74 2d  6d 6f 73 74 20 70 69 78  |he left-most pix|
00005b80  65 6c 20 6f 66 20 74 68  65 20 72 6f 77 2c 20 61  |el of the row, a|
00005b90  6e 64 20 74 68 65 20 6c  65 61 73 74 20 73 69 67  |nd the least sig|
00005ba0  6e 69 66 69 63 61 6e 74  0d 62 69 74 20 64 65 66  |nificant.bit def|
00005bb0  69 6e 65 73 20 74 68 65  20 72 69 67 68 74 2d 6d  |ines the right-m|
00005bc0  6f 73 74 20 70 69 78 65  6c 20 28 6a 75 73 74 20  |ost pixel (just |
00005bd0  61 73 20 77 69 74 68 20  56 44 55 20 32 33 20 64  |as with VDU 23 d|
00005be0  65 66 69 6e 69 74 69 6f  6e 73 29 0d 0d 46 4f 55  |efinitions)..FOU|
00005bf0  52 20 43 4f 4c 4f 55 52  20 4d 4f 44 45 53 3a 0d  |R COLOUR MODES:.|
00005c00  0d 54 68 69 73 20 74 69  6d 65 20 65 61 63 68 20  |.This time each |
00005c10  62 79 74 65 20 63 61 6e  20 6f 6e 6c 79 20 68 6f  |byte can only ho|
00005c20  6c 64 20 66 6f 75 72 20  70 69 78 65 6c 73 2e 20  |ld four pixels. |
00005c30  4f 6e 63 65 20 61 67 61  69 6e 2c 20 65 61 63 68  |Once again, each|
00005c40  20 62 79 74 65 20 68 6f  6c 64 73 0d 61 20 6e 75  | byte holds.a nu|
00005c50  6d 62 65 72 20 6f 66 20  70 69 78 65 6c 73 20 77  |mber of pixels w|
00005c60  68 69 63 68 20 61 72 65  20 69 6e 20 61 20 68 6f  |hich are in a ho|
00005c70  72 69 7a 6f 6e 74 61 6c  20 6c 69 6e 65 2e 20 54  |rizontal line. T|
00005c80  68 69 73 20 74 69 6d 65  2c 20 61 73 20 62 65 66  |his time, as bef|
00005c90  6f 72 65 2c 0d 74 68 65  20 66 69 72 73 74 20 65  |ore,.the first e|
00005ca0  69 67 68 74 20 62 79 74  65 73 20 72 75 6e 20 64  |ight bytes run d|
00005cb0  6f 77 6e 20 69 6e 20 61  20 76 65 72 74 69 63 61  |own in a vertica|
00005cc0  6c 20 6c 69 6e 65 2e 20  54 68 69 73 20 74 69 6d  |l line. This tim|
00005cd0  65 2c 20 74 68 6f 75 67  68 2c 20 6e 6f 74 0d 61  |e, though, not.a|
00005ce0  6c 6c 20 6f 66 20 74 68  65 20 70 69 78 65 6c 73  |ll of the pixels|
00005cf0  20 69 6e 20 74 68 65 20  63 68 61 72 61 63 74 65  | in the characte|
00005d00  72 20 61 72 65 20 62 65  69 6e 67 20 64 65 66 69  |r are being defi|
00005d10  6e 65 64 2c 20 61 6e 64  20 6f 6e 6c 79 20 74 68  |ned, and only th|
00005d20  65 20 6c 65 66 74 0d 6d  6f 73 74 20 34 20 70 69  |e left.most 4 pi|
00005d30  78 65 6c 73 2e 20 54 68  65 20 72 69 67 68 74 2d  |xels. The right-|
00005d40  6d 6f 73 74 20 66 6f 75  72 20 70 69 78 65 6c 73  |most four pixels|
00005d50  20 61 72 65 20 64 65 66  69 6e 65 64 20 69 6e 20  | are defined in |
00005d60  61 20 73 65 63 6f 6e 64  20 64 6f 77 6e 77 61 72  |a second downwar|
00005d70  64 0d 76 65 72 74 69 63  61 6c 20 73 77 65 65 70  |d.vertical sweep|
00005d80  2e 20 54 68 75 73 20 74  68 65 20 74 6f 74 61 6c  |. Thus the total|
00005d90  20 6d 65 6d 6f 72 79 20  61 6c 6c 6f 63 61 74 69  | memory allocati|
00005da0  6f 6e 20 66 6f 72 20 65  61 63 68 20 63 68 61 72  |on for each char|
00005db0  61 63 74 65 72 20 69 73  0d 73 69 78 74 65 65 6e  |acter is.sixteen|
00005dc0  20 62 79 74 65 73 2e 20  54 68 65 20 6c 61 79 6f  | bytes. The layo|
00005dd0  75 74 20 69 73 20 73 68  6f 77 6e 20 6d 6f 72 65  |ut is shown more|
00005de0  20 63 6c 65 61 72 6c 79  20 75 73 69 6e 67 20 61  | clearly using a|
00005df0  20 64 69 61 67 72 61 6d  2e 20 54 68 69 73 0d 73  | diagram. This.s|
00005e00  68 6f 77 73 20 74 68 65  20 65 69 67 68 74 20 62  |hows the eight b|
00005e10  79 20 65 69 67 68 74 20  62 6c 6f 63 6b 20 6f 66  |y eight block of|
00005e20  20 70 69 78 65 6c 73 20  69 6e 20 61 20 63 68 61  | pixels in a cha|
00005e30  72 61 63 74 65 72 2c 20  61 6e 64 20 65 61 63 68  |racter, and each|
00005e40  20 68 61 73 0d 74 68 65  20 6f 66 66 73 65 74 20  | has.the offset |
00005e50  6f 66 20 74 68 65 20 6d  65 6d 6f 72 79 20 6c 6f  |of the memory lo|
00005e60  63 61 74 69 6f 6e 20 77  68 65 72 65 20 74 68 69  |cation where thi|
00005e70  73 20 70 69 78 65 6c 20  69 73 20 73 74 6f 72 65  |s pixel is store|
00005e80  64 20 66 72 6f 6d 20 74  68 65 0d 73 74 61 72 74  |d from the.start|
00005e90  20 6f 66 20 74 68 65 20  63 68 61 72 61 63 74 65  | of the characte|
00005ea0  72 20 64 65 66 69 6e 69  74 69 6f 6e 2e 20 4f 66  |r definition. Of|
00005eb0  66 73 65 74 73 20 61 72  65 20 67 69 76 65 6e 20  |fsets are given |
00005ec0  69 6e 20 68 65 78 69 64  65 63 69 6d 61 6c 3a 0d  |in hexidecimal:.|
00005ed0  0d 50 49 58 45 4c 2d 42  59 20 50 49 58 45 4c 20  |.PIXEL-BY PIXEL |
00005ee0  4c 41 59 4f 55 54 20 20  20 20 4d 45 4d 4f 52 59  |LAYOUT    MEMORY|
00005ef0  20 46 4c 4f 57 0d 0d 30  30 30 30 38 38 38 38 20  | FLOW..00008888 |
00005f00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005f10  20 20 30 20 20 20 20 20  20 38 0d 31 31 31 31 39  |  0      8.11119|
00005f20  39 39 39 20 20 20 20 20  20 20 20 20 20 20 20 20  |999             |
00005f30  20 20 20 20 20 20 dd 20  20 20 20 20 20 dd 0d 32  |      .      ..2|
00005f40  32 32 32 41 41 41 41 20  20 20 20 20 20 20 20 20  |222AAAA         |
00005f50  20 20 20 20 20 20 20 20  20 20 dd 20 20 20 20 20  |          .     |
00005f60  20 dd 0d 33 33 33 33 42  42 42 42 20 20 20 20 20  | ..3333BBBB     |
00005f70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 dd 20  |              . |
00005f80  20 20 20 20 20 dd 0d 34  34 34 34 43 43 43 43 20  |     ..4444CCCC |
00005f90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005fa0  20 20 dd 20 20 20 20 20  20 dd 0d 35 35 35 35 44  |  .      ..5555D|
00005fb0  44 44 44 20 20 20 20 20  20 20 20 20 20 20 20 20  |DDD             |
00005fc0  20 20 20 20 20 20 dd 20  20 20 20 20 20 dd 0d 36  |      .      ..6|
00005fd0  36 36 36 45 45 45 45 20  20 20 20 20 20 20 20 20  |666EEEE         |
00005fe0  20 20 20 20 20 20 20 20  20 5c 20 2f 20 20 20 20  |         \ /    |
00005ff0  5c 20 2f 0d 37 37 37 37  46 46 46 46 20 20 20 20  |\ /.7777FFFF    |
00006000  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 37  |               7|
00006010  20 20 20 20 20 20 46 0d  0d 45 61 63 68 20 6f 66  |      F..Each of|
00006020  20 74 68 65 73 65 20 73  69 78 74 65 65 6e 20 62  | these sixteen b|
00006030  79 74 65 73 2c 20 61 73  20 61 6c 72 65 61 64 79  |ytes, as already|
00006040  20 64 69 73 63 75 73 73  65 64 2c 20 63 6f 6e 74  | discussed, cont|
00006050  61 69 6e 73 20 66 6f 75  72 20 70 69 78 65 6c 0d  |ains four pixel.|
00006060  64 65 66 69 6e 69 74 69  6f 6e 73 2e 20 42 75 74  |definitions. But|
00006070  20 77 69 74 68 69 6e 20  74 68 65 20 62 79 74 65  | within the byte|
00006080  27 73 20 65 69 67 68 74  20 62 69 74 73 2c 20 74  |'s eight bits, t|
00006090  68 65 79 20 61 72 65 20  6e 6f 74 20 6c 61 69 64  |hey are not laid|
000060a0  20 6f 75 74 20 61 73 0d  79 6f 75 20 6d 69 67 68  | out as.you migh|
000060b0  74 20 61 74 20 66 69 72  73 74 20 69 6d 61 67 69  |t at first imagi|
000060c0  6e 65 2e 20 49 66 20 77  65 20 63 61 6c 6c 20 74  |ne. If we call t|
000060d0  68 65 20 66 6f 75 72 20  70 69 78 65 6c 73 20 41  |he four pixels A|
000060e0  2c 20 42 2c 20 43 20 61  6e 64 20 44 20 28 41 20  |, B, C and D (A |
000060f0  69 73 0d 6c 65 66 74 2d  6d 6f 73 74 2c 20 44 20  |is.left-most, D |
00006100  69 73 20 72 69 67 68 74  2d 6d 6f 73 74 29 2c 20  |is right-most), |
00006110  74 68 65 20 6c 61 79 20  6f 75 74 20 69 73 3a 0d  |the lay out is:.|
00006120  0d 5b 4d 4f 53 54 20 53  49 47 4e 49 46 49 43 41  |.[MOST SIGNIFICA|
00006130  4e 54 5d 20 20 20 20 41  31 20 42 31 20 43 31 20  |NT]    A1 B1 C1 |
00006140  44 31 20 41 30 20 42 30  20 43 30 20 44 30 20 20  |D1 A0 B0 C0 D0  |
00006150  20 20 5b 4c 45 41 53 54  20 53 49 47 4e 49 46 49  |  [LEAST SIGNIFI|
00006160  43 41 4e 54 5d 0d 0d 57  68 65 72 65 3a 20 41 31  |CANT]..Where: A1|
00006170  3a 20 4d 6f 73 74 20 73  69 67 6e 69 66 69 63 61  |: Most significa|
00006180  6e 74 20 62 69 74 20 6f  66 20 41 27 73 20 64 65  |nt bit of A's de|
00006190  66 69 6e 69 74 69 6f 6e  20 20 dd 20 54 77 6f 20  |finition  . Two |
000061a0  62 69 74 20 64 65 66 69  6e 69 74 69 6f 6e 0d 20  |bit definition. |
000061b0  20 20 20 20 20 20 41 30  3a 20 4c 65 61 73 74 20  |      A0: Least |
000061c0  73 69 67 6e 69 66 69 63  61 6e 74 20 62 69 74 20  |significant bit |
000061d0  6f 66 20 41 27 73 20 64  65 66 69 6e 69 74 69 6f  |of A's definitio|
000061e0  6e 20 dd 20 20 6f 66 20  70 69 78 65 6c 20 41 2e  |n .  of pixel A.|
000061f0  0d 0d 54 68 65 20 73 61  6d 65 20 70 61 74 74 65  |..The same patte|
00006200  72 6e 20 68 6f 6c 64 73  20 66 6f 72 20 42 2c 20  |rn holds for B, |
00006210  43 20 61 6e 64 20 44 2e  0d 0d 45 78 61 6d 70 6c  |C and D...Exampl|
00006220  65 3a 0d 0d 4c 65 74 27  73 20 73 75 70 70 6f 73  |e:..Let's suppos|
00006230  65 20 77 65 20 77 61 6e  74 20 74 6f 20 73 65 74  |e we want to set|
00006240  20 74 68 65 20 63 6f 6c  6f 75 72 20 6f 66 20 74  | the colour of t|
00006250  68 65 20 6c 65 66 74 2d  6d 6f 73 74 20 70 69 78  |he left-most pix|
00006260  65 6c 20 69 6e 20 61 20  62 79 74 65 0d 6f 66 20  |el in a byte.of |
00006270  61 20 66 6f 75 72 20 63  6f 6c 6f 75 72 20 6d 6f  |a four colour mo|
00006280  64 65 20 74 6f 20 62 65  20 63 6f 6c 6f 75 72 20  |de to be colour |
00006290  33 2e 20 57 65 20 77 6f  75 6c 64 20 75 73 65 3a  |3. We would use:|
000062a0  0d 0d 3f 61 64 64 72 65  73 73 3d 28 3f 61 64 64  |..?address=(?add|
000062b0  72 65 73 73 20 41 4e 44  20 26 37 37 29 20 4f 52  |ress AND &77) OR|
000062c0  20 26 38 38 0d 0d 45 78  70 6c 61 6e 61 74 69 6f  | &88..Explanatio|
000062d0  6e 20 2d 20 54 68 65 20  28 3f 61 64 64 72 65 73  |n - The (?addres|
000062e0  73 20 41 4e 44 20 26 37  37 29 20 62 69 74 20 63  |s AND &77) bit c|
000062f0  6c 65 61 72 73 20 74 68  65 20 74 77 6f 20 62 69  |lears the two bi|
00006300  74 73 20 64 65 66 69 6e  69 6e 67 20 74 68 65 0d  |ts defining the.|
00006310  70 69 78 65 6c 20 74 68  61 74 20 77 65 20 77 61  |pixel that we wa|
00006320  6e 74 20 74 6f 20 63 68  61 6e 67 65 2e 20 54 68  |nt to change. Th|
00006330  65 20 4f 52 20 26 38 38  20 74 68 65 6e 20 73 65  |e OR &88 then se|
00006340  74 73 20 74 68 65 20 74  77 6f 20 62 69 74 73 20  |ts the two bits |
00006350  74 68 61 74 20 77 65 0d  77 61 6e 74 20 73 65 74  |that we.want set|
00006360  2e 20 54 68 69 73 20 77  61 79 20 77 65 20 65 6e  |. This way we en|
00006370  73 75 72 65 20 74 68 61  74 20 77 68 65 6e 20 77  |sure that when w|
00006380  65 20 61 72 65 20 67 6f  69 6e 67 20 77 61 79 20  |e are going way |
00006390  66 72 6f 6d 20 63 6f 6c  6f 75 72 20 31 20 74 6f  |from colour 1 to|
000063a0  0d 63 6f 6c 6f 75 72 20  32 2c 20 74 68 65 20 6c  |.colour 2, the l|
000063b0  65 61 73 74 20 73 69 67  6e 69 66 69 63 61 6e 74  |east significant|
000063c0  20 62 69 74 20 6f 66 20  74 68 65 20 64 65 66 69  | bit of the defi|
000063d0  6e 69 74 69 6f 6e 20 69  73 20 63 6c 65 61 72 65  |nition is cleare|
000063e0  64 20 61 73 20 77 65 6c  6c 0d 61 73 20 74 68 65  |d as well.as the|
000063f0  20 6d 6f 73 74 20 73 69  67 6e 69 66 69 63 61 6e  | most significan|
00006400  74 20 62 69 74 20 62 65  69 6e 67 20 73 65 74 2e  |t bit being set.|
00006410  0d 0d 49 74 20 69 73 20  69 6d 70 6f 72 74 61 6e  |..It is importan|
00006420  74 20 74 6f 20 6e 6f 74  69 63 65 20 74 68 65 20  |t to notice the |
00006430  70 61 74 74 65 72 6e 20  69 6e 20 74 68 65 73 65  |pattern in these|
00006440  20 62 69 74 73 20 2d 20  65 61 63 68 20 70 69 78  | bits - each pix|
00006450  65 6c 20 72 65 71 75 69  72 65 73 0d 61 20 74 77  |el requires.a tw|
00006460  6f 20 62 69 74 20 64 65  66 69 6e 69 74 69 6f 6e  |o bit definition|
00006470  2c 20 62 75 74 20 74 68  65 73 65 20 74 77 6f 20  |, but these two |
00006480  62 69 74 73 20 61 72 65  20 6e 6f 74 20 6e 65 78  |bits are not nex|
00006490  74 20 74 6f 20 65 61 63  68 20 6f 74 68 65 72 20  |t to each other |
000064a0  69 6e 0d 74 68 65 20 62  79 74 65 20 2d 20 69 6e  |in.the byte - in|
000064b0  73 74 65 61 64 20 61 6c  6c 20 6f 66 20 74 68 65  |stead all of the|
000064c0  20 68 69 67 68 2d 62 79  74 65 73 20 61 72 65 20  | high-bytes are |
000064d0  73 74 6f 72 65 64 20 74  6f 67 65 74 68 65 72 2c  |stored together,|
000064e0  20 61 6e 64 20 61 6c 6c  20 6f 66 0d 74 68 65 20  | and all of.the |
000064f0  6c 6f 77 2d 62 79 74 65  73 20 61 72 65 20 73 74  |low-bytes are st|
00006500  6f 72 65 64 20 74 6f 67  65 74 68 65 72 2e 0d 0d  |ored together...|
00006510  53 49 58 54 45 45 4e 20  43 4f 4c 4f 55 52 20 4d  |SIXTEEN COLOUR M|
00006520  4f 44 45 53 0d 0d 54 68  65 20 70 61 74 74 65 72  |ODES..The patter|
00006530  6e 20 66 6f 72 20 73 69  78 74 65 65 6e 20 63 6f  |n for sixteen co|
00006540  6c 6f 75 72 20 6d 6f 64  65 73 20 69 73 20 73 69  |lour modes is si|
00006550  6d 69 6c 61 72 20 74 6f  20 74 68 61 74 20 66 6f  |milar to that fo|
00006560  75 6e 64 20 69 6e 20 66  6f 75 72 0d 63 6f 6c 6f  |und in four.colo|
00006570  75 72 20 6d 6f 64 65 73  2c 20 65 78 63 65 70 74  |ur modes, except|
00006580  20 74 68 61 74 20 65 61  63 68 20 62 79 74 65 20  | that each byte |
00006590  63 61 6e 20 6f 6e 6c 79  20 73 74 6f 72 65 20 74  |can only store t|
000065a0  77 6f 20 70 69 78 65 6c  73 20 28 65 61 63 68 0d  |wo pixels (each.|
000065b0  6f 63 63 75 70 69 65 73  20 66 6f 75 72 20 62 69  |occupies four bi|
000065c0  74 73 29 2e 20 41 73 20  77 69 74 68 20 70 72 65  |ts). As with pre|
000065d0  76 69 6f 75 73 20 63 61  73 65 73 2c 20 74 68 65  |vious cases, the|
000065e0  20 70 69 78 65 6c 73 20  61 72 65 20 73 74 6f 72  | pixels are stor|
000065f0  65 64 0d 69 6e 20 61 20  6e 75 6d 62 65 72 20 6f  |ed.in a number o|
00006600  66 20 76 65 72 74 69 63  61 6c 20 73 77 65 65 70  |f vertical sweep|
00006610  73 20 73 74 61 72 74 69  6e 67 20 61 74 20 74 68  |s starting at th|
00006620  65 20 6c 65 66 74 20 6f  66 20 74 68 65 20 63 68  |e left of the ch|
00006630  61 72 61 63 74 65 72 2c  0d 61 6e 64 20 6d 6f 76  |aracter,.and mov|
00006640  69 6e 67 20 74 6f 20 74  68 65 20 72 69 67 68 74  |ing to the right|
00006650  2e 20 54 68 69 73 20 74  69 6d 65 2c 20 74 68 6f  |. This time, tho|
00006660  75 67 68 2c 20 66 6f 75  72 20 76 65 72 74 69 63  |ugh, four vertic|
00006670  61 6c 20 73 77 65 65 70  73 20 61 72 65 0d 72 65  |al sweeps are.re|
00006680  71 75 69 72 65 64 20 74  6f 20 63 6f 76 65 72 20  |quired to cover |
00006690  74 68 65 20 65 6e 74 69  72 65 20 63 68 61 72 61  |the entire chara|
000066a0  63 74 65 72 2c 20 6e 6f  74 20 74 77 6f 20 61 73  |cter, not two as|
000066b0  20 77 69 74 68 20 66 6f  75 72 20 63 6f 6c 6f 75  | with four colou|
000066c0  72 0d 6d 6f 64 65 73 3a  0d 0d 50 49 58 45 4c 2d  |r.modes:..PIXEL-|
000066d0  42 59 20 50 49 58 45 4c  20 4c 41 59 4f 55 54 20  |BY PIXEL LAYOUT |
000066e0  20 20 20 4d 45 4d 4f 52  59 20 46 4c 4f 57 0d 0d  |   MEMORY FLOW..|
000066f0  30 30 38 38 30 30 38 38  20 20 20 20 20 20 20 20  |00880088        |
00006700  20 20 20 20 20 20 20 20  20 20 20 30 20 20 20 20  |           0    |
00006710  20 20 38 20 20 20 20 31  30 20 20 20 20 31 38 0d  |  8    10    18.|
00006720  31 31 39 39 31 31 39 39  20 20 20 20 20 20 20 20  |11991199        |
00006730  20 20 20 20 20 20 20 20  20 20 20 dd 20 20 20 20  |           .    |
00006740  20 20 dd 20 20 20 20 20  dd 20 20 20 20 20 dd 0d  |  .     .     ..|
00006750  32 32 41 41 32 32 41 41  20 20 20 20 20 20 20 20  |22AA22AA        |
00006760  20 20 20 20 20 20 20 20  20 20 20 dd 20 20 20 20  |           .    |
00006770  20 20 dd 20 20 20 20 20  dd 20 20 20 20 20 dd 0d  |  .     .     ..|
00006780  33 33 42 42 33 33 42 42  20 20 20 20 20 20 20 20  |33BB33BB        |
00006790  20 20 20 20 20 20 20 20  20 20 20 dd 20 20 20 20  |           .    |
000067a0  20 20 dd 20 20 20 20 20  dd 20 20 20 20 20 dd 0d  |  .     .     ..|
000067b0  34 34 43 43 34 34 43 43  20 20 20 20 20 20 20 20  |44CC44CC        |
000067c0  20 20 20 20 20 20 20 20  20 20 20 dd 20 20 20 20  |           .    |
000067d0  20 20 dd 20 20 20 20 20  dd 20 20 20 20 20 dd 0d  |  .     .     ..|
000067e0  35 35 44 44 35 35 44 44  20 20 20 20 20 20 20 20  |55DD55DD        |
000067f0  20 20 20 20 20 20 20 20  20 20 20 dd 20 20 20 20  |           .    |
00006800  20 20 dd 20 20 20 20 20  dd 20 20 20 20 20 dd 0d  |  .     .     ..|
00006810  36 36 45 45 36 36 45 45  20 20 20 20 20 20 20 20  |66EE66EE        |
00006820  20 20 20 20 20 20 20 20  20 20 5c 20 2f 20 20 20  |          \ /   |
00006830  20 5c 20 2f 20 20 20 5c  20 2f 20 20 20 5c 20 2f  | \ /   \ /   \ /|
00006840  0d 37 37 46 46 37 37 46  46 20 20 20 20 20 20 20  |.77FF77FF       |
00006850  20 20 20 20 20 20 20 20  20 20 20 20 37 20 20 20  |            7   |
00006860  20 20 20 46 20 20 20 20  31 37 20 20 20 20 31 46  |   F    17    1F|
00006870  0d 0d 4e 42 3a 20 4f 66  66 73 65 74 73 20 67 69  |..NB: Offsets gi|
00006880  76 65 6e 20 69 6e 20 68  65 78 61 64 65 63 69 6d  |ven in hexadecim|
00006890  61 6c 2e 20 56 61 6c 75  65 73 20 69 6e 20 72 69  |al. Values in ri|
000068a0  67 68 74 20 68 61 6c 66  20 6f 66 20 6c 65 66 74  |ght half of left|
000068b0  20 64 69 61 67 72 61 6d  0d 73 68 6f 75 6c 64 20  | diagram.should |
000068c0  68 61 76 65 20 26 31 30  20 61 64 64 65 64 20 74  |have &10 added t|
000068d0  6f 20 74 68 65 6d 20 28  6f 6e 6c 79 20 6c 65 61  |o them (only lea|
000068e0  73 74 20 73 69 67 6e 69  66 69 63 61 6e 74 20 63  |st significant c|
000068f0  68 61 72 61 63 74 65 72  20 67 69 76 65 6e 29 0d  |haracter given).|
00006900  0d 54 68 65 20 70 61 74  74 65 72 6e 20 6f 66 20  |.The pattern of |
00006910  74 68 65 20 6c 61 79 6f  75 74 20 6f 66 20 74 68  |the layout of th|
00006920  65 20 70 69 78 65 6c 20  64 61 74 61 20 69 6e 20  |e pixel data in |
00006930  65 61 63 68 20 6f 66 20  74 68 65 20 62 79 74 65  |each of the byte|
00006940  73 0d 69 73 20 61 6c 73  6f 20 73 69 6d 69 6c 61  |s.is also simila|
00006950  72 20 74 6f 20 74 68 61  74 20 66 6f 72 20 74 68  |r to that for th|
00006960  65 20 66 6f 75 72 20 63  6f 6c 6f 75 72 20 6d 6f  |e four colour mo|
00006970  64 65 73 20 28 74 68 65  20 74 77 6f 20 70 69 78  |des (the two pix|
00006980  65 6c 73 0d 61 72 65 20  41 20 61 6e 64 20 42 2c  |els.are A and B,|
00006990  20 61 6e 64 20 65 61 63  68 20 63 6f 6d 70 72 69  | and each compri|
000069a0  73 65 73 20 6f 66 20 66  6f 75 72 20 62 69 74 73  |ses of four bits|
000069b0  20 30 2d 33 2c 20 77 68  65 72 65 20 30 20 69 73  | 0-3, where 0 is|
000069c0  20 6c 65 61 73 74 0d 73  69 67 6e 69 66 69 63 61  | least.significa|
000069d0  6e 74 20 61 6e 64 20 33  20 69 73 20 6d 6f 73 74  |nt and 3 is most|
000069e0  20 73 69 67 6e 69 66 69  63 61 6e 74 29 2e 0d 0d  | significant)...|
000069f0  5b 4d 4f 53 54 20 53 49  47 4e 49 46 49 43 41 4e  |[MOST SIGNIFICAN|
00006a00  54 5d 20 20 20 20 41 33  20 42 33 20 41 32 20 42  |T]    A3 B3 A2 B|
00006a10  32 20 41 31 20 42 31 20  41 30 20 42 30 20 20 20  |2 A1 B1 A0 B0   |
00006a20  20 5b 4c 45 41 53 54 20  53 49 47 4e 49 46 49 43  | [LEAST SIGNIFIC|
00006a30  41 4e 54 5d 0d 0d 4e 6f  74 69 63 65 20 74 68 61  |ANT]..Notice tha|
00006a40  74 20 6f 6e 63 65 20 61  67 61 69 6e 20 62 69 74  |t once again bit|
00006a50  73 20 64 65 66 69 6e 69  6e 67 20 74 68 65 20 70  |s defining the p|
00006a60  69 78 65 6c 73 20 41 20  61 6e 64 20 42 20 61 72  |ixels A and B ar|
00006a70  65 20 6e 6f 74 0d 73 74  6f 72 65 64 20 74 6f 67  |e not.stored tog|
00006a80  65 74 68 65 72 2c 20 62  75 74 20 74 68 6f 73 65  |ether, but those|
00006a90  20 64 65 66 69 6e 69 6e  67 20 74 68 65 20 6c 65  | defining the le|
00006aa0  61 73 74 2f 6d 6f 73 74  20 73 69 67 6e 69 66 69  |ast/most signifi|
00006ab0  63 61 6e 74 0d 62 69 74  73 20 61 72 65 20 73 74  |cant.bits are st|
00006ac0  6f 72 65 64 20 74 6f 67  65 74 68 65 72 2e 0d     |ored together..|
00006acf