Home » Archimedes archive » Micro User » MU 1991-04.adf » PD-Stuff » VDUSaver/SaverDoc

VDUSaver/SaverDoc

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 » Archimedes archive » Micro User » MU 1991-04.adf » PD-Stuff
Filename: VDUSaver/SaverDoc
Read OK:
File size: 4D0B bytes
Load address: 0000
Exec address: 0000
File contents
                  Documentation for VDU Saver Module V2.03
                  ----------------------------------------

********************** Incredibly boring Copyright Notice *********************
*                                                                             *
*       All program code is the exclusive copyright of Richard K. Lloyd.      *
*     The program (source and binary) and documentation for VDU Saver are     *
* freely distributable and should not be charged for under ANY circumstances. *
*                                                                             *
*******************************************************************************

                            Version V2.02 onwards
                            ---------------------
Due to the sterling work of people like Philip Colmer of Acorn, I have decided
to make the source code of the VDU Saver publicly available. It's not a
fantastic example of ARM code programming by any means, but it provides some
useful tips (such as how to call lots of OS routines from inside interrupts
with the minimum of fuss). Please, please, please report any bugs or improve-
ments to the address at the bottom of this document - I will *not* support
'hacked' versions that I don't know about.

Installing VDU Saver (Now requires RISC OS)
-------------------------------------------

Because VDU Saver is a relocatable module, you can install it by typing
*VDUSaver, assuming that you have sufficient RMA available and the filetype
is set to Module. To activate it once it is installed, type *VDUSaver [params].
This * command is explained in greater detail later in this document.

So what does VDU Saver do ?
---------------------------

Acorn standard 14" monitors have a tendency to 'snap' occasionally (actually,
the blame lies with Philips, but that's another story). Why this happens is
beyond my limited electronic know-how (I'm of the 'bash-it-and-see' school of
thinking), but I personally blame bright colours on the screen for prolonged
periods of time (not a game, honest !).

This is where VDU Saver comes in. It is a relocatable module that sits in
the background waiting for a specified period of non-activity. When this
occurs, the current palette is saved and all logical colours in the current
MODE are set to black, the mouse pointer is saved and the border is set to
black.

A 'Smiley' face bounces around the screen to indicate that the screen has been
blacked. This looks more impressive in the 320*256 MODEs (e.g. MODE 1) because
the face appears circular rather than elliptical !

Instead of a 'Smiley' face, the current time in 24-hour clock format can be
displayed instead. See the *Configure SaverType command and the Technical
Details section.

VDU Saver now works in all screen MODEs including the 256-colour and teletext
MODEs. In 256-colour MODEs, the border colour will 'throb' in varying
intensities of the RGB colour specified when the *VDUSaver command was issued.

You can, if you wish, control the speed of the Smiley face or time, its colour
and whether or not the screen is restored on VDU output.

The palette, border and mouse pointer are all restored on any key event (yes,
that includes SHIFT, Alt etc...), mouse movement, mouse button press or
(optionally) VDU output.

*Help VDUSaver will give you plenty of on-line help - in fact all of the
following command descriptions are available via *Help.

The *VDUSaver command
---------------------

Syntax: *VDUSaver [<Minutes>] [<Speed>] [<Type>] [<VDUTrap>]
                  [<Red>] [<Green>] [<Blue>]

The (optional) parameters have the following meaning:

<Minutes>   Minutes (1-63) of inactivity before activation.
            A value of 0 will completely disable VDUSaver.
            If omitted, then the *Configure SaverDelay value is used.

<Speed>     Speed of Smiley face (1 = slowest, 3 = fastest).
            A value of 0 will plot the Smiley face randomly.
            If omitted, then the *Configure SaverSpeed value is used.

<Type>      What type of mouse shape will be plotted.
            0 will always plot the (now infamous) Smiley face.
            1 will plot the current time in 24-hour format.
            If omitted, then the *Configure SaverType value is used.

<VDUTrap>   Signifies if VDU output will restore the screen.
            0 will ignore VDU output, 1 will restore the screen on VDU output.
            If omitted, then the *Configure SaverTrap value is used.
            V1.03 onwards now recognises MODE changes as a screen restoration
            by the OS, even when VDUTrap = 0.

<R> <G> <B> Quantities of RGB in the Smiley face.
            0 0 0 gives black (invisible) and 3 3 3 gives white.
            If any omitted, then the *Configure SaverRGB values are used.

The *VDUStatus Command      *NEW TO V2.03*
----------------------

Syntax: *VDUStatus

Because *Status only reveals the VDU Saver CMOS RAM (i.e. permanent) settings,
I decided to supplement this with a command that shows BOTH the currently
active settings supplied with *VDUSaver and the *Configure ones. The current
settings obviously cannot be shown until an activating *VDUSaver command is
issued, so "Inactive" is displayed in the Current column until such a command
occurs.

The *Configure SaverDelay Command
---------------------------------

Syntax: *Configure SaverDelay <Minutes>

This command alters the permanent SaverDelay value (saved to CMOS RAM byte 35).
<Minutes> should be an integer value between 1 and 63. A value of 0 is NOT
permitted and if your CMOS RAM is set to that value, VDUSaver will force it
to a more sensible value of 15 (minutes).

The *Configure SaverSpeed Command
---------------------------------

Syntax: *Configure SaverSpeed <Speed>

This command alters the permanent SaverSpeed value (saved to CMOS RAM byte 36).
<Speed> should be an integer value between 0 and 3.

The *Configure SaverType Command
--------------------------------

Syntax: *Configure SaverType <Type>

This command alters the permanent SaverType value (saved to CMOS RAM byte 35).
<Type> should be either 0 or 1.

The *Configure SaverTrap Command
--------------------------------

Syntax: *Configure SaverTrap <VDUTrap>

This command alters the permanent SaverTrap value (saved to CMOS RAM byte 35).
<VDUTrap> should be either 0 or 1.

The *Configure SaverRGB Command
-------------------------------

Syntax: *Configure SaverRGB <Red> <Green> <Blue>

This command alters the permanent SaverRGB values (saved to CMOS RAM byte 36).
<Red>, <Green>, <Blue> should be integer values between 0 and 3.

Some Tips whilst using VDU Saver
--------------------------------

1. I've just noticed that moving the pointer over various areas of the icon bar
   causes the VDU Saver to stop working. Further investigation has shown that
   that VDU output occurs ! Hence, people may prefer to set VDUTrap to 0 if
   they spend most of their time in the Desktop.

2. When SaverType is 1, the mouse shape is defined once a minute when the
   screen is blanked - this causes a 'glitch' if SaverSpeed is non-zero due to
   the lengthy time OS_Word 21 (param 0) takes to execute. Hence, I recommend
   a setting of SaverSpeed 0 (randomly plot) when SaverType is set to 1.

3. For those of you who have dead batteries or faulty clocks (mine falls into
   the latter), DON'T PANIC ! The program has been written so that it only
   reads the current time ONCE each time the screen is blanked. Minute updates
   are achieved by using an internal counter - this may eventually lead to
   slight inaccuracies over a long period of time.

Technical Details of VDU Saver
------------------------------

Initially, I tried to use OS_CallAfter and OS_RemoveTickerEvent, but these
seemed to carry on regardless (maybe they don't work in SVC Mode 3 ?). I
ended up using a simple decrementing counter inside a Vsync event routine.

I now blank the screen in two possible ways, depending on the MODE :

1. Non-Teletext/256-colour MODEs
   -----------------------------

   The number of logical colours is found using the NColour (3) value supplied
   to OS_ReadVduVariables. It is assumed that it will be a maximum of 15 in
   this case. The palette is read and stored in a (logical colours+2)*4-byte
   area. The extra 8 bytes are for the border colour and mouse logical colour
   1 in case you're wondering. In the same loop, each colour is set to black
   after its original colour is safely stored. I now use OS_RemoveCursors and
   OS_RestoreCursors to make sure the cursor doesn't remain.

2. Teletext (currently only MODE 7) and 256-colour MODEs
   -----------------------------------------------------

   This is the case when bit 1 of ModeFlags (0) is set to indicate teletext or
   when NColour (3) is set to 63. Less work has to be done here, because the
   ONLY KNOWN WAY to blank/restore the screen in these MODEs is to use the
   following bit of code (of course, I do the ARM equivalent...) :
   
   SYS "OS_UpdateMEMC",&300,&700 TO oldval          : blanks the screen
   SYS "OS_UpdateMEMC",oldval,&700                  : restores it.
   Thanks to Tolli's Blanker (available on SID) for this information.

   Annoyingly, the mouse also gets blanked - hence there is no 'Smiley' face
   or time in these MODEs. The only palette saves/restores that still have to
   be done are the border colour and the background colour (0), the latter of
   which I forgot to do in V1.03 ! For V2.01 onwards, I've added a 'throbbing'
   border colour to at least indicate that something is going on. This cycles
   up and down the palette according to the SaverRGB values specified.

The 'Smiley' face is simply mouse pointer shape 2 (the system usually uses
shape 1) re-programmed and using colour 1 set to the SaverRGB values * &50.

The following vectors are trapped to avoid mouse shape change during blanking:
* OS_Byte vector to check for *FX 106,<value>.
  The value is stored (but NOT executed to prevent shape change) and then used,
  when the screen is restored, to restore the new pointer shape number.
* OS_Word vector to check for OS_Word 12 (write palette) for physical colour
  25 (mouse). Again, this is saved and restored later on.

Oh, by the way, there's no call to read the current mouse shape (its pixel
pattern in other words), so shape 2 is overwritten I'm afraid.

*NEW TO V2.03*
Also missing is a call to find the current mouse rectangle bounds, so I have to
set them to ( 0 , 0 ) - ( X , Y ) where:
X = ( XWindLimit << XEigFactor ) and         } As read by
Y = ( ( YWindLimit - 12 ) << YEigFactor )    } OS_ReadVduVariables

When the screen is blanked, the WrchV (restore screen on any VDU output) and
EventV (restore on Event 10 - Mouse Button pressed - or 11 - Key pressed)
vectors reactivate the screen. OS_OS_Ose is also checked to see if the mouse
position has changed. If it has, the screen is restored.

The Service Call &46 (Mode Change) is now recognised so as to permit a MODE
change to be a valid screen restoration (by the OS rather than VDU Saver).
This is independent of the VDUTrap setting or screen MODE.

The new 24-hour clock feature isn't as easy as it sounds because I've specially
defined the digits 0 to 9 and the string "TIME" as mouse shape data. I call
OS_Word 14 (param 1) to get the current time in BCD. I do some shifting and
use the value of the digits to get the offset into the data, which is poked
into the mouse shape definition.

V2.00 onwards now uses CMOS RAM in the following way:

+---------+-------+-------+-------+-------+-------+-------+-------+-------+
| Bits:   |   7   |   6   |   5   |   4   |   3   |   2   |   1   |   0   |
+---------+-------+-------+-------+-------+-------+-------+-------+-------+
| Byte 35 |<Trap->|<Type->|<---------------  SaverDelay  ---------------->|
+---------+-------+-------+-------+-------+-------+-------+-------+-------+
| Byte 36 |<--- Blue ---->|<--- Green --->|<---- Red ---->|<-SaverSpeed-->|
+---------+-------+-------+-------+-------+-------+-------+-------+-------+

CPU utilisation    *UPDATED FOR RISC OS*
---------------

Someone enquired about the amount of CPU time used when the VDU Saver was
active. Here's some (crude, but effective) benchmarks done on my A310 running
BASIC 1.04 and RISC OS 2.00 :

                                    VDUTrap?  Inactive Active  Diff    Slower
10 MODE 0:TIME=0
20 FOR A%=1 TO 4000000:NEXT        Irrelevant  58.99s  59.06s  00.07s  00.12%
30 PRINT TIME/100

10 MODE 0:TIME=0                      Yes      51.32s  61.40s  10.08s  19.64%
20 FOR A%=1 TO 300000:PRINT"*";:NEXT  No       51.32s  51.38s  00.06s  00.12%
30 PRINT TIME/100

As you can see, there is a hefty CPU grab (nearly one-fifth) if continuous
VDU output occurs when the VDU Saver is active and the VDUTrap is switched on.
This would seem to indicate that claiming WriteCV (but not doing much) appears
to be a no-no if you want fast VDU output - blame Acorn, not me !

In normal situations, however, the CPU grab will be well under 1%, so there is
no need to panic at the alarming 19.64% figure (yes, I was shocked at this
too)...

The code in V2.00 onwards has been extensively re-organised to use the minimum
amount of CPU time when the module is loaded and either active or inactive.
Previous versions would actually use up CPU time as soon as the module was
loaded ! In particular, V2.00 onwards does not claim any vectors or enable
events until a *VDUSaver command is issued.

Revision History of VDU Saver
-----------------------------

Version 2.03
------------

* A new *VDUStatus command has been added so that users can check what values
  they've just supplied to the latest *VDUSaver command.

* To tie in with the new command, a soft reset now performs the equivalent
  of a *VDUSaver 0 command so that *VDUStatus will report the correct status
  (Inactive) rather than the last active values.

* Used OS_ReadVduVariables to find the MODE-independent mouse rectangle, so
  those people with hi-res B&W monitors should (hopefully...anyone care to
  test this ?) have a proper rectangle.

* Due to above change, support for Arthur 1.20 has now been dropped. RISC OS
  has been generally available for more than 6 months now, so there's no
  excuse (and you can now readily order the new PRM's too - I've got mine).

Version 2.02
------------

* Prevented the mouse shape number (2) used by VDU Saver from changing during
  screen blanking (but still changes to requested shape number on screen
  restoration). Ditto for mouse colour 1 (for OS_Word 12 calls only).
  
* The check for 0 delay value in CMOS RAM was not working correctly. Although
  the value of 15 (minutes) would be used (and shown in *Status), a faulty
  MOVEQS instruction meant that the actual CMOS RAM would not be forced to the
  value of 15. This has been fixed.

* Slightly changed the random number seeding routine.

Version 2.01
------------

* Philip Colmer (of Acorn no less) spotted a bug:
  V2.00 would incorrectly restore the palette in 256-colour MODEs. In fact,
  everything started turning green (mouldy old programming perhaps ?)...
  Investigation revealed that I'd moved two statements further down in the
  code, but the first of them, MOV R2,#0, should have remained where it was.
  *BUG FIXED WITH VAPONA FLY SPRAY*

* Philip also put forward the suggestion that the user should see something
  happening in the 256-colour MODEs e.g. the border colour should change.
  I implemented his suggestion - I hope nobody objects too much. He also
  hinted at the possibility of VDU Saver appearing on SID...fingers crossed.
  *VERSION 2.01 IS NOW AVAILABLE ON SID*

Version 2.00
------------

* Due to the extra mouse pointer definitions, V2.00 is now 7K long. Some
  people may consider this big for a screen saver, but think of that pretty
  time plotted on the screen and you might forgive me...

* Re-organised the code to use less CPU time generally, especially when
  the module has been loaded but not activated.

* Fixed the bug whereby colour 0 (background) wasn't restored properly in
  256-colour MODEs.

* Fully (ho hum - I lied here) tested and working in RISC OS (yes, I now have
  it !).

* Modified the MEMC poke to make it 'safer'.

* Now allow either the current time or the Smiley face to be plotted...
  you have a choice at last !

* Added *Configure SaverType to go with the new mouse shape choice.

* Reduced the maximum SaverDelay to 63 minutes because Bit 6 of Byte 35 is
  now used for the SaverType. Also made doubly sure that the version I
  release specifies the delay in minutes (rather than seconds, which I use
  for test purposes and accidentally forgot to change to minutes in V1.03 !).

Version 1.03
------------

* Make a special check for Teletext MODEs, so that the screen saving is
  performed in the same way as 256-colour MODEs.

* 256-colour MODEs now toggle the Video/Cursor DMA Enable flag in MEMC's
  control register to blank the screen. In plain English, VDU Saver now
  works in 256-colour MODEs but without the dubious benefit of a Smiley
  face (because the mouse is unfortunately blanked in these MODEs as well).

* MODE changes are now recognised as a screen restoration without the
  intervention of VDU Saver. This takes care of the case when VDUTrap = 0
  and the MODE is changed in a program whilst the screen is blanked. Earlier
  versions would have, after the appropriate delay, restored the OLD palette
  (prior to the MODE change) to the NEW MODE.

