Home » CEEFAX disks » telesoftware3.adl » 17_10_87/SNAPINF

17_10_87/SNAPINF

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 » CEEFAX disks » telesoftware3.adl
Filename: 17_10_87/SNAPINF
Read OK:
File size: 3329 bytes
Load address: 0000
Exec address: 0000
File contents
                  Snapshot Documentation

   During the 70's Xerox developed Smalltalk - Smalltalk is the original
WIMP ( Windows, Icons, Mice, Pull down/up menus ) system, Apple's Lisa
and Macintosh are both developed directly from Smalltalk. During
developement the system was prone to crashes so a system known as
Snapshot was developed. This would, at set intervals, copy the computer's
memory directly onto disc exactly as in the computer. If the system
crashed users would then "Boot and Resume", the only problem being that
if you did not "Boot and Resume" fast enough then the computer would take
a Snapshot of the crashed system.

  I don't know if Xeroz were the first people to think of Snapshots but
they certainly weren't the last. Many Snapshot programs have appeared for
many computer's. The very best Snapshot systems, like Xerox's, have
hardware support. Snapshots which use extra hardware will often have a
button or switch for the user to push when she/he wants to Snapshot. But
extra hardware costs extra money so hardware Snapshot systems are usualy
more expensive than software Snapshots.

  The advantages of being able to Snapshot a computers memory are
obvious, especially for machine code programmers or adventurers who
forget to save regularly. With Snapsooting it is possible to forget about
the need to save regularly and get on with what you are doing. It must be
said though that taking a Snapshot of a commercial program can be classed
as piracy. If the program is only being moved from tape to disc then the
situation is not clear and mainly depends on the software house concerned
some don't like you moving their software from tape to disc while others
don't mind, certainly many companies sell tape to disc transfer programs
and are not prosecuted.

  One problem though is the amount of disc space needed, even on a BBC
with just 32K only 3 Snapshots can be taken on a standed 100K disc so to
overcome this each new file is saved over the old one.

  To implement a Snapshot on a BBC is difficult. Xerox Snapsnots had
substantial hardware backup so things were easier. On the BBC there are 3
main problems. Firstly, how to copy all 32K of main RAM to disc without
currupting/changing it, secondly, what if the Operating System work space
(that below PAGE) is currupted ? It often happens that when programmers
are short of memory they use DFS workspace. This means that the DFS will
not function correctly. Also where can the program "live" while it is
waiting to be run and being run if all the memory is used?

  To overcome these problems I have used Sideways RAM (SWR). The program