* OK, a little bugette here folks. A friend ran VDU Saver on RISC OS and
  claimed erratic behaviour with the screen restoring at random intervals..!?!
  Due to laziness on my part, I had assumed that all events are disabled
  unless enabled by user programs (it's the case in Arthur 1.20). My theory is
  that RISC OS (probably the Desktop) enables events which Arthur 1.20 didn't
  use to. To remedy this problem, I've specifically checked for events 4,10
  and 11 in my event routine, so this behaviour should have been eliminated
  *CONFIRMED - OK IN RISC OS*.

Version 1.02
------------

* A soft reset no longer causes the *VDUSaver command to fail to activate.

* Uses 2 bytes of CMOS RAM (35 and 36) to permanently store VDUSaver settings.

* Allows finer control over the Smiley face in terms of colour, speed and
  plotting method.

* The text cursor is now switched off and restored correctly during blanking.

* Screen restoration on VDU output is now optional, because some users may have
  a clock running that uses the VDU drivers (especially Twin and graphicky
  Desktop clocks).

Version 1.01
------------

* Shows a bouncing 'Smiley' face when the screen is blacked.

* Restores the screen on mouse movement as well as mouse button presses.

Version 1.00
------------

* Written as a relocatable module that traps vectors.

* Properly switches off and restores the mouse pointer and border colour.

Future Improvements to VDU Saver V2.03
--------------------------------------

* Although OS_Word 12 is trapped to check for mouse colour 1 being changed,
  I later discovered that the *Pointer 1 command actually bypasses this call
  (it uses VDU 19 instead) when changing the mouse colour ! I guess I'll have
  to add yet more code to cope with this...

* At some point, I might make it install itself on the icon bar and act proper
  like wot all programs should do. There again, I might not...nope, I haven't
  bothered yet.

Where to find me to report bugs or improvements to the VDU Saver
----------------------------------------------------------------

Snail Mail           JANET e-mail
----------           ------------
Richard K. Lloyd,    rkl@uk.ac.liv.cs.mva
1, Banks Road,
Lower Heswall,
Wirral,
Merseyside. 
00000000  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000010  20 20 44 6f 63 75 6d 65  6e 74 61 74 69 6f 6e 20  |  Documentation |
00000020  66 6f 72 20 56 44 55 20  53 61 76 65 72 20 4d 6f  |for VDU Saver Mo|
00000030  64 75 6c 65 20 56 32 2e  30 33 0a 20 20 20 20 20  |dule V2.03.     |
00000040  20 20 20 20 20 20 20 20  20 20 20 20 20 2d 2d 2d  |             ---|
00000050  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000070  2d 2d 2d 2d 2d 0a 0a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |-----..*********|
00000080  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 20 49 6e  |************* In|
00000090  63 72 65 64 69 62 6c 79  20 62 6f 72 69 6e 67 20  |credibly boring |
000000a0  43 6f 70 79 72 69 67 68  74 20 4e 6f 74 69 63 65  |Copyright Notice|
000000b0  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  | ***************|
000000c0  2a 2a 2a 2a 2a 2a 0a 2a  20 20 20 20 20 20 20 20  |******.*        |
000000d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000110  20 20 20 20 20 2a 0a 2a  20 20 20 20 20 20 20 41  |     *.*       A|
00000120  6c 6c 20 70 72 6f 67 72  61 6d 20 63 6f 64 65 20  |ll program code |
00000130  69 73 20 74 68 65 20 65  78 63 6c 75 73 69 76 65  |is the exclusive|
00000140  20 63 6f 70 79 72 69 67  68 74 20 6f 66 20 52 69  | copyright of Ri|
00000150  63 68 61 72 64 20 4b 2e  20 4c 6c 6f 79 64 2e 20  |chard K. Lloyd. |
00000160  20 20 20 20 20 2a 0a 2a  20 20 20 20 20 54 68 65  |     *.*     The|
00000170  20 70 72 6f 67 72 61 6d  20 28 73 6f 75 72 63 65  | program (source|
00000180  20 61 6e 64 20 62 69 6e  61 72 79 29 20 61 6e 64  | and binary) and|
00000190  20 64 6f 63 75 6d 65 6e  74 61 74 69 6f 6e 20 66  | documentation f|
000001a0  6f 72 20 56 44 55 20 53  61 76 65 72 20 61 72 65  |or VDU Saver are|
000001b0  20 20 20 20 20 2a 0a 2a  20 66 72 65 65 6c 79 20  |     *.* freely |
000001c0  64 69 73 74 72 69 62 75  74 61 62 6c 65 20 61 6e  |distributable an|
000001d0  64 20 73 68 6f 75 6c 64  20 6e 6f 74 20 62 65 20  |d should not be |
000001e0  63 68 61 72 67 65 64 20  66 6f 72 20 75 6e 64 65  |charged for unde|
000001f0  72 20 41 4e 59 20 63 69  72 63 75 6d 73 74 61 6e  |r ANY circumstan|
00000200  63 65 73 2e 20 2a 0a 2a  20 20 20 20 20 20 20 20  |ces. *.*        |
00000210  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000250  20 20 20 20 20 2a 0a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |     *.*********|
00000260  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000002a0  2a 2a 2a 2a 2a 2a 0a 0a  20 20 20 20 20 20 20 20  |******..        |
000002b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000002c0  20 20 20 20 56 65 72 73  69 6f 6e 20 56 32 2e 30  |    Version V2.0|
000002d0  32 20 6f 6e 77 61 72 64  73 0a 20 20 20 20 20 20  |2 onwards.      |
000002e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000002f0  20 20 20 20 20 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |      ----------|
00000300  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 44 75 65 20  |-----------.Due |
00000310  74 6f 20 74 68 65 20 73  74 65 72 6c 69 6e 67 20  |to the sterling |
00000320  77 6f 72 6b 20 6f 66 20  70 65 6f 70 6c 65 20 6c  |work of people l|
00000330  69 6b 65 20 50 68 69 6c  69 70 20 43 6f 6c 6d 65  |ike Philip Colme|
00000340  72 20 6f 66 20 41 63 6f  72 6e 2c 20 49 20 68 61  |r of Acorn, I ha|
00000350  76 65 20 64 65 63 69 64  65 64 0a 74 6f 20 6d 61  |ve decided.to ma|
00000360  6b 65 20 74 68 65 20 73  6f 75 72 63 65 20 63 6f  |ke the source co|
00000370  64 65 20 6f 66 20 74 68  65 20 56 44 55 20 53 61  |de of the VDU Sa|
00000380  76 65 72 20 70 75 62 6c  69 63 6c 79 20 61 76 61  |ver publicly ava|
00000390  69 6c 61 62 6c 65 2e 20  49 74 27 73 20 6e 6f 74  |ilable. It's not|
000003a0  20 61 0a 66 61 6e 74 61  73 74 69 63 20 65 78 61  | a.fantastic exa|
000003b0  6d 70 6c 65 20 6f 66 20  41 52 4d 20 63 6f 64 65  |mple of ARM code|
000003c0  20 70 72 6f 67 72 61 6d  6d 69 6e 67 20 62 79 20  | programming by |
000003d0  61 6e 79 20 6d 65 61 6e  73 2c 20 62 75 74 20 69  |any means, but i|
000003e0  74 20 70 72 6f 76 69 64  65 73 20 73 6f 6d 65 0a  |t provides some.|
000003f0  75 73 65 66 75 6c 20 74  69 70 73 20 28 73 75 63  |useful tips (suc|
00000400  68 20 61 73 20 68 6f 77  20 74 6f 20 63 61 6c 6c  |h as how to call|
00000410  20 6c 6f 74 73 20 6f 66  20 4f 53 20 72 6f 75 74  | lots of OS rout|
00000420  69 6e 65 73 20 66 72 6f  6d 20 69 6e 73 69 64 65  |ines from inside|
00000430  20 69 6e 74 65 72 72 75  70 74 73 0a 77 69 74 68  | interrupts.with|
00000440  20 74 68 65 20 6d 69 6e  69 6d 75 6d 20 6f 66 20  | the minimum of |
00000450  66 75 73 73 29 2e 20 50  6c 65 61 73 65 2c 20 70  |fuss). Please, p|
00000460  6c 65 61 73 65 2c 20 70  6c 65 61 73 65 20 72 65  |lease, please re|
00000470  70 6f 72 74 20 61 6e 79  20 62 75 67 73 20 6f 72  |port any bugs or|
00000480  20 69 6d 70 72 6f 76 65  2d 0a 6d 65 6e 74 73 20  | improve-.ments |
00000490  74 6f 20 74 68 65 20 61  64 64 72 65 73 73 20 61  |to the address a|
000004a0  74 20 74 68 65 20 62 6f  74 74 6f 6d 20 6f 66 20  |t the bottom of |
000004b0  74 68 69 73 20 64 6f 63  75 6d 65 6e 74 20 2d 20  |this document - |
000004c0  49 20 77 69 6c 6c 20 2a  6e 6f 74 2a 20 73 75 70  |I will *not* sup|
000004d0  70 6f 72 74 0a 27 68 61  63 6b 65 64 27 20 76 65  |port.'hacked' ve|
000004e0  72 73 69 6f 6e 73 20 74  68 61 74 20 49 20 64 6f  |rsions that I do|
000004f0  6e 27 74 20 6b 6e 6f 77  20 61 62 6f 75 74 2e 0a  |n't know about..|
00000500  0a 49 6e 73 74 61 6c 6c  69 6e 67 20 56 44 55 20  |.Installing VDU |
00000510  53 61 76 65 72 20 28 4e  6f 77 20 72 65 71 75 69  |Saver (Now requi|
00000520  72 65 73 20 52 49 53 43  20 4f 53 29 0a 2d 2d 2d  |res RISC OS).---|
00000530  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000550  2d 2d 2d 2d 2d 2d 2d 2d  0a 0a 42 65 63 61 75 73  |--------..Becaus|
00000560  65 20 56 44 55 20 53 61  76 65 72 20 69 73 20 61  |e VDU Saver is a|
00000570  20 72 65 6c 6f 63 61 74  61 62 6c 65 20 6d 6f 64  | relocatable mod|
00000580  75 6c 65 2c 20 79 6f 75  20 63 61 6e 20 69 6e 73  |ule, you can ins|
00000590  74 61 6c 6c 20 69 74 20  62 79 20 74 79 70 69 6e  |tall it by typin|
000005a0  67 0a 2a 56 44 55 53 61  76 65 72 2c 20 61 73 73  |g.*VDUSaver, ass|
000005b0  75 6d 69 6e 67 20 74 68  61 74 20 79 6f 75 20 68  |uming that you h|
000005c0  61 76 65 20 73 75 66 66  69 63 69 65 6e 74 20 52  |ave sufficient R|
000005d0  4d 41 20 61 76 61 69 6c  61 62 6c 65 20 61 6e 64  |MA available and|
000005e0  20 74 68 65 20 66 69 6c  65 74 79 70 65 0a 69 73  | the filetype.is|
000005f0  20 73 65 74 20 74 6f 20  4d 6f 64 75 6c 65 2e 20  | set to Module. |
00000600  54 6f 20 61 63 74 69 76  61 74 65 20 69 74 20 6f  |To activate it o|
00000610  6e 63 65 20 69 74 20 69  73 20 69 6e 73 74 61 6c  |nce it is instal|
00000620  6c 65 64 2c 20 74 79 70  65 20 2a 56 44 55 53 61  |led, type *VDUSa|
00000630  76 65 72 20 5b 70 61 72  61 6d 73 5d 2e 0a 54 68  |ver [params]..Th|
00000640  69 73 20 2a 20 63 6f 6d  6d 61 6e 64 20 69 73 20  |is * command is |
00000650  65 78 70 6c 61 69 6e 65  64 20 69 6e 20 67 72 65  |explained in gre|
00000660  61 74 65 72 20 64 65 74  61 69 6c 20 6c 61 74 65  |ater detail late|
00000670  72 20 69 6e 20 74 68 69  73 20 64 6f 63 75 6d 65  |r in this docume|
00000680  6e 74 2e 0a 0a 53 6f 20  77 68 61 74 20 64 6f 65  |nt...So what doe|
00000690  73 20 56 44 55 20 53 61  76 65 72 20 64 6f 20 3f  |s VDU Saver do ?|
000006a0  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
000006b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 0a 41 63  |------------..Ac|
000006c0  6f 72 6e 20 73 74 61 6e  64 61 72 64 20 31 34 22  |orn standard 14"|
000006d0  20 6d 6f 6e 69 74 6f 72  73 20 68 61 76 65 20 61  | monitors have a|
000006e0  20 74 65 6e 64 65 6e 63  79 20 74 6f 20 27 73 6e  | tendency to 'sn|
000006f0  61 70 27 20 6f 63 63 61  73 69 6f 6e 61 6c 6c 79  |ap' occasionally|
00000700  20 28 61 63 74 75 61 6c  6c 79 2c 0a 74 68 65 20  | (actually,.the |
00000710  62 6c 61 6d 65 20 6c 69  65 73 20 77 69 74 68 20  |blame lies with |
00000720  50 68 69 6c 69 70 73 2c  20 62 75 74 20 74 68 61  |Philips, but tha|
00000730  74 27 73 20 61 6e 6f 74  68 65 72 20 73 74 6f 72  |t's another stor|
00000740  79 29 2e 20 57 68 79 20  74 68 69 73 20 68 61 70  |y). Why this hap|
00000750  70 65 6e 73 20 69 73 0a  62 65 79 6f 6e 64 20 6d  |pens is.beyond m|
00000760  79 20 6c 69 6d 69 74 65  64 20 65 6c 65 63 74 72  |y limited electr|
00000770  6f 6e 69 63 20 6b 6e 6f  77 2d 68 6f 77 20 28 49  |onic know-how (I|
00000780  27 6d 20 6f 66 20 74 68  65 20 27 62 61 73 68 2d  |'m of the 'bash-|
00000790  69 74 2d 61 6e 64 2d 73  65 65 27 20 73 63 68 6f  |it-and-see' scho|
000007a0  6f 6c 20 6f 66 0a 74 68  69 6e 6b 69 6e 67 29 2c  |ol of.thinking),|
000007b0  20 62 75 74 20 49 20 70  65 72 73 6f 6e 61 6c 6c  | but I personall|
000007c0  79 20 62 6c 61 6d 65 20  62 72 69 67 68 74 20 63  |y blame bright c|
000007d0  6f 6c 6f 75 72 73 20 6f  6e 20 74 68 65 20 73 63  |olours on the sc|
000007e0  72 65 65 6e 20 66 6f 72  20 70 72 6f 6c 6f 6e 67  |reen for prolong|
000007f0  65 64 0a 70 65 72 69 6f  64 73 20 6f 66 20 74 69  |ed.periods of ti|
00000800  6d 65 20 28 6e 6f 74 20  61 20 67 61 6d 65 2c 20  |me (not a game, |
00000810  68 6f 6e 65 73 74 20 21  29 2e 0a 0a 54 68 69 73  |honest !)...This|
00000820  20 69 73 20 77 68 65 72  65 20 56 44 55 20 53 61  | is where VDU Sa|
00000830  76 65 72 20 63 6f 6d 65  73 20 69 6e 2e 20 49 74  |ver comes in. It|
00000840  20 69 73 20 61 20 72 65  6c 6f 63 61 74 61 62 6c  | is a relocatabl|
00000850  65 20 6d 6f 64 75 6c 65  20 74 68 61 74 20 73 69  |e module that si|
00000860  74 73 20 69 6e 0a 74 68  65 20 62 61 63 6b 67 72  |ts in.the backgr|
00000870  6f 75 6e 64 20 77 61 69  74 69 6e 67 20 66 6f 72  |ound waiting for|
00000880  20 61 20 73 70 65 63 69  66 69 65 64 20 70 65 72  | a specified per|
00000890  69 6f 64 20 6f 66 20 6e  6f 6e 2d 61 63 74 69 76  |iod of non-activ|
000008a0  69 74 79 2e 20 57 68 65  6e 20 74 68 69 73 0a 6f  |ity. When this.o|
000008b0  63 63 75 72 73 2c 20 74  68 65 20 63 75 72 72 65  |ccurs, the curre|
000008c0  6e 74 20 70 61 6c 65 74  74 65 20 69 73 20 73 61  |nt palette is sa|
000008d0  76 65 64 20 61 6e 64 20  61 6c 6c 20 6c 6f 67 69  |ved and all logi|
000008e0  63 61 6c 20 63 6f 6c 6f  75 72 73 20 69 6e 20 74  |cal colours in t|
000008f0  68 65 20 63 75 72 72 65  6e 74 0a 4d 4f 44 45 20  |he current.MODE |
00000900  61 72 65 20 73 65 74 20  74 6f 20 62 6c 61 63 6b  |are set to black|
00000910  2c 20 74 68 65 20 6d 6f  75 73 65 20 70 6f 69 6e  |, the mouse poin|
00000920  74 65 72 20 69 73 20 73  61 76 65 64 20 61 6e 64  |ter is saved and|
00000930  20 74 68 65 20 62 6f 72  64 65 72 20 69 73 20 73  | the border is s|
00000940  65 74 20 74 6f 0a 62 6c  61 63 6b 2e 0a 0a 41 20  |et to.black...A |
00000950  27 53 6d 69 6c 65 79 27  20 66 61 63 65 20 62 6f  |'Smiley' face bo|
00000960  75 6e 63 65 73 20 61 72  6f 75 6e 64 20 74 68 65  |unces around the|
00000970  20 73 63 72 65 65 6e 20  74 6f 20 69 6e 64 69 63  | screen to indic|
00000980  61 74 65 20 74 68 61 74  20 74 68 65 20 73 63 72  |ate that the scr|
00000990  65 65 6e 20 68 61 73 20  62 65 65 6e 0a 62 6c 61  |een has been.bla|
000009a0  63 6b 65 64 2e 20 54 68  69 73 20 6c 6f 6f 6b 73  |cked. This looks|
000009b0  20 6d 6f 72 65 20 69 6d  70 72 65 73 73 69 76 65  | more impressive|
000009c0  20 69 6e 20 74 68 65 20  33 32 30 2a 32 35 36 20  | in the 320*256 |
000009d0  4d 4f 44 45 73 20 28 65  2e 67 2e 20 4d 4f 44 45  |MODEs (e.g. MODE|
000009e0  20 31 29 20 62 65 63 61  75 73 65 0a 74 68 65 20  | 1) because.the |
000009f0  66 61 63 65 20 61 70 70  65 61 72 73 20 63 69 72  |face appears cir|
00000a00  63 75 6c 61 72 20 72 61  74 68 65 72 20 74 68 61  |cular rather tha|
00000a10  6e 20 65 6c 6c 69 70 74  69 63 61 6c 20 21 0a 0a  |n elliptical !..|
00000a20  49 6e 73 74 65 61 64 20  6f 66 20 61 20 27 53 6d  |Instead of a 'Sm|
00000a30  69 6c 65 79 27 20 66 61  63 65 2c 20 74 68 65 20  |iley' face, the |
00000a40  63 75 72 72 65 6e 74 20  74 69 6d 65 20 69 6e 20  |current time in |
00000a50  32 34 2d 68 6f 75 72 20  63 6c 6f 63 6b 20 66 6f  |24-hour clock fo|
00000a60  72 6d 61 74 20 63 61 6e  20 62 65 0a 64 69 73 70  |rmat can be.disp|
00000a70  6c 61 79 65 64 20 69 6e  73 74 65 61 64 2e 20 53  |layed instead. S|
00000a80  65 65 20 74 68 65 20 2a  43 6f 6e 66 69 67 75 72  |ee the *Configur|
00000a90  65 20 53 61 76 65 72 54  79 70 65 20 63 6f 6d 6d  |e SaverType comm|
00000aa0  61 6e 64 20 61 6e 64 20  74 68 65 20 54 65 63 68  |and and the Tech|
00000ab0  6e 69 63 61 6c 0a 44 65  74 61 69 6c 73 20 73 65  |nical.Details se|
00000ac0  63 74 69 6f 6e 2e 0a 0a  56 44 55 20 53 61 76 65  |ction...VDU Save|
00000ad0  72 20 6e 6f 77 20 77 6f  72 6b 73 20 69 6e 20 61  |r now works in a|
00000ae0  6c 6c 20 73 63 72 65 65  6e 20 4d 4f 44 45 73 20  |ll screen MODEs |
00000af0  69 6e 63 6c 75 64 69 6e  67 20 74 68 65 20 32 35  |including the 25|
00000b00  36 2d 63 6f 6c 6f 75 72  20 61 6e 64 20 74 65 6c  |6-colour and tel|
00000b10  65 74 65 78 74 0a 4d 4f  44 45 73 2e 20 49 6e 20  |etext.MODEs. In |
00000b20  32 35 36 2d 63 6f 6c 6f  75 72 20 4d 4f 44 45 73  |256-colour MODEs|
00000b30  2c 20 74 68 65 20 62 6f  72 64 65 72 20 63 6f 6c  |, the border col|
00000b40  6f 75 72 20 77 69 6c 6c  20 27 74 68 72 6f 62 27  |our will 'throb'|
00000b50  20 69 6e 20 76 61 72 79  69 6e 67 0a 69 6e 74 65  | in varying.inte|
00000b60  6e 73 69 74 69 65 73 20  6f 66 20 74 68 65 20 52  |nsities of the R|
00000b70  47 42 20 63 6f 6c 6f 75  72 20 73 70 65 63 69 66  |GB colour specif|
00000b80  69 65 64 20 77 68 65 6e  20 74 68 65 20 2a 56 44  |ied when the *VD|
00000b90  55 53 61 76 65 72 20 63  6f 6d 6d 61 6e 64 20 77  |USaver command w|
00000ba0  61 73 20 69 73 73 75 65  64 2e 0a 0a 59 6f 75 20  |as issued...You |
00000bb0  63 61 6e 2c 20 69 66 20  79 6f 75 20 77 69 73 68  |can, if you wish|
00000bc0  2c 20 63 6f 6e 74 72 6f  6c 20 74 68 65 20 73 70  |, control the sp|
00000bd0  65 65 64 20 6f 66 20 74  68 65 20 53 6d 69 6c 65  |eed of the Smile|
00000be0  79 20 66 61 63 65 20 6f  72 20 74 69 6d 65 2c 20  |y face or time, |
00000bf0  69 74 73 20 63 6f 6c 6f  75 72 0a 61 6e 64 20 77  |its colour.and w|
00000c00  68 65 74 68 65 72 20 6f  72 20 6e 6f 74 20 74 68  |hether or not th|
00000c10  65 20 73 63 72 65 65 6e  20 69 73 20 72 65 73 74  |e screen is rest|
00000c20  6f 72 65 64 20 6f 6e 20  56 44 55 20 6f 75 74 70  |ored on VDU outp|
00000c30  75 74 2e 0a 0a 54 68 65  20 70 61 6c 65 74 74 65  |ut...The palette|
00000c40  2c 20 62 6f 72 64 65 72  20 61 6e 64 20 6d 6f 75  |, border and mou|
00000c50  73 65 20 70 6f 69 6e 74  65 72 20 61 72 65 20 61  |se pointer are a|
00000c60  6c 6c 20 72 65 73 74 6f  72 65 64 20 6f 6e 20 61  |ll restored on a|
00000c70  6e 79 20 6b 65 79 20 65  76 65 6e 74 20 28 79 65  |ny key event (ye|
00000c80  73 2c 0a 74 68 61 74 20  69 6e 63 6c 75 64 65 73  |s,.that includes|
00000c90  20 53 48 49 46 54 2c 20  41 6c 74 20 65 74 63 2e  | SHIFT, Alt etc.|
00000ca0  2e 2e 29 2c 20 6d 6f 75  73 65 20 6d 6f 76 65 6d  |..), mouse movem|
00000cb0  65 6e 74 2c 20 6d 6f 75  73 65 20 62 75 74 74 6f  |ent, mouse butto|
00000cc0  6e 20 70 72 65 73 73 20  6f 72 0a 28 6f 70 74 69  |n press or.(opti|
00000cd0  6f 6e 61 6c 6c 79 29 20  56 44 55 20 6f 75 74 70  |onally) VDU outp|
00000ce0  75 74 2e 0a 0a 2a 48 65  6c 70 20 56 44 55 53 61  |ut...*Help VDUSa|
00000cf0  76 65 72 20 77 69 6c 6c  20 67 69 76 65 20 79 6f  |ver will give yo|
00000d00  75 20 70 6c 65 6e 74 79  20 6f 66 20 6f 6e 2d 6c  |u plenty of on-l|
00000d10  69 6e 65 20 68 65 6c 70  20 2d 20 69 6e 20 66 61  |ine help - in fa|
00000d20  63 74 20 61 6c 6c 20 6f  66 20 74 68 65 0a 66 6f  |ct all of the.fo|
00000d30  6c 6c 6f 77 69 6e 67 20  63 6f 6d 6d 61 6e 64 20  |llowing command |
00000d40  64 65 73 63 72 69 70 74  69 6f 6e 73 20 61 72 65  |descriptions are|
00000d50  20 61 76 61 69 6c 61 62  6c 65 20 76 69 61 20 2a  | available via *|
00000d60  48 65 6c 70 2e 0a 0a 54  68 65 20 2a 56 44 55 53  |Help...The *VDUS|
00000d70  61 76 65 72 20 63 6f 6d  6d 61 6e 64 0a 2d 2d 2d  |aver command.---|
00000d80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000d90  2d 2d 0a 0a 53 79 6e 74  61 78 3a 20 2a 56 44 55  |--..Syntax: *VDU|
00000da0  53 61 76 65 72 20 5b 3c  4d 69 6e 75 74 65 73 3e  |Saver [<Minutes>|
00000db0  5d 20 5b 3c 53 70 65 65  64 3e 5d 20 5b 3c 54 79  |] [<Speed>] [<Ty|
00000dc0  70 65 3e 5d 20 5b 3c 56  44 55 54 72 61 70 3e 5d  |pe>] [<VDUTrap>]|
00000dd0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000de0  20 20 20 5b 3c 52 65 64  3e 5d 20 5b 3c 47 72 65  |   [<Red>] [<Gre|
00000df0  65 6e 3e 5d 20 5b 3c 42  6c 75 65 3e 5d 0a 0a 54  |en>] [<Blue>]..T|
00000e00  68 65 20 28 6f 70 74 69  6f 6e 61 6c 29 20 70 61  |he (optional) pa|
00000e10  72 61 6d 65 74 65 72 73  20 68 61 76 65 20 74 68  |rameters have th|
00000e20  65 20 66 6f 6c 6c 6f 77  69 6e 67 20 6d 65 61 6e  |e following mean|
00000e30  69 6e 67 3a 0a 0a 3c 4d  69 6e 75 74 65 73 3e 20  |ing:..<Minutes> |
00000e40  20 20 4d 69 6e 75 74 65  73 20 28 31 2d 36 33 29  |  Minutes (1-63)|
00000e50  20 6f 66 20 69 6e 61 63  74 69 76 69 74 79 20 62  | of inactivity b|
00000e60  65 66 6f 72 65 20 61 63  74 69 76 61 74 69 6f 6e  |efore activation|
00000e70  2e 0a 20 20 20 20 20 20  20 20 20 20 20 20 41 20  |..            A |
00000e80  76 61 6c 75 65 20 6f 66  20 30 20 77 69 6c 6c 20  |value of 0 will |
00000e90  63 6f 6d 70 6c 65 74 65  6c 79 20 64 69 73 61 62  |completely disab|
00000ea0  6c 65 20 56 44 55 53 61  76 65 72 2e 0a 20 20 20  |le VDUSaver..   |
00000eb0  20 20 20 20 20 20 20 20  20 49 66 20 6f 6d 69 74  |         If omit|
00000ec0  74 65 64 2c 20 74 68 65  6e 20 74 68 65 20 2a 43  |ted, then the *C|
00000ed0  6f 6e 66 69 67 75 72 65  20 53 61 76 65 72 44 65  |onfigure SaverDe|
00000ee0  6c 61 79 20 76 61 6c 75  65 20 69 73 20 75 73 65  |lay value is use|
00000ef0  64 2e 0a 0a 3c 53 70 65  65 64 3e 20 20 20 20 20  |d...<Speed>     |
00000f00  53 70 65 65 64 20 6f 66  20 53 6d 69 6c 65 79 20  |Speed of Smiley |
00000f10  66 61 63 65 20 28 31 20  3d 20 73 6c 6f 77 65 73  |face (1 = slowes|
00000f20  74 2c 20 33 20 3d 20 66  61 73 74 65 73 74 29 2e  |t, 3 = fastest).|
00000f30  0a 20 20 20 20 20 20 20  20 20 20 20 20 41 20 76  |.            A v|
00000f40  61 6c 75 65 20 6f 66 20  30 20 77 69 6c 6c 20 70  |alue of 0 will p|
00000f50  6c 6f 74 20 74 68 65 20  53 6d 69 6c 65 79 20 66  |lot the Smiley f|
00000f60  61 63 65 20 72 61 6e 64  6f 6d 6c 79 2e 0a 20 20  |ace randomly..  |
00000f70  20 20 20 20 20 20 20 20  20 20 49 66 20 6f 6d 69  |          If omi|
00000f80  74 74 65 64 2c 20 74 68  65 6e 20 74 68 65 20 2a  |tted, then the *|
00000f90  43 6f 6e 66 69 67 75 72  65 20 53 61 76 65 72 53  |Configure SaverS|
00000fa0  70 65 65 64 20 76 61 6c  75 65 20 69 73 20 75 73  |peed value is us|
00000fb0  65 64 2e 0a 0a 3c 54 79  70 65 3e 20 20 20 20 20  |ed...<Type>     |
00000fc0  20 57 68 61 74 20 74 79  70 65 20 6f 66 20 6d 6f  | What type of mo|
00000fd0  75 73 65 20 73 68 61 70  65 20 77 69 6c 6c 20 62  |use shape will b|
00000fe0  65 20 70 6c 6f 74 74 65  64 2e 0a 20 20 20 20 20  |e plotted..     |
00000ff0  20 20 20 20 20 20 20 30  20 77 69 6c 6c 20 61 6c  |       0 will al|
00001000  77 61 79 73 20 70 6c 6f  74 20 74 68 65 20 28 6e  |ways plot the (n|
00001010  6f 77 20 69 6e 66 61 6d  6f 75 73 29 20 53 6d 69  |ow infamous) Smi|
00001020  6c 65 79 20 66 61 63 65  2e 0a 20 20 20 20 20 20  |ley face..      |
00001030  20 20 20 20 20 20 31 20  77 69 6c 6c 20 70 6c 6f  |      1 will plo|
00001040  74 20 74 68 65 20 63 75  72 72 65 6e 74 20 74 69  |t the current ti|
00001050  6d 65 20 69 6e 20 32 34  2d 68 6f 75 72 20 66 6f  |me in 24-hour fo|
00001060  72 6d 61 74 2e 0a 20 20  20 20 20 20 20 20 20 20  |rmat..          |
00001070  20 20 49 66 20 6f 6d 69  74 74 65 64 2c 20 74 68  |  If omitted, th|
00001080  65 6e 20 74 68 65 20 2a  43 6f 6e 66 69 67 75 72  |en the *Configur|
00001090  65 20 53 61 76 65 72 54  79 70 65 20 76 61 6c 75  |e SaverType valu|
000010a0  65 20 69 73 20 75 73 65  64 2e 0a 0a 3c 56 44 55  |e is used...<VDU|
000010b0  54 72 61 70 3e 20 20 20  53 69 67 6e 69 66 69 65  |Trap>   Signifie|
000010c0  73 20 69 66 20 56 44 55  20 6f 75 74 70 75 74 20  |s if VDU output |
000010d0  77 69 6c 6c 20 72 65 73  74 6f 72 65 20 74 68 65  |will restore the|
000010e0  20 73 63 72 65 65 6e 2e  0a 20 20 20 20 20 20 20  | screen..       |
000010f0  20 20 20 20 20 30 20 77  69 6c 6c 20 69 67 6e 6f  |     0 will igno|
00001100  72 65 20 56 44 55 20 6f  75 74 70 75 74 2c 20 31  |re VDU output, 1|
00001110  20 77 69 6c 6c 20 72 65  73 74 6f 72 65 20 74 68  | will restore th|
00001120  65 20 73 63 72 65 65 6e  20 6f 6e 20 56 44 55 20  |e screen on VDU |
00001130  6f 75 74 70 75 74 2e 0a  20 20 20 20 20 20 20 20  |output..        |
00001140  20 20 20 20 49 66 20 6f  6d 69 74 74 65 64 2c 20  |    If omitted, |
00001150  74 68 65 6e 20 74 68 65  20 2a 43 6f 6e 66 69 67  |then the *Config|
00001160  75 72 65 20 53 61 76 65  72 54 72 61 70 20 76 61  |ure SaverTrap va|
00001170  6c 75 65 20 69 73 20 75  73 65 64 2e 0a 20 20 20  |lue is used..   |
00001180  20 20 20 20 20 20 20 20  20 56 31 2e 30 33 20 6f  |         V1.03 o|
00001190  6e 77 61 72 64 73 20 6e  6f 77 20 72 65 63 6f 67  |nwards now recog|
000011a0  6e 69 73 65 73 20 4d 4f  44 45 20 63 68 61 6e 67  |nises MODE chang|
000011b0  65 73 20 61 73 20 61 20  73 63 72 65 65 6e 20 72  |es as a screen r|
000011c0  65 73 74 6f 72 61 74 69  6f 6e 0a 20 20 20 20 20  |estoration.     |
000011d0  20 20 20 20 20 20 20 62  79 20 74 68 65 20 4f 53  |       by the OS|
000011e0  2c 20 65 76 65 6e 20 77  68 65 6e 20 56 44 55 54  |, even when VDUT|
000011f0  72 61 70 20 3d 20 30 2e  0a 0a 3c 52 3e 20 3c 47  |rap = 0...<R> <G|
00001200  3e 20 3c 42 3e 20 51 75  61 6e 74 69 74 69 65 73  |> <B> Quantities|
00001210  20 6f 66 20 52 47 42 20  69 6e 20 74 68 65 20 53  | of RGB in the S|
00001220  6d 69 6c 65 79 20 66 61  63 65 2e 0a 20 20 20 20  |miley face..    |
00001230  20 20 20 20 20 20 20 20  30 20 30 20 30 20 67 69  |        0 0 0 gi|
00001240  76 65 73 20 62 6c 61 63  6b 20 28 69 6e 76 69 73  |ves black (invis|
00001250  69 62 6c 65 29 20 61 6e  64 20 33 20 33 20 33 20  |ible) and 3 3 3 |
00001260  67 69 76 65 73 20 77 68  69 74 65 2e 0a 20 20 20  |gives white..   |
00001270  20 20 20 20 20 20 20 20  20 49 66 20 61 6e 79 20  |         If any |
00001280  6f 6d 69 74 74 65 64 2c  20 74 68 65 6e 20 74 68  |omitted, then th|
00001290  65 20 2a 43 6f 6e 66 69  67 75 72 65 20 53 61 76  |e *Configure Sav|
000012a0  65 72 52 47 42 20 76 61  6c 75 65 73 20 61 72 65  |erRGB values are|
000012b0  20 75 73 65 64 2e 0a 0a  54 68 65 20 2a 56 44 55  | used...The *VDU|
000012c0  53 74 61 74 75 73 20 43  6f 6d 6d 61 6e 64 20 20  |Status Command  |
000012d0  20 20 20 20 2a 4e 45 57  20 54 4f 20 56 32 2e 30  |    *NEW TO V2.0|
000012e0  33 2a 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |3*.-------------|
000012f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 0a 0a 53 79 6e 74 61  |---------..Synta|
00001300  78 3a 20 2a 56 44 55 53  74 61 74 75 73 0a 0a 42  |x: *VDUStatus..B|
00001310  65 63 61 75 73 65 20 2a  53 74 61 74 75 73 20 6f  |ecause *Status o|
00001320  6e 6c 79 20 72 65 76 65  61 6c 73 20 74 68 65 20  |nly reveals the |
00001330  56 44 55 20 53 61 76 65  72 20 43 4d 4f 53 20 52  |VDU Saver CMOS R|
00001340  41 4d 20 28 69 2e 65 2e  20 70 65 72 6d 61 6e 65  |AM (i.e. permane|
00001350  6e 74 29 20 73 65 74 74  69 6e 67 73 2c 0a 49 20  |nt) settings,.I |
00001360  64 65 63 69 64 65 64 20  74 6f 20 73 75 70 70 6c  |decided to suppl|
00001370  65 6d 65 6e 74 20 74 68  69 73 20 77 69 74 68 20  |ement this with |
00001380  61 20 63 6f 6d 6d 61 6e  64 20 74 68 61 74 20 73  |a command that s|
00001390  68 6f 77 73 20 42 4f 54  48 20 74 68 65 20 63 75  |hows BOTH the cu|
000013a0  72 72 65 6e 74 6c 79 0a  61 63 74 69 76 65 20 73  |rrently.active s|
000013b0  65 74 74 69 6e 67 73 20  73 75 70 70 6c 69 65 64  |ettings supplied|
000013c0  20 77 69 74 68 20 2a 56  44 55 53 61 76 65 72 20  | with *VDUSaver |
000013d0  61 6e 64 20 74 68 65 20  2a 43 6f 6e 66 69 67 75  |and the *Configu|
000013e0  72 65 20 6f 6e 65 73 2e  20 54 68 65 20 63 75 72  |re ones. The cur|
000013f0  72 65 6e 74 0a 73 65 74  74 69 6e 67 73 20 6f 62  |rent.settings ob|
00001400  76 69 6f 75 73 6c 79 20  63 61 6e 6e 6f 74 20 62  |viously cannot b|
00001410  65 20 73 68 6f 77 6e 20  75 6e 74 69 6c 20 61 6e  |e shown until an|
00001420  20 61 63 74 69 76 61 74  69 6e 67 20 2a 56 44 55  | activating *VDU|
00001430  53 61 76 65 72 20 63 6f  6d 6d 61 6e 64 20 69 73  |Saver command is|
00001440  0a 69 73 73 75 65 64 2c  20 73 6f 20 22 49 6e 61  |.issued, so "Ina|
00001450  63 74 69 76 65 22 20 69  73 20 64 69 73 70 6c 61  |ctive" is displa|
00001460  79 65 64 20 69 6e 20 74  68 65 20 43 75 72 72 65  |yed in the Curre|
00001470  6e 74 20 63 6f 6c 75 6d  6e 20 75 6e 74 69 6c 20  |nt column until |
00001480  73 75 63 68 20 61 20 63  6f 6d 6d 61 6e 64 0a 6f  |such a command.o|
00001490  63 63 75 72 73 2e 0a 0a  54 68 65 20 2a 43 6f 6e  |ccurs...The *Con|
000014a0  66 69 67 75 72 65 20 53  61 76 65 72 44 65 6c 61  |figure SaverDela|
000014b0  79 20 43 6f 6d 6d 61 6e  64 0a 2d 2d 2d 2d 2d 2d  |y Command.------|
000014c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000014d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 53 79 6e  |-----------..Syn|
000014e0  74 61 78 3a 20 2a 43 6f  6e 66 69 67 75 72 65 20  |tax: *Configure |
000014f0  53 61 76 65 72 44 65 6c  61 79 20 3c 4d 69 6e 75  |SaverDelay <Minu|
00001500  74 65 73 3e 0a 0a 54 68  69 73 20 63 6f 6d 6d 61  |tes>..This comma|
00001510  6e 64 20 61 6c 74 65 72  73 20 74 68 65 20 70 65  |nd alters the pe|
00001520  72 6d 61 6e 65 6e 74 20  53 61 76 65 72 44 65 6c  |rmanent SaverDel|
00001530  61 79 20 76 61 6c 75 65  20 28 73 61 76 65 64 20  |ay value (saved |
00001540  74 6f 20 43 4d 4f 53 20  52 41 4d 20 62 79 74 65  |to CMOS RAM byte|
00001550  20 33 35 29 2e 0a 3c 4d  69 6e 75 74 65 73 3e 20  | 35)..<Minutes> |
00001560  73 68 6f 75 6c 64 20 62  65 20 61 6e 20 69 6e 74  |should be an int|
00001570  65 67 65 72 20 76 61 6c  75 65 20 62 65 74 77 65  |eger value betwe|
00001580  65 6e 20 31 20 61 6e 64  20 36 33 2e 20 41 20 76  |en 1 and 63. A v|
00001590  61 6c 75 65 20 6f 66 20  30 20 69 73 20 4e 4f 54  |alue of 0 is NOT|
000015a0  0a 70 65 72 6d 69 74 74  65 64 20 61 6e 64 20 69  |.permitted and i|
000015b0  66 20 79 6f 75 72 20 43  4d 4f 53 20 52 41 4d 20  |f your CMOS RAM |
000015c0  69 73 20 73 65 74 20 74  6f 20 74 68 61 74 20 76  |is set to that v|
000015d0  61 6c 75 65 2c 20 56 44  55 53 61 76 65 72 20 77  |alue, VDUSaver w|
000015e0  69 6c 6c 20 66 6f 72 63  65 20 69 74 0a 74 6f 20  |ill force it.to |
000015f0  61 20 6d 6f 72 65 20 73  65 6e 73 69 62 6c 65 20  |a more sensible |
00001600  76 61 6c 75 65 20 6f 66  20 31 35 20 28 6d 69 6e  |value of 15 (min|
00001610  75 74 65 73 29 2e 0a 0a  54 68 65 20 2a 43 6f 6e  |utes)...The *Con|
00001620  66 69 67 75 72 65 20 53  61 76 65 72 53 70 65 65  |figure SaverSpee|
00001630  64 20 43 6f 6d 6d 61 6e  64 0a 2d 2d 2d 2d 2d 2d  |d Command.------|
00001640  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001650  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 53 79 6e  |-----------..Syn|
00001660  74 61 78 3a 20 2a 43 6f  6e 66 69 67 75 72 65 20  |tax: *Configure |
00001670  53 61 76 65 72 53 70 65  65 64 20 3c 53 70 65 65  |SaverSpeed <Spee|
00001680  64 3e 0a 0a 54 68 69 73  20 63 6f 6d 6d 61 6e 64  |d>..This command|
00001690  20 61 6c 74 65 72 73 20  74 68 65 20 70 65 72 6d  | alters the perm|
000016a0  61 6e 65 6e 74 20 53 61  76 65 72 53 70 65 65 64  |anent SaverSpeed|
000016b0  20 76 61 6c 75 65 20 28  73 61 76 65 64 20 74 6f  | value (saved to|
000016c0  20 43 4d 4f 53 20 52 41  4d 20 62 79 74 65 20 33  | CMOS RAM byte 3|
000016d0  36 29 2e 0a 3c 53 70 65  65 64 3e 20 73 68 6f 75  |6)..<Speed> shou|
000016e0  6c 64 20 62 65 20 61 6e  20 69 6e 74 65 67 65 72  |ld be an integer|
000016f0  20 76 61 6c 75 65 20 62  65 74 77 65 65 6e 20 30  | value between 0|
00001700  20 61 6e 64 20 33 2e 0a  0a 54 68 65 20 2a 43 6f  | and 3...The *Co|
00001710  6e 66 69 67 75 72 65 20  53 61 76 65 72 54 79 70  |nfigure SaverTyp|
00001720  65 20 43 6f 6d 6d 61 6e  64 0a 2d 2d 2d 2d 2d 2d  |e Command.------|
00001730  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001740  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 0a 53 79 6e 74  |----------..Synt|
00001750  61 78 3a 20 2a 43 6f 6e  66 69 67 75 72 65 20 53  |ax: *Configure S|
00001760  61 76 65 72 54 79 70 65  20 3c 54 79 70 65 3e 0a  |averType <Type>.|
00001770  0a 54 68 69 73 20 63 6f  6d 6d 61 6e 64 20 61 6c  |.This command al|
00001780  74 65 72 73 20 74 68 65  20 70 65 72 6d 61 6e 65  |ters the permane|
00001790  6e 74 20 53 61 76 65 72  54 79 70 65 20 76 61 6c  |nt SaverType val|
000017a0  75 65 20 28 73 61 76 65  64 20 74 6f 20 43 4d 4f  |ue (saved to CMO|
000017b0  53 20 52 41 4d 20 62 79  74 65 20 33 35 29 2e 0a  |S RAM byte 35)..|
000017c0  3c 54 79 70 65 3e 20 73  68 6f 75 6c 64 20 62 65  |<Type> should be|
000017d0  20 65 69 74 68 65 72 20  30 20 6f 72 20 31 2e 0a  | either 0 or 1..|
000017e0  0a 54 68 65 20 2a 43 6f  6e 66 69 67 75 72 65 20  |.The *Configure |
000017f0  53 61 76 65 72 54 72 61  70 20 43 6f 6d 6d 61 6e  |SaverTrap Comman|
00001800  64 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |d.--------------|
00001810  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001820  2d 2d 0a 0a 53 79 6e 74  61 78 3a 20 2a 43 6f 6e  |--..Syntax: *Con|
00001830  66 69 67 75 72 65 20 53  61 76 65 72 54 72 61 70  |figure SaverTrap|
00001840  20 3c 56 44 55 54 72 61  70 3e 0a 0a 54 68 69 73  | <VDUTrap>..This|
00001850  20 63 6f 6d 6d 61 6e 64  20 61 6c 74 65 72 73 20  | command alters |
00001860  74 68 65 20 70 65 72 6d  61 6e 65 6e 74 20 53 61  |the permanent Sa|
00001870  76 65 72 54 72 61 70 20  76 61 6c 75 65 20 28 73  |verTrap value (s|
00001880  61 76 65 64 20 74 6f 20  43 4d 4f 53 20 52 41 4d  |aved to CMOS RAM|
00001890  20 62 79 74 65 20 33 35  29 2e 0a 3c 56 44 55 54  | byte 35)..<VDUT|
000018a0  72 61 70 3e 20 73 68 6f  75 6c 64 20 62 65 20 65  |rap> should be e|
000018b0  69 74 68 65 72 20 30 20  6f 72 20 31 2e 0a 0a 54  |ither 0 or 1...T|
000018c0  68 65 20 2a 43 6f 6e 66  69 67 75 72 65 20 53 61  |he *Configure Sa|
000018d0  76 65 72 52 47 42 20 43  6f 6d 6d 61 6e 64 0a 2d  |verRGB Command.-|
000018e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000018f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 0a  |--------------..|
00001900  53 79 6e 74 61 78 3a 20  2a 43 6f 6e 66 69 67 75  |Syntax: *Configu|
00001910  72 65 20 53 61 76 65 72  52 47 42 20 3c 52 65 64  |re SaverRGB <Red|
00001920  3e 20 3c 47 72 65 65 6e  3e 20 3c 42 6c 75 65 3e  |> <Green> <Blue>|
00001930  0a 0a 54 68 69 73 20 63  6f 6d 6d 61 6e 64 20 61  |..This command a|
00001940  6c 74 65 72 73 20 74 68  65 20 70 65 72 6d 61 6e  |lters the perman|
00001950  65 6e 74 20 53 61 76 65  72 52 47 42 20 76 61 6c  |ent SaverRGB val|
00001960  75 65 73 20 28 73 61 76  65 64 20 74 6f 20 43 4d  |ues (saved to CM|
00001970  4f 53 20 52 41 4d 20 62  79 74 65 20 33 36 29 2e  |OS RAM byte 36).|
00001980  0a 3c 52 65 64 3e 2c 20  3c 47 72 65 65 6e 3e 2c  |.<Red>, <Green>,|
00001990  20 3c 42 6c 75 65 3e 20  73 68 6f 75 6c 64 20 62  | <Blue> should b|
000019a0  65 20 69 6e 74 65 67 65  72 20 76 61 6c 75 65 73  |e integer values|
000019b0  20 62 65 74 77 65 65 6e  20 30 20 61 6e 64 20 33  | between 0 and 3|
000019c0  2e 0a 0a 53 6f 6d 65 20  54 69 70 73 20 77 68 69  |...Some Tips whi|
000019d0  6c 73 74 20 75 73 69 6e  67 20 56 44 55 20 53 61  |lst using VDU Sa|
000019e0  76 65 72 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ver.------------|
000019f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001a00  2d 2d 2d 2d 0a 0a 31 2e  20 49 27 76 65 20 6a 75  |----..1. I've ju|
00001a10  73 74 20 6e 6f 74 69 63  65 64 20 74 68 61 74 20  |st noticed that |
00001a20  6d 6f 76 69 6e 67 20 74  68 65 20 70 6f 69 6e 74  |moving the point|
00001a30  65 72 20 6f 76 65 72 20  76 61 72 69 6f 75 73 20  |er over various |
00001a40  61 72 65 61 73 20 6f 66  20 74 68 65 20 69 63 6f  |areas of the ico|
00001a50  6e 20 62 61 72 0a 20 20  20 63 61 75 73 65 73 20  |n bar.   causes |
00001a60  74 68 65 20 56 44 55 20  53 61 76 65 72 20 74 6f  |the VDU Saver to|
00001a70  20 73 74 6f 70 20 77 6f  72 6b 69 6e 67 2e 20 46  | stop working. F|
00001a80  75 72 74 68 65 72 20 69  6e 76 65 73 74 69 67 61  |urther investiga|
00001a90  74 69 6f 6e 20 68 61 73  20 73 68 6f 77 6e 20 74  |tion has shown t|
00001aa0  68 61 74 0a 20 20 20 74  68 61 74 20 56 44 55 20  |hat.   that VDU |
00001ab0  6f 75 74 70 75 74 20 6f  63 63 75 72 73 20 21 20  |output occurs ! |
00001ac0  48 65 6e 63 65 2c 20 70  65 6f 70 6c 65 20 6d 61  |Hence, people ma|
00001ad0  79 20 70 72 65 66 65 72  20 74 6f 20 73 65 74 20  |y prefer to set |
00001ae0  56 44 55 54 72 61 70 20  74 6f 20 30 20 69 66 0a  |VDUTrap to 0 if.|
00001af0  20 20 20 74 68 65 79 20  73 70 65 6e 64 20 6d 6f  |   they spend mo|
00001b00  73 74 20 6f 66 20 74 68  65 69 72 20 74 69 6d 65  |st of their time|
00001b10  20 69 6e 20 74 68 65 20  44 65 73 6b 74 6f 70 2e  | in the Desktop.|
00001b20  0a 0a 32 2e 20 57 68 65  6e 20 53 61 76 65 72 54  |..2. When SaverT|
00001b30  79 70 65 20 69 73 20 31  2c 20 74 68 65 20 6d 6f  |ype is 1, the mo|
00001b40  75 73 65 20 73 68 61 70  65 20 69 73 20 64 65 66  |use shape is def|
00001b50  69 6e 65 64 20 6f 6e 63  65 20 61 20 6d 69 6e 75  |ined once a minu|
00001b60  74 65 20 77 68 65 6e 20  74 68 65 0a 20 20 20 73  |te when the.   s|
00001b70  63 72 65 65 6e 20 69 73  20 62 6c 61 6e 6b 65 64  |creen is blanked|
00001b80  20 2d 20 74 68 69 73 20  63 61 75 73 65 73 20 61  | - this causes a|
00001b90  20 27 67 6c 69 74 63 68  27 20 69 66 20 53 61 76  | 'glitch' if Sav|
00001ba0  65 72 53 70 65 65 64 20  69 73 20 6e 6f 6e 2d 7a  |erSpeed is non-z|
00001bb0  65 72 6f 20 64 75 65 20  74 6f 0a 20 20 20 74 68  |ero due to.   th|
00001bc0  65 20 6c 65 6e 67 74 68  79 20 74 69 6d 65 20 4f  |e lengthy time O|
00001bd0  53 5f 57 6f 72 64 20 32  31 20 28 70 61 72 61 6d  |S_Word 21 (param|
00001be0  20 30 29 20 74 61 6b 65  73 20 74 6f 20 65 78 65  | 0) takes to exe|
00001bf0  63 75 74 65 2e 20 48 65  6e 63 65 2c 20 49 20 72  |cute. Hence, I r|
00001c00  65 63 6f 6d 6d 65 6e 64  0a 20 20 20 61 20 73 65  |ecommend.   a se|
00001c10  74 74 69 6e 67 20 6f 66  20 53 61 76 65 72 53 70  |tting of SaverSp|
00001c20  65 65 64 20 30 20 28 72  61 6e 64 6f 6d 6c 79 20  |eed 0 (randomly |
00001c30  70 6c 6f 74 29 20 77 68  65 6e 20 53 61 76 65 72  |plot) when Saver|
00001c40  54 79 70 65 20 69 73 20  73 65 74 20 74 6f 20 31  |Type is set to 1|
00001c50  2e 0a 0a 33 2e 20 46 6f  72 20 74 68 6f 73 65 20  |...3. For those |
00001c60  6f 66 20 79 6f 75 20 77  68 6f 20 68 61 76 65 20  |of you who have |
00001c70  64 65 61 64 20 62 61 74  74 65 72 69 65 73 20 6f  |dead batteries o|
00001c80  72 20 66 61 75 6c 74 79  20 63 6c 6f 63 6b 73 20  |r faulty clocks |
00001c90  28 6d 69 6e 65 20 66 61  6c 6c 73 20 69 6e 74 6f  |(mine falls into|
00001ca0  0a 20 20 20 74 68 65 20  6c 61 74 74 65 72 29 2c  |.   the latter),|
00001cb0  20 44 4f 4e 27 54 20 50  41 4e 49 43 20 21 20 54  | DON'T PANIC ! T|
00001cc0  68 65 20 70 72 6f 67 72  61 6d 20 68 61 73 20 62  |he program has b|
00001cd0  65 65 6e 20 77 72 69 74  74 65 6e 20 73 6f 20 74  |een written so t|
00001ce0  68 61 74 20 69 74 20 6f  6e 6c 79 0a 20 20 20 72  |hat it only.   r|
00001cf0  65 61 64 73 20 74 68 65  20 63 75 72 72 65 6e 74  |eads the current|
00001d00  20 74 69 6d 65 20 4f 4e  43 45 20 65 61 63 68 20  | time ONCE each |
00001d10  74 69 6d 65 20 74 68 65  20 73 63 72 65 65 6e 20  |time the screen |
00001d20  69 73 20 62 6c 61 6e 6b  65 64 2e 20 4d 69 6e 75  |is blanked. Minu|
00001d30  74 65 20 75 70 64 61 74  65 73 0a 20 20 20 61 72  |te updates.   ar|
00001d40  65 20 61 63 68 69 65 76  65 64 20 62 79 20 75 73  |e achieved by us|
00001d50  69 6e 67 20 61 6e 20 69  6e 74 65 72 6e 61 6c 20  |ing an internal |
00001d60  63 6f 75 6e 74 65 72 20  2d 20 74 68 69 73 20 6d  |counter - this m|
00001d70  61 79 20 65 76 65 6e 74  75 61 6c 6c 79 20 6c 65  |ay eventually le|
00001d80  61 64 20 74 6f 0a 20 20  20 73 6c 69 67 68 74 20  |ad to.   slight |
00001d90  69 6e 61 63 63 75 72 61  63 69 65 73 20 6f 76 65  |inaccuracies ove|
00001da0  72 20 61 20 6c 6f 6e 67  20 70 65 72 69 6f 64 20  |r a long period |
00001db0  6f 66 20 74 69 6d 65 2e  0a 0a 54 65 63 68 6e 69  |of time...Techni|
00001dc0  63 61 6c 20 44 65 74 61  69 6c 73 20 6f 66 20 56  |cal Details of V|
00001dd0  44 55 20 53 61 76 65 72  0a 2d 2d 2d 2d 2d 2d 2d  |DU Saver.-------|
00001de0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001df0  2d 2d 2d 2d 2d 2d 2d 0a  0a 49 6e 69 74 69 61 6c  |-------..Initial|
00001e00  6c 79 2c 20 49 20 74 72  69 65 64 20 74 6f 20 75  |ly, I tried to u|
00001e10  73 65 20 4f 53 5f 43 61  6c 6c 41 66 74 65 72 20  |se OS_CallAfter |
00001e20  61 6e 64 20 4f 53 5f 52  65 6d 6f 76 65 54 69 63  |and OS_RemoveTic|
00001e30  6b 65 72 45 76 65 6e 74  2c 20 62 75 74 20 74 68  |kerEvent, but th|
00001e40  65 73 65 0a 73 65 65 6d  65 64 20 74 6f 20 63 61  |ese.seemed to ca|
00001e50  72 72 79 20 6f 6e 20 72  65 67 61 72 64 6c 65 73  |rry on regardles|
00001e60  73 20 28 6d 61 79 62 65  20 74 68 65 79 20 64 6f  |s (maybe they do|
00001e70  6e 27 74 20 77 6f 72 6b  20 69 6e 20 53 56 43 20  |n't work in SVC |
00001e80  4d 6f 64 65 20 33 20 3f  29 2e 20 49 0a 65 6e 64  |Mode 3 ?). I.end|
00001e90  65 64 20 75 70 20 75 73  69 6e 67 20 61 20 73 69  |ed up using a si|
00001ea0  6d 70 6c 65 20 64 65 63  72 65 6d 65 6e 74 69 6e  |mple decrementin|
00001eb0  67 20 63 6f 75 6e 74 65  72 20 69 6e 73 69 64 65  |g counter inside|
00001ec0  20 61 20 56 73 79 6e 63  20 65 76 65 6e 74 20 72  | a Vsync event r|
00001ed0  6f 75 74 69 6e 65 2e 0a  0a 49 20 6e 6f 77 20 62  |outine...I now b|
00001ee0  6c 61 6e 6b 20 74 68 65  20 73 63 72 65 65 6e 20  |lank the screen |
00001ef0  69 6e 20 74 77 6f 20 70  6f 73 73 69 62 6c 65 20  |in two possible |
00001f00  77 61 79 73 2c 20 64 65  70 65 6e 64 69 6e 67 20  |ways, depending |
00001f10  6f 6e 20 74 68 65 20 4d  4f 44 45 20 3a 0a 0a 31  |on the MODE :..1|
00001f20  2e 20 4e 6f 6e 2d 54 65  6c 65 74 65 78 74 2f 32  |. Non-Teletext/2|
00001f30  35 36 2d 63 6f 6c 6f 75  72 20 4d 4f 44 45 73 0a  |56-colour MODEs.|
00001f40  20 20 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |   -------------|
00001f50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001f60  0a 0a 20 20 20 54 68 65  20 6e 75 6d 62 65 72 20  |..   The number |
00001f70  6f 66 20 6c 6f 67 69 63  61 6c 20 63 6f 6c 6f 75  |of logical colou|
00001f80  72 73 20 69 73 20 66 6f  75 6e 64 20 75 73 69 6e  |rs is found usin|
00001f90  67 20 74 68 65 20 4e 43  6f 6c 6f 75 72 20 28 33  |g the NColour (3|
00001fa0  29 20 76 61 6c 75 65 20  73 75 70 70 6c 69 65 64  |) value supplied|
00001fb0  0a 20 20 20 74 6f 20 4f  53 5f 52 65 61 64 56 64  |.   to OS_ReadVd|
00001fc0  75 56 61 72 69 61 62 6c  65 73 2e 20 49 74 20 69  |uVariables. It i|
00001fd0  73 20 61 73 73 75 6d 65  64 20 74 68 61 74 20 69  |s assumed that i|
00001fe0  74 20 77 69 6c 6c 20 62  65 20 61 20 6d 61 78 69  |t will be a maxi|
00001ff0  6d 75 6d 20 6f 66 20 31  35 20 69 6e 0a 20 20 20  |mum of 15 in.   |
00002000  74 68 69 73 20 63 61 73  65 2e 20 54 68 65 20 70  |this case. The p|
00002010  61 6c 65 74 74 65 20 69  73 20 72 65 61 64 20 61  |alette is read a|
00002020  6e 64 20 73 74 6f 72 65  64 20 69 6e 20 61 20 28  |nd stored in a (|
00002030  6c 6f 67 69 63 61 6c 20  63 6f 6c 6f 75 72 73 2b  |logical colours+|
00002040  32 29 2a 34 2d 62 79 74  65 0a 20 20 20 61 72 65  |2)*4-byte.   are|
00002050  61 2e 20 54 68 65 20 65  78 74 72 61 20 38 20 62  |a. The extra 8 b|
00002060  79 74 65 73 20 61 72 65  20 66 6f 72 20 74 68 65  |ytes are for the|
00002070  20 62 6f 72 64 65 72 20  63 6f 6c 6f 75 72 20 61  | border colour a|
00002080  6e 64 20 6d 6f 75 73 65  20 6c 6f 67 69 63 61 6c  |nd mouse logical|
00002090  20 63 6f 6c 6f 75 72 0a  20 20 20 31 20 69 6e 20  | colour.   1 in |
000020a0  63 61 73 65 20 79 6f 75  27 72 65 20 77 6f 6e 64  |case you're wond|
000020b0  65 72 69 6e 67 2e 20 49  6e 20 74 68 65 20 73 61  |ering. In the sa|
000020c0  6d 65 20 6c 6f 6f 70 2c  20 65 61 63 68 20 63 6f  |me loop, each co|
000020d0  6c 6f 75 72 20 69 73 20  73 65 74 20 74 6f 20 62  |lour is set to b|
000020e0  6c 61 63 6b 0a 20 20 20  61 66 74 65 72 20 69 74  |lack.   after it|
000020f0  73 20 6f 72 69 67 69 6e  61 6c 20 63 6f 6c 6f 75  |s original colou|
00002100  72 20 69 73 20 73 61 66  65 6c 79 20 73 74 6f 72  |r is safely stor|
00002110  65 64 2e 20 49 20 6e 6f  77 20 75 73 65 20 4f 53  |ed. I now use OS|
00002120  5f 52 65 6d 6f 76 65 43  75 72 73 6f 72 73 20 61  |_RemoveCursors a|
00002130  6e 64 0a 20 20 20 4f 53  5f 52 65 73 74 6f 72 65  |nd.   OS_Restore|
00002140  43 75 72 73 6f 72 73 20  74 6f 20 6d 61 6b 65 20  |Cursors to make |
00002150  73 75 72 65 20 74 68 65  20 63 75 72 73 6f 72 20  |sure the cursor |
00002160  64 6f 65 73 6e 27 74 20  72 65 6d 61 69 6e 2e 0a  |doesn't remain..|
00002170  0a 32 2e 20 54 65 6c 65  74 65 78 74 20 28 63 75  |.2. Teletext (cu|
00002180  72 72 65 6e 74 6c 79 20  6f 6e 6c 79 20 4d 4f 44  |rrently only MOD|
00002190  45 20 37 29 20 61 6e 64  20 32 35 36 2d 63 6f 6c  |E 7) and 256-col|
000021a0  6f 75 72 20 4d 4f 44 45  73 0a 20 20 20 2d 2d 2d  |our MODEs.   ---|
000021b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000021e0  2d 2d 0a 0a 20 20 20 54  68 69 73 20 69 73 20 74  |--..   This is t|
000021f0  68 65 20 63 61 73 65 20  77 68 65 6e 20 62 69 74  |he case when bit|
00002200  20 31 20 6f 66 20 4d 6f  64 65 46 6c 61 67 73 20  | 1 of ModeFlags |
00002210  28 30 29 20 69 73 20 73  65 74 20 74 6f 20 69 6e  |(0) is set to in|
00002220  64 69 63 61 74 65 20 74  65 6c 65 74 65 78 74 20  |dicate teletext |
00002230  6f 72 0a 20 20 20 77 68  65 6e 20 4e 43 6f 6c 6f  |or.   when NColo|
00002240  75 72 20 28 33 29 20 69  73 20 73 65 74 20 74 6f  |ur (3) is set to|
00002250  20 36 33 2e 20 4c 65 73  73 20 77 6f 72 6b 20 68  | 63. Less work h|
00002260  61 73 20 74 6f 20 62 65  20 64 6f 6e 65 20 68 65  |as to be done he|
00002270  72 65 2c 20 62 65 63 61  75 73 65 20 74 68 65 0a  |re, because the.|
00002280  20 20 20 4f 4e 4c 59 20  4b 4e 4f 57 4e 20 57 41  |   ONLY KNOWN WA|
00002290  59 20 74 6f 20 62 6c 61  6e 6b 2f 72 65 73 74 6f  |Y to blank/resto|
000022a0  72 65 20 74 68 65 20 73  63 72 65 65 6e 20 69 6e  |re the screen in|
000022b0  20 74 68 65 73 65 20 4d  4f 44 45 73 20 69 73 20  | these MODEs is |
000022c0  74 6f 20 75 73 65 20 74  68 65 0a 20 20 20 66 6f  |to use the.   fo|
000022d0  6c 6c 6f 77 69 6e 67 20  62 69 74 20 6f 66 20 63  |llowing bit of c|
000022e0  6f 64 65 20 28 6f 66 20  63 6f 75 72 73 65 2c 20  |ode (of course, |
000022f0  49 20 64 6f 20 74 68 65  20 41 52 4d 20 65 71 75  |I do the ARM equ|
00002300  69 76 61 6c 65 6e 74 2e  2e 2e 29 20 3a 0a 20 20  |ivalent...) :.  |
00002310  20 0a 20 20 20 53 59 53  20 22 4f 53 5f 55 70 64  | .   SYS "OS_Upd|
00002320  61 74 65 4d 45 4d 43 22  2c 26 33 30 30 2c 26 37  |ateMEMC",&300,&7|
00002330  30 30 20 54 4f 20 6f 6c  64 76 61 6c 20 20 20 20  |00 TO oldval    |
00002340  20 20 20 20 20 20 3a 20  62 6c 61 6e 6b 73 20 74  |      : blanks t|
00002350  68 65 20 73 63 72 65 65  6e 0a 20 20 20 53 59 53  |he screen.   SYS|
00002360  20 22 4f 53 5f 55 70 64  61 74 65 4d 45 4d 43 22  | "OS_UpdateMEMC"|
00002370  2c 6f 6c 64 76 61 6c 2c  26 37 30 30 20 20 20 20  |,oldval,&700    |
00002380  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |              : |
00002390  72 65 73 74 6f 72 65 73  20 69 74 2e 0a 20 20 20  |restores it..   |
000023a0  54 68 61 6e 6b 73 20 74  6f 20 54 6f 6c 6c 69 27  |Thanks to Tolli'|
000023b0  73 20 42 6c 61 6e 6b 65  72 20 28 61 76 61 69 6c  |s Blanker (avail|
000023c0  61 62 6c 65 20 6f 6e 20  53 49 44 29 20 66 6f 72  |able on SID) for|
000023d0  20 74 68 69 73 20 69 6e  66 6f 72 6d 61 74 69 6f  | this informatio|
000023e0  6e 2e 0a 0a 20 20 20 41  6e 6e 6f 79 69 6e 67 6c  |n...   Annoyingl|
000023f0  79 2c 20 74 68 65 20 6d  6f 75 73 65 20 61 6c 73  |y, the mouse als|
00002400  6f 20 67 65 74 73 20 62  6c 61 6e 6b 65 64 20 2d  |o gets blanked -|
00002410  20 68 65 6e 63 65 20 74  68 65 72 65 20 69 73 20  | hence there is |
00002420  6e 6f 20 27 53 6d 69 6c  65 79 27 20 66 61 63 65  |no 'Smiley' face|
00002430  0a 20 20 20 6f 72 20 74  69 6d 65 20 69 6e 20 74  |.   or time in t|
00002440  68 65 73 65 20 4d 4f 44  45 73 2e 20 54 68 65 20  |hese MODEs. The |
00002450  6f 6e 6c 79 20 70 61 6c  65 74 74 65 20 73 61 76  |only palette sav|
00002460  65 73 2f 72 65 73 74 6f  72 65 73 20 74 68 61 74  |es/restores that|
00002470  20 73 74 69 6c 6c 20 68  61 76 65 20 74 6f 0a 20  | still have to. |
00002480  20 20 62 65 20 64 6f 6e  65 20 61 72 65 20 74 68  |  be done are th|
00002490  65 20 62 6f 72 64 65 72  20 63 6f 6c 6f 75 72 20  |e border colour |
000024a0  61 6e 64 20 74 68 65 20  62 61 63 6b 67 72 6f 75  |and the backgrou|
000024b0  6e 64 20 63 6f 6c 6f 75  72 20 28 30 29 2c 20 74  |nd colour (0), t|
000024c0  68 65 20 6c 61 74 74 65  72 20 6f 66 0a 20 20 20  |he latter of.   |
000024d0  77 68 69 63 68 20 49 20  66 6f 72 67 6f 74 20 74  |which I forgot t|
000024e0  6f 20 64 6f 20 69 6e 20  56 31 2e 30 33 20 21 20  |o do in V1.03 ! |
000024f0  46 6f 72 20 56 32 2e 30  31 20 6f 6e 77 61 72 64  |For V2.01 onward|
00002500  73 2c 20 49 27 76 65 20  61 64 64 65 64 20 61 20  |s, I've added a |
00002510  27 74 68 72 6f 62 62 69  6e 67 27 0a 20 20 20 62  |'throbbing'.   b|
00002520  6f 72 64 65 72 20 63 6f  6c 6f 75 72 20 74 6f 20  |order colour to |
00002530  61 74 20 6c 65 61 73 74  20 69 6e 64 69 63 61 74  |at least indicat|
00002540  65 20 74 68 61 74 20 73  6f 6d 65 74 68 69 6e 67  |e that something|
00002550  20 69 73 20 67 6f 69 6e  67 20 6f 6e 2e 20 54 68  | is going on. Th|
00002560  69 73 20 63 79 63 6c 65  73 0a 20 20 20 75 70 20  |is cycles.   up |
00002570  61 6e 64 20 64 6f 77 6e  20 74 68 65 20 70 61 6c  |and down the pal|
00002580  65 74 74 65 20 61 63 63  6f 72 64 69 6e 67 20 74  |ette according t|
00002590  6f 20 74 68 65 20 53 61  76 65 72 52 47 42 20 76  |o the SaverRGB v|
000025a0  61 6c 75 65 73 20 73 70  65 63 69 66 69 65 64 2e  |alues specified.|
000025b0  0a 0a 54 68 65 20 27 53  6d 69 6c 65 79 27 20 66  |..The 'Smiley' f|
000025c0  61 63 65 20 69 73 20 73  69 6d 70 6c 79 20 6d 6f  |ace is simply mo|
000025d0  75 73 65 20 70 6f 69 6e  74 65 72 20 73 68 61 70  |use pointer shap|
000025e0  65 20 32 20 28 74 68 65  20 73 79 73 74 65 6d 20  |e 2 (the system |
000025f0  75 73 75 61 6c 6c 79 20  75 73 65 73 0a 73 68 61  |usually uses.sha|
00002600  70 65 20 31 29 20 72 65  2d 70 72 6f 67 72 61 6d  |pe 1) re-program|
00002610  6d 65 64 20 61 6e 64 20  75 73 69 6e 67 20 63 6f  |med and using co|
00002620  6c 6f 75 72 20 31 20 73  65 74 20 74 6f 20 74 68  |lour 1 set to th|
00002630  65 20 53 61 76 65 72 52  47 42 20 76 61 6c 75 65  |e SaverRGB value|
00002640  73 20 2a 20 26 35 30 2e  0a 0a 54 68 65 20 66 6f  |s * &50...The fo|
00002650  6c 6c 6f 77 69 6e 67 20  76 65 63 74 6f 72 73 20  |llowing vectors |
00002660  61 72 65 20 74 72 61 70  70 65 64 20 74 6f 20 61  |are trapped to a|
00002670  76 6f 69 64 20 6d 6f 75  73 65 20 73 68 61 70 65  |void mouse shape|
00002680  20 63 68 61 6e 67 65 20  64 75 72 69 6e 67 20 62  | change during b|
00002690  6c 61 6e 6b 69 6e 67 3a  0a 2a 20 4f 53 5f 42 79  |lanking:.* OS_By|
000026a0  74 65 20 76 65 63 74 6f  72 20 74 6f 20 63 68 65  |te vector to che|
000026b0  63 6b 20 66 6f 72 20 2a  46 58 20 31 30 36 2c 3c  |ck for *FX 106,<|
000026c0  76 61 6c 75 65 3e 2e 0a  20 20 54 68 65 20 76 61  |value>..  The va|
000026d0  6c 75 65 20 69 73 20 73  74 6f 72 65 64 20 28 62  |lue is stored (b|
000026e0  75 74 20 4e 4f 54 20 65  78 65 63 75 74 65 64 20  |ut NOT executed |
000026f0  74 6f 20 70 72 65 76 65  6e 74 20 73 68 61 70 65  |to prevent shape|
00002700  20 63 68 61 6e 67 65 29  20 61 6e 64 20 74 68 65  | change) and the|
00002710  6e 20 75 73 65 64 2c 0a  20 20 77 68 65 6e 20 74  |n used,.  when t|
00002720  68 65 20 73 63 72 65 65  6e 20 69 73 20 72 65 73  |he screen is res|
00002730  74 6f 72 65 64 2c 20 74  6f 20 72 65 73 74 6f 72  |tored, to restor|
00002740  65 20 74 68 65 20 6e 65  77 20 70 6f 69 6e 74 65  |e the new pointe|
00002750  72 20 73 68 61 70 65 20  6e 75 6d 62 65 72 2e 0a  |r shape number..|
00002760  2a 20 4f 53 5f 57 6f 72  64 20 76 65 63 74 6f 72  |* OS_Word vector|
00002770  20 74 6f 20 63 68 65 63  6b 20 66 6f 72 20 4f 53  | to check for OS|
00002780  5f 57 6f 72 64 20 31 32  20 28 77 72 69 74 65 20  |_Word 12 (write |
00002790  70 61 6c 65 74 74 65 29  20 66 6f 72 20 70 68 79  |palette) for phy|
000027a0  73 69 63 61 6c 20 63 6f  6c 6f 75 72 0a 20 20 32  |sical colour.  2|
000027b0  35 20 28 6d 6f 75 73 65  29 2e 20 41 67 61 69 6e  |5 (mouse). Again|
000027c0  2c 20 74 68 69 73 20 69  73 20 73 61 76 65 64 20  |, this is saved |
000027d0  61 6e 64 20 72 65 73 74  6f 72 65 64 20 6c 61 74  |and restored lat|
000027e0  65 72 20 6f 6e 2e 0a 0a  4f 68 2c 20 62 79 20 74  |er on...Oh, by t|
000027f0  68 65 20 77 61 79 2c 20  74 68 65 72 65 27 73 20  |he way, there's |
00002800  6e 6f 20 63 61 6c 6c 20  74 6f 20 72 65 61 64 20  |no call to read |
00002810  74 68 65 20 63 75 72 72  65 6e 74 20 6d 6f 75 73  |the current mous|
00002820  65 20 73 68 61 70 65 20  28 69 74 73 20 70 69 78  |e shape (its pix|
00002830  65 6c 0a 70 61 74 74 65  72 6e 20 69 6e 20 6f 74  |el.pattern in ot|
00002840  68 65 72 20 77 6f 72 64  73 29 2c 20 73 6f 20 73  |her words), so s|
00002850  68 61 70 65 20 32 20 69  73 20 6f 76 65 72 77 72  |hape 2 is overwr|
00002860  69 74 74 65 6e 20 49 27  6d 20 61 66 72 61 69 64  |itten I'm afraid|
00002870  2e 0a 0a 2a 4e 45 57 20  54 4f 20 56 32 2e 30 33  |...*NEW TO V2.03|
00002880  2a 0a 41 6c 73 6f 20 6d  69 73 73 69 6e 67 20 69  |*.Also missing i|
00002890  73 20 61 20 63 61 6c 6c  20 74 6f 20 66 69 6e 64  |s a call to find|
000028a0  20 74 68 65 20 63 75 72  72 65 6e 74 20 6d 6f 75  | the current mou|
000028b0  73 65 20 72 65 63 74 61  6e 67 6c 65 20 62 6f 75  |se rectangle bou|
000028c0  6e 64 73 2c 20 73 6f 20  49 20 68 61 76 65 20 74  |nds, so I have t|
000028d0  6f 0a 73 65 74 20 74 68  65 6d 20 74 6f 20 28 20  |o.set them to ( |
000028e0  30 20 2c 20 30 20 29 20  2d 20 28 20 58 20 2c 20  |0 , 0 ) - ( X , |
000028f0  59 20 29 20 77 68 65 72  65 3a 0a 58 20 3d 20 28  |Y ) where:.X = (|
00002900  20 58 57 69 6e 64 4c 69  6d 69 74 20 3c 3c 20 58  | XWindLimit << X|
00002910  45 69 67 46 61 63 74 6f  72 20 29 20 61 6e 64 20  |EigFactor ) and |
00002920  20 20 20 20 20 20 20 20  7d 20 41 73 20 72 65 61  |        } As rea|
00002930  64 20 62 79 0a 59 20 3d  20 28 20 28 20 59 57 69  |d by.Y = ( ( YWi|
00002940  6e 64 4c 69 6d 69 74 20  2d 20 31 32 20 29 20 3c  |ndLimit - 12 ) <|
00002950  3c 20 59 45 69 67 46 61  63 74 6f 72 20 29 20 20  |< YEigFactor )  |
00002960  20 20 7d 20 4f 53 5f 52  65 61 64 56 64 75 56 61  |  } OS_ReadVduVa|
00002970  72 69 61 62 6c 65 73 0a  0a 57 68 65 6e 20 74 68  |riables..When th|
00002980  65 20 73 63 72 65 65 6e  20 69 73 20 62 6c 61 6e  |e screen is blan|
00002990  6b 65 64 2c 20 74 68 65  20 57 72 63 68 56 20 28  |ked, the WrchV (|
000029a0  72 65 73 74 6f 72 65 20  73 63 72 65 65 6e 20 6f  |restore screen o|
000029b0  6e 20 61 6e 79 20 56 44  55 20 6f 75 74 70 75 74  |n any VDU output|
000029c0  29 20 61 6e 64 0a 45 76  65 6e 74 56 20 28 72 65  |) and.EventV (re|
000029d0  73 74 6f 72 65 20 6f 6e  20 45 76 65 6e 74 20 31  |store on Event 1|
000029e0  30 20 2d 20 4d 6f 75 73  65 20 42 75 74 74 6f 6e  |0 - Mouse Button|
000029f0  20 70 72 65 73 73 65 64  20 2d 20 6f 72 20 31 31  | pressed - or 11|
00002a00  20 2d 20 4b 65 79 20 70  72 65 73 73 65 64 29 0a  | - Key pressed).|
00002a10  76 65 63 74 6f 72 73 20  72 65 61 63 74 69 76 61  |vectors reactiva|
00002a20  74 65 20 74 68 65 20 73  63 72 65 65 6e 2e 20 4f  |te the screen. O|
00002a30  53 5f 4f 53 5f 4f 73 65  20 69 73 20 61 6c 73 6f  |S_OS_Ose is also|
00002a40  20 63 68 65 63 6b 65 64  20 74 6f 20 73 65 65 20  | checked to see |
00002a50  69 66 20 74 68 65 20 6d  6f 75 73 65 0a 70 6f 73  |if the mouse.pos|
00002a60  69 74 69 6f 6e 20 68 61  73 20 63 68 61 6e 67 65  |ition has change|
00002a70  64 2e 20 49 66 20 69 74  20 68 61 73 2c 20 74 68  |d. If it has, th|
00002a80  65 20 73 63 72 65 65 6e  20 69 73 20 72 65 73 74  |e screen is rest|
00002a90  6f 72 65 64 2e 0a 0a 54  68 65 20 53 65 72 76 69  |ored...The Servi|
00002aa0  63 65 20 43 61 6c 6c 20  26 34 36 20 28 4d 6f 64  |ce Call &46 (Mod|
00002ab0  65 20 43 68 61 6e 67 65  29 20 69 73 20 6e 6f 77  |e Change) is now|
00002ac0  20 72 65 63 6f 67 6e 69  73 65 64 20 73 6f 20 61  | recognised so a|
00002ad0  73 20 74 6f 20 70 65 72  6d 69 74 20 61 20 4d 4f  |s to permit a MO|
00002ae0  44 45 0a 63 68 61 6e 67  65 20 74 6f 20 62 65 20  |DE.change to be |
00002af0  61 20 76 61 6c 69 64 20  73 63 72 65 65 6e 20 72  |a valid screen r|
00002b00  65 73 74 6f 72 61 74 69  6f 6e 20 28 62 79 20 74  |estoration (by t|
00002b10  68 65 20 4f 53 20 72 61  74 68 65 72 20 74 68 61  |he OS rather tha|
00002b20  6e 20 56 44 55 20 53 61  76 65 72 29 2e 0a 54 68  |n VDU Saver)..Th|
00002b30  69 73 20 69 73 20 69 6e  64 65 70 65 6e 64 65 6e  |is is independen|
00002b40  74 20 6f 66 20 74 68 65  20 56 44 55 54 72 61 70  |t of the VDUTrap|
00002b50  20 73 65 74 74 69 6e 67  20 6f 72 20 73 63 72 65  | setting or scre|
00002b60  65 6e 20 4d 4f 44 45 2e  0a 0a 54 68 65 20 6e 65  |en MODE...The ne|
00002b70  77 20 32 34 2d 68 6f 75  72 20 63 6c 6f 63 6b 20  |w 24-hour clock |
00002b80  66 65 61 74 75 72 65 20  69 73 6e 27 74 20 61 73  |feature isn't as|
00002b90  20 65 61 73 79 20 61 73  20 69 74 20 73 6f 75 6e  | easy as it soun|
00002ba0  64 73 20 62 65 63 61 75  73 65 20 49 27 76 65 20  |ds because I've |
00002bb0  73 70 65 63 69 61 6c 6c  79 0a 64 65 66 69 6e 65  |specially.define|
00002bc0  64 20 74 68 65 20 64 69  67 69 74 73 20 30 20 74  |d the digits 0 t|
00002bd0  6f 20 39 20 61 6e 64 20  74 68 65 20 73 74 72 69  |o 9 and the stri|
00002be0  6e 67 20 22 54 49 4d 45  22 20 61 73 20 6d 6f 75  |ng "TIME" as mou|
00002bf0  73 65 20 73 68 61 70 65  20 64 61 74 61 2e 20 49  |se shape data. I|
00002c00  20 63 61 6c 6c 0a 4f 53  5f 57 6f 72 64 20 31 34  | call.OS_Word 14|
00002c10  20 28 70 61 72 61 6d 20  31 29 20 74 6f 20 67 65  | (param 1) to ge|
00002c20  74 20 74 68 65 20 63 75  72 72 65 6e 74 20 74 69  |t the current ti|
00002c30  6d 65 20 69 6e 20 42 43  44 2e 20 49 20 64 6f 20  |me in BCD. I do |
00002c40  73 6f 6d 65 20 73 68 69  66 74 69 6e 67 20 61 6e  |some shifting an|
00002c50  64 0a 75 73 65 20 74 68  65 20 76 61 6c 75 65 20  |d.use the value |
00002c60  6f 66 20 74 68 65 20 64  69 67 69 74 73 20 74 6f  |of the digits to|
00002c70  20 67 65 74 20 74 68 65  20 6f 66 66 73 65 74 20  | get the offset |
00002c80  69 6e 74 6f 20 74 68 65  20 64 61 74 61 2c 20 77  |into the data, w|
00002c90  68 69 63 68 20 69 73 20  70 6f 6b 65 64 0a 69 6e  |hich is poked.in|
00002ca0  74 6f 20 74 68 65 20 6d  6f 75 73 65 20 73 68 61  |to the mouse sha|
00002cb0  70 65 20 64 65 66 69 6e  69 74 69 6f 6e 2e 0a 0a  |pe definition...|
00002cc0  56 32 2e 30 30 20 6f 6e  77 61 72 64 73 20 6e 6f  |V2.00 onwards no|
00002cd0  77 20 75 73 65 73 20 43  4d 4f 53 20 52 41 4d 20  |w uses CMOS RAM |
00002ce0  69 6e 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |in the following|
00002cf0  20 77 61 79 3a 0a 0a 2b  2d 2d 2d 2d 2d 2d 2d 2d  | way:..+--------|
00002d00  2d 2b 2d 2d 2d 2d 2d 2d  2d 2b 2d 2d 2d 2d 2d 2d  |-+-------+------|
*
00002d40  2d 2b 0a 7c 20 42 69 74  73 3a 20 20 20 7c 20 20  |-+.| Bits:   |  |
00002d50  20 37 20 20 20 7c 20 20  20 36 20 20 20 7c 20 20  | 7   |   6   |  |
00002d60  20 35 20 20 20 7c 20 20  20 34 20 20 20 7c 20 20  | 5   |   4   |  |
00002d70  20 33 20 20 20 7c 20 20  20 32 20 20 20 7c 20 20  | 3   |   2   |  |
00002d80  20 31 20 20 20 7c 20 20  20 30 20 20 20 7c 0a 2b  | 1   |   0   |.+|
00002d90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2b 2d 2d 2d 2d 2d 2d  |---------+------|
00002da0  2d 2b 2d 2d 2d 2d 2d 2d  2d 2b 2d 2d 2d 2d 2d 2d  |-+-------+------|
*
00002dd0  2d 2b 2d 2d 2d 2d 2d 2d  2d 2b 0a 7c 20 42 79 74  |-+-------+.| Byt|
00002de0  65 20 33 35 20 7c 3c 54  72 61 70 2d 3e 7c 3c 54  |e 35 |<Trap->|<T|
00002df0  79 70 65 2d 3e 7c 3c 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ype->|<---------|
00002e00  2d 2d 2d 2d 2d 2d 20 20  53 61 76 65 72 44 65 6c  |------  SaverDel|
00002e10  61 79 20 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ay  ------------|
00002e20  2d 2d 2d 2d 3e 7c 0a 2b  2d 2d 2d 2d 2d 2d 2d 2d  |---->|.+--------|
00002e30  2d 2b 2d 2d 2d 2d 2d 2d  2d 2b 2d 2d 2d 2d 2d 2d  |-+-------+------|
*
00002e70  2d 2b 0a 7c 20 42 79 74  65 20 33 36 20 7c 3c 2d  |-+.| Byte 36 |<-|
00002e80  2d 2d 20 42 6c 75 65 20  2d 2d 2d 2d 3e 7c 3c 2d  |-- Blue ---->|<-|
00002e90  2d 2d 20 47 72 65 65 6e  20 2d 2d 2d 3e 7c 3c 2d  |-- Green --->|<-|
00002ea0  2d 2d 2d 20 52 65 64 20  2d 2d 2d 2d 3e 7c 3c 2d  |--- Red ---->|<-|
00002eb0  53 61 76 65 72 53 70 65  65 64 2d 2d 3e 7c 0a 2b  |SaverSpeed-->|.+|
00002ec0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2b 2d 2d 2d 2d 2d 2d  |---------+------|
00002ed0  2d 2b 2d 2d 2d 2d 2d 2d  2d 2b 2d 2d 2d 2d 2d 2d  |-+-------+------|
*
00002f00  2d 2b 2d 2d 2d 2d 2d 2d  2d 2b 0a 0a 43 50 55 20  |-+-------+..CPU |
00002f10  75 74 69 6c 69 73 61 74  69 6f 6e 20 20 20 20 2a  |utilisation    *|
00002f20  55 50 44 41 54 45 44 20  46 4f 52 20 52 49 53 43  |UPDATED FOR RISC|
00002f30  20 4f 53 2a 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | OS*.-----------|
00002f40  2d 2d 2d 2d 0a 0a 53 6f  6d 65 6f 6e 65 20 65 6e  |----..Someone en|
00002f50  71 75 69 72 65 64 20 61  62 6f 75 74 20 74 68 65  |quired about the|
00002f60  20 61 6d 6f 75 6e 74 20  6f 66 20 43 50 55 20 74  | amount of CPU t|
00002f70  69 6d 65 20 75 73 65 64  20 77 68 65 6e 20 74 68  |ime used when th|
00002f80  65 20 56 44 55 20 53 61  76 65 72 20 77 61 73 0a  |e VDU Saver was.|
00002f90  61 63 74 69 76 65 2e 20  48 65 72 65 27 73 20 73  |active. Here's s|
00002fa0  6f 6d 65 20 28 63 72 75  64 65 2c 20 62 75 74 20  |ome (crude, but |
00002fb0  65 66 66 65 63 74 69 76  65 29 20 62 65 6e 63 68  |effective) bench|
00002fc0  6d 61 72 6b 73 20 64 6f  6e 65 20 6f 6e 20 6d 79  |marks done on my|
00002fd0  20 41 33 31 30 20 72 75  6e 6e 69 6e 67 0a 42 41  | A310 running.BA|
00002fe0  53 49 43 20 31 2e 30 34  20 61 6e 64 20 52 49 53  |SIC 1.04 and RIS|
00002ff0  43 20 4f 53 20 32 2e 30  30 20 3a 0a 0a 20 20 20  |C OS 2.00 :..   |
00003000  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00003020  20 56 44 55 54 72 61 70  3f 20 20 49 6e 61 63 74  | VDUTrap?  Inact|
00003030  69 76 65 20 41 63 74 69  76 65 20 20 44 69 66 66  |ive Active  Diff|
00003040  20 20 20 20 53 6c 6f 77  65 72 0a 31 30 20 4d 4f  |    Slower.10 MO|
00003050  44 45 20 30 3a 54 49 4d  45 3d 30 0a 32 30 20 46  |DE 0:TIME=0.20 F|
00003060  4f 52 20 41 25 3d 31 20  54 4f 20 34 30 30 30 30  |OR A%=1 TO 40000|
00003070  30 30 3a 4e 45 58 54 20  20 20 20 20 20 20 20 49  |00:NEXT        I|
00003080  72 72 65 6c 65 76 61 6e  74 20 20 35 38 2e 39 39  |rrelevant  58.99|
00003090  73 20 20 35 39 2e 30 36  73 20 20 30 30 2e 30 37  |s  59.06s  00.07|
000030a0  73 20 20 30 30 2e 31 32  25 0a 33 30 20 50 52 49  |s  00.12%.30 PRI|
000030b0  4e 54 20 54 49 4d 45 2f  31 30 30 0a 0a 31 30 20  |NT TIME/100..10 |
000030c0  4d 4f 44 45 20 30 3a 54  49 4d 45 3d 30 20 20 20  |MODE 0:TIME=0   |
000030d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000030e0  20 20 20 59 65 73 20 20  20 20 20 20 35 31 2e 33  |   Yes      51.3|
000030f0  32 73 20 20 36 31 2e 34  30 73 20 20 31 30 2e 30  |2s  61.40s  10.0|
00003100  38 73 20 20 31 39 2e 36  34 25 0a 32 30 20 46 4f  |8s  19.64%.20 FO|
00003110  52 20 41 25 3d 31 20 54  4f 20 33 30 30 30 30 30  |R A%=1 TO 300000|
00003120  3a 50 52 49 4e 54 22 2a  22 3b 3a 4e 45 58 54 20  |:PRINT"*";:NEXT |
00003130  20 4e 6f 20 20 20 20 20  20 20 35 31 2e 33 32 73  | No       51.32s|
00003140  20 20 35 31 2e 33 38 73  20 20 30 30 2e 30 36 73  |  51.38s  00.06s|
00003150  20 20 30 30 2e 31 32 25  0a 33 30 20 50 52 49 4e  |  00.12%.30 PRIN|
00003160  54 20 54 49 4d 45 2f 31  30 30 0a 0a 41 73 20 79  |T TIME/100..As y|
00003170  6f 75 20 63 61 6e 20 73  65 65 2c 20 74 68 65 72  |ou can see, ther|
00003180  65 20 69 73 20 61 20 68  65 66 74 79 20 43 50 55  |e is a hefty CPU|
00003190  20 67 72 61 62 20 28 6e  65 61 72 6c 79 20 6f 6e  | grab (nearly on|
000031a0  65 2d 66 69 66 74 68 29  20 69 66 20 63 6f 6e 74  |e-fifth) if cont|
000031b0  69 6e 75 6f 75 73 0a 56  44 55 20 6f 75 74 70 75  |inuous.VDU outpu|
000031c0  74 20 6f 63 63 75 72 73  20 77 68 65 6e 20 74 68  |t occurs when th|
000031d0  65 20 56 44 55 20 53 61  76 65 72 20 69 73 20 61  |e VDU Saver is a|
000031e0  63 74 69 76 65 20 61 6e  64 20 74 68 65 20 56 44  |ctive and the VD|
000031f0  55 54 72 61 70 20 69 73  20 73 77 69 74 63 68 65  |UTrap is switche|
00003200  64 20 6f 6e 2e 0a 54 68  69 73 20 77 6f 75 6c 64  |d on..This would|
00003210  20 73 65 65 6d 20 74 6f  20 69 6e 64 69 63 61 74  | seem to indicat|
00003220  65 20 74 68 61 74 20 63  6c 61 69 6d 69 6e 67 20  |e that claiming |
00003230  57 72 69 74 65 43 56 20  28 62 75 74 20 6e 6f 74  |WriteCV (but not|
00003240  20 64 6f 69 6e 67 20 6d  75 63 68 29 20 61 70 70  | doing much) app|
00003250  65 61 72 73 0a 74 6f 20  62 65 20 61 20 6e 6f 2d  |ears.to be a no-|
00003260  6e 6f 20 69 66 20 79 6f  75 20 77 61 6e 74 20 66  |no if you want f|
00003270  61 73 74 20 56 44 55 20  6f 75 74 70 75 74 20 2d  |ast VDU output -|
00003280  20 62 6c 61 6d 65 20 41  63 6f 72 6e 2c 20 6e 6f  | blame Acorn, no|
00003290  74 20 6d 65 20 21 0a 0a  49 6e 20 6e 6f 72 6d 61  |t me !..In norma|
000032a0  6c 20 73 69 74 75 61 74  69 6f 6e 73 2c 20 68 6f  |l situations, ho|
000032b0  77 65 76 65 72 2c 20 74  68 65 20 43 50 55 20 67  |wever, the CPU g|
000032c0  72 61 62 20 77 69 6c 6c  20 62 65 20 77 65 6c 6c  |rab will be well|
000032d0  20 75 6e 64 65 72 20 31  25 2c 20 73 6f 20 74 68  | under 1%, so th|
000032e0  65 72 65 20 69 73 0a 6e  6f 20 6e 65 65 64 20 74  |ere is.no need t|
000032f0  6f 20 70 61 6e 69 63 20  61 74 20 74 68 65 20 61  |o panic at the a|
00003300  6c 61 72 6d 69 6e 67 20  31 39 2e 36 34 25 20 66  |larming 19.64% f|
00003310  69 67 75 72 65 20 28 79  65 73 2c 20 49 20 77 61  |igure (yes, I wa|
00003320  73 20 73 68 6f 63 6b 65  64 20 61 74 20 74 68 69  |s shocked at thi|
00003330  73 0a 74 6f 6f 29 2e 2e  2e 0a 0a 54 68 65 20 63  |s.too).....The c|
00003340  6f 64 65 20 69 6e 20 56  32 2e 30 30 20 6f 6e 77  |ode in V2.00 onw|
00003350  61 72 64 73 20 68 61 73  20 62 65 65 6e 20 65 78  |ards has been ex|
00003360  74 65 6e 73 69 76 65 6c  79 20 72 65 2d 6f 72 67  |tensively re-org|
00003370  61 6e 69 73 65 64 20 74  6f 20 75 73 65 20 74 68  |anised to use th|
00003380  65 20 6d 69 6e 69 6d 75  6d 0a 61 6d 6f 75 6e 74  |e minimum.amount|
00003390  20 6f 66 20 43 50 55 20  74 69 6d 65 20 77 68 65  | of CPU time whe|
000033a0  6e 20 74 68 65 20 6d 6f  64 75 6c 65 20 69 73 20  |n the module is |
000033b0  6c 6f 61 64 65 64 20 61  6e 64 20 65 69 74 68 65  |loaded and eithe|
000033c0  72 20 61 63 74 69 76 65  20 6f 72 20 69 6e 61 63  |r active or inac|
000033d0  74 69 76 65 2e 0a 50 72  65 76 69 6f 75 73 20 76  |tive..Previous v|
000033e0  65 72 73 69 6f 6e 73 20  77 6f 75 6c 64 20 61 63  |ersions would ac|
000033f0  74 75 61 6c 6c 79 20 75  73 65 20 75 70 20 43 50  |tually use up CP|
00003400  55 20 74 69 6d 65 20 61  73 20 73 6f 6f 6e 20 61  |U time as soon a|
00003410  73 20 74 68 65 20 6d 6f  64 75 6c 65 20 77 61 73  |s the module was|
00003420  0a 6c 6f 61 64 65 64 20  21 20 49 6e 20 70 61 72  |.loaded ! In par|
00003430  74 69 63 75 6c 61 72 2c  20 56 32 2e 30 30 20 6f  |ticular, V2.00 o|
00003440  6e 77 61 72 64 73 20 64  6f 65 73 20 6e 6f 74 20  |nwards does not |
00003450  63 6c 61 69 6d 20 61 6e  79 20 76 65 63 74 6f 72  |claim any vector|
00003460  73 20 6f 72 20 65 6e 61  62 6c 65 0a 65 76 65 6e  |s or enable.even|
00003470  74 73 20 75 6e 74 69 6c  20 61 20 2a 56 44 55 53  |ts until a *VDUS|
00003480  61 76 65 72 20 63 6f 6d  6d 61 6e 64 20 69 73 20  |aver command is |
00003490  69 73 73 75 65 64 2e 0a  0a 52 65 76 69 73 69 6f  |issued...Revisio|
000034a0  6e 20 48 69 73 74 6f 72  79 20 6f 66 20 56 44 55  |n History of VDU|
000034b0  20 53 61 76 65 72 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  | Saver.---------|
000034c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000034d0  2d 2d 2d 2d 0a 0a 56 65  72 73 69 6f 6e 20 32 2e  |----..Version 2.|
000034e0  30 33 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |03.------------.|
000034f0  0a 2a 20 41 20 6e 65 77  20 2a 56 44 55 53 74 61  |.* A new *VDUSta|
00003500  74 75 73 20 63 6f 6d 6d  61 6e 64 20 68 61 73 20  |tus command has |
00003510  62 65 65 6e 20 61 64 64  65 64 20 73 6f 20 74 68  |been added so th|
00003520  61 74 20 75 73 65 72 73  20 63 61 6e 20 63 68 65  |at users can che|
00003530  63 6b 20 77 68 61 74 20  76 61 6c 75 65 73 0a 20  |ck what values. |
00003540  20 74 68 65 79 27 76 65  20 6a 75 73 74 20 73 75  | they've just su|
00003550  70 70 6c 69 65 64 20 74  6f 20 74 68 65 20 6c 61  |pplied to the la|
00003560  74 65 73 74 20 2a 56 44  55 53 61 76 65 72 20 63  |test *VDUSaver c|
00003570  6f 6d 6d 61 6e 64 2e 0a  0a 2a 20 54 6f 20 74 69  |ommand...* To ti|
00003580  65 20 69 6e 20 77 69 74  68 20 74 68 65 20 6e 65  |e in with the ne|
00003590  77 20 63 6f 6d 6d 61 6e  64 2c 20 61 20 73 6f 66  |w command, a sof|
000035a0  74 20 72 65 73 65 74 20  6e 6f 77 20 70 65 72 66  |t reset now perf|
000035b0  6f 72 6d 73 20 74 68 65  20 65 71 75 69 76 61 6c  |orms the equival|
000035c0  65 6e 74 0a 20 20 6f 66  20 61 20 2a 56 44 55 53  |ent.  of a *VDUS|
000035d0  61 76 65 72 20 30 20 63  6f 6d 6d 61 6e 64 20 73  |aver 0 command s|
000035e0  6f 20 74 68 61 74 20 2a  56 44 55 53 74 61 74 75  |o that *VDUStatu|
000035f0  73 20 77 69 6c 6c 20 72  65 70 6f 72 74 20 74 68  |s will report th|
00003600  65 20 63 6f 72 72 65 63  74 20 73 74 61 74 75 73  |e correct status|
00003610  0a 20 20 28 49 6e 61 63  74 69 76 65 29 20 72 61  |.  (Inactive) ra|
00003620  74 68 65 72 20 74 68 61  6e 20 74 68 65 20 6c 61  |ther than the la|
00003630  73 74 20 61 63 74 69 76  65 20 76 61 6c 75 65 73  |st active values|
00003640  2e 0a 0a 2a 20 55 73 65  64 20 4f 53 5f 52 65 61  |...* Used OS_Rea|
00003650  64 56 64 75 56 61 72 69  61 62 6c 65 73 20 74 6f  |dVduVariables to|
00003660  20 66 69 6e 64 20 74 68  65 20 4d 4f 44 45 2d 69  | find the MODE-i|
00003670  6e 64 65 70 65 6e 64 65  6e 74 20 6d 6f 75 73 65  |ndependent mouse|
00003680  20 72 65 63 74 61 6e 67  6c 65 2c 20 73 6f 0a 20  | rectangle, so. |
00003690  20 74 68 6f 73 65 20 70  65 6f 70 6c 65 20 77 69  | those people wi|
000036a0  74 68 20 68 69 2d 72 65  73 20 42 26 57 20 6d 6f  |th hi-res B&W mo|
000036b0  6e 69 74 6f 72 73 20 73  68 6f 75 6c 64 20 28 68  |nitors should (h|
000036c0  6f 70 65 66 75 6c 6c 79  2e 2e 2e 61 6e 79 6f 6e  |opefully...anyon|
000036d0  65 20 63 61 72 65 20 74  6f 0a 20 20 74 65 73 74  |e care to.  test|
000036e0  20 74 68 69 73 20 3f 29  20 68 61 76 65 20 61 20  | this ?) have a |
000036f0  70 72 6f 70 65 72 20 72  65 63 74 61 6e 67 6c 65  |proper rectangle|
00003700  2e 0a 0a 2a 20 44 75 65  20 74 6f 20 61 62 6f 76  |...* Due to abov|
00003710  65 20 63 68 61 6e 67 65  2c 20 73 75 70 70 6f 72  |e change, suppor|
00003720  74 20 66 6f 72 20 41 72  74 68 75 72 20 31 2e 32  |t for Arthur 1.2|
00003730  30 20 68 61 73 20 6e 6f  77 20 62 65 65 6e 20 64  |0 has now been d|
00003740  72 6f 70 70 65 64 2e 20  52 49 53 43 20 4f 53 0a  |ropped. RISC OS.|
00003750  20 20 68 61 73 20 62 65  65 6e 20 67 65 6e 65 72  |  has been gener|
00003760  61 6c 6c 79 20 61 76 61  69 6c 61 62 6c 65 20 66  |ally available f|
00003770  6f 72 20 6d 6f 72 65 20  74 68 61 6e 20 36 20 6d  |or more than 6 m|
00003780  6f 6e 74 68 73 20 6e 6f  77 2c 20 73 6f 20 74 68  |onths now, so th|
00003790  65 72 65 27 73 20 6e 6f  0a 20 20 65 78 63 75 73  |ere's no.  excus|
000037a0  65 20 28 61 6e 64 20 79  6f 75 20 63 61 6e 20 6e  |e (and you can n|
000037b0  6f 77 20 72 65 61 64 69  6c 79 20 6f 72 64 65 72  |ow readily order|
000037c0  20 74 68 65 20 6e 65 77  20 50 52 4d 27 73 20 74  | the new PRM's t|
000037d0  6f 6f 20 2d 20 49 27 76  65 20 67 6f 74 20 6d 69  |oo - I've got mi|
000037e0  6e 65 29 2e 0a 0a 56 65  72 73 69 6f 6e 20 32 2e  |ne)...Version 2.|
000037f0  30 32 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |02.------------.|
00003800  0a 2a 20 50 72 65 76 65  6e 74 65 64 20 74 68 65  |.* Prevented the|
00003810  20 6d 6f 75 73 65 20 73  68 61 70 65 20 6e 75 6d  | mouse shape num|
00003820  62 65 72 20 28 32 29 20  75 73 65 64 20 62 79 20  |ber (2) used by |
00003830  56 44 55 20 53 61 76 65  72 20 66 72 6f 6d 20 63  |VDU Saver from c|
00003840  68 61 6e 67 69 6e 67 20  64 75 72 69 6e 67 0a 20  |hanging during. |
00003850  20 73 63 72 65 65 6e 20  62 6c 61 6e 6b 69 6e 67  | screen blanking|
00003860  20 28 62 75 74 20 73 74  69 6c 6c 20 63 68 61 6e  | (but still chan|
00003870  67 65 73 20 74 6f 20 72  65 71 75 65 73 74 65 64  |ges to requested|
00003880  20 73 68 61 70 65 20 6e  75 6d 62 65 72 20 6f 6e  | shape number on|
00003890  20 73 63 72 65 65 6e 0a  20 20 72 65 73 74 6f 72  | screen.  restor|
000038a0  61 74 69 6f 6e 29 2e 20  44 69 74 74 6f 20 66 6f  |ation). Ditto fo|
000038b0  72 20 6d 6f 75 73 65 20  63 6f 6c 6f 75 72 20 31  |r mouse colour 1|
000038c0  20 28 66 6f 72 20 4f 53  5f 57 6f 72 64 20 31 32  | (for OS_Word 12|
000038d0  20 63 61 6c 6c 73 20 6f  6e 6c 79 29 2e 0a 20 20  | calls only)..  |
000038e0  0a 2a 20 54 68 65 20 63  68 65 63 6b 20 66 6f 72  |.* The check for|
000038f0  20 30 20 64 65 6c 61 79  20 76 61 6c 75 65 20 69  | 0 delay value i|
00003900  6e 20 43 4d 4f 53 20 52  41 4d 20 77 61 73 20 6e  |n CMOS RAM was n|
00003910  6f 74 20 77 6f 72 6b 69  6e 67 20 63 6f 72 72 65  |ot working corre|
00003920  63 74 6c 79 2e 20 41 6c  74 68 6f 75 67 68 0a 20  |ctly. Although. |
00003930  20 74 68 65 20 76 61 6c  75 65 20 6f 66 20 31 35  | the value of 15|
00003940  20 28 6d 69 6e 75 74 65  73 29 20 77 6f 75 6c 64  | (minutes) would|
00003950  20 62 65 20 75 73 65 64  20 28 61 6e 64 20 73 68  | be used (and sh|
00003960  6f 77 6e 20 69 6e 20 2a  53 74 61 74 75 73 29 2c  |own in *Status),|
00003970  20 61 20 66 61 75 6c 74  79 0a 20 20 4d 4f 56 45  | a faulty.  MOVE|
00003980  51 53 20 69 6e 73 74 72  75 63 74 69 6f 6e 20 6d  |QS instruction m|
00003990  65 61 6e 74 20 74 68 61  74 20 74 68 65 20 61 63  |eant that the ac|
000039a0  74 75 61 6c 20 43 4d 4f  53 20 52 41 4d 20 77 6f  |tual CMOS RAM wo|
000039b0  75 6c 64 20 6e 6f 74 20  62 65 20 66 6f 72 63 65  |uld not be force|
000039c0  64 20 74 6f 20 74 68 65  0a 20 20 76 61 6c 75 65  |d to the.  value|
000039d0  20 6f 66 20 31 35 2e 20  54 68 69 73 20 68 61 73  | of 15. This has|
000039e0  20 62 65 65 6e 20 66 69  78 65 64 2e 0a 0a 2a 20  | been fixed...* |
000039f0  53 6c 69 67 68 74 6c 79  20 63 68 61 6e 67 65 64  |Slightly changed|
00003a00  20 74 68 65 20 72 61 6e  64 6f 6d 20 6e 75 6d 62  | the random numb|
00003a10  65 72 20 73 65 65 64 69  6e 67 20 72 6f 75 74 69  |er seeding routi|
00003a20  6e 65 2e 0a 0a 56 65 72  73 69 6f 6e 20 32 2e 30  |ne...Version 2.0|
00003a30  31 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 0a  |1.------------..|
00003a40  2a 20 50 68 69 6c 69 70  20 43 6f 6c 6d 65 72 20  |* Philip Colmer |
00003a50  28 6f 66 20 41 63 6f 72  6e 20 6e 6f 20 6c 65 73  |(of Acorn no les|
00003a60  73 29 20 73 70 6f 74 74  65 64 20 61 20 62 75 67  |s) spotted a bug|
00003a70  3a 0a 20 20 56 32 2e 30  30 20 77 6f 75 6c 64 20  |:.  V2.00 would |
00003a80  69 6e 63 6f 72 72 65 63  74 6c 79 20 72 65 73 74  |incorrectly rest|
00003a90  6f 72 65 20 74 68 65 20  70 61 6c 65 74 74 65 20  |ore the palette |
00003aa0  69 6e 20 32 35 36 2d 63  6f 6c 6f 75 72 20 4d 4f  |in 256-colour MO|
00003ab0  44 45 73 2e 20 49 6e 20  66 61 63 74 2c 0a 20 20  |DEs. In fact,.  |
00003ac0  65 76 65 72 79 74 68 69  6e 67 20 73 74 61 72 74  |everything start|
00003ad0  65 64 20 74 75 72 6e 69  6e 67 20 67 72 65 65 6e  |ed turning green|
00003ae0  20 28 6d 6f 75 6c 64 79  20 6f 6c 64 20 70 72 6f  | (mouldy old pro|
00003af0  67 72 61 6d 6d 69 6e 67  20 70 65 72 68 61 70 73  |gramming perhaps|
00003b00  20 3f 29 2e 2e 2e 0a 20  20 49 6e 76 65 73 74 69  | ?)....  Investi|
00003b10  67 61 74 69 6f 6e 20 72  65 76 65 61 6c 65 64 20  |gation revealed |
00003b20  74 68 61 74 20 49 27 64  20 6d 6f 76 65 64 20 74  |that I'd moved t|
00003b30  77 6f 20 73 74 61 74 65  6d 65 6e 74 73 20 66 75  |wo statements fu|
00003b40  72 74 68 65 72 20 64 6f  77 6e 20 69 6e 20 74 68  |rther down in th|
00003b50  65 0a 20 20 63 6f 64 65  2c 20 62 75 74 20 74 68  |e.  code, but th|
00003b60  65 20 66 69 72 73 74 20  6f 66 20 74 68 65 6d 2c  |e first of them,|
00003b70  20 4d 4f 56 20 52 32 2c  23 30 2c 20 73 68 6f 75  | MOV R2,#0, shou|
00003b80  6c 64 20 68 61 76 65 20  72 65 6d 61 69 6e 65 64  |ld have remained|
00003b90  20 77 68 65 72 65 20 69  74 20 77 61 73 2e 0a 20  | where it was.. |
00003ba0  20 2a 42 55 47 20 46 49  58 45 44 20 57 49 54 48  | *BUG FIXED WITH|
00003bb0  20 56 41 50 4f 4e 41 20  46 4c 59 20 53 50 52 41  | VAPONA FLY SPRA|
00003bc0  59 2a 0a 0a 2a 20 50 68  69 6c 69 70 20 61 6c 73  |Y*..* Philip als|
00003bd0  6f 20 70 75 74 20 66 6f  72 77 61 72 64 20 74 68  |o put forward th|
00003be0  65 20 73 75 67 67 65 73  74 69 6f 6e 20 74 68 61  |e suggestion tha|
00003bf0  74 20 74 68 65 20 75 73  65 72 20 73 68 6f 75 6c  |t the user shoul|
00003c00  64 20 73 65 65 20 73 6f  6d 65 74 68 69 6e 67 0a  |d see something.|
00003c10  20 20 68 61 70 70 65 6e  69 6e 67 20 69 6e 20 74  |  happening in t|
00003c20  68 65 20 32 35 36 2d 63  6f 6c 6f 75 72 20 4d 4f  |he 256-colour MO|
00003c30  44 45 73 20 65 2e 67 2e  20 74 68 65 20 62 6f 72  |DEs e.g. the bor|
00003c40  64 65 72 20 63 6f 6c 6f  75 72 20 73 68 6f 75 6c  |der colour shoul|
00003c50  64 20 63 68 61 6e 67 65  2e 0a 20 20 49 20 69 6d  |d change..  I im|
00003c60  70 6c 65 6d 65 6e 74 65  64 20 68 69 73 20 73 75  |plemented his su|
00003c70  67 67 65 73 74 69 6f 6e  20 2d 20 49 20 68 6f 70  |ggestion - I hop|
00003c80  65 20 6e 6f 62 6f 64 79  20 6f 62 6a 65 63 74 73  |e nobody objects|
00003c90  20 74 6f 6f 20 6d 75 63  68 2e 20 48 65 20 61 6c  | too much. He al|
00003ca0  73 6f 0a 20 20 68 69 6e  74 65 64 20 61 74 20 74  |so.  hinted at t|
00003cb0  68 65 20 70 6f 73 73 69  62 69 6c 69 74 79 20 6f  |he possibility o|
00003cc0  66 20 56 44 55 20 53 61  76 65 72 20 61 70 70 65  |f VDU Saver appe|
00003cd0  61 72 69 6e 67 20 6f 6e  20 53 49 44 2e 2e 2e 66  |aring on SID...f|
00003ce0  69 6e 67 65 72 73 20 63  72 6f 73 73 65 64 2e 0a  |ingers crossed..|
00003cf0  20 20 2a 56 45 52 53 49  4f 4e 20 32 2e 30 31 20  |  *VERSION 2.01 |
00003d00  49 53 20 4e 4f 57 20 41  56 41 49 4c 41 42 4c 45  |IS NOW AVAILABLE|
00003d10  20 4f 4e 20 53 49 44 2a  0a 0a 56 65 72 73 69 6f  | ON SID*..Versio|
00003d20  6e 20 32 2e 30 30 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |n 2.00.---------|
00003d30  2d 2d 2d 0a 0a 2a 20 44  75 65 20 74 6f 20 74 68  |---..* Due to th|
00003d40  65 20 65 78 74 72 61 20  6d 6f 75 73 65 20 70 6f  |e extra mouse po|
00003d50  69 6e 74 65 72 20 64 65  66 69 6e 69 74 69 6f 6e  |inter definition|
00003d60  73 2c 20 56 32 2e 30 30  20 69 73 20 6e 6f 77 20  |s, V2.00 is now |
00003d70  37 4b 20 6c 6f 6e 67 2e  20 53 6f 6d 65 0a 20 20  |7K long. Some.  |
00003d80  70 65 6f 70 6c 65 20 6d  61 79 20 63 6f 6e 73 69  |people may consi|
00003d90  64 65 72 20 74 68 69 73  20 62 69 67 20 66 6f 72  |der this big for|
00003da0  20 61 20 73 63 72 65 65  6e 20 73 61 76 65 72 2c  | a screen saver,|
00003db0  20 62 75 74 20 74 68 69  6e 6b 20 6f 66 20 74 68  | but think of th|
00003dc0  61 74 20 70 72 65 74 74  79 0a 20 20 74 69 6d 65  |at pretty.  time|
00003dd0  20 70 6c 6f 74 74 65 64  20 6f 6e 20 74 68 65 20  | plotted on the |
00003de0  73 63 72 65 65 6e 20 61  6e 64 20 79 6f 75 20 6d  |screen and you m|
00003df0  69 67 68 74 20 66 6f 72  67 69 76 65 20 6d 65 2e  |ight forgive me.|
00003e00  2e 2e 0a 0a 2a 20 52 65  2d 6f 72 67 61 6e 69 73  |....* Re-organis|
00003e10  65 64 20 74 68 65 20 63  6f 64 65 20 74 6f 20 75  |ed the code to u|
00003e20  73 65 20 6c 65 73 73 20  43 50 55 20 74 69 6d 65  |se less CPU time|
00003e30  20 67 65 6e 65 72 61 6c  6c 79 2c 20 65 73 70 65  | generally, espe|
00003e40  63 69 61 6c 6c 79 20 77  68 65 6e 0a 20 20 74 68  |cially when.  th|
00003e50  65 20 6d 6f 64 75 6c 65  20 68 61 73 20 62 65 65  |e module has bee|
00003e60  6e 20 6c 6f 61 64 65 64  20 62 75 74 20 6e 6f 74  |n loaded but not|
00003e70  20 61 63 74 69 76 61 74  65 64 2e 0a 0a 2a 20 46  | activated...* F|
00003e80  69 78 65 64 20 74 68 65  20 62 75 67 20 77 68 65  |ixed the bug whe|
00003e90  72 65 62 79 20 63 6f 6c  6f 75 72 20 30 20 28 62  |reby colour 0 (b|
00003ea0  61 63 6b 67 72 6f 75 6e  64 29 20 77 61 73 6e 27  |ackground) wasn'|
00003eb0  74 20 72 65 73 74 6f 72  65 64 20 70 72 6f 70 65  |t restored prope|
00003ec0  72 6c 79 20 69 6e 0a 20  20 32 35 36 2d 63 6f 6c  |rly in.  256-col|
00003ed0  6f 75 72 20 4d 4f 44 45  73 2e 0a 0a 2a 20 46 75  |our MODEs...* Fu|
00003ee0  6c 6c 79 20 28 68 6f 20  68 75 6d 20 2d 20 49 20  |lly (ho hum - I |
00003ef0  6c 69 65 64 20 68 65 72  65 29 20 74 65 73 74 65  |lied here) teste|
00003f00  64 20 61 6e 64 20 77 6f  72 6b 69 6e 67 20 69 6e  |d and working in|
00003f10  20 52 49 53 43 20 4f 53  20 28 79 65 73 2c 20 49  | RISC OS (yes, I|
00003f20  20 6e 6f 77 20 68 61 76  65 0a 20 20 69 74 20 21  | now have.  it !|
00003f30  29 2e 0a 0a 2a 20 4d 6f  64 69 66 69 65 64 20 74  |)...* Modified t|
00003f40  68 65 20 4d 45 4d 43 20  70 6f 6b 65 20 74 6f 20  |he MEMC poke to |
00003f50  6d 61 6b 65 20 69 74 20  27 73 61 66 65 72 27 2e  |make it 'safer'.|
00003f60  0a 0a 2a 20 4e 6f 77 20  61 6c 6c 6f 77 20 65 69  |..* Now allow ei|
00003f70  74 68 65 72 20 74 68 65  20 63 75 72 72 65 6e 74  |ther the current|
00003f80  20 74 69 6d 65 20 6f 72  20 74 68 65 20 53 6d 69  | time or the Smi|
00003f90  6c 65 79 20 66 61 63 65  20 74 6f 20 62 65 20 70  |ley face to be p|
00003fa0  6c 6f 74 74 65 64 2e 2e  2e 0a 20 20 79 6f 75 20  |lotted....  you |
00003fb0  68 61 76 65 20 61 20 63  68 6f 69 63 65 20 61 74  |have a choice at|
00003fc0  20 6c 61 73 74 20 21 0a  0a 2a 20 41 64 64 65 64  | last !..* Added|
00003fd0  20 2a 43 6f 6e 66 69 67  75 72 65 20 53 61 76 65  | *Configure Save|
00003fe0  72 54 79 70 65 20 74 6f  20 67 6f 20 77 69 74 68  |rType to go with|
00003ff0  20 74 68 65 20 6e 65 77  20 6d 6f 75 73 65 20 73  | the new mouse s|
00004000  68 61 70 65 20 63 68 6f  69 63 65 2e 0a 0a 2a 20  |hape choice...* |
00004010  52 65 64 75 63 65 64 20  74 68 65 20 6d 61 78 69  |Reduced the maxi|
00004020  6d 75 6d 20 53 61 76 65  72 44 65 6c 61 79 20 74  |mum SaverDelay t|
00004030  6f 20 36 33 20 6d 69 6e  75 74 65 73 20 62 65 63  |o 63 minutes bec|
00004040  61 75 73 65 20 42 69 74  20 36 20 6f 66 20 42 79  |ause Bit 6 of By|
00004050  74 65 20 33 35 20 69 73  0a 20 20 6e 6f 77 20 75  |te 35 is.  now u|
00004060  73 65 64 20 66 6f 72 20  74 68 65 20 53 61 76 65  |sed for the Save|
00004070  72 54 79 70 65 2e 20 41  6c 73 6f 20 6d 61 64 65  |rType. Also made|
00004080  20 64 6f 75 62 6c 79 20  73 75 72 65 20 74 68 61  | doubly sure tha|
00004090  74 20 74 68 65 20 76 65  72 73 69 6f 6e 20 49 0a  |t the version I.|
000040a0  20 20 72 65 6c 65 61 73  65 20 73 70 65 63 69 66  |  release specif|
000040b0  69 65 73 20 74 68 65 20  64 65 6c 61 79 20 69 6e  |ies the delay in|
000040c0  20 6d 69 6e 75 74 65 73  20 28 72 61 74 68 65 72  | minutes (rather|
000040d0  20 74 68 61 6e 20 73 65  63 6f 6e 64 73 2c 20 77  | than seconds, w|
000040e0  68 69 63 68 20 49 20 75  73 65 0a 20 20 66 6f 72  |hich I use.  for|
000040f0  20 74 65 73 74 20 70 75  72 70 6f 73 65 73 20 61  | test purposes a|
00004100  6e 64 20 61 63 63 69 64  65 6e 74 61 6c 6c 79 20  |nd accidentally |
00004110  66 6f 72 67 6f 74 20 74  6f 20 63 68 61 6e 67 65  |forgot to change|
00004120  20 74 6f 20 6d 69 6e 75  74 65 73 20 69 6e 20 56  | to minutes in V|
00004130  31 2e 30 33 20 21 29 2e  0a 0a 56 65 72 73 69 6f  |1.03 !)...Versio|
00004140  6e 20 31 2e 30 33 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |n 1.03.---------|
00004150  2d 2d 2d 0a 0a 2a 20 4d  61 6b 65 20 61 20 73 70  |---..* Make a sp|
00004160  65 63 69 61 6c 20 63 68  65 63 6b 20 66 6f 72 20  |ecial check for |
00004170  54 65 6c 65 74 65 78 74  20 4d 4f 44 45 73 2c 20  |Teletext MODEs, |
00004180  73 6f 20 74 68 61 74 20  74 68 65 20 73 63 72 65  |so that the scre|
00004190  65 6e 20 73 61 76 69 6e  67 20 69 73 0a 20 20 70  |en saving is.  p|
000041a0  65 72 66 6f 72 6d 65 64  20 69 6e 20 74 68 65 20  |erformed in the |
000041b0  73 61 6d 65 20 77 61 79  20 61 73 20 32 35 36 2d  |same way as 256-|
000041c0  63 6f 6c 6f 75 72 20 4d  4f 44 45 73 2e 0a 0a 2a  |colour MODEs...*|
000041d0  20 32 35 36 2d 63 6f 6c  6f 75 72 20 4d 4f 44 45  | 256-colour MODE|
000041e0  73 20 6e 6f 77 20 74 6f  67 67 6c 65 20 74 68 65  |s now toggle the|
000041f0  20 56 69 64 65 6f 2f 43  75 72 73 6f 72 20 44 4d  | Video/Cursor DM|
00004200  41 20 45 6e 61 62 6c 65  20 66 6c 61 67 20 69 6e  |A Enable flag in|
00004210  20 4d 45 4d 43 27 73 0a  20 20 63 6f 6e 74 72 6f  | MEMC's.  contro|
00004220  6c 20 72 65 67 69 73 74  65 72 20 74 6f 20 62 6c  |l register to bl|
00004230  61 6e 6b 20 74 68 65 20  73 63 72 65 65 6e 2e 20  |ank the screen. |
00004240  49 6e 20 70 6c 61 69 6e  20 45 6e 67 6c 69 73 68  |In plain English|
00004250  2c 20 56 44 55 20 53 61  76 65 72 20 6e 6f 77 0a  |, VDU Saver now.|
00004260  20 20 77 6f 72 6b 73 20  69 6e 20 32 35 36 2d 63  |  works in 256-c|
00004270  6f 6c 6f 75 72 20 4d 4f  44 45 73 20 62 75 74 20  |olour MODEs but |
00004280  77 69 74 68 6f 75 74 20  74 68 65 20 64 75 62 69  |without the dubi|
00004290  6f 75 73 20 62 65 6e 65  66 69 74 20 6f 66 20 61  |ous benefit of a|
000042a0  20 53 6d 69 6c 65 79 0a  20 20 66 61 63 65 20 28  | Smiley.  face (|
000042b0  62 65 63 61 75 73 65 20  74 68 65 20 6d 6f 75 73  |because the mous|
000042c0  65 20 69 73 20 75 6e 66  6f 72 74 75 6e 61 74 65  |e is unfortunate|
000042d0  6c 79 20 62 6c 61 6e 6b  65 64 20 69 6e 20 74 68  |ly blanked in th|
000042e0  65 73 65 20 4d 4f 44 45  73 20 61 73 20 77 65 6c  |ese MODEs as wel|
000042f0  6c 29 2e 0a 0a 2a 20 4d  4f 44 45 20 63 68 61 6e  |l)...* MODE chan|
00004300  67 65 73 20 61 72 65 20  6e 6f 77 20 72 65 63 6f  |ges are now reco|
00004310  67 6e 69 73 65 64 20 61  73 20 61 20 73 63 72 65  |gnised as a scre|
00004320  65 6e 20 72 65 73 74 6f  72 61 74 69 6f 6e 20 77  |en restoration w|
00004330  69 74 68 6f 75 74 20 74  68 65 0a 20 20 69 6e 74  |ithout the.  int|
00004340  65 72 76 65 6e 74 69 6f  6e 20 6f 66 20 56 44 55  |ervention of VDU|
00004350  20 53 61 76 65 72 2e 20  54 68 69 73 20 74 61 6b  | Saver. This tak|
00004360  65 73 20 63 61 72 65 20  6f 66 20 74 68 65 20 63  |es care of the c|
00004370  61 73 65 20 77 68 65 6e  20 56 44 55 54 72 61 70  |ase when VDUTrap|
00004380  20 3d 20 30 0a 20 20 61  6e 64 20 74 68 65 20 4d  | = 0.  and the M|
00004390  4f 44 45 20 69 73 20 63  68 61 6e 67 65 64 20 69  |ODE is changed i|
000043a0  6e 20 61 20 70 72 6f 67  72 61 6d 20 77 68 69 6c  |n a program whil|
000043b0  73 74 20 74 68 65 20 73  63 72 65 65 6e 20 69 73  |st the screen is|
000043c0  20 62 6c 61 6e 6b 65 64  2e 20 45 61 72 6c 69 65  | blanked. Earlie|
000043d0  72 0a 20 20 76 65 72 73  69 6f 6e 73 20 77 6f 75  |r.  versions wou|
000043e0  6c 64 20 68 61 76 65 2c  20 61 66 74 65 72 20 74  |ld have, after t|
000043f0  68 65 20 61 70 70 72 6f  70 72 69 61 74 65 20 64  |he appropriate d|
00004400  65 6c 61 79 2c 20 72 65  73 74 6f 72 65 64 20 74  |elay, restored t|
00004410  68 65 20 4f 4c 44 20 70  61 6c 65 74 74 65 0a 20  |he OLD palette. |
00004420  20 28 70 72 69 6f 72 20  74 6f 20 74 68 65 20 4d  | (prior to the M|
00004430  4f 44 45 20 63 68 61 6e  67 65 29 20 74 6f 20 74  |ODE change) to t|
00004440  68 65 20 4e 45 57 20 4d  4f 44 45 2e 0a 0a 2a 20  |he NEW MODE...* |
00004450  4f 4b 2c 20 61 20 6c 69  74 74 6c 65 20 62 75 67  |OK, a little bug|
00004460  65 74 74 65 20 68 65 72  65 20 66 6f 6c 6b 73 2e  |ette here folks.|
00004470  20 41 20 66 72 69 65 6e  64 20 72 61 6e 20 56 44  | A friend ran VD|
00004480  55 20 53 61 76 65 72 20  6f 6e 20 52 49 53 43 20  |U Saver on RISC |
00004490  4f 53 20 61 6e 64 0a 20  20 63 6c 61 69 6d 65 64  |OS and.  claimed|
000044a0  20 65 72 72 61 74 69 63  20 62 65 68 61 76 69 6f  | erratic behavio|
000044b0  75 72 20 77 69 74 68 20  74 68 65 20 73 63 72 65  |ur with the scre|
000044c0  65 6e 20 72 65 73 74 6f  72 69 6e 67 20 61 74 20  |en restoring at |
000044d0  72 61 6e 64 6f 6d 20 69  6e 74 65 72 76 61 6c 73  |random intervals|
000044e0  2e 2e 21 3f 21 0a 20 20  44 75 65 20 74 6f 20 6c  |..!?!.  Due to l|
000044f0  61 7a 69 6e 65 73 73 20  6f 6e 20 6d 79 20 70 61  |aziness on my pa|
00004500  72 74 2c 20 49 20 68 61  64 20 61 73 73 75 6d 65  |rt, I had assume|
00004510  64 20 74 68 61 74 20 61  6c 6c 20 65 76 65 6e 74  |d that all event|
00004520  73 20 61 72 65 20 64 69  73 61 62 6c 65 64 0a 20  |s are disabled. |
00004530  20 75 6e 6c 65 73 73 20  65 6e 61 62 6c 65 64 20  | unless enabled |
00004540  62 79 20 75 73 65 72 20  70 72 6f 67 72 61 6d 73  |by user programs|
00004550  20 28 69 74 27 73 20 74  68 65 20 63 61 73 65 20  | (it's the case |
00004560  69 6e 20 41 72 74 68 75  72 20 31 2e 32 30 29 2e  |in Arthur 1.20).|
00004570  20 4d 79 20 74 68 65 6f  72 79 20 69 73 0a 20 20  | My theory is.  |
00004580  74 68 61 74 20 52 49 53  43 20 4f 53 20 28 70 72  |that RISC OS (pr|
00004590  6f 62 61 62 6c 79 20 74  68 65 20 44 65 73 6b 74  |obably the Deskt|
000045a0  6f 70 29 20 65 6e 61 62  6c 65 73 20 65 76 65 6e  |op) enables even|
000045b0  74 73 20 77 68 69 63 68  20 41 72 74 68 75 72 20  |ts which Arthur |
000045c0  31 2e 32 30 20 64 69 64  6e 27 74 0a 20 20 75 73  |1.20 didn't.  us|
000045d0  65 20 74 6f 2e 20 54 6f  20 72 65 6d 65 64 79 20  |e to. To remedy |
000045e0  74 68 69 73 20 70 72 6f  62 6c 65 6d 2c 20 49 27  |this problem, I'|
000045f0  76 65 20 73 70 65 63 69  66 69 63 61 6c 6c 79 20  |ve specifically |
00004600  63 68 65 63 6b 65 64 20  66 6f 72 20 65 76 65 6e  |checked for even|
00004610  74 73 20 34 2c 31 30 0a  20 20 61 6e 64 20 31 31  |ts 4,10.  and 11|
00004620  20 69 6e 20 6d 79 20 65  76 65 6e 74 20 72 6f 75  | in my event rou|
00004630  74 69 6e 65 2c 20 73 6f  20 74 68 69 73 20 62 65  |tine, so this be|
00004640  68 61 76 69 6f 75 72 20  73 68 6f 75 6c 64 20 68  |haviour should h|
00004650  61 76 65 20 62 65 65 6e  20 65 6c 69 6d 69 6e 61  |ave been elimina|
00004660  74 65 64 0a 20 20 2a 43  4f 4e 46 49 52 4d 45 44  |ted.  *CONFIRMED|
00004670  20 2d 20 4f 4b 20 49 4e  20 52 49 53 43 20 4f 53  | - OK IN RISC OS|
00004680  2a 2e 0a 0a 56 65 72 73  69 6f 6e 20 31 2e 30 32  |*...Version 1.02|
00004690  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 2a  |.------------..*|
000046a0  20 41 20 73 6f 66 74 20  72 65 73 65 74 20 6e 6f  | A soft reset no|
000046b0  20 6c 6f 6e 67 65 72 20  63 61 75 73 65 73 20 74  | longer causes t|
000046c0  68 65 20 2a 56 44 55 53  61 76 65 72 20 63 6f 6d  |he *VDUSaver com|
000046d0  6d 61 6e 64 20 74 6f 20  66 61 69 6c 20 74 6f 20  |mand to fail to |
000046e0  61 63 74 69 76 61 74 65  2e 0a 0a 2a 20 55 73 65  |activate...* Use|
000046f0  73 20 32 20 62 79 74 65  73 20 6f 66 20 43 4d 4f  |s 2 bytes of CMO|
00004700  53 20 52 41 4d 20 28 33  35 20 61 6e 64 20 33 36  |S RAM (35 and 36|
00004710  29 20 74 6f 20 70 65 72  6d 61 6e 65 6e 74 6c 79  |) to permanently|
00004720  20 73 74 6f 72 65 20 56  44 55 53 61 76 65 72 20  | store VDUSaver |
00004730  73 65 74 74 69 6e 67 73  2e 0a 0a 2a 20 41 6c 6c  |settings...* All|
00004740  6f 77 73 20 66 69 6e 65  72 20 63 6f 6e 74 72 6f  |ows finer contro|
00004750  6c 20 6f 76 65 72 20 74  68 65 20 53 6d 69 6c 65  |l over the Smile|
00004760  79 20 66 61 63 65 20 69  6e 20 74 65 72 6d 73 20  |y face in terms |
00004770  6f 66 20 63 6f 6c 6f 75  72 2c 20 73 70 65 65 64  |of colour, speed|
00004780  20 61 6e 64 0a 20 20 70  6c 6f 74 74 69 6e 67 20  | and.  plotting |
00004790  6d 65 74 68 6f 64 2e 0a  0a 2a 20 54 68 65 20 74  |method...* The t|
000047a0  65 78 74 20 63 75 72 73  6f 72 20 69 73 20 6e 6f  |ext cursor is no|
000047b0  77 20 73 77 69 74 63 68  65 64 20 6f 66 66 20 61  |w switched off a|
000047c0  6e 64 20 72 65 73 74 6f  72 65 64 20 63 6f 72 72  |nd restored corr|
000047d0  65 63 74 6c 79 20 64 75  72 69 6e 67 20 62 6c 61  |ectly during bla|
000047e0  6e 6b 69 6e 67 2e 0a 0a  2a 20 53 63 72 65 65 6e  |nking...* Screen|
000047f0  20 72 65 73 74 6f 72 61  74 69 6f 6e 20 6f 6e 20  | restoration on |
00004800  56 44 55 20 6f 75 74 70  75 74 20 69 73 20 6e 6f  |VDU output is no|
00004810  77 20 6f 70 74 69 6f 6e  61 6c 2c 20 62 65 63 61  |w optional, beca|
00004820  75 73 65 20 73 6f 6d 65  20 75 73 65 72 73 20 6d  |use some users m|
00004830  61 79 20 68 61 76 65 0a  20 20 61 20 63 6c 6f 63  |ay have.  a cloc|
00004840  6b 20 72 75 6e 6e 69 6e  67 20 74 68 61 74 20 75  |k running that u|
00004850  73 65 73 20 74 68 65 20  56 44 55 20 64 72 69 76  |ses the VDU driv|
00004860  65 72 73 20 28 65 73 70  65 63 69 61 6c 6c 79 20  |ers (especially |
00004870  54 77 69 6e 20 61 6e 64  20 67 72 61 70 68 69 63  |Twin and graphic|
00004880  6b 79 0a 20 20 44 65 73  6b 74 6f 70 20 63 6c 6f  |ky.  Desktop clo|
00004890  63 6b 73 29 2e 0a 0a 56  65 72 73 69 6f 6e 20 31  |cks)...Version 1|
000048a0  2e 30 31 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.01.------------|
000048b0  0a 0a 2a 20 53 68 6f 77  73 20 61 20 62 6f 75 6e  |..* Shows a boun|
000048c0  63 69 6e 67 20 27 53 6d  69 6c 65 79 27 20 66 61  |cing 'Smiley' fa|
000048d0  63 65 20 77 68 65 6e 20  74 68 65 20 73 63 72 65  |ce when the scre|
000048e0  65 6e 20 69 73 20 62 6c  61 63 6b 65 64 2e 0a 0a  |en is blacked...|
000048f0  2a 20 52 65 73 74 6f 72  65 73 20 74 68 65 20 73  |* Restores the s|
00004900  63 72 65 65 6e 20 6f 6e  20 6d 6f 75 73 65 20 6d  |creen on mouse m|
00004910  6f 76 65 6d 65 6e 74 20  61 73 20 77 65 6c 6c 20  |ovement as well |
00004920  61 73 20 6d 6f 75 73 65  20 62 75 74 74 6f 6e 20  |as mouse button |
00004930  70 72 65 73 73 65 73 2e  0a 0a 56 65 72 73 69 6f  |presses...Versio|
00004940  6e 20 31 2e 30 30 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |n 1.00.---------|
00004950  2d 2d 2d 0a 0a 2a 20 57  72 69 74 74 65 6e 20 61  |---..* Written a|
00004960  73 20 61 20 72 65 6c 6f  63 61 74 61 62 6c 65 20  |s a relocatable |
00004970  6d 6f 64 75 6c 65 20 74  68 61 74 20 74 72 61 70  |module that trap|
00004980  73 20 76 65 63 74 6f 72  73 2e 0a 0a 2a 20 50 72  |s vectors...* Pr|
00004990  6f 70 65 72 6c 79 20 73  77 69 74 63 68 65 73 20  |operly switches |
000049a0  6f 66 66 20 61 6e 64 20  72 65 73 74 6f 72 65 73  |off and restores|
000049b0  20 74 68 65 20 6d 6f 75  73 65 20 70 6f 69 6e 74  | the mouse point|
000049c0  65 72 20 61 6e 64 20 62  6f 72 64 65 72 20 63 6f  |er and border co|
000049d0  6c 6f 75 72 2e 0a 0a 46  75 74 75 72 65 20 49 6d  |lour...Future Im|
000049e0  70 72 6f 76 65 6d 65 6e  74 73 20 74 6f 20 56 44  |provements to VD|
000049f0  55 20 53 61 76 65 72 20  56 32 2e 30 33 0a 2d 2d  |U Saver V2.03.--|
00004a00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004a20  2d 2d 2d 2d 0a 0a 2a 20  41 6c 74 68 6f 75 67 68  |----..* Although|
00004a30  20 4f 53 5f 57 6f 72 64  20 31 32 20 69 73 20 74  | OS_Word 12 is t|
00004a40  72 61 70 70 65 64 20 74  6f 20 63 68 65 63 6b 20  |rapped to check |
00004a50  66 6f 72 20 6d 6f 75 73  65 20 63 6f 6c 6f 75 72  |for mouse colour|
00004a60  20 31 20 62 65 69 6e 67  20 63 68 61 6e 67 65 64  | 1 being changed|
00004a70  2c 0a 20 20 49 20 6c 61  74 65 72 20 64 69 73 63  |,.  I later disc|
00004a80  6f 76 65 72 65 64 20 74  68 61 74 20 74 68 65 20  |overed that the |
00004a90  2a 50 6f 69 6e 74 65 72  20 31 20 63 6f 6d 6d 61  |*Pointer 1 comma|
00004aa0  6e 64 20 61 63 74 75 61  6c 6c 79 20 62 79 70 61  |nd actually bypa|
00004ab0  73 73 65 73 20 74 68 69  73 20 63 61 6c 6c 0a 20  |sses this call. |
00004ac0  20 28 69 74 20 75 73 65  73 20 56 44 55 20 31 39  | (it uses VDU 19|
00004ad0  20 69 6e 73 74 65 61 64  29 20 77 68 65 6e 20 63  | instead) when c|
00004ae0  68 61 6e 67 69 6e 67 20  74 68 65 20 6d 6f 75 73  |hanging the mous|
00004af0  65 20 63 6f 6c 6f 75 72  20 21 20 49 20 67 75 65  |e colour ! I gue|
00004b00  73 73 20 49 27 6c 6c 20  68 61 76 65 0a 20 20 74  |ss I'll have.  t|
00004b10  6f 20 61 64 64 20 79 65  74 20 6d 6f 72 65 20 63  |o add yet more c|
00004b20  6f 64 65 20 74 6f 20 63  6f 70 65 20 77 69 74 68  |ode to cope with|
00004b30  20 74 68 69 73 2e 2e 2e  0a 0a 2a 20 41 74 20 73  | this.....* At s|
00004b40  6f 6d 65 20 70 6f 69 6e  74 2c 20 49 20 6d 69 67  |ome point, I mig|
00004b50  68 74 20 6d 61 6b 65 20  69 74 20 69 6e 73 74 61  |ht make it insta|
00004b60  6c 6c 20 69 74 73 65 6c  66 20 6f 6e 20 74 68 65  |ll itself on the|
00004b70  20 69 63 6f 6e 20 62 61  72 20 61 6e 64 20 61 63  | icon bar and ac|
00004b80  74 20 70 72 6f 70 65 72  0a 20 20 6c 69 6b 65 20  |t proper.  like |
00004b90  77 6f 74 20 61 6c 6c 20  70 72 6f 67 72 61 6d 73  |wot all programs|
00004ba0  20 73 68 6f 75 6c 64 20  64 6f 2e 20 54 68 65 72  | should do. Ther|
00004bb0  65 20 61 67 61 69 6e 2c  20 49 20 6d 69 67 68 74  |e again, I might|
00004bc0  20 6e 6f 74 2e 2e 2e 6e  6f 70 65 2c 20 49 20 68  | not...nope, I h|
00004bd0  61 76 65 6e 27 74 0a 20  20 62 6f 74 68 65 72 65  |aven't.  bothere|
00004be0  64 20 79 65 74 2e 0a 0a  57 68 65 72 65 20 74 6f  |d yet...Where to|
00004bf0  20 66 69 6e 64 20 6d 65  20 74 6f 20 72 65 70 6f  | find me to repo|
00004c00  72 74 20 62 75 67 73 20  6f 72 20 69 6d 70 72 6f  |rt bugs or impro|
00004c10  76 65 6d 65 6e 74 73 20  74 6f 20 74 68 65 20 56  |vements to the V|
00004c20  44 55 20 53 61 76 65 72  0a 2d 2d 2d 2d 2d 2d 2d  |DU Saver.-------|
00004c30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004c60  2d 2d 2d 2d 2d 2d 2d 2d  2d 0a 0a 53 6e 61 69 6c  |---------..Snail|
00004c70  20 4d 61 69 6c 20 20 20  20 20 20 20 20 20 20 20  | Mail           |
00004c80  4a 41 4e 45 54 20 65 2d  6d 61 69 6c 0a 2d 2d 2d  |JANET e-mail.---|
00004c90  2d 2d 2d 2d 2d 2d 2d 20  20 20 20 20 20 20 20 20  |-------         |
00004ca0  20 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 52  |  ------------.R|
00004cb0  69 63 68 61 72 64 20 4b  2e 20 4c 6c 6f 79 64 2c  |ichard K. Lloyd,|
00004cc0  20 20 20 20 72 6b 6c 40  75 6b 2e 61 63 2e 6c 69  |    rkl@uk.ac.li|
00004cd0  76 2e 63 73 2e 6d 76 61  0a 31 2c 20 42 61 6e 6b  |v.cs.mva.1, Bank|
00004ce0  73 20 52 6f 61 64 2c 0a  4c 6f 77 65 72 20 48 65  |s Road,.Lower He|
00004cf0  73 77 61 6c 6c 2c 0a 57  69 72 72 61 6c 2c 0a 4d  |swall,.Wirral,.M|
00004d00  65 72 73 65 79 73 69 64  65 2e 20                 |erseyside. |
00004d0b