must be assembled  in main RAM and then moved up into SWR. To do this a
special program is needed to move it up. Also when assembled all the
addresses the program uses must be set to point to locations in SWR
address range (&8000 - &C000) and not in main RAM (0 - &7FFF) as happens
when a program is normally assembled, this is because most 6502
instructions use absolute address and not relative addressing (which has
become more popular on newer processors because of it's flexibility). On
level 2 BASIC machines this is no problem since "phantom" assembly can be
used with O%, where the assembler sets the addresses for one area of
memory and places the code in another area, on older level 1 BASIC
machines this is not available so I have adjusted all the absolute
addresses with +&3000 so that phantom assembly is not needed (the code is
assembled to &5000, so +&3000 makes all addresses greater than &8000).
Also level 1 machines do not have the EQU assembly function so I have
synthesised these functions with the OPT command.

   The program's operation is quite simple and uses what I call an
"Imposter". An imposter is a copy of OS workspace as it is when it is not
corrupted - that is when it is in perfect working order. The imposter is
then held in SWR until the Snapshot is to be taken then it is copied down
to it's old position allowing the OS (and DFS) to function as normal -
this is particulary important if another filing system has been selected
in the meantime.

  The progam uses the 6522 User VIA timer to wait for as long as the user
wishes before shooting, so if this unit is disabled or corrupted the
progam will either not shoot at all, or will shoot irregularly - many
commercial programs use this device for timing so these cannot be
Snapshot. Also model A BBC's were never fitted with this unit so any
model A that has not been fully upgraded cannot Snapshoot with the timer
- although *NOW should still be usable. The main use of this unit normaly
is to drive the printer and user port.

  When the time defined by the user is up the program will copy OS
workspace between 0 and &1400 up into SWR then copy the imposter down to
the same area so that the disc drive will work normally. Next the rest of
RAM (&1401 to &8000 - including the screen) will be saved to disc, then
the old OS work space is copied down into a safe area of RAM (&3000 to
&4400) and saved to disc (it not will work with cassette mainly because
of the time involved at this stage). Once the memory is saved (including
a copy of the stack pointer; A,X and Y are taken care of by OS) the
program proceeds to return the system to it's previous state.

   To force the system to return to a previous state the command *RESTORE
is issued (see below), this will bring the memory in from disc and  carry
out the above operation in reverse - if you are only restoring memory
from a previous Snapshot and do not intend to take another Snapshot you
need not use *READY to get an imposter. When *RESTORE is used the system
will look for two files defined by the the current directory and drive
settings and the names given to Snapshot at assembly time. As normal
drive and directory settings included in the name will override the
current drive and directory settings.

   One of the biggest problems is that of correctly re-loading the
screen. Although the screen can easily be loaded data is contained in the
6845 CRTC (Cathode ray controller chip) which dictates what to do with
the data on screen. Most of the registers in this chip are write only
i.e. data can only be sent to them not read from them. When the mode is
changed the OS sends these registers data so that it can handle the
screen memory correctly. To allow for this, Snapshot changes the screen
to the correct mode before re-loading the screen memory, the side effect
here is that if a custom mode is being used the screen display will be
corrupted.

  The next problem with the screen is one of aligment. When the BBC
scrolls the screen it does so with hardware in the 6845 CRTC (using
software to scroll a screen is very slow) so a screen cannot be just
reloaded into it's old location, pointers in the 6845 CTRC must be
ajusted. Fortunately the OS keeps a note of these pointers in page 3,
unfortunately they are not in a state that the 6845 CTRC can handle so
they must be adjusted before being sent to the 6845 CTRC. As if this were
not bad enough, because mode 7 is different to modes 0 to 6 it must have
the pointers adjusted differently.

  The final problem with the screen is that of the Video ULA chip which
was specially designed by Acorn for the BBC. This chip holds more data
about the current mode. Again resetting the mode corrects most of the
data involved and, again, using a custom mode the screen will be
corrupted. If the user has changed the default mode colours then when the
screen is reloaded the colours will not be the same as when the mode was
saved.

                  Snapshot In Use

   The system supports six extra *commands. These may be proceeded by a P
to prevent clashes with other ROMs and in upper or lower case e.g.
*PRESTORE, *presore and *ReStOrE are all the same as *RESTORE. The six
commands are:-

 *READY this takes a copy of OS workspace into SWR for future use - the
imposter. This command must be issued before any Snapshot can be taken.

 *NOW this will attempt to Snapshot once the command is entered. If an
imposter is not present with a *READY you will get the error "No
Imposter" and no Snapshot will be taken.

 *WAIT x (where x is a one or two digit hex number between 1 and &FF).
This will use the 6522 user VIA timer to time the period of time
specified and then Snapshot memory - each extra value causes a wait of
about 16 seconds. If you want to take a Snapshot in a shorter space of
time line 4140 of the assembly program can be increased to a high value.
Again using this command without preparing an imposter with *READY will
cause the "No Imposter" error and no Snaphot will be taken.

 *REPEAT Once this command has been issued, any Snapshot that is taken
using the timer will cause the timer to be reset so Snapshots will be
taken at regular intervals. There is no need to capture a new imposter or
re-issue a *WAIT. This is very useful if you intend to take a series of
Snapshots during a game or while processing data. This option will stay
set until Break is pressed (Break stops all Snapshooting).

 *RESTORE This will restore memory to it's previous state. The files
retreived will depend on their file names given to Snapshot at assembly
and the current drive and directory settings.

  *NAMES This command will print out the two file names specified at the
time of assembly which are used for saving and loading Snapshots. I find
it best to use the same file names for all Snapshots and just use
different discs, drives and directories since I do not reassemble
Snapshot for each snapshot but just have one version which I store with
all my other ROMs.

   There are a few points about the program which must be noted. When
saving memory to disc two file names must the used. When the program is
assembled you are asked for these. These should be the filename you wish
to save or load under. The first file name is for the memory above &1400
and the second one for the memory below &1400. You may add a directory
and disc number/name to these files as normal but if you do not then the
drive and directory settings present when you *READY will be used. When
RESTOREing the current drive and directory settings are used to recover
the Snapshot.

   Another program must be used to "lift" the main program into SWR. This
is the move up progam and should be assembled as a machine code file on
disc before loading Snapshot. It will ask you for the number of the
socket the SWR is located in (the B+ 128 has SWR in sockets 1,2 13 and
14) and will create a file call UP on the disc. Once the main program is
assembled just type *UP (the move up assembly program saves UP as U.UP so
if your library directory is not U you will have to use *U.UP instead of
just *UP) this will load and run the mover progam. After this press
BREAK, you should have the message "Snapshot Version PALO004" on typing
*HELP.

  Move up simply switches the SWR bank into the current paged ROM
position and moves all the data from main RAM at &5000 into SWR at &8000.
Once it has been moved up, BREAK must be pressed so that the OS can scan
the ROM banks to see which contain ROMs - as far as the OS knows the SWR
bank with a program in is a ROM - and recongise Snapshot. Alternatively,
if you don't like pressing Break, the OS keeps a record of which sockets
have ROMs in them between &2A1 and &2B1 so ?(&2A1+ <socket number of SWR
socket with Snapshot in>)=&82 (for service entry only) will also switch
the ROM on. If you substitue the &82 for 0 you can switch the ROM off.

   I have not been able to try Snapshot on an Electron but the minimum
requirements for it are: 16K of SWR, a disc drive and a 6522 User VIA for
timer. On the BBC the main job of the User VIA is the drive the  printer
so Plus 1 should provide one of these - although I don't know this for
certain. With the B+ the program works as normal, but only main RAM is
captured so when shadow modes are in use the screen will not be saved.
For some applications this will not be a hindrance.

  The Master series uses private RAM for a lot of operations and allowing
PAGE to be set to &E00 would therefore need a large amount of alteration
for it to work. The same principles apply but more OS workspace will have
to be shifted and more than one bank of SWR may be needed.

  This short program will provide a basic demonstration of Snapshot.
    10 REM Prepare Imposter
    20 *READY
    30 REM Set timer running
    40 *WAIT 1
    50 REM Set a BASIC loop running
    60 FOR x=0 TO 1400
    70 PRINT x
    80 NEXT
    90 *RESTORE
    100 REM The program will never reach here!

  Sometime during the running of the loop a Snapshot will be taken. The
loop will then continue running. When the loop is terminated the computer
will be restored to the state it was in while the loop was running, the
loop will terminate again and the computer will be restored again.... and
so on. This will continue until the user stops it by pressing ESCAPE or
BREAK.

  Note that with Snapshot you are not limited to using it in a BASIC
programming enviroment. Snapshots can be taken from within other language
ROMs.
00000000  0d 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000010  20 20 20 53 6e 61 70 73  68 6f 74 20 44 6f 63 75  |   Snapshot Docu|
00000020  6d 65 6e 74 61 74 69 6f  6e 0d 0d 20 20 20 44 75  |mentation..   Du|
00000030  72 69 6e 67 20 74 68 65  20 37 30 27 73 20 58 65  |ring the 70's Xe|
00000040  72 6f 78 20 64 65 76 65  6c 6f 70 65 64 20 53 6d  |rox developed Sm|
00000050  61 6c 6c 74 61 6c 6b 20  2d 20 53 6d 61 6c 6c 74  |alltalk - Smallt|
00000060  61 6c 6b 20 69 73 20 74  68 65 20 6f 72 69 67 69  |alk is the origi|
00000070  6e 61 6c 0d 57 49 4d 50  20 28 20 57 69 6e 64 6f  |nal.WIMP ( Windo|
00000080  77 73 2c 20 49 63 6f 6e  73 2c 20 4d 69 63 65 2c  |ws, Icons, Mice,|
00000090  20 50 75 6c 6c 20 64 6f  77 6e 2f 75 70 20 6d 65  | Pull down/up me|
000000a0  6e 75 73 20 29 20 73 79  73 74 65 6d 2c 20 41 70  |nus ) system, Ap|
000000b0  70 6c 65 27 73 20 4c 69  73 61 0d 61 6e 64 20 4d  |ple's Lisa.and M|
000000c0  61 63 69 6e 74 6f 73 68  20 61 72 65 20 62 6f 74  |acintosh are bot|
000000d0  68 20 64 65 76 65 6c 6f  70 65 64 20 64 69 72 65  |h developed dire|
000000e0  63 74 6c 79 20 66 72 6f  6d 20 53 6d 61 6c 6c 74  |ctly from Smallt|
000000f0  61 6c 6b 2e 20 44 75 72  69 6e 67 0d 64 65 76 65  |alk. During.deve|
00000100  6c 6f 70 65 6d 65 6e 74  20 74 68 65 20 73 79 73  |lopement the sys|
00000110  74 65 6d 20 77 61 73 20  70 72 6f 6e 65 20 74 6f  |tem was prone to|
00000120  20 63 72 61 73 68 65 73  20 73 6f 20 61 20 73 79  | crashes so a sy|
00000130  73 74 65 6d 20 6b 6e 6f  77 6e 20 61 73 0d 53 6e  |stem known as.Sn|
00000140  61 70 73 68 6f 74 20 77  61 73 20 64 65 76 65 6c  |apshot was devel|
00000150  6f 70 65 64 2e 20 54 68  69 73 20 77 6f 75 6c 64  |oped. This would|
00000160  2c 20 61 74 20 73 65 74  20 69 6e 74 65 72 76 61  |, at set interva|
00000170  6c 73 2c 20 63 6f 70 79  20 74 68 65 20 63 6f 6d  |ls, copy the com|
00000180  70 75 74 65 72 27 73 0d  6d 65 6d 6f 72 79 20 64  |puter's.memory d|
00000190  69 72 65 63 74 6c 79 20  6f 6e 74 6f 20 64 69 73  |irectly onto dis|
000001a0  63 20 65 78 61 63 74 6c  79 20 61 73 20 69 6e 20  |c exactly as in |
000001b0  74 68 65 20 63 6f 6d 70  75 74 65 72 2e 20 49 66  |the computer. If|
000001c0  20 74 68 65 20 73 79 73  74 65 6d 0d 63 72 61 73  | the system.cras|
000001d0  68 65 64 20 75 73 65 72  73 20 77 6f 75 6c 64 20  |hed users would |
000001e0  74 68 65 6e 20 22 42 6f  6f 74 20 61 6e 64 20 52  |then "Boot and R|
000001f0  65 73 75 6d 65 22 2c 20  74 68 65 20 6f 6e 6c 79  |esume", the only|
00000200  20 70 72 6f 62 6c 65 6d  20 62 65 69 6e 67 20 74  | problem being t|
00000210  68 61 74 0d 69 66 20 79  6f 75 20 64 69 64 20 6e  |hat.if you did n|
00000220  6f 74 20 22 42 6f 6f 74  20 61 6e 64 20 52 65 73  |ot "Boot and Res|
00000230  75 6d 65 22 20 66 61 73  74 20 65 6e 6f 75 67 68  |ume" fast enough|
00000240  20 74 68 65 6e 20 74 68  65 20 63 6f 6d 70 75 74  | then the comput|
00000250  65 72 20 77 6f 75 6c 64  20 74 61 6b 65 0d 61 20  |er would take.a |
00000260  53 6e 61 70 73 68 6f 74  20 6f 66 20 74 68 65 20  |Snapshot of the |
00000270  63 72 61 73 68 65 64 20  73 79 73 74 65 6d 2e 0d  |crashed system..|
00000280  0d 20 20 49 20 64 6f 6e  27 74 20 6b 6e 6f 77 20  |.  I don't know |
00000290  69 66 20 58 65 72 6f 7a  20 77 65 72 65 20 74 68  |if Xeroz were th|
000002a0  65 20 66 69 72 73 74 20  70 65 6f 70 6c 65 20 74  |e first people t|
000002b0  6f 20 74 68 69 6e 6b 20  6f 66 20 53 6e 61 70 73  |o think of Snaps|
000002c0  68 6f 74 73 20 62 75 74  0d 74 68 65 79 20 63 65  |hots but.they ce|
000002d0  72 74 61 69 6e 6c 79 20  77 65 72 65 6e 27 74 20  |rtainly weren't |
000002e0  74 68 65 20 6c 61 73 74  2e 20 4d 61 6e 79 20 53  |the last. Many S|
000002f0  6e 61 70 73 68 6f 74 20  70 72 6f 67 72 61 6d 73  |napshot programs|
00000300  20 68 61 76 65 20 61 70  70 65 61 72 65 64 20 66  | have appeared f|
00000310  6f 72 0d 6d 61 6e 79 20  63 6f 6d 70 75 74 65 72  |or.many computer|
00000320  27 73 2e 20 54 68 65 20  76 65 72 79 20 62 65 73  |'s. The very bes|
00000330  74 20 53 6e 61 70 73 68  6f 74 20 73 79 73 74 65  |t Snapshot syste|
00000340  6d 73 2c 20 6c 69 6b 65  20 58 65 72 6f 78 27 73  |ms, like Xerox's|
00000350  2c 20 68 61 76 65 0d 68  61 72 64 77 61 72 65 20  |, have.hardware |
00000360  73 75 70 70 6f 72 74 2e  20 53 6e 61 70 73 68 6f  |support. Snapsho|
00000370  74 73 20 77 68 69 63 68  20 75 73 65 20 65 78 74  |ts which use ext|
00000380  72 61 20 68 61 72 64 77  61 72 65 20 77 69 6c 6c  |ra hardware will|
00000390  20 6f 66 74 65 6e 20 68  61 76 65 20 61 0d 62 75  | often have a.bu|
000003a0  74 74 6f 6e 20 6f 72 20  73 77 69 74 63 68 20 66  |tton or switch f|
000003b0  6f 72 20 74 68 65 20 75  73 65 72 20 74 6f 20 70  |or the user to p|
000003c0  75 73 68 20 77 68 65 6e  20 73 68 65 2f 68 65 20  |ush when she/he |
000003d0  77 61 6e 74 73 20 74 6f  20 53 6e 61 70 73 68 6f  |wants to Snapsho|
000003e0  74 2e 20 42 75 74 0d 65  78 74 72 61 20 68 61 72  |t. But.extra har|
000003f0  64 77 61 72 65 20 63 6f  73 74 73 20 65 78 74 72  |dware costs extr|
00000400  61 20 6d 6f 6e 65 79 20  73 6f 20 68 61 72 64 77  |a money so hardw|
00000410  61 72 65 20 53 6e 61 70  73 68 6f 74 20 73 79 73  |are Snapshot sys|
00000420  74 65 6d 73 20 61 72 65  20 75 73 75 61 6c 79 0d  |tems are usualy.|
00000430  6d 6f 72 65 20 65 78 70  65 6e 73 69 76 65 20 74  |more expensive t|
00000440  68 61 6e 20 73 6f 66 74  77 61 72 65 20 53 6e 61  |han software Sna|
00000450  70 73 68 6f 74 73 2e 0d  0d 20 20 54 68 65 20 61  |pshots...  The a|
00000460  64 76 61 6e 74 61 67 65  73 20 6f 66 20 62 65 69  |dvantages of bei|
00000470  6e 67 20 61 62 6c 65 20  74 6f 20 53 6e 61 70 73  |ng able to Snaps|
00000480  68 6f 74 20 61 20 63 6f  6d 70 75 74 65 72 73 20  |hot a computers |
00000490  6d 65 6d 6f 72 79 20 61  72 65 0d 6f 62 76 69 6f  |memory are.obvio|
000004a0  75 73 2c 20 65 73 70 65  63 69 61 6c 6c 79 20 66  |us, especially f|
000004b0  6f 72 20 6d 61 63 68 69  6e 65 20 63 6f 64 65 20  |or machine code |
000004c0  70 72 6f 67 72 61 6d 6d  65 72 73 20 6f 72 20 61  |programmers or a|
000004d0  64 76 65 6e 74 75 72 65  72 73 20 77 68 6f 0d 66  |dventurers who.f|
000004e0  6f 72 67 65 74 20 74 6f  20 73 61 76 65 20 72 65  |orget to save re|
000004f0  67 75 6c 61 72 6c 79 2e  20 57 69 74 68 20 53 6e  |gularly. With Sn|
00000500  61 70 73 6f 6f 74 69 6e  67 20 69 74 20 69 73 20  |apsooting it is |
00000510  70 6f 73 73 69 62 6c 65  20 74 6f 20 66 6f 72 67  |possible to forg|
00000520  65 74 20 61 62 6f 75 74  0d 74 68 65 20 6e 65 65  |et about.the nee|
00000530  64 20 74 6f 20 73 61 76  65 20 72 65 67 75 6c 61  |d to save regula|
00000540  72 6c 79 20 61 6e 64 20  67 65 74 20 6f 6e 20 77  |rly and get on w|
00000550  69 74 68 20 77 68 61 74  20 79 6f 75 20 61 72 65  |ith what you are|
00000560  20 64 6f 69 6e 67 2e 20  49 74 20 6d 75 73 74 20  | doing. It must |
00000570  62 65 0d 73 61 69 64 20  74 68 6f 75 67 68 20 74  |be.said though t|
00000580  68 61 74 20 74 61 6b 69  6e 67 20 61 20 53 6e 61  |hat taking a Sna|
00000590  70 73 68 6f 74 20 6f 66  20 61 20 63 6f 6d 6d 65  |pshot of a comme|
000005a0  72 63 69 61 6c 20 70 72  6f 67 72 61 6d 20 63 61  |rcial program ca|
000005b0  6e 20 62 65 20 63 6c 61  73 73 65 64 0d 61 73 20  |n be classed.as |
000005c0  70 69 72 61 63 79 2e 20  49 66 20 74 68 65 20 70  |piracy. If the p|
000005d0  72 6f 67 72 61 6d 20 69  73 20 6f 6e 6c 79 20 62  |rogram is only b|
000005e0  65 69 6e 67 20 6d 6f 76  65 64 20 66 72 6f 6d 20  |eing moved from |
000005f0  74 61 70 65 20 74 6f 20  64 69 73 63 20 74 68 65  |tape to disc the|
00000600  6e 20 74 68 65 0d 73 69  74 75 61 74 69 6f 6e 20  |n the.situation |
00000610  69 73 20 6e 6f 74 20 63  6c 65 61 72 20 61 6e 64  |is not clear and|
00000620  20 6d 61 69 6e 6c 79 20  64 65 70 65 6e 64 73 20  | mainly depends |
00000630  6f 6e 20 74 68 65 20 73  6f 66 74 77 61 72 65 20  |on the software |
00000640  68 6f 75 73 65 20 63 6f  6e 63 65 72 6e 65 64 0d  |house concerned.|
00000650  73 6f 6d 65 20 64 6f 6e  27 74 20 6c 69 6b 65 20  |some don't like |
00000660  79 6f 75 20 6d 6f 76 69  6e 67 20 74 68 65 69 72  |you moving their|
00000670  20 73 6f 66 74 77 61 72  65 20 66 72 6f 6d 20 74  | software from t|
00000680  61 70 65 20 74 6f 20 64  69 73 63 20 77 68 69 6c  |ape to disc whil|
00000690  65 20 6f 74 68 65 72 73  0d 64 6f 6e 27 74 20 6d  |e others.don't m|
000006a0  69 6e 64 2c 20 63 65 72  74 61 69 6e 6c 79 20 6d  |ind, certainly m|
000006b0  61 6e 79 20 63 6f 6d 70  61 6e 69 65 73 20 73 65  |any companies se|
000006c0  6c 6c 20 74 61 70 65 20  74 6f 20 64 69 73 63 20  |ll tape to disc |
000006d0  74 72 61 6e 73 66 65 72  20 70 72 6f 67 72 61 6d  |transfer program|
000006e0  73 0d 61 6e 64 20 61 72  65 20 6e 6f 74 20 70 72  |s.and are not pr|
000006f0  6f 73 65 63 75 74 65 64  2e 0d 0d 20 20 4f 6e 65  |osecuted...  One|
00000700  20 70 72 6f 62 6c 65 6d  20 74 68 6f 75 67 68 20  | problem though |
00000710  69 73 20 74 68 65 20 61  6d 6f 75 6e 74 20 6f 66  |is the amount of|
00000720  20 64 69 73 63 20 73 70  61 63 65 20 6e 65 65 64  | disc space need|
00000730  65 64 2c 20 65 76 65 6e  20 6f 6e 20 61 20 42 42  |ed, even on a BB|
00000740  43 0d 77 69 74 68 20 6a  75 73 74 20 33 32 4b 20  |C.with just 32K |
00000750  6f 6e 6c 79 20 33 20 53  6e 61 70 73 68 6f 74 73  |only 3 Snapshots|
00000760  20 63 61 6e 20 62 65 20  74 61 6b 65 6e 20 6f 6e  | can be taken on|
00000770  20 61 20 73 74 61 6e 64  65 64 20 31 30 30 4b 20  | a standed 100K |
00000780  64 69 73 63 20 73 6f 20  74 6f 0d 6f 76 65 72 63  |disc so to.overc|
00000790  6f 6d 65 20 74 68 69 73  20 65 61 63 68 20 6e 65  |ome this each ne|
000007a0  77 20 66 69 6c 65 20 69  73 20 73 61 76 65 64 20  |w file is saved |
000007b0  6f 76 65 72 20 74 68 65  20 6f 6c 64 20 6f 6e 65  |over the old one|
000007c0  2e 0d 0d 20 20 54 6f 20  69 6d 70 6c 65 6d 65 6e  |...  To implemen|
000007d0  74 20 61 20 53 6e 61 70  73 68 6f 74 20 6f 6e 20  |t a Snapshot on |
000007e0  61 20 42 42 43 20 69 73  20 64 69 66 66 69 63 75  |a BBC is difficu|
000007f0  6c 74 2e 20 58 65 72 6f  78 20 53 6e 61 70 73 6e  |lt. Xerox Snapsn|
00000800  6f 74 73 20 68 61 64 0d  73 75 62 73 74 61 6e 74  |ots had.substant|
00000810  69 61 6c 20 68 61 72 64  77 61 72 65 20 62 61 63  |ial hardware bac|
00000820  6b 75 70 20 73 6f 20 74  68 69 6e 67 73 20 77 65  |kup so things we|
00000830  72 65 20 65 61 73 69 65  72 2e 20 4f 6e 20 74 68  |re easier. On th|
00000840  65 20 42 42 43 20 74 68  65 72 65 20 61 72 65 20  |e BBC there are |
00000850  33 0d 6d 61 69 6e 20 70  72 6f 62 6c 65 6d 73 2e  |3.main problems.|
00000860  20 46 69 72 73 74 6c 79  2c 20 68 6f 77 20 74 6f  | Firstly, how to|
00000870  20 63 6f 70 79 20 61 6c  6c 20 33 32 4b 20 6f 66  | copy all 32K of|
00000880  20 6d 61 69 6e 20 52 41  4d 20 74 6f 20 64 69 73  | main RAM to dis|
00000890  63 20 77 69 74 68 6f 75  74 0d 63 75 72 72 75 70  |c without.currup|
000008a0  74 69 6e 67 2f 63 68 61  6e 67 69 6e 67 20 69 74  |ting/changing it|
000008b0  2c 20 73 65 63 6f 6e 64  6c 79 2c 20 77 68 61 74  |, secondly, what|
000008c0  20 69 66 20 74 68 65 20  4f 70 65 72 61 74 69 6e  | if the Operatin|
000008d0  67 20 53 79 73 74 65 6d  20 77 6f 72 6b 20 73 70  |g System work sp|
000008e0  61 63 65 0d 28 74 68 61  74 20 62 65 6c 6f 77 20  |ace.(that below |
000008f0  50 41 47 45 29 20 69 73  20 63 75 72 72 75 70 74  |PAGE) is currupt|
00000900  65 64 20 3f 20 49 74 20  6f 66 74 65 6e 20 68 61  |ed ? It often ha|
00000910  70 70 65 6e 73 20 74 68  61 74 20 77 68 65 6e 20  |ppens that when |
00000920  70 72 6f 67 72 61 6d 6d  65 72 73 0d 61 72 65 20  |programmers.are |
00000930  73 68 6f 72 74 20 6f 66  20 6d 65 6d 6f 72 79 20  |short of memory |
00000940  74 68 65 79 20 75 73 65  20 44 46 53 20 77 6f 72  |they use DFS wor|
00000950  6b 73 70 61 63 65 2e 20  54 68 69 73 20 6d 65 61  |kspace. This mea|
00000960  6e 73 20 74 68 61 74 20  74 68 65 20 44 46 53 20  |ns that the DFS |
00000970  77 69 6c 6c 0d 6e 6f 74  20 66 75 6e 63 74 69 6f  |will.not functio|
00000980  6e 20 63 6f 72 72 65 63  74 6c 79 2e 20 41 6c 73  |n correctly. Als|
00000990  6f 20 77 68 65 72 65 20  63 61 6e 20 74 68 65 20  |o where can the |
000009a0  70 72 6f 67 72 61 6d 20  22 6c 69 76 65 22 20 77  |program "live" w|
000009b0  68 69 6c 65 20 69 74 20  69 73 0d 77 61 69 74 69  |hile it is.waiti|
000009c0  6e 67 20 74 6f 20 62 65  20 72 75 6e 20 61 6e 64  |ng to be run and|
000009d0  20 62 65 69 6e 67 20 72  75 6e 20 69 66 20 61 6c  | being run if al|
000009e0  6c 20 74 68 65 20 6d 65  6d 6f 72 79 20 69 73 20  |l the memory is |
000009f0  75 73 65 64 3f 0d 0d 20  20 54 6f 20 6f 76 65 72  |used?..  To over|
00000a00  63 6f 6d 65 20 74 68 65  73 65 20 70 72 6f 62 6c  |come these probl|
00000a10  65 6d 73 20 49 20 68 61  76 65 20 75 73 65 64 20  |ems I have used |
00000a20  53 69 64 65 77 61 79 73  20 52 41 4d 20 28 53 57  |Sideways RAM (SW|
00000a30  52 29 2e 20 54 68 65 20  70 72 6f 67 72 61 6d 0d  |R). The program.|
00000a40  6d 75 73 74 20 62 65 20  61 73 73 65 6d 62 6c 65  |must be assemble|
00000a50  64 20 20 69 6e 20 6d 61  69 6e 20 52 41 4d 20 61  |d  in main RAM a|
00000a60  6e 64 20 74 68 65 6e 20  6d 6f 76 65 64 20 75 70  |nd then moved up|
00000a70  20 69 6e 74 6f 20 53 57  52 2e 20 54 6f 20 64 6f  | into SWR. To do|
00000a80  20 74 68 69 73 20 61 0d  73 70 65 63 69 61 6c 20  | this a.special |
00000a90  70 72 6f 67 72 61 6d 20  69 73 20 6e 65 65 64 65  |program is neede|
00000aa0  64 20 74 6f 20 6d 6f 76  65 20 69 74 20 75 70 2e  |d to move it up.|
00000ab0  20 41 6c 73 6f 20 77 68  65 6e 20 61 73 73 65 6d  | Also when assem|
00000ac0  62 6c 65 64 20 61 6c 6c  20 74 68 65 0d 61 64 64  |bled all the.add|
00000ad0  72 65 73 73 65 73 20 74  68 65 20 70 72 6f 67 72  |resses the progr|
00000ae0  61 6d 20 75 73 65 73 20  6d 75 73 74 20 62 65 20  |am uses must be |
00000af0  73 65 74 20 74 6f 20 70  6f 69 6e 74 20 74 6f 20  |set to point to |
00000b00  6c 6f 63 61 74 69 6f 6e  73 20 69 6e 20 53 57 52  |locations in SWR|
00000b10  0d 61 64 64 72 65 73 73  20 72 61 6e 67 65 20 28  |.address range (|
00000b20  26 38 30 30 30 20 2d 20  26 43 30 30 30 29 20 61  |&8000 - &C000) a|
00000b30  6e 64 20 6e 6f 74 20 69  6e 20 6d 61 69 6e 20 52  |nd not in main R|
00000b40  41 4d 20 28 30 20 2d 20  26 37 46 46 46 29 20 61  |AM (0 - &7FFF) a|
00000b50  73 20 68 61 70 70 65 6e  73 0d 77 68 65 6e 20 61  |s happens.when a|
00000b60  20 70 72 6f 67 72 61 6d  20 69 73 20 6e 6f 72 6d  | program is norm|
00000b70  61 6c 6c 79 20 61 73 73  65 6d 62 6c 65 64 2c 20  |ally assembled, |
00000b80  74 68 69 73 20 69 73 20  62 65 63 61 75 73 65 20  |this is because |
00000b90  6d 6f 73 74 20 36 35 30  32 0d 69 6e 73 74 72 75  |most 6502.instru|
00000ba0  63 74 69 6f 6e 73 20 75  73 65 20 61 62 73 6f 6c  |ctions use absol|
00000bb0  75 74 65 20 61 64 64 72  65 73 73 20 61 6e 64 20  |ute address and |
00000bc0  6e 6f 74 20 72 65 6c 61  74 69 76 65 20 61 64 64  |not relative add|
00000bd0  72 65 73 73 69 6e 67 20  28 77 68 69 63 68 20 68  |ressing (which h|
00000be0  61 73 0d 62 65 63 6f 6d  65 20 6d 6f 72 65 20 70  |as.become more p|
00000bf0  6f 70 75 6c 61 72 20 6f  6e 20 6e 65 77 65 72 20  |opular on newer |
00000c00  70 72 6f 63 65 73 73 6f  72 73 20 62 65 63 61 75  |processors becau|
00000c10  73 65 20 6f 66 20 69 74  27 73 20 66 6c 65 78 69  |se of it's flexi|
00000c20  62 69 6c 69 74 79 29 2e  20 4f 6e 0d 6c 65 76 65  |bility). On.leve|
00000c30  6c 20 32 20 42 41 53 49  43 20 6d 61 63 68 69 6e  |l 2 BASIC machin|
00000c40  65 73 20 74 68 69 73 20  69 73 20 6e 6f 20 70 72  |es this is no pr|
00000c50  6f 62 6c 65 6d 20 73 69  6e 63 65 20 22 70 68 61  |oblem since "pha|
00000c60  6e 74 6f 6d 22 20 61 73  73 65 6d 62 6c 79 20 63  |ntom" assembly c|
00000c70  61 6e 20 62 65 0d 75 73  65 64 20 77 69 74 68 20  |an be.used with |
00000c80  4f 25 2c 20 77 68 65 72  65 20 74 68 65 20 61 73  |O%, where the as|
00000c90  73 65 6d 62 6c 65 72 20  73 65 74 73 20 74 68 65  |sembler sets the|
00000ca0  20 61 64 64 72 65 73 73  65 73 20 66 6f 72 20 6f  | addresses for o|
00000cb0  6e 65 20 61 72 65 61 20  6f 66 0d 6d 65 6d 6f 72  |ne area of.memor|
00000cc0  79 20 61 6e 64 20 70 6c  61 63 65 73 20 74 68 65  |y and places the|
00000cd0  20 63 6f 64 65 20 69 6e  20 61 6e 6f 74 68 65 72  | code in another|
00000ce0  20 61 72 65 61 2c 20 6f  6e 20 6f 6c 64 65 72 20  | area, on older |
00000cf0  6c 65 76 65 6c 20 31 20  42 41 53 49 43 0d 6d 61  |level 1 BASIC.ma|
00000d00  63 68 69 6e 65 73 20 74  68 69 73 20 69 73 20 6e  |chines this is n|
00000d10  6f 74 20 61 76 61 69 6c  61 62 6c 65 20 73 6f 20  |ot available so |
00000d20  49 20 68 61 76 65 20 61  64 6a 75 73 74 65 64 20  |I have adjusted |
00000d30  61 6c 6c 20 74 68 65 20  61 62 73 6f 6c 75 74 65  |all the absolute|
00000d40  0d 61 64 64 72 65 73 73  65 73 20 77 69 74 68 20  |.addresses with |
00000d50  2b 26 33 30 30 30 20 73  6f 20 74 68 61 74 20 70  |+&3000 so that p|
00000d60  68 61 6e 74 6f 6d 20 61  73 73 65 6d 62 6c 79 20  |hantom assembly |
00000d70  69 73 20 6e 6f 74 20 6e  65 65 64 65 64 20 28 74  |is not needed (t|
00000d80  68 65 20 63 6f 64 65 20  69 73 0d 61 73 73 65 6d  |he code is.assem|
00000d90  62 6c 65 64 20 74 6f 20  26 35 30 30 30 2c 20 73  |bled to &5000, s|
00000da0  6f 20 2b 26 33 30 30 30  20 6d 61 6b 65 73 20 61  |o +&3000 makes a|
00000db0  6c 6c 20 61 64 64 72 65  73 73 65 73 20 67 72 65  |ll addresses gre|
00000dc0  61 74 65 72 20 74 68 61  6e 20 26 38 30 30 30 29  |ater than &8000)|
00000dd0  2e 0d 41 6c 73 6f 20 6c  65 76 65 6c 20 31 20 6d  |..Also level 1 m|
00000de0  61 63 68 69 6e 65 73 20  64 6f 20 6e 6f 74 20 68  |achines do not h|
00000df0  61 76 65 20 74 68 65 20  45 51 55 20 61 73 73 65  |ave the EQU asse|
00000e00  6d 62 6c 79 20 66 75 6e  63 74 69 6f 6e 20 73 6f  |mbly function so|
00000e10  20 49 20 68 61 76 65 0d  73 79 6e 74 68 65 73 69  | I have.synthesi|
00000e20  73 65 64 20 74 68 65 73  65 20 66 75 6e 63 74 69  |sed these functi|
00000e30  6f 6e 73 20 77 69 74 68  20 74 68 65 20 4f 50 54  |ons with the OPT|
00000e40  20 63 6f 6d 6d 61 6e 64  2e 0d 0d 20 20 20 54 68  | command...   Th|
00000e50  65 20 70 72 6f 67 72 61  6d 27 73 20 6f 70 65 72  |e program's oper|
00000e60  61 74 69 6f 6e 20 69 73  20 71 75 69 74 65 20 73  |ation is quite s|
00000e70  69 6d 70 6c 65 20 61 6e  64 20 75 73 65 73 20 77  |imple and uses w|
00000e80  68 61 74 20 49 20 63 61  6c 6c 20 61 6e 0d 22 49  |hat I call an."I|
00000e90  6d 70 6f 73 74 65 72 22  2e 20 41 6e 20 69 6d 70  |mposter". An imp|
00000ea0  6f 73 74 65 72 20 69 73  20 61 20 63 6f 70 79 20  |oster is a copy |
00000eb0  6f 66 20 4f 53 20 77 6f  72 6b 73 70 61 63 65 20  |of OS workspace |
00000ec0  61 73 20 69 74 20 69 73  20 77 68 65 6e 20 69 74  |as it is when it|
00000ed0  20 69 73 20 6e 6f 74 0d  63 6f 72 72 75 70 74 65  | is not.corrupte|
00000ee0  64 20 2d 20 74 68 61 74  20 69 73 20 77 68 65 6e  |d - that is when|
00000ef0  20 69 74 20 69 73 20 69  6e 20 70 65 72 66 65 63  | it is in perfec|
00000f00  74 20 77 6f 72 6b 69 6e  67 20 6f 72 64 65 72 2e  |t working order.|
00000f10  20 54 68 65 20 69 6d 70  6f 73 74 65 72 20 69 73  | The imposter is|
00000f20  0d 74 68 65 6e 20 68 65  6c 64 20 69 6e 20 53 57  |.then held in SW|
00000f30  52 20 75 6e 74 69 6c 20  74 68 65 20 53 6e 61 70  |R until the Snap|
00000f40  73 68 6f 74 20 69 73 20  74 6f 20 62 65 20 74 61  |shot is to be ta|
00000f50  6b 65 6e 20 74 68 65 6e  20 69 74 20 69 73 20 63  |ken then it is c|
00000f60  6f 70 69 65 64 20 64 6f  77 6e 0d 74 6f 20 69 74  |opied down.to it|
00000f70  27 73 20 6f 6c 64 20 70  6f 73 69 74 69 6f 6e 20  |'s old position |
00000f80  61 6c 6c 6f 77 69 6e 67  20 74 68 65 20 4f 53 20  |allowing the OS |
00000f90  28 61 6e 64 20 44 46 53  29 20 74 6f 20 66 75 6e  |(and DFS) to fun|
00000fa0  63 74 69 6f 6e 20 61 73  20 6e 6f 72 6d 61 6c 20  |ction as normal |
00000fb0  2d 0d 74 68 69 73 20 69  73 20 70 61 72 74 69 63  |-.this is partic|
00000fc0  75 6c 61 72 79 20 69 6d  70 6f 72 74 61 6e 74 20  |ulary important |
00000fd0  69 66 20 61 6e 6f 74 68  65 72 20 66 69 6c 69 6e  |if another filin|
00000fe0  67 20 73 79 73 74 65 6d  20 68 61 73 20 62 65 65  |g system has bee|
00000ff0  6e 20 73 65 6c 65 63 74  65 64 0d 69 6e 20 74 68  |n selected.in th|
00001000  65 20 6d 65 61 6e 74 69  6d 65 2e 0d 0d 20 20 54  |e meantime...  T|
00001010  68 65 20 70 72 6f 67 61  6d 20 75 73 65 73 20 74  |he progam uses t|
00001020  68 65 20 36 35 32 32 20  55 73 65 72 20 56 49 41  |he 6522 User VIA|
00001030  20 74 69 6d 65 72 20 74  6f 20 77 61 69 74 20 66  | timer to wait f|
00001040  6f 72 20 61 73 20 6c 6f  6e 67 20 61 73 20 74 68  |or as long as th|
00001050  65 20 75 73 65 72 0d 77  69 73 68 65 73 20 62 65  |e user.wishes be|
00001060  66 6f 72 65 20 73 68 6f  6f 74 69 6e 67 2c 20 73  |fore shooting, s|
00001070  6f 20 69 66 20 74 68 69  73 20 75 6e 69 74 20 69  |o if this unit i|
00001080  73 20 64 69 73 61 62 6c  65 64 20 6f 72 20 63 6f  |s disabled or co|
00001090  72 72 75 70 74 65 64 20  74 68 65 0d 70 72 6f 67  |rrupted the.prog|
000010a0  61 6d 20 77 69 6c 6c 20  65 69 74 68 65 72 20 6e  |am will either n|
000010b0  6f 74 20 73 68 6f 6f 74  20 61 74 20 61 6c 6c 2c  |ot shoot at all,|
000010c0  20 6f 72 20 77 69 6c 6c  20 73 68 6f 6f 74 20 69  | or will shoot i|
000010d0  72 72 65 67 75 6c 61 72  6c 79 20 2d 20 6d 61 6e  |rregularly - man|
000010e0  79 0d 63 6f 6d 6d 65 72  63 69 61 6c 20 70 72 6f  |y.commercial pro|
000010f0  67 72 61 6d 73 20 75 73  65 20 74 68 69 73 20 64  |grams use this d|
00001100  65 76 69 63 65 20 66 6f  72 20 74 69 6d 69 6e 67  |evice for timing|
00001110  20 73 6f 20 74 68 65 73  65 20 63 61 6e 6e 6f 74  | so these cannot|
00001120  20 62 65 0d 53 6e 61 70  73 68 6f 74 2e 20 41 6c  | be.Snapshot. Al|
00001130  73 6f 20 6d 6f 64 65 6c  20 41 20 42 42 43 27 73  |so model A BBC's|
00001140  20 77 65 72 65 20 6e 65  76 65 72 20 66 69 74 74  | were never fitt|
00001150  65 64 20 77 69 74 68 20  74 68 69 73 20 75 6e 69  |ed with this uni|
00001160  74 20 73 6f 20 61 6e 79  0d 6d 6f 64 65 6c 20 41  |t so any.model A|
00001170  20 74 68 61 74 20 68 61  73 20 6e 6f 74 20 62 65  | that has not be|
00001180  65 6e 20 66 75 6c 6c 79  20 75 70 67 72 61 64 65  |en fully upgrade|
00001190  64 20 63 61 6e 6e 6f 74  20 53 6e 61 70 73 68 6f  |d cannot Snapsho|
000011a0  6f 74 20 77 69 74 68 20  74 68 65 20 74 69 6d 65  |ot with the time|
000011b0  72 0d 2d 20 61 6c 74 68  6f 75 67 68 20 2a 4e 4f  |r.- although *NO|
000011c0  57 20 73 68 6f 75 6c 64  20 73 74 69 6c 6c 20 62  |W should still b|
000011d0  65 20 75 73 61 62 6c 65  2e 20 54 68 65 20 6d 61  |e usable. The ma|
000011e0  69 6e 20 75 73 65 20 6f  66 20 74 68 69 73 20 75  |in use of this u|
000011f0  6e 69 74 20 6e 6f 72 6d  61 6c 79 0d 69 73 20 74  |nit normaly.is t|
00001200  6f 20 64 72 69 76 65 20  74 68 65 20 70 72 69 6e  |o drive the prin|
00001210  74 65 72 20 61 6e 64 20  75 73 65 72 20 70 6f 72  |ter and user por|
00001220  74 2e 0d 0d 20 20 57 68  65 6e 20 74 68 65 20 74  |t...  When the t|
00001230  69 6d 65 20 64 65 66 69  6e 65 64 20 62 79 20 74  |ime defined by t|
00001240  68 65 20 75 73 65 72 20  69 73 20 75 70 20 74 68  |he user is up th|
00001250  65 20 70 72 6f 67 72 61  6d 20 77 69 6c 6c 20 63  |e program will c|
00001260  6f 70 79 20 4f 53 0d 77  6f 72 6b 73 70 61 63 65  |opy OS.workspace|
00001270  20 62 65 74 77 65 65 6e  20 30 20 61 6e 64 20 26  | between 0 and &|
00001280  31 34 30 30 20 75 70 20  69 6e 74 6f 20 53 57 52  |1400 up into SWR|
00001290  20 74 68 65 6e 20 63 6f  70 79 20 74 68 65 20 69  | then copy the i|
000012a0  6d 70 6f 73 74 65 72 20  64 6f 77 6e 20 74 6f 0d  |mposter down to.|
000012b0  74 68 65 20 73 61 6d 65  20 61 72 65 61 20 73 6f  |the same area so|
000012c0  20 74 68 61 74 20 74 68  65 20 64 69 73 63 20 64  | that the disc d|
000012d0  72 69 76 65 20 77 69 6c  6c 20 77 6f 72 6b 20 6e  |rive will work n|
000012e0  6f 72 6d 61 6c 6c 79 2e  20 4e 65 78 74 20 74 68  |ormally. Next th|
000012f0  65 20 72 65 73 74 20 6f  66 0d 52 41 4d 20 28 26  |e rest of.RAM (&|
00001300  31 34 30 31 20 74 6f 20  26 38 30 30 30 20 2d 20  |1401 to &8000 - |
00001310  69 6e 63 6c 75 64 69 6e  67 20 74 68 65 20 73 63  |including the sc|
00001320  72 65 65 6e 29 20 77 69  6c 6c 20 62 65 20 73 61  |reen) will be sa|
00001330  76 65 64 20 74 6f 20 64  69 73 63 2c 20 74 68 65  |ved to disc, the|
00001340  6e 0d 74 68 65 20 6f 6c  64 20 4f 53 20 77 6f 72  |n.the old OS wor|
00001350  6b 20 73 70 61 63 65 20  69 73 20 63 6f 70 69 65  |k space is copie|
00001360  64 20 64 6f 77 6e 20 69  6e 74 6f 20 61 20 73 61  |d down into a sa|
00001370  66 65 20 61 72 65 61 20  6f 66 20 52 41 4d 20 28  |fe area of RAM (|
00001380  26 33 30 30 30 20 74 6f  0d 26 34 34 30 30 29 20  |&3000 to.&4400) |
00001390  61 6e 64 20 73 61 76 65  64 20 74 6f 20 64 69 73  |and saved to dis|
000013a0  63 20 28 69 74 20 6e 6f  74 20 77 69 6c 6c 20 77  |c (it not will w|
000013b0  6f 72 6b 20 77 69 74 68  20 63 61 73 73 65 74 74  |ork with cassett|
000013c0  65 20 6d 61 69 6e 6c 79  20 62 65 63 61 75 73 65  |e mainly because|
000013d0  0d 6f 66 20 74 68 65 20  74 69 6d 65 20 69 6e 76  |.of the time inv|
000013e0  6f 6c 76 65 64 20 61 74  20 74 68 69 73 20 73 74  |olved at this st|
000013f0  61 67 65 29 2e 20 4f 6e  63 65 20 74 68 65 20 6d  |age). Once the m|
00001400  65 6d 6f 72 79 20 69 73  20 73 61 76 65 64 20 28  |emory is saved (|
00001410  69 6e 63 6c 75 64 69 6e  67 0d 61 20 63 6f 70 79  |including.a copy|
00001420  20 6f 66 20 74 68 65 20  73 74 61 63 6b 20 70 6f  | of the stack po|
00001430  69 6e 74 65 72 3b 20 41  2c 58 20 61 6e 64 20 59  |inter; A,X and Y|
00001440  20 61 72 65 20 74 61 6b  65 6e 20 63 61 72 65 20  | are taken care |
00001450  6f 66 20 62 79 20 4f 53  29 20 74 68 65 0d 70 72  |of by OS) the.pr|
00001460  6f 67 72 61 6d 20 70 72  6f 63 65 65 64 73 20 74  |ogram proceeds t|
00001470  6f 20 72 65 74 75 72 6e  20 74 68 65 20 73 79 73  |o return the sys|
00001480  74 65 6d 20 74 6f 20 69  74 27 73 20 70 72 65 76  |tem to it's prev|
00001490  69 6f 75 73 20 73 74 61  74 65 2e 0d 0d 20 20 20  |ious state...   |
000014a0  54 6f 20 66 6f 72 63 65  20 74 68 65 20 73 79 73  |To force the sys|
000014b0  74 65 6d 20 74 6f 20 72  65 74 75 72 6e 20 74 6f  |tem to return to|
000014c0  20 61 20 70 72 65 76 69  6f 75 73 20 73 74 61 74  | a previous stat|
000014d0  65 20 74 68 65 20 63 6f  6d 6d 61 6e 64 20 2a 52  |e the command *R|
000014e0  45 53 54 4f 52 45 0d 69  73 20 69 73 73 75 65 64  |ESTORE.is issued|
000014f0  20 28 73 65 65 20 62 65  6c 6f 77 29 2c 20 74 68  | (see below), th|
00001500  69 73 20 77 69 6c 6c 20  62 72 69 6e 67 20 74 68  |is will bring th|
00001510  65 20 6d 65 6d 6f 72 79  20 69 6e 20 66 72 6f 6d  |e memory in from|
00001520  20 64 69 73 63 20 61 6e  64 20 20 63 61 72 72 79  | disc and  carry|
00001530  0d 6f 75 74 20 74 68 65  20 61 62 6f 76 65 20 6f  |.out the above o|
00001540  70 65 72 61 74 69 6f 6e  20 69 6e 20 72 65 76 65  |peration in reve|
00001550  72 73 65 20 2d 20 69 66  20 79 6f 75 20 61 72 65  |rse - if you are|
00001560  20 6f 6e 6c 79 20 72 65  73 74 6f 72 69 6e 67 20  | only restoring |
00001570  6d 65 6d 6f 72 79 0d 66  72 6f 6d 20 61 20 70 72  |memory.from a pr|
00001580  65 76 69 6f 75 73 20 53  6e 61 70 73 68 6f 74 20  |evious Snapshot |
00001590  61 6e 64 20 64 6f 20 6e  6f 74 20 69 6e 74 65 6e  |and do not inten|
000015a0  64 20 74 6f 20 74 61 6b  65 20 61 6e 6f 74 68 65  |d to take anothe|
000015b0  72 20 53 6e 61 70 73 68  6f 74 20 79 6f 75 0d 6e  |r Snapshot you.n|
000015c0  65 65 64 20 6e 6f 74 20  75 73 65 20 2a 52 45 41  |eed not use *REA|
000015d0  44 59 20 74 6f 20 67 65  74 20 61 6e 20 69 6d 70  |DY to get an imp|
000015e0  6f 73 74 65 72 2e 20 57  68 65 6e 20 2a 52 45 53  |oster. When *RES|
000015f0  54 4f 52 45 20 69 73 20  75 73 65 64 20 74 68 65  |TORE is used the|
00001600  20 73 79 73 74 65 6d 0d  77 69 6c 6c 20 6c 6f 6f  | system.will loo|
00001610  6b 20 66 6f 72 20 74 77  6f 20 66 69 6c 65 73 20  |k for two files |
00001620  64 65 66 69 6e 65 64 20  62 79 20 74 68 65 20 74  |defined by the t|
00001630  68 65 20 63 75 72 72 65  6e 74 20 64 69 72 65 63  |he current direc|
00001640  74 6f 72 79 20 61 6e 64  20 64 72 69 76 65 0d 73  |tory and drive.s|
00001650  65 74 74 69 6e 67 73 20  61 6e 64 20 74 68 65 20  |ettings and the |
00001660  6e 61 6d 65 73 20 67 69  76 65 6e 20 74 6f 20 53  |names given to S|
00001670  6e 61 70 73 68 6f 74 20  61 74 20 61 73 73 65 6d  |napshot at assem|
00001680  62 6c 79 20 74 69 6d 65  2e 20 41 73 20 6e 6f 72  |bly time. As nor|
00001690  6d 61 6c 0d 64 72 69 76  65 20 61 6e 64 20 64 69  |mal.drive and di|
000016a0  72 65 63 74 6f 72 79 20  73 65 74 74 69 6e 67 73  |rectory settings|
000016b0  20 69 6e 63 6c 75 64 65  64 20 69 6e 20 74 68 65  | included in the|
000016c0  20 6e 61 6d 65 20 77 69  6c 6c 20 6f 76 65 72 72  | name will overr|
000016d0  69 64 65 20 74 68 65 0d  63 75 72 72 65 6e 74 20  |ide the.current |
000016e0  64 72 69 76 65 20 61 6e  64 20 64 69 72 65 63 74  |drive and direct|
000016f0  6f 72 79 20 73 65 74 74  69 6e 67 73 2e 0d 0d 20  |ory settings... |
00001700  20 20 4f 6e 65 20 6f 66  20 74 68 65 20 62 69 67  |  One of the big|
00001710  67 65 73 74 20 70 72 6f  62 6c 65 6d 73 20 69 73  |gest problems is|
00001720  20 74 68 61 74 20 6f 66  20 63 6f 72 72 65 63 74  | that of correct|
00001730  6c 79 20 72 65 2d 6c 6f  61 64 69 6e 67 20 74 68  |ly re-loading th|
00001740  65 0d 73 63 72 65 65 6e  2e 20 41 6c 74 68 6f 75  |e.screen. Althou|
00001750  67 68 20 74 68 65 20 73  63 72 65 65 6e 20 63 61  |gh the screen ca|
00001760  6e 20 65 61 73 69 6c 79  20 62 65 20 6c 6f 61 64  |n easily be load|
00001770  65 64 20 64 61 74 61 20  69 73 20 63 6f 6e 74 61  |ed data is conta|
00001780  69 6e 65 64 20 69 6e 20  74 68 65 0d 36 38 34 35  |ined in the.6845|
00001790  20 43 52 54 43 20 28 43  61 74 68 6f 64 65 20 72  | CRTC (Cathode r|
000017a0  61 79 20 63 6f 6e 74 72  6f 6c 6c 65 72 20 63 68  |ay controller ch|
000017b0  69 70 29 20 77 68 69 63  68 20 64 69 63 74 61 74  |ip) which dictat|
000017c0  65 73 20 77 68 61 74 20  74 6f 20 64 6f 20 77 69  |es what to do wi|
000017d0  74 68 0d 74 68 65 20 64  61 74 61 20 6f 6e 20 73  |th.the data on s|
000017e0  63 72 65 65 6e 2e 20 4d  6f 73 74 20 6f 66 20 74  |creen. Most of t|
000017f0  68 65 20 72 65 67 69 73  74 65 72 73 20 69 6e 20  |he registers in |
00001800  74 68 69 73 20 63 68 69  70 20 61 72 65 20 77 72  |this chip are wr|
00001810  69 74 65 20 6f 6e 6c 79  0d 69 2e 65 2e 20 64 61  |ite only.i.e. da|
00001820  74 61 20 63 61 6e 20 6f  6e 6c 79 20 62 65 20 73  |ta can only be s|
00001830  65 6e 74 20 74 6f 20 74  68 65 6d 20 6e 6f 74 20  |ent to them not |
00001840  72 65 61 64 20 66 72 6f  6d 20 74 68 65 6d 2e 20  |read from them. |
00001850  57 68 65 6e 20 74 68 65  20 6d 6f 64 65 20 69 73  |When the mode is|
00001860  0d 63 68 61 6e 67 65 64  20 74 68 65 20 4f 53 20  |.changed the OS |
00001870  73 65 6e 64 73 20 74 68  65 73 65 20 72 65 67 69  |sends these regi|
00001880  73 74 65 72 73 20 64 61  74 61 20 73 6f 20 74 68  |sters data so th|
00001890  61 74 20 69 74 20 63 61  6e 20 68 61 6e 64 6c 65  |at it can handle|
000018a0  20 74 68 65 0d 73 63 72  65 65 6e 20 6d 65 6d 6f  | the.screen memo|
000018b0  72 79 20 63 6f 72 72 65  63 74 6c 79 2e 20 54 6f  |ry correctly. To|
000018c0  20 61 6c 6c 6f 77 20 66  6f 72 20 74 68 69 73 2c  | allow for this,|
000018d0  20 53 6e 61 70 73 68 6f  74 20 63 68 61 6e 67 65  | Snapshot change|
000018e0  73 20 74 68 65 20 73 63  72 65 65 6e 0d 74 6f 20  |s the screen.to |
000018f0  74 68 65 20 63 6f 72 72  65 63 74 20 6d 6f 64 65  |the correct mode|
00001900  20 62 65 66 6f 72 65 20  72 65 2d 6c 6f 61 64 69  | before re-loadi|
00001910  6e 67 20 74 68 65 20 73  63 72 65 65 6e 20 6d 65  |ng the screen me|
00001920  6d 6f 72 79 2c 20 74 68  65 20 73 69 64 65 20 65  |mory, the side e|
00001930  66 66 65 63 74 0d 68 65  72 65 20 69 73 20 74 68  |ffect.here is th|
00001940  61 74 20 69 66 20 61 20  63 75 73 74 6f 6d 20 6d  |at if a custom m|
00001950  6f 64 65 20 69 73 20 62  65 69 6e 67 20 75 73 65  |ode is being use|
00001960  64 20 74 68 65 20 73 63  72 65 65 6e 20 64 69 73  |d the screen dis|
00001970  70 6c 61 79 20 77 69 6c  6c 20 62 65 0d 63 6f 72  |play will be.cor|
00001980  72 75 70 74 65 64 2e 0d  0d 20 20 54 68 65 20 6e  |rupted...  The n|
00001990  65 78 74 20 70 72 6f 62  6c 65 6d 20 77 69 74 68  |ext problem with|
000019a0  20 74 68 65 20 73 63 72  65 65 6e 20 69 73 20 6f  | the screen is o|
000019b0  6e 65 20 6f 66 20 61 6c  69 67 6d 65 6e 74 2e 20  |ne of aligment. |
000019c0  57 68 65 6e 20 74 68 65  20 42 42 43 0d 73 63 72  |When the BBC.scr|
000019d0  6f 6c 6c 73 20 74 68 65  20 73 63 72 65 65 6e 20  |olls the screen |
000019e0  69 74 20 64 6f 65 73 20  73 6f 20 77 69 74 68 20  |it does so with |
000019f0  68 61 72 64 77 61 72 65  20 69 6e 20 74 68 65 20  |hardware in the |
00001a00  36 38 34 35 20 43 52 54  43 20 28 75 73 69 6e 67  |6845 CRTC (using|
00001a10  0d 73 6f 66 74 77 61 72  65 20 74 6f 20 73 63 72  |.software to scr|
00001a20  6f 6c 6c 20 61 20 73 63  72 65 65 6e 20 69 73 20  |oll a screen is |
00001a30  76 65 72 79 20 73 6c 6f  77 29 20 73 6f 20 61 20  |very slow) so a |
00001a40  73 63 72 65 65 6e 20 63  61 6e 6e 6f 74 20 62 65  |screen cannot be|
00001a50  20 6a 75 73 74 0d 72 65  6c 6f 61 64 65 64 20 69  | just.reloaded i|
00001a60  6e 74 6f 20 69 74 27 73  20 6f 6c 64 20 6c 6f 63  |nto it's old loc|
00001a70  61 74 69 6f 6e 2c 20 70  6f 69 6e 74 65 72 73 20  |ation, pointers |
00001a80  69 6e 20 74 68 65 20 36  38 34 35 20 43 54 52 43  |in the 6845 CTRC|
00001a90  20 6d 75 73 74 20 62 65  0d 61 6a 75 73 74 65 64  | must be.ajusted|
00001aa0  2e 20 46 6f 72 74 75 6e  61 74 65 6c 79 20 74 68  |. Fortunately th|
00001ab0  65 20 4f 53 20 6b 65 65  70 73 20 61 20 6e 6f 74  |e OS keeps a not|
00001ac0  65 20 6f 66 20 74 68 65  73 65 20 70 6f 69 6e 74  |e of these point|
00001ad0  65 72 73 20 69 6e 20 70  61 67 65 20 33 2c 0d 75  |ers in page 3,.u|
00001ae0  6e 66 6f 72 74 75 6e 61  74 65 6c 79 20 74 68 65  |nfortunately the|
00001af0  79 20 61 72 65 20 6e 6f  74 20 69 6e 20 61 20 73  |y are not in a s|
00001b00  74 61 74 65 20 74 68 61  74 20 74 68 65 20 36 38  |tate that the 68|
00001b10  34 35 20 43 54 52 43 20  63 61 6e 20 68 61 6e 64  |45 CTRC can hand|
00001b20  6c 65 20 73 6f 0d 74 68  65 79 20 6d 75 73 74 20  |le so.they must |
00001b30  62 65 20 61 64 6a 75 73  74 65 64 20 62 65 66 6f  |be adjusted befo|
00001b40  72 65 20 62 65 69 6e 67  20 73 65 6e 74 20 74 6f  |re being sent to|
00001b50  20 74 68 65 20 36 38 34  35 20 43 54 52 43 2e 20  | the 6845 CTRC. |
00001b60  41 73 20 69 66 20 74 68  69 73 20 77 65 72 65 0d  |As if this were.|
00001b70  6e 6f 74 20 62 61 64 20  65 6e 6f 75 67 68 2c 20  |not bad enough, |
00001b80  62 65 63 61 75 73 65 20  6d 6f 64 65 20 37 20 69  |because mode 7 i|
00001b90  73 20 64 69 66 66 65 72  65 6e 74 20 74 6f 20 6d  |s different to m|
00001ba0  6f 64 65 73 20 30 20 74  6f 20 36 20 69 74 20 6d  |odes 0 to 6 it m|
00001bb0  75 73 74 20 68 61 76 65  0d 74 68 65 20 70 6f 69  |ust have.the poi|
00001bc0  6e 74 65 72 73 20 61 64  6a 75 73 74 65 64 20 64  |nters adjusted d|
00001bd0  69 66 66 65 72 65 6e 74  6c 79 2e 0d 0d 20 20 54  |ifferently...  T|
00001be0  68 65 20 66 69 6e 61 6c  20 70 72 6f 62 6c 65 6d  |he final problem|
00001bf0  20 77 69 74 68 20 74 68  65 20 73 63 72 65 65 6e  | with the screen|
00001c00  20 69 73 20 74 68 61 74  20 6f 66 20 74 68 65 20  | is that of the |
00001c10  56 69 64 65 6f 20 55 4c  41 20 63 68 69 70 20 77  |Video ULA chip w|
00001c20  68 69 63 68 0d 77 61 73  20 73 70 65 63 69 61 6c  |hich.was special|
00001c30  6c 79 20 64 65 73 69 67  6e 65 64 20 62 79 20 41  |ly designed by A|
00001c40  63 6f 72 6e 20 66 6f 72  20 74 68 65 20 42 42 43  |corn for the BBC|
00001c50  2e 20 54 68 69 73 20 63  68 69 70 20 68 6f 6c 64  |. This chip hold|
00001c60  73 20 6d 6f 72 65 20 64  61 74 61 0d 61 62 6f 75  |s more data.abou|
00001c70  74 20 74 68 65 20 63 75  72 72 65 6e 74 20 6d 6f  |t the current mo|
00001c80  64 65 2e 20 41 67 61 69  6e 20 72 65 73 65 74 74  |de. Again resett|
00001c90  69 6e 67 20 74 68 65 20  6d 6f 64 65 20 63 6f 72  |ing the mode cor|
00001ca0  72 65 63 74 73 20 6d 6f  73 74 20 6f 66 20 74 68  |rects most of th|
00001cb0  65 0d 64 61 74 61 20 69  6e 76 6f 6c 76 65 64 20  |e.data involved |
00001cc0  61 6e 64 2c 20 61 67 61  69 6e 2c 20 75 73 69 6e  |and, again, usin|
00001cd0  67 20 61 20 63 75 73 74  6f 6d 20 6d 6f 64 65 20  |g a custom mode |
00001ce0  74 68 65 20 73 63 72 65  65 6e 20 77 69 6c 6c 20  |the screen will |
00001cf0  62 65 0d 63 6f 72 72 75  70 74 65 64 2e 20 49 66  |be.corrupted. If|
00001d00  20 74 68 65 20 75 73 65  72 20 68 61 73 20 63 68  | the user has ch|
00001d10  61 6e 67 65 64 20 74 68  65 20 64 65 66 61 75 6c  |anged the defaul|
00001d20  74 20 6d 6f 64 65 20 63  6f 6c 6f 75 72 73 20 74  |t mode colours t|
00001d30  68 65 6e 20 77 68 65 6e  20 74 68 65 0d 73 63 72  |hen when the.scr|
00001d40  65 65 6e 20 69 73 20 72  65 6c 6f 61 64 65 64 20  |een is reloaded |
00001d50  74 68 65 20 63 6f 6c 6f  75 72 73 20 77 69 6c 6c  |the colours will|
00001d60  20 6e 6f 74 20 62 65 20  74 68 65 20 73 61 6d 65  | not be the same|
00001d70  20 61 73 20 77 68 65 6e  20 74 68 65 20 6d 6f 64  | as when the mod|
00001d80  65 20 77 61 73 0d 73 61  76 65 64 2e 0d 0d 20 20  |e was.saved...  |
00001d90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001da0  53 6e 61 70 73 68 6f 74  20 49 6e 20 55 73 65 0d  |Snapshot In Use.|
00001db0  0d 20 20 20 54 68 65 20  73 79 73 74 65 6d 20 73  |.   The system s|
00001dc0  75 70 70 6f 72 74 73 20  73 69 78 20 65 78 74 72  |upports six extr|
00001dd0  61 20 2a 63 6f 6d 6d 61  6e 64 73 2e 20 54 68 65  |a *commands. The|
00001de0  73 65 20 6d 61 79 20 62  65 20 70 72 6f 63 65 65  |se may be procee|
00001df0  64 65 64 20 62 79 20 61  20 50 0d 74 6f 20 70 72  |ded by a P.to pr|
00001e00  65 76 65 6e 74 20 63 6c  61 73 68 65 73 20 77 69  |event clashes wi|
00001e10  74 68 20 6f 74 68 65 72  20 52 4f 4d 73 20 61 6e  |th other ROMs an|
00001e20  64 20 69 6e 20 75 70 70  65 72 20 6f 72 20 6c 6f  |d in upper or lo|
00001e30  77 65 72 20 63 61 73 65  20 65 2e 67 2e 0d 2a 50  |wer case e.g..*P|
00001e40  52 45 53 54 4f 52 45 2c  20 2a 70 72 65 73 6f 72  |RESTORE, *presor|
00001e50  65 20 61 6e 64 20 2a 52  65 53 74 4f 72 45 20 61  |e and *ReStOrE a|
00001e60  72 65 20 61 6c 6c 20 74  68 65 20 73 61 6d 65 20  |re all the same |
00001e70  61 73 20 2a 52 45 53 54  4f 52 45 2e 20 54 68 65  |as *RESTORE. The|
00001e80  20 73 69 78 0d 63 6f 6d  6d 61 6e 64 73 20 61 72  | six.commands ar|
00001e90  65 3a 2d 0d 0d 20 2a 52  45 41 44 59 20 74 68 69  |e:-.. *READY thi|
00001ea0  73 20 74 61 6b 65 73 20  61 20 63 6f 70 79 20 6f  |s takes a copy o|
00001eb0  66 20 4f 53 20 77 6f 72  6b 73 70 61 63 65 20 69  |f OS workspace i|
00001ec0  6e 74 6f 20 53 57 52 20  66 6f 72 20 66 75 74 75  |nto SWR for futu|
00001ed0  72 65 20 75 73 65 20 2d  20 74 68 65 0d 69 6d 70  |re use - the.imp|
00001ee0  6f 73 74 65 72 2e 20 54  68 69 73 20 63 6f 6d 6d  |oster. This comm|
00001ef0  61 6e 64 20 6d 75 73 74  20 62 65 20 69 73 73 75  |and must be issu|
00001f00  65 64 20 62 65 66 6f 72  65 20 61 6e 79 20 53 6e  |ed before any Sn|
00001f10  61 70 73 68 6f 74 20 63  61 6e 20 62 65 20 74 61  |apshot can be ta|
00001f20  6b 65 6e 2e 0d 0d 20 2a  4e 4f 57 20 74 68 69 73  |ken... *NOW this|
00001f30  20 77 69 6c 6c 20 61 74  74 65 6d 70 74 20 74 6f  | will attempt to|
00001f40  20 53 6e 61 70 73 68 6f  74 20 6f 6e 63 65 20 74  | Snapshot once t|
00001f50  68 65 20 63 6f 6d 6d 61  6e 64 20 69 73 20 65 6e  |he command is en|
00001f60  74 65 72 65 64 2e 20 49  66 20 61 6e 0d 69 6d 70  |tered. If an.imp|
00001f70  6f 73 74 65 72 20 69 73  20 6e 6f 74 20 70 72 65  |oster is not pre|
00001f80  73 65 6e 74 20 77 69 74  68 20 61 20 2a 52 45 41  |sent with a *REA|
00001f90  44 59 20 79 6f 75 20 77  69 6c 6c 20 67 65 74 20  |DY you will get |
00001fa0  74 68 65 20 65 72 72 6f  72 20 22 4e 6f 0d 49 6d  |the error "No.Im|
00001fb0  70 6f 73 74 65 72 22 20  61 6e 64 20 6e 6f 20 53  |poster" and no S|
00001fc0  6e 61 70 73 68 6f 74 20  77 69 6c 6c 20 62 65 20  |napshot will be |
00001fd0  74 61 6b 65 6e 2e 0d 0d  20 2a 57 41 49 54 20 78  |taken... *WAIT x|
00001fe0  20 28 77 68 65 72 65 20  78 20 69 73 20 61 20 6f  | (where x is a o|
00001ff0  6e 65 20 6f 72 20 74 77  6f 20 64 69 67 69 74 20  |ne or two digit |
00002000  68 65 78 20 6e 75 6d 62  65 72 20 62 65 74 77 65  |hex number betwe|
00002010  65 6e 20 31 20 61 6e 64  20 26 46 46 29 2e 0d 54  |en 1 and &FF)..T|
00002020  68 69 73 20 77 69 6c 6c  20 75 73 65 20 74 68 65  |his will use the|
00002030  20 36 35 32 32 20 75 73  65 72 20 56 49 41 20 74  | 6522 user VIA t|
00002040  69 6d 65 72 20 74 6f 20  74 69 6d 65 20 74 68 65  |imer to time the|
00002050  20 70 65 72 69 6f 64 20  6f 66 20 74 69 6d 65 0d  | period of time.|
00002060  73 70 65 63 69 66 69 65  64 20 61 6e 64 20 74 68  |specified and th|
00002070  65 6e 20 53 6e 61 70 73  68 6f 74 20 6d 65 6d 6f  |en Snapshot memo|
00002080  72 79 20 2d 20 65 61 63  68 20 65 78 74 72 61 20  |ry - each extra |
00002090  76 61 6c 75 65 20 63 61  75 73 65 73 20 61 20 77  |value causes a w|
000020a0  61 69 74 20 6f 66 0d 61  62 6f 75 74 20 31 36 20  |ait of.about 16 |
000020b0  73 65 63 6f 6e 64 73 2e  20 49 66 20 79 6f 75 20  |seconds. If you |
000020c0  77 61 6e 74 20 74 6f 20  74 61 6b 65 20 61 20 53  |want to take a S|
000020d0  6e 61 70 73 68 6f 74 20  69 6e 20 61 20 73 68 6f  |napshot in a sho|
000020e0  72 74 65 72 20 73 70 61  63 65 20 6f 66 0d 74 69  |rter space of.ti|
000020f0  6d 65 20 6c 69 6e 65 20  34 31 34 30 20 6f 66 20  |me line 4140 of |
00002100  74 68 65 20 61 73 73 65  6d 62 6c 79 20 70 72 6f  |the assembly pro|
00002110  67 72 61 6d 20 63 61 6e  20 62 65 20 69 6e 63 72  |gram can be incr|
00002120  65 61 73 65 64 20 74 6f  20 61 20 68 69 67 68 20  |eased to a high |
00002130  76 61 6c 75 65 2e 0d 41  67 61 69 6e 20 75 73 69  |value..Again usi|
00002140  6e 67 20 74 68 69 73 20  63 6f 6d 6d 61 6e 64 20  |ng this command |
00002150  77 69 74 68 6f 75 74 20  70 72 65 70 61 72 69 6e  |without preparin|
00002160  67 20 61 6e 20 69 6d 70  6f 73 74 65 72 20 77 69  |g an imposter wi|
00002170  74 68 20 2a 52 45 41 44  59 20 77 69 6c 6c 0d 63  |th *READY will.c|
00002180  61 75 73 65 20 74 68 65  20 22 4e 6f 20 49 6d 70  |ause the "No Imp|
00002190  6f 73 74 65 72 22 20 65  72 72 6f 72 20 61 6e 64  |oster" error and|
000021a0  20 6e 6f 20 53 6e 61 70  68 6f 74 20 77 69 6c 6c  | no Snaphot will|
000021b0  20 62 65 20 74 61 6b 65  6e 2e 0d 0d 20 2a 52 45  | be taken... *RE|
000021c0  50 45 41 54 20 4f 6e 63  65 20 74 68 69 73 20 63  |PEAT Once this c|
000021d0  6f 6d 6d 61 6e 64 20 68  61 73 20 62 65 65 6e 20  |ommand has been |
000021e0  69 73 73 75 65 64 2c 20  61 6e 79 20 53 6e 61 70  |issued, any Snap|
000021f0  73 68 6f 74 20 74 68 61  74 20 69 73 20 74 61 6b  |shot that is tak|
00002200  65 6e 0d 75 73 69 6e 67  20 74 68 65 20 74 69 6d  |en.using the tim|
00002210  65 72 20 77 69 6c 6c 20  63 61 75 73 65 20 74 68  |er will cause th|
00002220  65 20 74 69 6d 65 72 20  74 6f 20 62 65 20 72 65  |e timer to be re|
00002230  73 65 74 20 73 6f 20 53  6e 61 70 73 68 6f 74 73  |set so Snapshots|
00002240  20 77 69 6c 6c 20 62 65  0d 74 61 6b 65 6e 20 61  | will be.taken a|
00002250  74 20 72 65 67 75 6c 61  72 20 69 6e 74 65 72 76  |t regular interv|
00002260  61 6c 73 2e 20 54 68 65  72 65 20 69 73 20 6e 6f  |als. There is no|
00002270  20 6e 65 65 64 20 74 6f  20 63 61 70 74 75 72 65  | need to capture|
00002280  20 61 20 6e 65 77 20 69  6d 70 6f 73 74 65 72 20  | a new imposter |
00002290  6f 72 0d 72 65 2d 69 73  73 75 65 20 61 20 2a 57  |or.re-issue a *W|
000022a0  41 49 54 2e 20 54 68 69  73 20 69 73 20 76 65 72  |AIT. This is ver|
000022b0  79 20 75 73 65 66 75 6c  20 69 66 20 79 6f 75 20  |y useful if you |
000022c0  69 6e 74 65 6e 64 20 74  6f 20 74 61 6b 65 20 61  |intend to take a|
000022d0  20 73 65 72 69 65 73 20  6f 66 0d 53 6e 61 70 73  | series of.Snaps|
000022e0  68 6f 74 73 20 64 75 72  69 6e 67 20 61 20 67 61  |hots during a ga|
000022f0  6d 65 20 6f 72 20 77 68  69 6c 65 20 70 72 6f 63  |me or while proc|
00002300  65 73 73 69 6e 67 20 64  61 74 61 2e 20 54 68 69  |essing data. Thi|
00002310  73 20 6f 70 74 69 6f 6e  20 77 69 6c 6c 20 73 74  |s option will st|
00002320  61 79 0d 73 65 74 20 75  6e 74 69 6c 20 42 72 65  |ay.set until Bre|
00002330  61 6b 20 69 73 20 70 72  65 73 73 65 64 20 28 42  |ak is pressed (B|
00002340  72 65 61 6b 20 73 74 6f  70 73 20 61 6c 6c 20 53  |reak stops all S|
00002350  6e 61 70 73 68 6f 6f 74  69 6e 67 29 2e 0d 0d 20  |napshooting)... |
00002360  2a 52 45 53 54 4f 52 45  20 54 68 69 73 20 77 69  |*RESTORE This wi|
00002370  6c 6c 20 72 65 73 74 6f  72 65 20 6d 65 6d 6f 72  |ll restore memor|
00002380  79 20 74 6f 20 69 74 27  73 20 70 72 65 76 69 6f  |y to it's previo|
00002390  75 73 20 73 74 61 74 65  2e 20 54 68 65 20 66 69  |us state. The fi|
000023a0  6c 65 73 0d 72 65 74 72  65 69 76 65 64 20 77 69  |les.retreived wi|
000023b0  6c 6c 20 64 65 70 65 6e  64 20 6f 6e 20 74 68 65  |ll depend on the|
000023c0  69 72 20 66 69 6c 65 20  6e 61 6d 65 73 20 67 69  |ir file names gi|
000023d0  76 65 6e 20 74 6f 20 53  6e 61 70 73 68 6f 74 20  |ven to Snapshot |
000023e0  61 74 20 61 73 73 65 6d  62 6c 79 0d 61 6e 64 20  |at assembly.and |
000023f0  74 68 65 20 63 75 72 72  65 6e 74 20 64 72 69 76  |the current driv|
00002400  65 20 61 6e 64 20 64 69  72 65 63 74 6f 72 79 20  |e and directory |
00002410  73 65 74 74 69 6e 67 73  2e 0d 0d 20 20 2a 4e 41  |settings...  *NA|
00002420  4d 45 53 20 54 68 69 73  20 63 6f 6d 6d 61 6e 64  |MES This command|
00002430  20 77 69 6c 6c 20 70 72  69 6e 74 20 6f 75 74 20  | will print out |
00002440  74 68 65 20 74 77 6f 20  66 69 6c 65 20 6e 61 6d  |the two file nam|
00002450  65 73 20 73 70 65 63 69  66 69 65 64 20 61 74 20  |es specified at |
00002460  74 68 65 0d 74 69 6d 65  20 6f 66 20 61 73 73 65  |the.time of asse|
00002470  6d 62 6c 79 20 77 68 69  63 68 20 61 72 65 20 75  |mbly which are u|
00002480  73 65 64 20 66 6f 72 20  73 61 76 69 6e 67 20 61  |sed for saving a|
00002490  6e 64 20 6c 6f 61 64 69  6e 67 20 53 6e 61 70 73  |nd loading Snaps|
000024a0  68 6f 74 73 2e 20 49 20  66 69 6e 64 0d 69 74 20  |hots. I find.it |
000024b0  62 65 73 74 20 74 6f 20  75 73 65 20 74 68 65 20  |best to use the |
000024c0  73 61 6d 65 20 66 69 6c  65 20 6e 61 6d 65 73 20  |same file names |
000024d0  66 6f 72 20 61 6c 6c 20  53 6e 61 70 73 68 6f 74  |for all Snapshot|
000024e0  73 20 61 6e 64 20 6a 75  73 74 20 75 73 65 0d 64  |s and just use.d|
000024f0  69 66 66 65 72 65 6e 74  20 64 69 73 63 73 2c 20  |ifferent discs, |
00002500  64 72 69 76 65 73 20 61  6e 64 20 64 69 72 65 63  |drives and direc|
00002510  74 6f 72 69 65 73 20 73  69 6e 63 65 20 49 20 64  |tories since I d|
00002520  6f 20 6e 6f 74 20 72 65  61 73 73 65 6d 62 6c 65  |o not reassemble|
00002530  0d 53 6e 61 70 73 68 6f  74 20 66 6f 72 20 65 61  |.Snapshot for ea|
00002540  63 68 20 73 6e 61 70 73  68 6f 74 20 62 75 74 20  |ch snapshot but |
00002550  6a 75 73 74 20 68 61 76  65 20 6f 6e 65 20 76 65  |just have one ve|
00002560  72 73 69 6f 6e 20 77 68  69 63 68 20 49 20 73 74  |rsion which I st|
00002570  6f 72 65 20 77 69 74 68  0d 61 6c 6c 20 6d 79 20  |ore with.all my |
00002580  6f 74 68 65 72 20 52 4f  4d 73 2e 0d 0d 20 20 20  |other ROMs...   |
00002590  54 68 65 72 65 20 61 72  65 20 61 20 66 65 77 20  |There are a few |
000025a0  70 6f 69 6e 74 73 20 61  62 6f 75 74 20 74 68 65  |points about the|
000025b0  20 70 72 6f 67 72 61 6d  20 77 68 69 63 68 20 6d  | program which m|
000025c0  75 73 74 20 62 65 20 6e  6f 74 65 64 2e 20 57 68  |ust be noted. Wh|
000025d0  65 6e 0d 73 61 76 69 6e  67 20 6d 65 6d 6f 72 79  |en.saving memory|
000025e0  20 74 6f 20 64 69 73 63  20 74 77 6f 20 66 69 6c  | to disc two fil|
000025f0  65 20 6e 61 6d 65 73 20  6d 75 73 74 20 74 68 65  |e names must the|
00002600  20 75 73 65 64 2e 20 57  68 65 6e 20 74 68 65 20  | used. When the |
00002610  70 72 6f 67 72 61 6d 20  69 73 0d 61 73 73 65 6d  |program is.assem|
00002620  62 6c 65 64 20 79 6f 75  20 61 72 65 20 61 73 6b  |bled you are ask|
00002630  65 64 20 66 6f 72 20 74  68 65 73 65 2e 20 54 68  |ed for these. Th|
00002640  65 73 65 20 73 68 6f 75  6c 64 20 62 65 20 74 68  |ese should be th|
00002650  65 20 66 69 6c 65 6e 61  6d 65 20 79 6f 75 20 77  |e filename you w|
00002660  69 73 68 0d 74 6f 20 73  61 76 65 20 6f 72 20 6c  |ish.to save or l|
00002670  6f 61 64 20 75 6e 64 65  72 2e 20 54 68 65 20 66  |oad under. The f|
00002680  69 72 73 74 20 66 69 6c  65 20 6e 61 6d 65 20 69  |irst file name i|
00002690  73 20 66 6f 72 20 74 68  65 20 6d 65 6d 6f 72 79  |s for the memory|
000026a0  20 61 62 6f 76 65 20 26  31 34 30 30 0d 61 6e 64  | above &1400.and|
000026b0  20 74 68 65 20 73 65 63  6f 6e 64 20 6f 6e 65 20  | the second one |
000026c0  66 6f 72 20 74 68 65 20  6d 65 6d 6f 72 79 20 62  |for the memory b|
000026d0  65 6c 6f 77 20 26 31 34  30 30 2e 20 59 6f 75 20  |elow &1400. You |
000026e0  6d 61 79 20 61 64 64 20  61 20 64 69 72 65 63 74  |may add a direct|
000026f0  6f 72 79 0d 61 6e 64 20  64 69 73 63 20 6e 75 6d  |ory.and disc num|
00002700  62 65 72 2f 6e 61 6d 65  20 74 6f 20 74 68 65 73  |ber/name to thes|
00002710  65 20 66 69 6c 65 73 20  61 73 20 6e 6f 72 6d 61  |e files as norma|
00002720  6c 20 62 75 74 20 69 66  20 79 6f 75 20 64 6f 20  |l but if you do |
00002730  6e 6f 74 20 74 68 65 6e  20 74 68 65 0d 64 72 69  |not then the.dri|
00002740  76 65 20 61 6e 64 20 64  69 72 65 63 74 6f 72 79  |ve and directory|
00002750  20 73 65 74 74 69 6e 67  73 20 70 72 65 73 65 6e  | settings presen|
00002760  74 20 77 68 65 6e 20 79  6f 75 20 2a 52 45 41 44  |t when you *READ|
00002770  59 20 77 69 6c 6c 20 62  65 20 75 73 65 64 2e 20  |Y will be used. |
00002780  57 68 65 6e 0d 52 45 53  54 4f 52 45 69 6e 67 20  |When.RESTOREing |
00002790  74 68 65 20 63 75 72 72  65 6e 74 20 64 72 69 76  |the current driv|
000027a0  65 20 61 6e 64 20 64 69  72 65 63 74 6f 72 79 20  |e and directory |
000027b0  73 65 74 74 69 6e 67 73  20 61 72 65 20 75 73 65  |settings are use|
000027c0  64 20 74 6f 20 72 65 63  6f 76 65 72 0d 74 68 65  |d to recover.the|
000027d0  20 53 6e 61 70 73 68 6f  74 2e 0d 0d 20 20 20 41  | Snapshot...   A|
000027e0  6e 6f 74 68 65 72 20 70  72 6f 67 72 61 6d 20 6d  |nother program m|
000027f0  75 73 74 20 62 65 20 75  73 65 64 20 74 6f 20 22  |ust be used to "|
00002800  6c 69 66 74 22 20 74 68  65 20 6d 61 69 6e 20 70  |lift" the main p|
00002810  72 6f 67 72 61 6d 20 69  6e 74 6f 20 53 57 52 2e  |rogram into SWR.|
00002820  20 54 68 69 73 0d 69 73  20 74 68 65 20 6d 6f 76  | This.is the mov|
00002830  65 20 75 70 20 70 72 6f  67 61 6d 20 61 6e 64 20  |e up progam and |
00002840  73 68 6f 75 6c 64 20 62  65 20 61 73 73 65 6d 62  |should be assemb|
00002850  6c 65 64 20 61 73 20 61  20 6d 61 63 68 69 6e 65  |led as a machine|
00002860  20 63 6f 64 65 20 66 69  6c 65 20 6f 6e 0d 64 69  | code file on.di|
00002870  73 63 20 62 65 66 6f 72  65 20 6c 6f 61 64 69 6e  |sc before loadin|
00002880  67 20 53 6e 61 70 73 68  6f 74 2e 20 49 74 20 77  |g Snapshot. It w|
00002890  69 6c 6c 20 61 73 6b 20  79 6f 75 20 66 6f 72 20  |ill ask you for |
000028a0  74 68 65 20 6e 75 6d 62  65 72 20 6f 66 20 74 68  |the number of th|
000028b0  65 0d 73 6f 63 6b 65 74  20 74 68 65 20 53 57 52  |e.socket the SWR|
000028c0  20 69 73 20 6c 6f 63 61  74 65 64 20 69 6e 20 28  | is located in (|
000028d0  74 68 65 20 42 2b 20 31  32 38 20 68 61 73 20 53  |the B+ 128 has S|
000028e0  57 52 20 69 6e 20 73 6f  63 6b 65 74 73 20 31 2c  |WR in sockets 1,|
000028f0  32 20 31 33 20 61 6e 64  0d 31 34 29 20 61 6e 64  |2 13 and.14) and|
00002900  20 77 69 6c 6c 20 63 72  65 61 74 65 20 61 20 66  | will create a f|
00002910  69 6c 65 20 63 61 6c 6c  20 55 50 20 6f 6e 20 74  |ile call UP on t|
00002920  68 65 20 64 69 73 63 2e  20 4f 6e 63 65 20 74 68  |he disc. Once th|
00002930  65 20 6d 61 69 6e 20 70  72 6f 67 72 61 6d 20 69  |e main program i|
00002940  73 0d 61 73 73 65 6d 62  6c 65 64 20 6a 75 73 74  |s.assembled just|
00002950  20 74 79 70 65 20 2a 55  50 20 28 74 68 65 20 6d  | type *UP (the m|
00002960  6f 76 65 20 75 70 20 61  73 73 65 6d 62 6c 79 20  |ove up assembly |
00002970  70 72 6f 67 72 61 6d 20  73 61 76 65 73 20 55 50  |program saves UP|
00002980  20 61 73 20 55 2e 55 50  20 73 6f 0d 69 66 20 79  | as U.UP so.if y|
00002990  6f 75 72 20 6c 69 62 72  61 72 79 20 64 69 72 65  |our library dire|
000029a0  63 74 6f 72 79 20 69 73  20 6e 6f 74 20 55 20 79  |ctory is not U y|
000029b0  6f 75 20 77 69 6c 6c 20  68 61 76 65 20 74 6f 20  |ou will have to |
000029c0  75 73 65 20 2a 55 2e 55  50 20 69 6e 73 74 65 61  |use *U.UP instea|
000029d0  64 20 6f 66 0d 6a 75 73  74 20 2a 55 50 29 20 74  |d of.just *UP) t|
000029e0  68 69 73 20 77 69 6c 6c  20 6c 6f 61 64 20 61 6e  |his will load an|
000029f0  64 20 72 75 6e 20 74 68  65 20 6d 6f 76 65 72 20  |d run the mover |
00002a00  70 72 6f 67 61 6d 2e 20  41 66 74 65 72 20 74 68  |progam. After th|
00002a10  69 73 20 70 72 65 73 73  0d 42 52 45 41 4b 2c 20  |is press.BREAK, |
00002a20  79 6f 75 20 73 68 6f 75  6c 64 20 68 61 76 65 20  |you should have |
00002a30  74 68 65 20 6d 65 73 73  61 67 65 20 22 53 6e 61  |the message "Sna|
00002a40  70 73 68 6f 74 20 56 65  72 73 69 6f 6e 20 50 41  |pshot Version PA|
00002a50  4c 4f 30 30 34 22 20 6f  6e 20 74 79 70 69 6e 67  |LO004" on typing|
00002a60  0d 2a 48 45 4c 50 2e 0d  0d 20 20 4d 6f 76 65 20  |.*HELP...  Move |
00002a70  75 70 20 73 69 6d 70 6c  79 20 73 77 69 74 63 68  |up simply switch|
00002a80  65 73 20 74 68 65 20 53  57 52 20 62 61 6e 6b 20  |es the SWR bank |
00002a90  69 6e 74 6f 20 74 68 65  20 63 75 72 72 65 6e 74  |into the current|
00002aa0  20 70 61 67 65 64 20 52  4f 4d 0d 70 6f 73 69 74  | paged ROM.posit|
00002ab0  69 6f 6e 20 61 6e 64 20  6d 6f 76 65 73 20 61 6c  |ion and moves al|
00002ac0  6c 20 74 68 65 20 64 61  74 61 20 66 72 6f 6d 20  |l the data from |
00002ad0  6d 61 69 6e 20 52 41 4d  20 61 74 20 26 35 30 30  |main RAM at &500|
00002ae0  30 20 69 6e 74 6f 20 53  57 52 20 61 74 20 26 38  |0 into SWR at &8|
00002af0  30 30 30 2e 0d 4f 6e 63  65 20 69 74 20 68 61 73  |000..Once it has|
00002b00  20 62 65 65 6e 20 6d 6f  76 65 64 20 75 70 2c 20  | been moved up, |
00002b10  42 52 45 41 4b 20 6d 75  73 74 20 62 65 20 70 72  |BREAK must be pr|
00002b20  65 73 73 65 64 20 73 6f  20 74 68 61 74 20 74 68  |essed so that th|
00002b30  65 20 4f 53 20 63 61 6e  20 73 63 61 6e 0d 74 68  |e OS can scan.th|
00002b40  65 20 52 4f 4d 20 62 61  6e 6b 73 20 74 6f 20 73  |e ROM banks to s|
00002b50  65 65 20 77 68 69 63 68  20 63 6f 6e 74 61 69 6e  |ee which contain|
00002b60  20 52 4f 4d 73 20 2d 20  61 73 20 66 61 72 20 61  | ROMs - as far a|
00002b70  73 20 74 68 65 20 4f 53  20 6b 6e 6f 77 73 20 74  |s the OS knows t|
00002b80  68 65 20 53 57 52 0d 62  61 6e 6b 20 77 69 74 68  |he SWR.bank with|
00002b90  20 61 20 70 72 6f 67 72  61 6d 20 69 6e 20 69 73  | a program in is|
00002ba0  20 61 20 52 4f 4d 20 2d  20 61 6e 64 20 72 65 63  | a ROM - and rec|
00002bb0  6f 6e 67 69 73 65 20 53  6e 61 70 73 68 6f 74 2e  |ongise Snapshot.|
00002bc0  20 41 6c 74 65 72 6e 61  74 69 76 65 6c 79 2c 0d  | Alternatively,.|
00002bd0  69 66 20 79 6f 75 20 64  6f 6e 27 74 20 6c 69 6b  |if you don't lik|
00002be0  65 20 70 72 65 73 73 69  6e 67 20 42 72 65 61 6b  |e pressing Break|
00002bf0  2c 20 74 68 65 20 4f 53  20 6b 65 65 70 73 20 61  |, the OS keeps a|
00002c00  20 72 65 63 6f 72 64 20  6f 66 20 77 68 69 63 68  | record of which|
00002c10  20 73 6f 63 6b 65 74 73  0d 68 61 76 65 20 52 4f  | sockets.have RO|
00002c20  4d 73 20 69 6e 20 74 68  65 6d 20 62 65 74 77 65  |Ms in them betwe|
00002c30  65 6e 20 26 32 41 31 20  61 6e 64 20 26 32 42 31  |en &2A1 and &2B1|
00002c40  20 73 6f 20 3f 28 26 32  41 31 2b 20 3c 73 6f 63  | so ?(&2A1+ <soc|
00002c50  6b 65 74 20 6e 75 6d 62  65 72 20 6f 66 20 53 57  |ket number of SW|
00002c60  52 0d 73 6f 63 6b 65 74  20 77 69 74 68 20 53 6e  |R.socket with Sn|
00002c70  61 70 73 68 6f 74 20 69  6e 3e 29 3d 26 38 32 20  |apshot in>)=&82 |
00002c80  28 66 6f 72 20 73 65 72  76 69 63 65 20 65 6e 74  |(for service ent|
00002c90  72 79 20 6f 6e 6c 79 29  20 77 69 6c 6c 20 61 6c  |ry only) will al|
00002ca0  73 6f 20 73 77 69 74 63  68 0d 74 68 65 20 52 4f  |so switch.the RO|
00002cb0  4d 20 6f 6e 2e 20 49 66  20 79 6f 75 20 73 75 62  |M on. If you sub|
00002cc0  73 74 69 74 75 65 20 74  68 65 20 26 38 32 20 66  |stitue the &82 f|
00002cd0  6f 72 20 30 20 79 6f 75  20 63 61 6e 20 73 77 69  |or 0 you can swi|
00002ce0  74 63 68 20 74 68 65 20  52 4f 4d 20 6f 66 66 2e  |tch the ROM off.|
00002cf0  0d 0d 20 20 20 49 20 68  61 76 65 20 6e 6f 74 20  |..   I have not |
00002d00  62 65 65 6e 20 61 62 6c  65 20 74 6f 20 74 72 79  |been able to try|
00002d10  20 53 6e 61 70 73 68 6f  74 20 6f 6e 20 61 6e 20  | Snapshot on an |
00002d20  45 6c 65 63 74 72 6f 6e  20 62 75 74 20 74 68 65  |Electron but the|
00002d30  20 6d 69 6e 69 6d 75 6d  0d 72 65 71 75 69 72 65  | minimum.require|
00002d40  6d 65 6e 74 73 20 66 6f  72 20 69 74 20 61 72 65  |ments for it are|
00002d50  3a 20 31 36 4b 20 6f 66  20 53 57 52 2c 20 61 20  |: 16K of SWR, a |
00002d60  64 69 73 63 20 64 72 69  76 65 20 61 6e 64 20 61  |disc drive and a|
00002d70  20 36 35 32 32 20 55 73  65 72 20 56 49 41 20 66  | 6522 User VIA f|
00002d80  6f 72 0d 74 69 6d 65 72  2e 20 4f 6e 20 74 68 65  |or.timer. On the|
00002d90  20 42 42 43 20 74 68 65  20 6d 61 69 6e 20 6a 6f  | BBC the main jo|
00002da0  62 20 6f 66 20 74 68 65  20 55 73 65 72 20 56 49  |b of the User VI|
00002db0  41 20 69 73 20 74 68 65  20 64 72 69 76 65 20 74  |A is the drive t|
00002dc0  68 65 20 20 70 72 69 6e  74 65 72 0d 73 6f 20 50  |he  printer.so P|
00002dd0  6c 75 73 20 31 20 73 68  6f 75 6c 64 20 70 72 6f  |lus 1 should pro|
00002de0  76 69 64 65 20 6f 6e 65  20 6f 66 20 74 68 65 73  |vide one of thes|
00002df0  65 20 2d 20 61 6c 74 68  6f 75 67 68 20 49 20 64  |e - although I d|
00002e00  6f 6e 27 74 20 6b 6e 6f  77 20 74 68 69 73 20 66  |on't know this f|
00002e10  6f 72 0d 63 65 72 74 61  69 6e 2e 20 57 69 74 68  |or.certain. With|
00002e20  20 74 68 65 20 42 2b 20  74 68 65 20 70 72 6f 67  | the B+ the prog|
00002e30  72 61 6d 20 77 6f 72 6b  73 20 61 73 20 6e 6f 72  |ram works as nor|
00002e40  6d 61 6c 2c 20 62 75 74  20 6f 6e 6c 79 20 6d 61  |mal, but only ma|
00002e50  69 6e 20 52 41 4d 20 69  73 0d 63 61 70 74 75 72  |in RAM is.captur|
00002e60  65 64 20 73 6f 20 77 68  65 6e 20 73 68 61 64 6f  |ed so when shado|
00002e70  77 20 6d 6f 64 65 73 20  61 72 65 20 69 6e 20 75  |w modes are in u|
00002e80  73 65 20 74 68 65 20 73  63 72 65 65 6e 20 77 69  |se the screen wi|
00002e90  6c 6c 20 6e 6f 74 20 62  65 20 73 61 76 65 64 2e  |ll not be saved.|
00002ea0  0d 46 6f 72 20 73 6f 6d  65 20 61 70 70 6c 69 63  |.For some applic|
00002eb0  61 74 69 6f 6e 73 20 74  68 69 73 20 77 69 6c 6c  |ations this will|
00002ec0  20 6e 6f 74 20 62 65 20  61 20 68 69 6e 64 72 61  | not be a hindra|
00002ed0  6e 63 65 2e 0d 0d 20 20  54 68 65 20 4d 61 73 74  |nce...  The Mast|
00002ee0  65 72 20 73 65 72 69 65  73 20 75 73 65 73 20 70  |er series uses p|
00002ef0  72 69 76 61 74 65 20 52  41 4d 20 66 6f 72 20 61  |rivate RAM for a|
00002f00  20 6c 6f 74 20 6f 66 20  6f 70 65 72 61 74 69 6f  | lot of operatio|
00002f10  6e 73 20 61 6e 64 20 61  6c 6c 6f 77 69 6e 67 0d  |ns and allowing.|
00002f20  50 41 47 45 20 74 6f 20  62 65 20 73 65 74 20 74  |PAGE to be set t|
00002f30  6f 20 26 45 30 30 20 77  6f 75 6c 64 20 74 68 65  |o &E00 would the|
00002f40  72 65 66 6f 72 65 20 6e  65 65 64 20 61 20 6c 61  |refore need a la|
00002f50  72 67 65 20 61 6d 6f 75  6e 74 20 6f 66 20 61 6c  |rge amount of al|
00002f60  74 65 72 61 74 69 6f 6e  0d 66 6f 72 20 69 74 20  |teration.for it |
00002f70  74 6f 20 77 6f 72 6b 2e  20 54 68 65 20 73 61 6d  |to work. The sam|
00002f80  65 20 70 72 69 6e 63 69  70 6c 65 73 20 61 70 70  |e principles app|
00002f90  6c 79 20 62 75 74 20 6d  6f 72 65 20 4f 53 20 77  |ly but more OS w|
00002fa0  6f 72 6b 73 70 61 63 65  20 77 69 6c 6c 20 68 61  |orkspace will ha|
00002fb0  76 65 0d 74 6f 20 62 65  20 73 68 69 66 74 65 64  |ve.to be shifted|
00002fc0  20 61 6e 64 20 6d 6f 72  65 20 74 68 61 6e 20 6f  | and more than o|
00002fd0  6e 65 20 62 61 6e 6b 20  6f 66 20 53 57 52 20 6d  |ne bank of SWR m|
00002fe0  61 79 20 62 65 20 6e 65  65 64 65 64 2e 0d 0d 20  |ay be needed... |
00002ff0  20 54 68 69 73 20 73 68  6f 72 74 20 70 72 6f 67  | This short prog|
00003000  72 61 6d 20 77 69 6c 6c  20 70 72 6f 76 69 64 65  |ram will provide|
00003010  20 61 20 62 61 73 69 63  20 64 65 6d 6f 6e 73 74  | a basic demonst|
00003020  72 61 74 69 6f 6e 20 6f  66 20 53 6e 61 70 73 68  |ration of Snapsh|
00003030  6f 74 2e 0d 20 20 20 20  31 30 20 52 45 4d 20 50  |ot..    10 REM P|
00003040  72 65 70 61 72 65 20 49  6d 70 6f 73 74 65 72 0d  |repare Imposter.|
00003050  20 20 20 20 32 30 20 2a  52 45 41 44 59 0d 20 20  |    20 *READY.  |
00003060  20 20 33 30 20 52 45 4d  20 53 65 74 20 74 69 6d  |  30 REM Set tim|
00003070  65 72 20 72 75 6e 6e 69  6e 67 0d 20 20 20 20 34  |er running.    4|
00003080  30 20 2a 57 41 49 54 20  31 0d 20 20 20 20 35 30  |0 *WAIT 1.    50|
00003090  20 52 45 4d 20 53 65 74  20 61 20 42 41 53 49 43  | REM Set a BASIC|
000030a0  20 6c 6f 6f 70 20 72 75  6e 6e 69 6e 67 0d 20 20  | loop running.  |
000030b0  20 20 36 30 20 46 4f 52  20 78 3d 30 20 54 4f 20  |  60 FOR x=0 TO |
000030c0  31 34 30 30 0d 20 20 20  20 37 30 20 50 52 49 4e  |1400.    70 PRIN|
000030d0  54 20 78 0d 20 20 20 20  38 30 20 4e 45 58 54 0d  |T x.    80 NEXT.|
000030e0  20 20 20 20 39 30 20 2a  52 45 53 54 4f 52 45 0d  |    90 *RESTORE.|
000030f0  20 20 20 20 31 30 30 20  52 45 4d 20 54 68 65 20  |    100 REM The |
00003100  70 72 6f 67 72 61 6d 20  77 69 6c 6c 20 6e 65 76  |program will nev|
00003110  65 72 20 72 65 61 63 68  20 68 65 72 65 21 0d 0d  |er reach here!..|
00003120  20 20 53 6f 6d 65 74 69  6d 65 20 64 75 72 69 6e  |  Sometime durin|
00003130  67 20 74 68 65 20 72 75  6e 6e 69 6e 67 20 6f 66  |g the running of|
00003140  20 74 68 65 20 6c 6f 6f  70 20 61 20 53 6e 61 70  | the loop a Snap|
00003150  73 68 6f 74 20 77 69 6c  6c 20 62 65 20 74 61 6b  |shot will be tak|
00003160  65 6e 2e 20 54 68 65 0d  6c 6f 6f 70 20 77 69 6c  |en. The.loop wil|
00003170  6c 20 74 68 65 6e 20 63  6f 6e 74 69 6e 75 65 20  |l then continue |
00003180  72 75 6e 6e 69 6e 67 2e  20 57 68 65 6e 20 74 68  |running. When th|
00003190  65 20 6c 6f 6f 70 20 69  73 20 74 65 72 6d 69 6e  |e loop is termin|
000031a0  61 74 65 64 20 74 68 65  20 63 6f 6d 70 75 74 65  |ated the compute|
000031b0  72 0d 77 69 6c 6c 20 62  65 20 72 65 73 74 6f 72  |r.will be restor|
000031c0  65 64 20 74 6f 20 74 68  65 20 73 74 61 74 65 20  |ed to the state |
000031d0  69 74 20 77 61 73 20 69  6e 20 77 68 69 6c 65 20  |it was in while |
000031e0  74 68 65 20 6c 6f 6f 70  20 77 61 73 20 72 75 6e  |the loop was run|
000031f0  6e 69 6e 67 2c 20 74 68  65 0d 6c 6f 6f 70 20 77  |ning, the.loop w|
00003200  69 6c 6c 20 74 65 72 6d  69 6e 61 74 65 20 61 67  |ill terminate ag|
00003210  61 69 6e 20 61 6e 64 20  74 68 65 20 63 6f 6d 70  |ain and the comp|
00003220  75 74 65 72 20 77 69 6c  6c 20 62 65 20 72 65 73  |uter will be res|
00003230  74 6f 72 65 64 20 61 67  61 69 6e 2e 2e 2e 2e 20  |tored again.... |
00003240  61 6e 64 0d 73 6f 20 6f  6e 2e 20 54 68 69 73 20  |and.so on. This |
00003250  77 69 6c 6c 20 63 6f 6e  74 69 6e 75 65 20 75 6e  |will continue un|
00003260  74 69 6c 20 74 68 65 20  75 73 65 72 20 73 74 6f  |til the user sto|
00003270  70 73 20 69 74 20 62 79  20 70 72 65 73 73 69 6e  |ps it by pressin|
00003280  67 20 45 53 43 41 50 45  20 6f 72 0d 42 52 45 41  |g ESCAPE or.BREA|
00003290  4b 2e 0d 0d 20 20 4e 6f  74 65 20 74 68 61 74 20  |K...  Note that |
000032a0  77 69 74 68 20 53 6e 61  70 73 68 6f 74 20 79 6f  |with Snapshot yo|
000032b0  75 20 61 72 65 20 6e 6f  74 20 6c 69 6d 69 74 65  |u are not limite|
000032c0  64 20 74 6f 20 75 73 69  6e 67 20 69 74 20 69 6e  |d to using it in|
000032d0  20 61 20 42 41 53 49 43  0d 70 72 6f 67 72 61 6d  | a BASIC.program|
000032e0  6d 69 6e 67 20 65 6e 76  69 72 6f 6d 65 6e 74 2e  |ming enviroment.|
000032f0  20 53 6e 61 70 73 68 6f  74 73 20 63 61 6e 20 62  | Snapshots can b|
00003300  65 20 74 61 6b 65 6e 20  66 72 6f 6d 20 77 69 74  |e taken from wit|
00003310  68 69 6e 20 6f 74 68 65  72 20 6c 61 6e 67 75 61  |hin other langua|
00003320  67 65 0d 52 4f 4d 73 2e  0d                       |ge.ROMs..|
00003329
17_10_87/SNAPINF.m0
17_10_87/SNAPINF.m1
17_10_87/SNAPINF.m2
17_10_87/SNAPINF.m4
17_10_87/SNAPINF.m5