a

SOLIDISK TECHNOLOGY LIMITED

COMPUTERS PERIPHERALS MICROPROCESSOR DEDICATED SYSTEMS
Tel: (0702)354674	Trade Name: AUDIO COMPUTERS
17 Sweyne Avenue, Southend-on-Sea, Essex SS2 6J0

SOLIDISK SIDEWAYS RAM

SEPTEMBER 1st, 1986
(Revised version of the green JULY 1984 Manual)

PLEASE READ THIS MANUAL THOROUGHLY BEFORE YOU
RING US UP!

SOLIDISK BBC SIDEWAYS RAM

CONTENTS

Chapter 1: System Overview
1.1	 Preliminary
1.2	Compatibility with other devices
1.3	Upgrading to Double Density
1.4	What happens if you don’t have disks?
1.5	How does the Sideways RAM work?
1.6	Uses of Sideways RAM
1.7	Free software from Solidisk

Chapter 2: System Installation
2.1	Check the Utility Disk
2.2	Check the Base unit
2.3	Check the Mini Cartridge
2.4	Check the RAM card
2.5	Remove the top case
2.6	Install the Base unit
2.7	Use the Mini Cartridge
2.8	Connect the control wires
2.9	Install the RAM card
2.10	Test the Sideways RAM
2.11	Replace the top case

Chapter 3: Specially Written Programs
Turn over for full details

Chapter 4: Solidisk Local Expert Network
4.1	Getting to know your local expert
4.2	Bimonthly Newsletter
4.3	Please write to us

Acknowledgements

Diagrams

Contents—continued

Chapter:	Specially Written Programs

Vol. 1 	3.1.1 	The MENU program
			3.1.2	The Printer program
			3.1.3	The INDEX program
			3.1.4	The STLOEOO program
			3.1.5	The STL150 program
			3.1.6	The STLDISC program
			3.1.7	The Word64 program
			3.1.8	The Keyboard program
			3.1.9	The FBACKUP program
			3.1.10	The QUICKCOPY program

Vol. 2 	3.2.1	The Silexicon program
	3.2.2	The STLRFS program
		3.2.3	The RUTILS program
 3.2.4	The SWRDMA program

Vol. 3	3.3.1	Macro Basic
			3.3.2	Virtual Memory Processor (VMP)
		3.3.3	VMP Application: Stock Control

Vol. 4 	3.4.1 	Solidisc Datafile

Vols. 5 to 7	The SILEXICON package

Vol. 5 	3.5.1 	The SIGEN dictionary generator

Vol. 6 	3.6.1 	The French Dictionary’.

Vol. 7 	3.7.1 	The German Dictionary

Vol. 8 	3.8.1	The Solimon program
		3.8.2	The 65C02 Assembler
	3.8.3	The Solitrace program
	3.8.4	The UVIPROM program
	3.8.5	The SPRITE program
	3.8.6	The SPRITE DEFINE program

Vols. 11 to 15 	Megagames
Chapter 1: System Overview
HOW IT FITS, HOW IT WORKS AND WHAT IT DOES

1.1	PRELIMINARY

The Sideways RAM system consists of:

•	A cartridge base which provides easy access to the computer address, data and control buses

•	A mini ROM cartridge which accommodates and protects any ROM from being damaged through handling

•	A sideways Ram card which conveniently replaces any ROM

•	A Solodisk Extension card which is basically more Sideways Rams (optional)

•	A SWR system disc which contains utility programs such as MENU, STL150, SILEX, INDEX, PRINTER, STLOEOO, etc.
(The supplied disc is formatted as single density, 40 tracks or 8o tracks to Acorn’s DFS specifications)

1.2	COMPATIBILITY WITH OTHER DEVICES

1.2.1	COMPATIBILITY WITH ACORN COMPUTERS ADD-ONS:

Solidisk hardware is completely compatible with all add-ons produced by Acorn Computers for the BBC micro, including Teletext Adaptor, Econet IEEE Interface Controller, 6502 Second Processor, Z80 Second Processor, Joystick and Ink Jet Printer.
On the Software side the BBC micro fitted with Sideways RAM will run ALL commercially available software from Acornsoft and other main producers.
Depending on your DFS, it will also run all or MOST of the Specially Written Programs.
Some Specially Written Programs (as detailed in Chapter 3) require a standard DISK INTERFACE.

1.2.2	STANDARD DISC INTERFACE

The standard disk interface is the SINGLE DENSITY DFS based on the INTEL 8271 Disk controller.
This system is the ONLY official one. It can be supplied by Acorn, Watford Electronics, Pace, Cumana, Viglen, etc. They are all the same EXCEPT for the Disk Filing System EPROM (DFS), which for reasons of copyright cannot be the same as Acorn’s own products. Here are some Single Density DFSs: Acorn version .90, .98, .9a, .9f, .9v, DNFS (as supplied with the Second Processors), DFS1.3  (Watfs), C.U.C. DOS and AMCOM.
1.2.3	DUAL DENSITY DISK INTERFACE:
This system is NOT official. The dual density disk interface allows you to select either single density or double density to store your software on to disk. Double density means that you can store twice as much data and programs on to the same diskette. In single density mode it allows you to run all commercial software diskettes.

THE DUAL DENSITY DISK INTERFACE IS NOT
COMPATIBLE WITH SOME IMPORTANT SPECIALLY
WRITTEN PROGRAMS

These are:
•	THE STLOEOO STL150, STLDISC and VMP1.2

Some dual density disk interfaces are: LVL, OPUS, MICROWARE, KENDA

	Note 1.2.1:
The following systems are NOT AT ALL COMPATIBLE and there will be NO FIX in the near future:

•	KENDA PROFESSIONAL DFS
•	THE HOBBIT
•	THE FLOOPY SYSTEM
•	THE WATFORD’S APEX
The reason is hardware related.

Note 1.2.3:
Solidisk Double Density DFS (DDFS 1.40) is compatible with ALL specially written programs.
The Solidisk Software Support Service will provide utilities to use diskettes made with Acorn’s Double Density Disk Interface for the Electron and the ABC series.

1.2.4	THE 6502 SECOND PROCESSOR:
The 6502 Second Processor comes with two new Sideways ROMs:
the DNFS and the High BASIC. The DNFS will replace the old DFS ROM and the High Basic the old Basic ROM.

SET UP YOUR SIDEWAYS FIRMWARE (SEE SECTION 3.!)
THEN SWITCH ON THE SECOND PROCESSOR. HOLD
THE CONTROL KEY DOWN WHILE PRESSING THE
BREAK KEY.

STLOEOO and STL50 will not operate with the Second Processor.

1.2.5	THE Z80 SECOND PROCESSOR
The Z80 Second Processor is quite a different animal; it will not run any of the existing software except Basic programs.
None of the specially written programs will run on the Z80 processor. Solidisk Software Support Service will provide the RAM disk facility to Z80 users in November.

1.2.6	THE SIDEWAYS RAM IS NOT COMPATIBLE WITH ANY SIDEWAYS ROM EXTENSION BOARDS:
It will be explained later, in section 1.5.2, why Sideways RAM is not compatible with any Sideways ROM extension board, including boards made by Watford Electronics, SIR, APTL and Romex.

Note 1.2.6:
Solidisk have produced a combined CPU booster, DMA chip for Hard Disk add-on, HIMEM at &8000 capability and up to five extra Sideways ROM sockets (plus three on the BBC board).

1.2.7	THE MACE JOYSTICK AND OTHER INSTRUMENTS CONNECTED TO THE USER PORT:
Devices making use of the user port are not compatible with Solidisk’s 32K system or larger. It is possible to switch off (and/or disconnect) the external devices, set all Sideways Software as per section 3.1, then reconnect or switch on the external device. It must be pointed out that the RAM disk facility will not work with any external devices connected to the user port.

Notes 1.2.7:
Solidisk’s own Double Density DFS has an auxiliary port which can be used by Sideways RAM in place of the user port but there is still work to be done on the software side.

1.2.8	WRITE PROTECT THE SIDEWAYS RAM CONTENTS:
You should not write protect the Sideways RAM as all specially written programs will not work..
Unfortunately certain Sideways ROMs such as Starbase, PRINTMASTER, etc., write into Sideways RAM to stop you using them in disk form. The trouble is they tend to corrupt other programs in Sideways RAM bank F.
The solution is either to use a bigger Sideways RAM (SWR32 or larger) and leave bank F unused when any of these ROMs are in your machine (in ROM or RAM) or alternatively install a write protect switch.

1.2.9	IF YOU SWITCH OFF THE COMPUTER COUNT UP TO TEN BEFORE YOU SWITCH ON AGAIN
This is to destroy the contents of Sideways RAM before the machine is powered. Always unlock the disk drive door if the machine is left unattended.
Count to 20 if your machine has the old black linear PSU (they were fitted on BBC issues 1 and 2 only).
1.3	
UPGRADING TO DOUBLE DENSITY DISKS:

If you consider upgrading your present DFS to Double Density or Super Mini (8in. look-alike), the DFDC (Dual Floppy Disc Controller) solution is your first choice. This is the only way you can get 100% compatibility with the new Acornsoft software on disk. New games such as Elite will not run on any other FDC than the 8271. It is also worth noting that serious software such as Scribe, Starbase, etc., do not exploit the extra storage provided by the double density format.

1.4	WHAT HAPPENS IF YOU DO NOT HAVE DISKS?

Solidisk can supply you with the STLDISC program in ROM, compatible with the 6502 second processor. A special Econet compatible version has also been produced.

1.5	HOW DOES THE SIDEWAY RAM WORK?

If you are already familiar with memory addressing on the BBC computer please skip paragraphs 1.5.1  and 1.5.2.

1.5.1	MEMORY ADDRESSING ON THE BBC COMPUTER:

The BBC computer is built round the 6502 CPU, ICI on the main processor board. The 6502, like many other CPUs, uses 16 bits to address its memory. Each bit is capable of being either o or 1, resulting in the number of 2 (for zeroes and ones) to the power of 16 (for its 16 bits). In other words it can address 2x2x2x2x2x2x2x2x2x2x2x2x2x2x2x2 = 65,536 locations or bytes. To make it simpler one can count in chunks of 1024 bytes or Kilobytes or Kbytes—65,536 are equal to 64k bytes.
The BBC 64k bytes are divided into three main areas: from the bottom up: the RAM area, 32k bytes, then the Sideways ROM area, 16k bytes, and the MOS area the remaining 16k bytes.
The term RAM stands for Random Access Memory or memory that you can write to and read from. ROM is, on the contrary, Read Only Memory or permanent memory, non-erasable and written only once in the manufacturing process. The term MOS stands for Machine Operating System. Inside the BBC computer each memory area has a predetermined role: the RAM is the general working space for all sort of programs, the Sideways ROM area usually contains BASIC, Disk Filing System (DFS) Wordprocessor, etc., whereas the MOS keeps the machine busy and responsive.
On page 498 of your USER GUIDE you will find a map showing the RAM on the right-hand side of the computer board and the ROMs just below it.

1.5.2	THE SIDEWAYS ROMs

If you open the computer case and remove the keyboard you will notice that the ROM area actually has five sockets. Probably three of them are factory fitted: the leftmost one is the MOS, next to it is the BASIC ROM and the DFS ROM. They are all essential to the computer. You could compare the MOS with a landlord controlling some 32k bytes of land (RAM) and a row of four socket/shops (Sideways ROMs).
The socket/shops may be occupied (by BASIC, DFS, etc.) or empty.
Every time you power on or press the BREAK key the MOS landlord checks on his tenants; he looks and tries to identify a copyrighted ROM. If this copyright (denoted by the word ‘(c)’ programmed on to the ROM) is there, the socket/shop is occupied, otherwise it is empty.
The socket/shops are organised in a row. The MOS handles the task of choosing a particular shop at any time to be placed in the 6502 memory in the manner of a slide projector. The 6502 then ‘sees’ that socket/shop-slide. The hardware and software to perform all this Sideways ROM slide show is quite complex, but as far as the user is concerned the service shop/program such as Word-processing, electronic filing, Speech, Graphic, etc., is brought to him/her automatically by the MOS upon request.
Although only four socket/shops are provided on the standard BBC computer the MOS is capable of controlling up to 16 socket/shops. In other words there is still commercial land to build an extra 12 shops. You guess that many firms will try to supply the extra socket/shops. They can be REAL socket/shops (such as on Sideways ROM extension boards), similar to the ones already installed or MUTANT socket/shops such as the Sideways RAM system.
The difference is: you PLUG ROM SOFTWARE CHIPS into REAL sockets, you LOAD the same software from your DISKETTES into Sideways RAM which then MUTATE into ROM chips.
This explains why you cannot have both an extension ROM board and the Sideways RAM system. This is like selling the same land to two different companies.

1.5.3	WHERE IS THE SIDEWAYS RAM ON THE MEMORY MAP?

The Sideways RAM system consists of additional RAM sharing the sideways area (&8000) to &BFFF) in the BBC computer
	with Sideways ROMs.	-.	-
	Unlike Sideways ROMs the contents of Sideways RAM have to be loaded from disk (or tape or Econet) and will be lost when the power goes off. If you load into Sideways RAM memory the image of a Sideways ROM, the Sideways RAM will then be identical to the ROM, a little like a video cassette recorder.

You can also load into Sideways RAM specially written programs such as those supplied by the Software Support Service.

Fig.1 illustrates the memory map of a BBC computer fitted with Solidisk Sideways system.

1.5.4	READING AND WRITING INTO SIDEWAYS RAMS

Under normal circumstances you should not be concerned with reading or writing into Sideways RAMs. This job can be left to the MOS alone. You simply select the program/software and it loads (writes) itself in one or two seconds. Unlike having a ROM extension board, you lose one second each time, but there is no limit to the number of programs you can use.
The built-in hardware to select any one of the Sideways RAM is the pair &F4-&FE30 for reading, &FE62-&FE60 for writing. This dual selection allows one Sideways RAM or ROM to load software into another Sideways RAM.
If you are writing your own system software the rule is simple:
to load software into a particular Sideways RAM, store number 15 into &FE62 and the Sideways RAM number into &FE60. To read out the contents of any ROM or RAM store the Sideways RAM number into &F4 and &FE30.
For more technical details please refer to section 3.2.5 or the SOLIDISK TECHNICAL MANUAL.

1.6	USES OF SIDEWAYS RAM:

The first use of Sideways RAM is to run Sideways Software.
Broadly speaking there are two categories of Sideways software:
Sideways ROMs and Specially Written Programs (SWPs).
Sideways ROMs are commercially available. You will have to transfer them to disk before using them with the Sideways RAM system.
Specially Written Programs (SWPs) are available only on diskettes, ready for use with your Sideways RAM system. At present most SWPs are supplied by the Solidisk Software Support Service. They are originally developed by Solidisk’s engineers to support the products, but almost all new material is bought from Sideways RAM users.

1.7	FREE SOFTWARE FROM SOLIDISK

It is important that you know about the Solidisk Sideways RAM Software Support Service.
For every Sideways RAM board sold £1 is spent on SWPs. When you buy your Sideways RAM system you receive one free diskette. You can buy extra SWR UTILITY DISKS to complete your collection. SWR UTILITY DISKS are organised in volumes, Volumes 3 and after have their own SUPPLEMENT to this MANUAL. Software available on these disks is not for sale: it is free to any user and is given with as much explanation

as possible. You can exchange old diskettes for new diskettes at our stand at any Acorn exhibition or, for a small media charge of £2.50, obtain them direct from SOLIDISK. Each month it is estimated that more than 700 man hours are spent on SWPs, all paid for by new Sideways RAM users.

Specially Written Programs fall into four main categories:

1. ROM overlays such as the 65C02 program. They add extra facilities and commands to existing ROMs. These programs are only useful if you possess the relevant ROMs. The 65C02 assembler requires BASIC 2, the STL150 requires the Acorn DFS .90, the WORD64 requires Wordwise 1.17.

2. Language Programs such as the Solimon, Solitrace or Keyboard; Service Programs such as the STLOEOO or the Printer program. They are structurally similar to ROM software and will run on any BBC computer.

3. Modular or Procedural programs such as the Solidisk Datafile, the Stock Control program and the Macro Basic. These programs consist of several disk resident modules (Solidisk Datafile) or libraries of Procedures (Macro Basic) copied into Sideways RAM. These programs work with MAINFRAME methods; they download wanted PROCEDURES from Sideways RAM and are capable of outperforming the 6502 Second Processor.

4. Fast disk access programs such as Silexicon and WORD64. These programs depend heavily on the speed of assessing a great number of small portions of data so that although you can use them with twin disk drives they are 100 times faster when using the SOLIDISK.

Note 1.5.1:
All ROM software can have a SWP version, but no SWP will work in ROM form.
If you would like to contribute your own program please ring Southend (0702) 354674. The usual rate of payment is £1 for every four bytes of machine code.

Chapter 2: System Installation

•	Check the utility disk
•	Open the computer and install the Sideways RAM 
•	Test the Sideways RAM

2.1	CHECK THE UTILITY DISK

2.1.1	BOOT UP THE UTILITY DISK
Insert the utility disk and boot up the disk by holding down the Shift key while powering on the computer. Alternatively you can hold the Shift key down while pressing the BREAK key. If a disk error occurs check the disk label The disk label SWR40T requires a 40-track disk drive, SWR80T an 8o-track disk drive. Switch your drive if necessary and repeat. You should see:
BBC Computer 
Acorn DFS 
BASIC 
CHAIN “MENU” 
PLEASE WAIT...
The MENU program is a sort of HELLO program. Its purpose is to illustrate the way the Sideways RAM is integrated into your computer. More about the MENU program later on.

2.1.2	MAKE ONE OR SEVERAL BACKUPS OF THE UTILITY DISK
Label one of these the ‘LANGUAGE DISK’. Then *WIPE out all files on this disc except:

•	!BOOT
•	MENU

2.1.3	TRANSFERRING ROMs TO THE LANGUAGE DISK:
Boot up the LANGUAGE disk as in 2.1.1
You should now see:
SIDEWAYS SOFTWARE FIRMWARE INSTALLED
0
4
8
C BASIC*	1	2
5	6
9	A
D DFS*	E (*)	3
7
B
F (*)	
	o Sideways RAM bank(s) available		
	SWR40/01/10
DISK DIRECTORY		
A !BOOT	B MENU	C
E	F	G
I	J	K
New disk, press?	Save SWR, press @		D
H	

Enter letter

(* ) NB:
This MENU refers to the BBC computer before the base unit is installed. After this installation BASIC and DFS will be moved up four lines, i.e. occupying box o and box 1.
Secondly the positions of the different ROMs may be different depending on the actual setting of your machine. For example if you have TORCH Z80 card the MCP chip would appear in box 2 or 3.
PRESS THE ’@’ KEY
The computer prompts
@—From SWR slot (0 to F)?

Look at the top part of the screen. Choose ‘D’ for example. You should see:

SAVING DFS in red.

The screen refreshes. The disk directory will now contain DFS. If you want to save any SWR on to disk, CHOOSE ‘@‘ and then SUPPLY the BOX NUMBER as it appears in the TOP PART. Please note that the only acceptable reply in this section is 0 . . . 9 then A, B, C, D, E or F in capital letters. Giving a box number which does not contain a name results in an error.
Repeat the previous step several times to get used to the system.

2.2	CHECKING THE BASE UNIT

The base unit is a module measuring about 2in. x 2in. x 2in. with 11 wires. The base unit is meant to be plugged into the rightmost ROM socket and the wires connected to the main computer board.
Check all the coloured wires against diagram 2.
Check all the pins are straight; press them against a flat surface to straighten the pins if necessary.

2.3	CHECKING THE MINI ROM CARTRIDGE

The Mini ROM cartridge is a small PCB with only one 28-pin socket soldered to it. The card has a double row of ‘fingers’ and is meant to be inserted into the (black) edge connector of the BASE unit. The finger portion also has a slot which will mate with the plastic key position on the edge connector. Later on, with the slot towards the South (nearer to you), you MUST install your ROM so that the notch on the ROM is facing NORTH (see diagram page 12). We cannot assume any responsibility for damage caused to your ROMs by wrong positioning. If you are at all unsure, please ring us.

2.4	CHECKING THE RAMCARD
The RAMCARD is the long board containing all the chips with a double row of ‘fingers’ on the right-hand side. Check that there is not wrapping foil stuck to any part of the card.

IMPORTANT:
WRONG CONNECTION WILL NOT DAMAGE YOUR
COMPUTER BUT MAY LOCK IT UP. ALWAYS PROCEED
ONE STEP AT A TIME. CHECK CAREFULLY BEFORE
MOVING TO THE NEXT ONE. YOU MAY EVEN SEND US
THE COMPUTER AND £12 FOR SECURICOR COLLECTION,
OR, EVEN BETTER, BRING YOUR COMPUTER TO US
FOR FREE FITTING. NOTE OUR TELEPHONE NUMBER:
SOUTHEND (0702) 354674

Note 2.4.1:
If the coloured wires do not match diagram 2, either return the base unit for replacement or mark the wires according to their position in diagram 2, thereby disregarding the colours.

2.5	REMOVE THE TOP CASE
2.5.1 Undo the four screws labelled ‘FIX’, two at the rear of the computer, two under the keyboard.
2.5.2 Undo the two fixing bolts. Slide the keyboard to the front, revealing the ROM sockets. They are found in the right-hand corner. Three of them are factory fitted with, from left to right: the MOS, the BASIC (black plastic ROM) and DFS ROM (usually a brown ceramic EPROM with a sticker over the glass window). If you have already got all five sockets filled up, remove the least frequently used (NOT any of the three above) to make room for the base unit. However, copy it on to the language disk using the MENU program (SEE SECTION 2.1).

2.6 	INSTALL THE BASE UNIT
The base unit plugs into the rightmost sideways ROM socket on the computer board.
Check all the pins of the base unit. Straighten them with a small screwdriver against a flat surface (kitchen table) if necessary.

Note 2.6.1:
If you have an issue 3 board you will notice that below the rightmost ROM socket there is a small resistor (R153 or R163 100 /Ohm. 1/4 watt) not found on the issue 4 boards and later boards. If you have a soldering iron you may cut R163 and bridge the two ends. Otherwise simply bend it down VERY gently until there is enough clearance for the base unit. If you also have a long blue capacitor in the vicinity you may simply cut it out. The resistor and capacitor are suppressed on later issue boards.

2.6.2	POSITION THE BASE UNIT so that the card connector (colour black) is to the right and all the pins are just above the socket receptacles. If the pins are slightly splayed out, press them against a flat surface like the edge of a table to get them exactly in line. Press the base unit until firmly down.

Note 2.6.2:
When pressing down the base unit, the computer board may flex a little because there is no spacer support right at the corner.

2.6.3	POWER ON
The Base unit should not have any effect on the computer.

2.7 	USE THE MINI ROM CARTRIDGE
The MINI ROM cartridge provides an easy way of inserting and removing Sideways ROMs. When installing any ROM on to the cartridge, CHECK:
a)	No IC pin is bent or lies outside the socket.
b)	The ROM has the same orientation as if it were socketted on the computer board. The BOTTOM of the cartridge has the word STL and the key slot.
Insert any sideways ROM or even the Basic ROM into the Mini ROM cartridge. Insert the cartridge into the card connector. Make sure that the ROM is orientated in the same way as it was when installed an the BBC board, i.e. with the notch facing NORTH. Power on the computer. Your Sideways ROM should still be running. If not, check for bent pins on the base unit, bent IC pins on the Mini ROM cartridge, and/or repeat the operation with another ROM. If you are unsuccessful ring for advice. If all is well and the Sideways ROM is still running, enter:

*BASIC

Insert the LANGUAGE DISC and CHAIN “MENU”. The MENU should show the ROM in the Mini cartridge in slot F;

Note 2.7:
At this point 28 pins of the base unit have been proved to be making good contact with the rightmost ROM socket. However, the Sideways RAM system requires another four signals as we shall see later.

2.7.1	POWER OFF the computer and remove the Mini ROM cartridge.

Note 2.7.1:
The base unit is simply inserted into the ROM socket. Therefore it is advisable that you keep the base unit steady in the ROM socket with one finger while pulling out the Mini ROM cartridge. This will prevent the base unit from being unnecessarily detached from the socket.

2.8 	CONNECT THE CONTROL WIRES OF THE BASE UNIT
If you prefer to solder the wires, please UNPLUG the computer power lead before soldering. Give a tap on the metal casing of the PSU with the soldering tip to discharge eventual accumulation of static electricity. If you want to use intermediate 40-pin IC sockets for connecting wires to IC1 and IC69, prefer JERMYN make or MOLEX sockets (JERMYN part number J23040). Radiospare turned pin types, although superior in quality, are NOT SUITABLE as there is not enough room to accommodate both IC legs and wires.

a)	THREE WIRES TO THE 6522 (1C69):
Pins 10, 11 and 12: Locate IC69 (6522, South of IC1). Remove it with a small screwdriver, push the green (pin 10), yellow (pin 11) and orange (pin 12) wires into the socket. Then line up the left row of IC pins in the socket so that the three coloured wires are held in place, together with the IC pins 10, 11 and 12. Exert a little pressure on the right of the IC to align the right-hand row of pins then press down firmly. The wires will be retained in the socket at the same time as the IC pins.
This operation is, in fact, quite easy. but if you are really wary simply raise the IC about 5mm. so that the pins are still lined up. Push the wires in carefully and press down on the chip. This method does not ensure you a ‘tight fit’ but, in our experience, is perfectly adequate.

b)	TWO WIRES TO THE 74L5163 (IC 76):
These are pins 11 (third up on the right) and 12 (fourth up). Locate 1C76 (74L5163 under the keyboard tail). Remove or raise the IC, push the two wire terminals into the IC socket (yellow to pin 12, orange to pin 11) and press the IC down into the socket. If this IC is soldered to the board (issues 4 and 7) use the blue socket to extend the legs of the IC and simply, while holding the socket with two fingers, push the wires into the same position (see diagram).
Press ‘@‘ and then ‘F’ to save this ROM on to disk.
This is the trickiest operation on the whole, so take your time to make sure that the blue socket legs are all correctly mating the IC legs and that the wires are not too loose. If you have a soldering iron solder the wires directly to the IC legs.
You have gone through the worst and are left with only six wires to fit.

c)	TWO WIRES TO THE 6502 (IC1):
Two of them, yellow and orange, will go to the 6502 processor chip, North of the 6522 (IC69, see section 2.8a). The orange wire will be attached to pin ~, second down on the right-hand side. The yellow wire will be attached to pin 39,  the seventh pin down on the right-hand side. Raise the IC, push in the two wires and press down on the IC exactly as per section 2.8a above.

c)	FOUR WIRES TO S20 and S22:
Locate the two jumper blocks labelled S20 and S22 on the BBC board. They are about half an inch to the left of the 6522 (1C69). S20 is South of S22. Remove the jumpers (colour black or blue—they are both initially in the North position). Replace them with the white-ended plugs.

d)	DECISIVE TEST: POWER ON THE COMPUTER! 
WATCH OUT FOR THE DREADFUL ‘Language?’ 
If you get ‘Language?’, then:

2.8.1	The base unit was pulled slightly out of the ROM socket when you removed the Mini ROM cartridge.

	2.8.2	You may have put the white-end plugs the wrong way round.

2.8.3	The step (on 1C76) failed, the yellow and orange wires are not making proper contact with the IC legs. Possible causes: loose blue socket, reversing the yellow and orange wires or one of them has been detached.

Go back to the previous step. If you are not successful send back the base unit for replacement.
Power off the computer. Keep the two jumpers in a safe place.
Lay them on the keyboard PCB and seal with sticky tape.

2.9	INSTALL THE RAM CARD
Insert the RAM CARD in place of the Mini ROM cartridge.
Power on. The RAM card should not affect the computer.
Clear any ‘burr’ sometimes left over in the card keyslot; make
sure that the RAMCARD is fully engaged.

2.10	TESTING THE SIDEWAYS RAM
Insert the utility disk and press Shift Break to boot it up. Just under the ‘Sideways Firmware Installed’ panel you will notice the number of Sideways RAMs in your system. If you have a SWR16 this number is 1, a SWR32 gives 2, and a Solidisk gives 8.
If this number differs, the installation is not right. Check as follows:
2.10.1 MENU SHOWS 0 SWR BANK
Check the two wires going to the 6502. Make sure that the ORANGE wire goes to pin 39’ North of the YELLOW wire. Make sure that none of them is detached from the IC socket.
Detach the three wires going to pin 10, 11 and 12 of IC69. Start again. The MENU program should show one Sideways RAM bank available; otherwise the base unit is faulty.

2.10.2 	MENU SHOWS ONE SWR BANK WITH THE SWR32 OR
	THE SOLIDISK:
Check that the GREEN wide is not detached from pin 10 of the 6522 (IC69) or connected to a wrong place.
Also check that the green, yellow and orange wires go into their correct places on the base unit, from left to right.

2.10.3 	MENU SHOWS TWO SWR BANKS WITH THE SOLIDISK:
Check that the YELLOW wire is not detached from pin 11 or the 6522 (IC69) or connected to a wrong place.

2.10.4	MENU SHOWS FOUR SWR BANKS WITH THE SOLIDISK:
Check that the orange wire is not detached from pin 12 of the 6522.
Check that the yellow and orange wires going to 1C76 are not in the wrong way round. Compare their position with the diagram and correct if necessary.

2.10.5 	MENU STILL DOES NOT SHOW THE RIGHT NUMBER OF
SWR BANKS:
The base unit may be faulty. Please ring us for technical advice
(BETWEEN 4.30 and 5.30 p.m.)

2.10.6 	TESTING ONE SWR BANK (STANDARD TEST
	FOR SWR16):
Power on the computer and enter:
*PRINTER <RETURN>
You should see:
BBC computer
Printer Buffer
Acorn DFS
BASIC
	>

Now enter

LOAD “MENU” <RETURN> 
<control>—B
LIST <RETURN>
The MENU program will be listed. Do not turn on your printer. The listing will then be forced into the printer buffer. LIST it again a second time and a third time. The Shift lock light will then be lit, signalling that the Printer Buffer is full.

Now turn on your printer; it win start printing immediately.
	To stop printing press the BREAK key.
	A faulty RAM card will not go through this test and will ‘hang’
	the computer.

2.10.7	TESTING THE SOLIDISK:
	Place the utility disc in the disc drive and enter:
	*E. L <RETURN>
	You should see displayed a list of function key settings.
	Hit the space bar.
	Enter:
	*.1 <RETURN>

	You should see:
	190	(00)
	Drive: 1	OPTION :0
	Directory:$	Library:$
	>

	If the number on the top left corner is not ‘1 go’ enter:
	*BANK E <RETURN>

Then * .1 again. The command *BANK sets the Solidisk RAMTOP. More about the RAM DISC later.
	Power off.

2.11	REPLACE THE KEYBOARD AND THE TOP CASE

Chapter 3: Solidisk
Specially Written Programs

**NOTE: Certain programs are overlays for Sideways ROM software, such as STL150 for the Acorn, .90 DFS and WORD64 for Computer Concepts, due to their popularity. Their use implies that the above-mentioned ROMs be installed on your system. They are not in any way essential to the performance of Solidisk Sideways RAM system. They merely add some desirable facilities to the existing features of the ROMs. The advertisement of these programs does not infringe the Sale of Goods Act with regard to the description of the merchandise. Specially written programs as supplied free to all Sideways RAM users are divided into volumes. Each volume i5 recorded on a 4o-track single density disk format compatible with all versions of Acorn disk filing systems. In some circumstances we may be able to supply these volumes or. 8o-track diskettes each containing two consecutive volumes. Volumes 1 to 10 are intended to be the basic software library for the Solidisk Sideways RAM system. Volumes 11 and above are Source Code and Technical Documentation; they are very useful if you intend to write your own Sideways Software. Volumes 20 to 30 will be games software.
At present Volumes 1 to 9 are out; volume 10 is under preparation; Volumes 11 to 20 are not in production due to delay with the TECHNICAL MANUAL.
Although the software is free, as it is paid for every month by new Sideways RAM users, the media (diskettes) are not. Solidisk Software Support Service will charge £2.50 for every new diskette to cover the cost of the media. Packing and postage for any number of diskettes is fixed at £1 per parcel.
If you need to enquire about the Software Support Service please telephone Southend (0702) 354674, preferably in the afternoon between 4.30 and 5.30. Do not worry about the telephone lines being jammed 
—we now have ten lines open for customer enquiries.

	3.1	VOLUME 1

3.1.1	THE MENU PROGRAM AND THE COMPUTER RESOURCES
The MENU program presents the computer resources in three parts:

•	The Sideways Firmware Installed (the top part)

•	The number of Sideways RAM banks still available and the disk title (the middle part)

•	The disk directory (the bottom part)

3.1.1.1	FIRST THE SIDEWAYS SYSTEM
The BBC computer can use up to 16 Sideways ROMs or RAMs. The Sideways ROMs axe normally inserted into Sideways ROM sockets. The Sideways RAMs do not have sockets, of their own but use the rightmost socket collectively. The machine does not make any distinction between ROMs or RAMs. If there is any Sideways System software in the socket the name of the software will be displayed in the corresponding box. For example the screen shows that the BASIC ROM is in the leftmost socket (number=0), the Acorn DFS ROM is in the next socket (number=1). When you power on the computer there is no SWP or ROM program loaded into Sideways RAM and 13 boxes from 3 to F are empty. Later on, when you load in any Sideways program such as STLOEOO, the name of the RAM (or ‘ROM’) will be in one of the 13 boxes from 3 to F.

Note 3.1.1.1
Although 16 Sideways RAM banks are available with the 256k Solidisk only 13 banks are normally usable by the MENU program. The remaining three banks (0, 1 and 2) are reserved for RAM DISK use.

3.1.1.2	THE SIDEWAYS RAM BANK(S) AVAILABLE
This information shows you how many ‘Languages’ or ‘Services you can install into your system before you start using the computer.

3.1.1.3	THE DISK TITLE
The disk title contains the creation date of your Utility disk. This User Manual refers to the current diskette (OCT. 84).

3.1.1.4	THE DISK DIRECTORY:
This is the middle part of the screen. All disk filenames are displayed in alphabetical order. A green letter to the left of each filename facilitates your choice.

3.1.1.5	SELECTING A PROGRAM:
To select a file press the corresponding green letter. If the file is a text file it will be printed, a Basic program CHAINED, a machine code program will be RUNned or loaded depending on other criteria. Sideways software is treated differently. It will be loaded one program at a time into consecutive Sideways RAM banks (or boxes), starting at the lowest priority bank (or box). As soon as a sideways software is loaded the name will appear in the corresponding box. When you finish choosing your software press the BREAK key. But try this first:
1)	Press the letter A. 
		You should see:
	A-PRINT !BOOT (Y/N)

2)	Press Y
The !BOOT file will be displayed on the screen, i.e. PAGE=&100:CHAIN “MENU”

3)	Press the letter K
	K-PRINT help! (Y/N)

4)	Press Y
The help! text will be displayed.

5)	Insert the LANGUAGE DISK. Press the? 
	You will see printed: New disk, please wait…
The top part of the screen does not change but the directory of the new disk will be displayed.

3.1.1.6	RUNNING FROM BASED SOFTWARE
	Under the ‘Sideways Firmware Installed’ panel you will find the number of Sideways RAMs available or the number of Languages and Services you can select from your diskettes to be part of your machine at any time. You can choose any language or service in direct mode or set up everything you need using the MENU program.

3.1.1.7	DIRECT LOADING OF SIDEWAYS SOFTWARE
	Ideal for the 16k Sideways RAM (SWR16) and quite useful with larger units, the direct mode loads into Sideways RAM bank (or box) F, the last one.

	Note that you do not have to load into Sideways RAM everything before you start using the computer. To load any Language or Service enter ‘*‘ followed by the filename. The screen will then be cleared and the Sideways RAM ‘F’ loaded.
	Evoke the Language or Service with the appropriate * command as usual.
	Example:
	To load and run STLOEOO, enter:
	*STLOEOO <RETURN>
	To load and run VMP1.0:
	*VMP1.0 <RETURN> 
	etc.

3.1.1.8	USING THE MENU PROGRAM TO SET UP SIDEWAYS SOFTWARE
	The MENU program helps to set up the computer resources BEFORE you start using it.
	Enter:
		CHAIN”MENU” <RETURN>
	In the disk directory section there is a green letter in front of each filename.
	Press the letter in front of any Sideways ROM file. Your disk should whirr away a couple of seconds and the name of the

Sideways ROM should appear in box 8 if you have a Solidisk, in box E if you have a SWR32, and in box F if you have a SWR16. That is now part of your Sideways Firmware. Choosing a second Sideways ROM file will load it automatically into the next Sideways RAM, i.e. box 9 (or F with the SWR32). As more Sideways ROMs are being loaded in successive banks the number of Sideways RAMs is decreased each time until reaching 1 (box F). This Sideways RAM box is always kept open, like a free port. You can always load into it anything at any time. To warn you that the system is reaching its free port a message will be displayed.

CHANGING THE SIDEWAYS RAM BOX:
	If you want to load your Sideways Software in a particular ‘box’ you can use the left or right triangular brackets (they are on the left of the ‘?‘ key). The selected box will be indicated just below the number of Sideways RAMs.
	To leave the MENU program simply press the BREAK key. Now enter:
	*HELP <RETURN>
	All your software titles should be displayed.

3.1.1.9	MODIFYING THE MENU PROGRAM
	If you have a double-sided disk drive you may want to change line 120 to read PROCdrive (2) after formatting and saving some programs on the second side of the diskette. Please remember not to copy this modified MENU on to single-sided diskettes as it may look in vain for a non-existent directory.

3.1.2	THE PRINTER BUFFER PROGRAM:
	You can load the Printer Buffer program from the Menu or directly by: *PRINTER.
	The program intercepts the put, remove and count characters sent to the printer. The Printer Buffer will feed your printer in the background, so you can use your computer immediately. It is very useful for any application.
	Your printer is turned on by Control-B (or VDU2) and off by Control-C (or VDU3) as usual. The Break key will stop printing and clear the printer buffer.
	You cannot have two Printer Buffers at the same time.

3.1.3	THE INDEX PROGRAM

3.1.3.1 USE:
	This programme allows you to set up a ‘Mailing List’ as simply as possible. You can also use the program for similar ”look-up” applications such as price list, stock inventory, patient prescriptions, etc. You can INDEX any data file containing up to 1,100 records of any length.

3.1.3.2 DATAFILE FORMAT
	Datafiles that can be indexed are pure ASCII or textfiles and should be created by a wordprocessor such as Wordwise. Some wordprocessors require you to SCREEN or to EXEC (other words for * SPOOL text to disk). You can also make up an indexable datafile using existing databases by SPOOLing all the records required to disk. You then get a printout of it, count the number of fields, etc., and give appropriate answers to the INDEX program. There is a sample datafile ‘MAIL’ on your utility disk in which:

•	Every record is in plain ASCII. Each record is separated from the next one by double carriage return.

•	The first field (‘name’) is used for indexing; seven characters or spaces are skipped before the ‘Most Significant Letter’ is picked up for sorting. Other fields like address, town, etc., can be anything and any number and organised in any manner.

3.1.3.3	INDEX IS A SEQUENTIAL FILING SYSTEM
	The difference between INDEX and other databases is that INDEX accepts any number of fields and any record size as far as the number of records does not exceed 1100. Fields are written successively, as are records. Any character—such as the carriage return—can be used to separate fields. Any two characters such as / <RET> or two field delimiters (empty field) can be used to separate records. The INDEX allows you to lay out your datafile exactly as you would do on a piece of paper.

3.1.3.4 HOW TO USE THE INDEX?
	Copy INDEX and MAIL to a blank formatted disk.
CHAIN’ ‘INDEX” as with any ordinary BASIC program. Press <RETURN> to each question as it is set up already for use with the default parameters.
You should then see:

BBC computer
MAIL :INDEX
Acorn DFS
BASIC
	>

MAIL is the datafile chosen by default. The Index file of MAIL is now created in Sideways RAM. Later on, when you use the program with your own datafiles, you may wish to make up Index files for STOCK, PRICES, PRSCRPT, etc.
Now enter: *INDEX

The disc drive will be whirring for about 15 seconds. Index searches through ‘MAIL’ for records and field delimiters, saves these in Sideways RAM and copies itself to your disk under SI.MAIL (SI stands for Sequential Index).
You can check this point by *CAT. Now enter: *LIST
You should see all records displayed in alphabetical order. Switch off the computer.

3.1.3.5	INDEX IS ALWAYS READY:
Switch on the computer and enter *SI.MAIL.
Your computer is ready.
INDEX has some built-in ‘star’ commands. Please try:

3.1.3.6	*LIST
This command will list your datafile in alphabetical order according to the criteria input to the INDEX program. In the MAIL example the default sort criterion was the SURNAME. In field 0, skip 7 characters, including spaces. after the beginning of the record. E.g.: Mr 3 F Kennedy’s record will be sorted by the letter K. (There are seven characters, including spaces, before the letter K or Kennedy.) “If you wish to sort MAIL by the town, answer 5 to field, 0 to ‘before the Most Significant Letter’.

3.1.3.7	*GET
This command displays the next record in order. You would say *LIST actually performs *GET from the beginning to the end of the file. There is a little bit more to *GET. If a name (or a town in the second example) is also given. *GET will rather display the best matching record. So *G K (or *G. KEN or *G. KENNEDY) would display:

Mr J F Kennedy
13 Friday Road
Danbury
Essex SS2 5JQ

Other variations of these two commands are:

*LIST <n.mail>
This command will list MAIL but also spool the output to the file <n.mail> for other use as mail merge.

*PRINT
This is identical to *LIST but activates also the printer.

*STEP
This is opposite to *GET; this command will display the record before the last one.

3.1.3.8	ADDING MORE NAMES AND ADDRESSES
The MAIL sample datafile is done with WORDWISE. You can edit it as you like. Other Wordprocessors will require that you create a new document and MERGE the MAIL file. For compatibility you must SPOOL your datafile to disk before indexing it.
For example, you want to keep a diary about everybody you know. Firsts using a wordprocessor alter all the names and addresses to real names and addresses of people you know. Every time you need to refer to Mrs. X. simply enter *G. X.
Every time something happens to Mrs X, use your wordprocessor and simply add extra text lines to her record.

Note 3.1.3.8:

You will have to *INDEX every time the datafile is changed as the places where INDEX expects to find your records are changed.

3.1.4	THE STLOEOO PROGRAM

STLOEOO IS A DISK FILING SYSTEM
The STLOEOO is only compatible with the Single density 8271 disk controller as with all Acorn Disk Systems (not with any Double Density controller). STLOEOO is not capable of loading Sideways Software.
You can load STLOEOO from the MENU or simply by:
*STLOEOO <RETURN>

Note 3.1.4.1.:

Solidisk Double Density Version of STLOEOO is contained in volume g under the name of DDFSEOO. Although functionally identical, they are not interchangeable. Users of STL DDFS must destroy the STLOEOO program and replace with DDFSEOO on all language diskettes. Disk corruption may result if STLOEOO is wrongly used on the DDFS.

3.1.4.2 STLOEOO SETS PAGE=&EOO

The normal DFS requires memory workspace between &OEOO to &1900 and sets PAGE at &1900. STLOEOO uses Sideways RAM for its workspace, thus leaving PAGE at the lowest possible value of &EOO, increasing memory for BASIC, VIEW. BEEBCALC, etc., and allowing tape-based programs to run on disk system.

3.1.4.3 STLOEOO HAS EXTRA DFS UTILITIES

Enter *HELP DFS and *HELP UTILS. The list of DFS commands and utilities will be displayed.
You will notice that STLOEOO has three extra commands:
*F40 (disk formatter for 40-track drive), *F80 and *VERIFY To format a 40-track disk, switch on the computer and enter:

*STLOEOO <RETURN>

Insert a blank disk into drive 0. Enter:

*ENABLE <RETURN>
*F40 <RETURN>

To format an 8o-track disk, enter:

*ENABLE <RETURN> 
:F8o <RETURN>

The drive number must be supplied if the blank disk is not inserted in the current drive:
e.g.	*F8o 1 <RETURN> 
To ‘kill’ it, enter:
?&8006=0 <RETURN>
<BREAK>

To revive it, enter:
?&8006=1300 <RETURN>
<BREAK>

This method is correct for all types of Software running in Sideways RAM. Location &8006 contains the ROM type. If you want to kill any language or service program in the Sideways RAM system, store 0 at &8006 and to revive it store 130. For example: to kill the STLDISC in Sideways RAM number 14, do the following:

?&FE62=15:?&FE60=14 <RETURN> 
?&80060 <RETURN>
<BREAK>

3.1.5	THE STL150 PROGRAM:

This program allows PAGE at 0E00 and up to 150 directory entries per disk surface (300 on a double-sided disk).

3,1.5.1.	STL150 IS AN OVERLAY FOR ACORN .90 DFS

The STL150 therefore requires Acorn DFS .90
3.1.5.2	STL150 ALLOWS UP TO 150 FILENAMES PER SUE:
Word processor users can take advantage of more directory entries, up to 150 per side. This process is absolutely transparent to normal LOAD and SAVE. Diskettes formatted with STL150 are fully compatible with other DFSs.
The extra capacity of the directory comes from the use of five ordinary catalogs: STL0 to STL4 occupy the totality of track 0. When a filename is requested, STL150 looks first in the current catalog. If the filename is not there it goes back to the ‘root’ of this catalog which can only be one of STL0 to STL4. It then tries other roots until either the filename is found or will have to be created. This process is transparent and extremely fast. STL150 will create as many roots as required.
Each root STLx has its own domain on the disk and is protected against accidental DELETE.
STL150 has its own *F40 and *F80 commands to prepare your blank diskettes. STL150 can read and write normally formatted disks but cannot extend their directories. Other DFS can only read and write specially formatted disks in their current domain. You MUST NOT *compact an STL150 disk using another DFS. The disk is normally protected against accidental destruction, but we cannot guarantee it is tamperproof.
STL150 has a very fast *COMPACT to enable it to cope with the large disk size and large number of files. The disk head does not return to track 0 while COMPACTING. Therefore you should never press the BREAK key while *COMPACTING.
The command *STLx will move the partial directory STLx to be stored in sectors 0 and of the disc, thus making it accessible to any other DFS. It will not affect the STL150 as the latter scans all five directories before every file operation. For example: if you want to let your friend use your disc on his BBC to read files held in part 3 of your disc, do *STL3. If this STL3 has not been created you will get ‘Bad Cat’ Error.

3.1.5.3	FAST LOADING STL150
While STL150 is still in your computer, save it with:
*SAVE STL150C 8000+4000 D9CD
You can give any other suitable name to avoid the original STL150 program being deleted. From now on, simply enter:
*STL150C <RET>
STL150 should be reinstalled in your machine. 
Using STL150(C) sometimes may surprise you.
	Suppose you have specifically formatted a disc with the STL150 and you have created on this disc 50 files. This disc contains also the STL150C on the first directory (STL0). The following day you switch on the computer and type in:

	*STL150C <RETURN>

You will certainly get a ‘Bad command’ error. If you enter *.<RETURN> you will not find STL150C on the current catalog.
The reason for this strange situation lies in the fact that STL150, the new catalog, is the one currently active, not the first one, which is hidden away. To avoid this situation happening, always keep a copy of STL150C on the language disk and set up STL150C before inserting any specially formatted disk.
Now that the work on Solidisk’s own DFS 2.0 is completed, a new version of STL150 will cope with any disk system while offering unlimited directory entries, not just 150, and furthermore it does not require any specially formatted disk. As a result you will not have to transfer/modify any existing diskettes to use this advanced facility.

3.1.6	THE STLDISC PROGRAM:

This program creates a RAM DISK in your system with built-in formatter and verifier.

3.1.6.1	THE STLDISC PROGRAM IS AN ADVANCED DISK FILING SYSTEM

The disc filing system is an important part of your computer. It handles program loading, saving and many other functions of storage and retrieval of your software and data.
The STLDISC program has all the usual facilities of a good disk filing system such as speed of operations informative directory display, fast BPUT and BGET, built-in disk formatter and verifier. It also handles the RAM DISK or Solidisk.

3.1.6.2 THE SOLIDISK AS AN EXTRA DISK DRIVE

The Solidisk is a large Sideways RAM system of 128k or 256k bytes, represented as eight banks of Sideways RAMs (box 8 to box F on the MENU screen) or 16 banks with the 256k unit. You can use the Solidisk to load your Sideways Software, up to eight different languages and services or up to 13 with the 256k unit at any time. You can also use some of the Sideways RAM banks (or boxes) as an extra disk drive or RAM disk.
The RAM disk in its function as a storage device is identical to a floppy disk drive, just a lot faster as there is no mechanical movement involved.

The differences with a real disk drive are:

•	The contents of the RAM disk is lost if the power is lost.

•	The contents of the RAM disk have to be copied (or backup-ed) from a real disk.
•	
The nominal drive number of the RAM disc can be altered at will without affecting its contents. The normal drive numbers for a real drive are 0, 1, 2 and 3. The RAM disk can be given 0, 1, 2, 3 and 4. The command *OPT2, <drive number> is used to attribute any other number than 1.

•	The size of the RAM disk depends on the box you choose to install the STLDISC program. If STLDISC is loaded into box E, its size will be bigger than if it is loaded into box D, smaller than if it is loaded into box F. In any case, the size of the RAM disk will be displayed with its directory.

3.1.6.3	SETTING UP THE SOLIDISK:

You can choose STLDIC by *EXEC the loader program (‘L’ on your utility disk); this is the normal way when you want the biggest possible Solidisk.
You can also load the STLDISC with the MENU program. This is the correct way when you do not have the full 128k Solidisk.

If you enter:

*E.L <RETURN>

you should see a text informing you that eight function keys are set up to use the Solidisk. They are as follows: 

f0= 	Backup drive 0 to drive 1. This key duplicates the disk in drive 0 on to the Solidisk. This operation is performed in only 13 seconds and requires that the disk in drive 0 is formatted in 40 tracks, i.e. its capacity cannot be bigger than 100k bytes.

f1 = 	Copy every file from drive 0 to drive 1. This key copies as many files as there is still space in the Solidisk, from drive 0 to the Solidisk (drive 1). The order in which files are copied across is ‘last in first copied’ (not very clever, is it?). The disk in drive 0 can be 40 or 80 tracks. You cannot backup an 80-track disk on to the Solidisk which has only the capacity of 4o-track recording. You will get ‘Disk full’ error.

f2= 	Catalog both drive 0 and drive 1, the Solidisk.

f3= 	Performs verify. It is useful sometimes to verify the contents of the Solidisk, especially before making a hard backup.

f4= 	Run Silexicon. The Silexicon disk must be in drive 0.

f5 =	Run WORD64. The WW64 disk must be in drive 0. We shall see later how to prepare the Silexicon disk and the Word64 disk.

f6= 	*DRIVE 0 <RETURN>, select drive 0 as the current drive. 

f7= 	*DRIVE 17 <RETURN>, select the Solidisk (drive 1 as
	current drive).

We shall come back with more details on many aspects of the Solidisk and the use of the function keys.
The last line on the screen says that the STLDISC program is going to be loaded into bank E.

After reading the message:

“Press any key when ready”
Press the space bar (or any other key).

You should now see:

BBC computer 32k
STLDISC
BASIC
	>

It can now be said that the Solidisk is created from Sideways RAMs and its presence is indicated on the screen. Drive 0 is still the same, drive 1 is the Solidisk. If you have a twin-disk system the physical drive is now disabled. If you did not have a twin-disk drive before, you have now.

Now type in:

	*.1 <RETURN>
	190	(00)
	Drive :o	Option:0
	Directory :$	Library: $

Note 3.1.6.3:
The drive number 1 is attributed to the STLDISC simply for convenience. If you wish to use four real drives together with the STLDISC, enter *OPT2,4 <RETURN>. If you need to disable the STLDICS you may enter *OPT2,255 <RETURN>. This command is only added for completeness.
The RAM DISK size is displayed at the top left corner: 190(hex) is 400 sectors or 100k bytes.
With the 256k Silicon disk this number is 320 (hex) or 800 sectors.

3.1.6.4		A QUICK DEMONSTRATION WITH THE SOLIDISK:
(This demonstration is only relevant to the 128k Solidisk or above).
You have seen previously that eight function keys (the red keys in the top row of the computer keyboard) f0 to f7 are programmed for the Solidisk. Insert the sideways 40-track diskette into drive 0. Press the ‘f0’ key.

You should see:

*EN.
*BAC.01
Key f0 is simply programmed to type in your computer *ENABLE <RETURN> followed by *BACKUP 01 <RETURN>, exactly as you would do with a twin-disk system.
Now remove your diskette and insert into drive o a blank diskette and enter:

*ENABLE <RETURN>

*F40 0 <RETURN>

	The diskette will be formatted in around 19 seconds. Now enter:

*ENABLE <RETURN>
*BACKUP10 <RETURN>

You will hear drive o spinning and immediately see:

COPYING FROM DRIVE 1 to DRIVE 0

Then drive o stops. You have made a backup of the original diskette. The Solidisk allows you to work fast with disk systems.

3.1.6.5	ANOTHER DEMONSTRATION WITH THE SOLIDISK

Now place the SWR UTILITY (volume 2 or 1 + 2) disk into drive o. Press the ‘f4’ key You should see:
*COPY 01 T1
*COPY 01 DIC
* :o.SILEX
The Silexicon program will ask for the filename of the text that you wish to spellcheck. Please enter:
help! <RETURN>

Note the bargraph at the bottom of the screen. It indicates the remaining length of file help! and goes on diminishing. At the same time the score of mis-spelt words clocks up at an alarming rate. The Silexicon scans for help! in just under 15 seconds.
	Press the <ESC> and choose option 3.

3.1.6.6 MAKING SPECIALLY PREPARED DISKS:
It is convenient to have disks specially made for use with your Solidisk for applications such as Silexicon, WW64, Solidisk Datafile, Macro Basic and VMP. Other disks could be made for Beebug Masterfile, Starbase, View, Ultracalc, etc. They all have the same !BOOT file and STLDISC program. Each of them will then have an appropriate loader file.
You can create as many loader files as you need to set up particular applications. For example: volume 4 contains a different loader for Solidisk datafile.

To make a disc for Beebug Masterfile, set up the Solidisk with *E.L as in 3.1.6. Now place the Beebug Masterfile diskette into drive 0 and enter:
*ENABLE <RETURN>
*BACKUP 01 <RETURN>

Remove the Masterfile and place Volume 2 or 1+2 diskette in drive 0, then enter:
*COPY 01 !MF <RETURN>
*COPY 01  STLDISC <RETURN>

Now place a blank diskette in drive a, format it and make a backup:
*ENABLE <RETURN>
*F40 0 <RETURN>

Then:
*ENABLE <RETURN>
*BACKUP 10 <RETURN>
That is it.

To use Silicon disk with Masterfile, switch on the computer, place the !MF disk in drive o, then enter:
*E. !MF <RETURN>

There will be a message to remind you two things: to start press f0, and when you have finished press f9.

NOTE:
You must add one extra line in MFUtils: load MFUtils from the !MF disk then add: 15 *OPT2 <RETURN>
Save the edited version of MFUtils.
This version works with or without the Solidisk.

SOLIDISK WITH WORDWISE, VIEW & VIEWSHEET:
Simply copy L and STLDISC to a new disc.

SOLIDISK WITH SCRIBE:
Volume 2 contains also !SC. You can follow the same procedure as with Masterfile. Copy the utility disk into Solidisk, then add !SC and STLDISC before backing it up on a blank new disc.
Make your own loader:
You can make your own loader for any application using
*BUILD
Start the Solidisk with *E.L., then enter:
*BUILD :i.!BOOT <RETURN> 
1- *KEYo etc.
2- *KEY1 etc
3- etc.
4-?>&FE62=15:?&FE60=14:*STLDISC
<ESCAPE>

Enter now:

*COPY 0 1 STLDISC <RETURN>
*OPT 4,3 <RETURN>

*COPY your program and data to the Solidisk. Make a backup of the Solidisk to a new disk.

3.1.6.7	THE SOLIDISK AND THE INDEX PROGRAM:

The Solidisk is a very good tool for any database program, especially when sorting datafile using either a conventional database program or the INDEX program. Copy the relevant datafile and its associated ‘SI’ file (such as MAIL and SI. MAIL). Boot up the Solidisk as usual by Shift-Break. Press the ‘f0’ key to duplicate your diskette to Solidisk. You can make a sorted list for printout or mail merge as follows:

Place a FORMATTED disk in drive o. Enter:

*DRIVE 1

*LIST :0.SRTMAIL <RETURN>

The Mail (or any other datafile) will be sorted in alphabetical order and spooled on to drive o under filename SRTMAIL at around 2,000 characters a second. It must be the fastest method of sorting on earth. With other databases, refer to the appropriate manual.

3.1.6.8	THE SOLIDISK AT WORK

Solidisk can be an excellent productivity tool for Word-processing, databases and programming.

3.1.6.8.1	SOLIDISK WITH WORD PROCESSORS:

You can edit documents of up to 26 pages (A4 size, 4,000 words, 95,000 characters) with the 128k Solidisk—twice as much with the 256k Solidisk. Larger documents (books) will have to be split into smaller sections. There is no gain in speed using the Solidisk when the document is first typed in. So use your conventional set-up, with the physical drive, so that there is no need to make frequent backup.
But for editing, changing words, phrases, moving blocks, formatting pages, printing, counting words, previewing, search and replace, etc., the Solidisk is simply marvellous. So copy the draft version to your special Solidisk + Wordprocessor and use the Solidisk then at its best advantage.
Please do not forget to make frequent backups of the edited version of your text as the contents of the Solidisk is not permanent.

3.1.6.8.2	SOLIDISK WITH DATABASES
Beebug’s Masterfile and the more recent GCC’s Starbase are popular databases. Starbase requires that drive 0 must be used to hold the datafile. Start with *EL <RETURN> as usual. Press fo key. Now enter: *OPT2,0 <RETURN>
The Solidisk is then ready as drive o. You can then enter

*STARBASE <RETURN>

When you have finished with the programs, quit as usual and then enter *OPT2,1 to reselect Solidisk as drive 1 before backup. Note that the use of the Solidisk with databases has a degree of risk to destroy your database due to miskeying. As the Solidisk is so fast, and silent, it can wipe clean your databases even before you remove the finger from the wrong key. Therefore we strongly advise not to use the Solidisk for amendments of records. The Solidisk is ideal for viewing or browsing, printing and sorting.
Always make at least two backup copies of your datafile and one on the Solidisk + Database.
The Solidisk saves you an enormous amount of time and disk wear. It makes the analysis work on the database enjoyable and look more professional. It may be easy, for example, to show the whole list of Solidisk Sideways RAM users, but it will take days to regroup them by regions. (We set a target for ourselves to sort them both by county and by alphabetical order in under an hour using the BBC and the 256k Solidisk. We haven’t done it yet but believe that it is not impossible.)

IMPORTANT: ***** BACKUP THE SOLIDISK OR COPY THE DATAFILE AND DESCRIPTOR FILE BEFORE YOU SWITCH OFF *****

3.1.6.8.3	SOLIDISK IN DISC COPYING
When you are using the BBC computer not only for fun but to make a living (like; me), your Solidisk can be very helpful. One of the uses is disk copying.
You can make up a loading file as follows:

*BUILD SPECI.L
1 *K.0 *EN.//M*F400//M*EN.//M*BAC.40//M
2 *K.2 *EN.//M*F401//M*EN.//M*BAC.41//M
3 *K.9 *EN.//M*BAC.01//M*0PT2.4
	4 ?&FE62=15:?&FE60=14:*STLDISC

Line 4 loads the STLDISC, line 3 copies the contents of your master disk into the Solidisk, lines 1 and 2 deal with formatting and copying blank diskettes in drives 0 and 1. Start by *E.SPEC.L <RETURN>, place the master diskette in drive o, press f9.
Remove the master diskette.
Place the blank diskettes into drives 0 and 1, press f0 and f1
alternatively for maximum production speed... Anybody can produce more than 100 diskettes an hour.

3.1.6.8.4	SOLIDISK FOR MACHINE CODE PROGRAMMERS:
If you have an ADE or MAS you can copy the ASM module(s) directly on to Solidisk. This guarantees you a 70%+ time saving. If you don’t, you can use overlay or Virtual Memory. To assemble very long programs one often uses an overlay technique (see the Technical Manual; it has lots of pages on overlay).
All sections or modules to be assembled are on disk.. They must be under 14k bytes, starting with line 10 and ending with PAGE=5000:RETURN.

You will then enter the following program.:
REM “ASS”
10 FOR pass=0 TO 2 STEP 2
20 *LOAD partr
30 PAGE=&1900:GOSUB10
40 *LOAD part2
50 PAGE= &1900:GOSUB10
60 REM repeat any number of the previous sequence for
other ‘parts’.
70 NEXT pass

*BUILD then a !BOOT program:

PAGE=&500:CHAIN=”ASS”
The STLDISC program is assembled using this technique. The Solidisk can assemble its 12k brother (in another Sideways RAM bank) in less than ‘5 seconds.
The Virtual Memory VMP.90 approach is quite similar but much more suitable for just longish programs.
It basically allows you to type in 14k of extra assembly program without having to set up an overlay.
See section 3.3 for more details.

3.1.7	THE WORD64 PROGRAM:
This program increases the buffer size of Wordwise to as much as 64k.

3.1.7.1	WORD64 IS AN OVERLAY FOR WORDWISE 1.17:
WORD64 requires that Wordwise is present on your computer.
WORD64 uses the second disk as a text buffer.
WORD64 will execute all Wordwise commands except ‘Load.
text to cursor’ (option 4).

3.1.7.2	RUNNING WORD64 THE FIRST TIME:
Place the SWR utility disk in drive 0. Enter:
CHAIN’ ‘WORD64” <RETURN>

If Wordwise is not present on your system there will be a warning

message. If your Wordwise chip is in Socket 0 then do not switch off the computer but run it a second time.
When WW64, the code, is generated, the computer will prompt you to  ‘Press any key when ready’. Place a Solidisk diskette or the Language disk in drive 0 then press <RETURN>.
WW64 is different from your Wordwise chip only in the size of text it can handle.
To load WW64 enter *WW64 <RETURN>
Or if the Solidisk is already set-up, press the function key ‘f5’.

3.1.7.3	WAITING FOR A COMMAND

When using WW64 for the first time you will be surprised that ‘you have to wait five to ten seconds even for simple commands such as Preview text (option 7) or Save text (option 1). The reason is that WW64 has to update the buffer in drive before it can execute your command. The reward is startling: preview text of any size, Search and replace, print text, etc.

3.1.7.4 	GETTING STARTED WITH WW64:

First make a SAMPLE text. 
LOAD “MENU” <RETURN>
*SPOOL :o.SAMPLE <RETURN>
RENUMBER 20000 <RETURN>
LIST <RETURN>
*SPOOL <RETURN>
*INFO :o.SAMPLE <RETURN>

You should see:

$.SAMPLE 0000 0000 B893
The SAMPLE text is roughly 48.000 characters. 
Press the ‘f5’ function key.
Choose Option 2. Answer “SAMPLE” to prompt. 
You should see created and deleted ‘WORD64T’ which will be the buffer for WW64. Then the file ‘SAMPLE’ is copied to the Solidisk and the activity ceases.
You can press the <ESC> to go to ‘EDIT’  mode.
Now go back to the Wordwise menu and choose option 7, preview text. The command line will flash for a while and the text will be displayed continuously from beginning to end. You can, for example, do a Search and Replace the word ‘&FE30’ by ‘ROMnumber’. You will be Surprised how fast it can be. We use WW64 for editing Indexed Databases and for writing MACRO basic programs.
You can use WW64 without the 128k Solidisk but it is extremely tedious. The Word64 program will be removed as soon as Solidisk’s own wordprocessor is finished.

3.1.8	THE KEYBOARD PROGRAM:
Keyboard is a music-making program. You call it up by *MUSIC. It will then turn the computer keyboard to an electronic organ keyboard with the function keys used as envelop characters. Use Caps-Control to change octaves, and use all letters from Z to / to make up the lower keyboard. Letters Q to Cursor Down are for the upper keyboard.
Pressing the Escape key will stop the music.
Holding the M key down while pressing the BREAK key will start the music again.
The Help menu is displayed with *Help Keyboard.

3.1.9	THE FBACKUP PROGRAM
This program allows you to use Sideways RAM to speed up disk backups when your machine has a single disk drive.
To start.
CHAIN “FBACKUP” <RETURN>
You just have to answer some simple questions, press RETURN if you find the default option (displayed in brackets) is sensible. It is possible to backup an 8o-track diskette with just two disk swaps.

3.1.10 THE QUICKY PROGRAM:
The QUICKY (or QUICKCOPY) program is a rather different approach. While FBACKUP performs a mass-copy of the diskette using as much Sideways RAM as there is available, QUICKY lists out all the files on the disk and asks you to select which one(s) you want to copy. The drawback of QUICKY is that it uses only 16-32k bytes of Sideways RAM. Its author promises a better version soon.
To start,
*QUICKLY <RETURN>
*QUICKCOPY <RETURN>
Quicky is of Sideways Service ROM type but will answer to only
*QUICKCOPY and *HELP
Quicky will then display a list of files it can take in one go, asking you to say Yes or No by pressing the ‘Y’ for Yes and any other key for No.
Quicky will then copy all the files you have selected and come back for more until the disc is wholly scanned.

VOLUME 2 : THE SILEXICON PROGRAM

3.2.1	THE SILEXICON PROGRAM

This program spellchecks ASCII texts prepared with a wordprocessor. Scribe users will have to wait for a different version.

3.2.1.1 		A SPELLING CHECKER REQUIRING FAST DISC ACCESS:
		This program is a VERY FAST Spelling Checker to out-perform all other spelling checkers when used with the Solidisk. SILEXICON scans texts at more than 1,000 words a minute and is made from three components: SILEX the program itself, T1 the ‘tree table’ to find the word address in DIC, which is the dictionary. Do not try to read what is in DIC as all words axe joined together by five bit-letters making them much shorter and unreadable. The DIC must be allowed to expand with new words and should be the last file on your SILEX disk.

3.2.1.2	MAKING A SPELLING CHECKER DISC:
	Copy to a blank formatted disk in order:
	—L
	—STLDISC
	—SILEX
	—T1
	—DIC

3.2.1.3	GETTING STARTED
		If you do not have the 128k or 256k Solidisk, insert this disc in DRIVE 1 and enter *:1.SILEX.
		If you do, enter *E.L <RETURN> then hit the space bar and when the screen is clear, press function key ‘f4’.
		The SILEXICON screen will come up. The first thing Silexicon will do is checking that both T1 and DIC are present on drive 1. It then asks for the text filename.
		You can insert the SWR utility disk in drive o and type in help!.
		Texts are supposed to be in drive 0, but you can override this by entering :2.BIGTEXT for example.
		The text will then be scanned. Each word is compared against the words held in DIC. All mismatches are picked up. You are then requested to give your verdict.

			Three situations will occur.

•	The word is good although not found in DIC. Add it to DIC (answer Y for yes).

•	The word is good but not to be added to DIG (answer P for pass).

•	The word is bad. Mark it for correction. (answer N for no good).
	If you are unsure, press the space bar and Silexicon will display the line on which the mismatch word is found.
Misspelt words are marked by the hash sign ‘#‘. You can use your wordprocessor to search and replace ‘#‘ with correctly spelt words. Users of Wordwise can use f2 to move automatically to the next occurrence of ‘#‘. The DIC is automatically updated UPON COMPLETION with more  words as you use it. Always exit by option 3, QUIT as it will properly close T1 and DIC.

Note 3.2.1:
Although DIC and T1 are updated with extra words but they are still on drive 1, the Silicon drive. Should you require the updated DIC and T1, copy them to your Spelling Checker disk. If you use several dictionaries you must keep one diskette per DIC-T1 as they go together.

3.2.2	THE STLRFS PROGRAM:
This program puts a ROM header to any ordinary program so that it can be stored in EPROM.
Please make a few spare copies of the original STLRFS as you will see later on the program is self-modifying.

3.2.2.1	STLRFS IS A FILING SYSTEM
The STLRFS is Solidisk RAM/ROM filing system. STLRFS is capable of LOAD and SAVE programs in Basic or Machine Code in a Sideways ROM format suitable for making Sideways ROM with any program less than 15k bytes. 
Suppose you want to put the ‘ROMIT’ program on the school’s BBC computer and you have it written in Basic, just about 7k bytes (you know it by printing TOP-PAGE). Let’s start by loading ‘ROMIT’ into the machine followed by STLRFS. We then save ‘ROMIT’ into the Sideways RAM bank that contains STLRFS but to make a Sideways copy of it we will have to run the ‘MENU’ program.
LOAD ‘ROMIT’ <RETURN>

Place a copy of the SWR UTILITY disk in drive o and enter:
*LOAD STLRFS <RETURN> 
<BREAK>

You should see:

BBC computer
STLRFS
BASIC
	>

Now enter:
OLD <RETURN>
SAVE ‘ROMIT2’ <RETURN>
Now reactivate the disk drives:
*DISC <RETURN>

DO NOT press the BREAK but:

CHAIN “MENU” <RETURN>

You should now see ‘STLRFS’ in Sideways RAM box ‘F’. Place a disk with more than 16k spare space (or Volume 8) in drive o. Press the ‘@‘ key.
Give box number ‘F’ to save STLRFS’ on your disk.

3.2.2.2 	TESTING THE STLRFS:
Now hit the BREAK key. You should see STLRFS again on the screen.
Enter:
LOAD “ROMIT2” <RETURN> (or LOAD”” will do). 
The program will be instantly re-loaded; you can list it, run it, resave it. etc.
Switch off the computer. Switch it on again. Enter:

*STLRFS <RETURN>

3.2.2.3	STLRFS CAN PROVIDE LOW COST SOLUTIONS:
The previous experiment can be repeated with any Basic or Machine Code program (change LOAD to * LOAD, SAVE to *SAVE and CHAIN to *RUN) The result is a ROM that can run itself without cassette recorder or disk drive. To put it on EPROM you must first fix its real size. Place the last copy of STLRFS (containing ROMIT2).
Enter:
*INFO STLRFS <RETURN>
You should see something like this:
STLRFS 008000 D9CD 4000 125
Then enter:
*LOAD STLRFS 2000 <RETURN>
*SAVE ROMCOPY 2000 + 2000 D9CD 8000 
<RETURN>
Now connect the UVIPROM EPROM programmer to the user port, check that both 2 switches (5 and 21) are off, install a blank Eprom into the programming socket. Place Volume 8 diskette into drive o and enter:
*UVIPROM <RETURN>

Switch on Vcc (switch 5). Enter:
*BLOW ROMCOPY <RETURN>

That is it.

3.2.3	SWR UTILS
RUTILS is a suite of utilities specially made for the Sideways RAM system. *HELP SWR will list all the *commands available, mainly:

*RX lists all ROMs and RAMs in your computer.

If a name is preceded by *, the ROM is temporarily disabled by *RZAP (see below). The ROM in purple is the one having RUTILS ‘glued’ to it.
*RLOAD <filename> <RAM number>, example: *RLOAD
TOOLKIT E will load TIILKIT into bank E.
*RSAVE <filename> <ROM-RAM number> <size 1, 2, 3 or 4> will save the designated ROM/RAM without wiping any

program in memory. The size of the wanted RAM/ROM is in multiples of 4k bytes.
Ex: *RSAVE DFS150 F 4: Save 16k in bank F to disk as DFS150.
*RZAP <number>: disable any ROM/RAM in that socket or bank.
Ex.: *RZAP) 1. Disable the ROM in socket no. 1.
*RRES <number>: restore a zapped ROM/RAM.
*UNLANG <number>: the designated ROM can no longer be selected as a language.
*LANG <number>: restore an UNLANGed ROM.
*EXCEPTION <number>
*EXCEPTION <number> <new name> allows you to rename temporarily a ROM that does not follow the normal naming rule.
*LINK <filename>: glue RUTILS to that file so that it does
not take too much space on your disk.
*CLX: clear all exceptions (new names attributed to odd chips).
*BYE disables RUTILS.

3.2.4	THE SWRDMA PROGRAM:
This program shows you how to read data out of the Sideways RAM.
It is fairly easy to write into Sideways RAM. You simply have to select the Sideways RAM bank in B% (8-15 on the 128k., 14-15 on the 32k and only 15 on the 16k; the address in A% and use the basic ?, or $ operator to store your data. In order to read it all back you will have to switch on the BASIC ROM out and the selected Sideways RAM in. This is done by a small ten-line machine code found at line number 30000 onwards.
Every month there will be a prize for SWRDMA applications. This monthly prize is a £100 cheque for whoever writes a program that will theoretically calculate the biggest primary number in the shortest time using Sideways RAM.
If you think you have the answer, let us know.

VOLUME 3

Volume 3 deals with programming facilities offered by the Sideways RAM system. There are ways to deal with oversized programs and ‘No room’ error message. There is the overlay technique using the Silicon disk and a new tool: Virtual Memory. This VMP is a more general approach that we hope the educationalist will favour—it helps to structure the programs.
If you can divide a problem into a number of smaller problems and each can be solved by a PROCEDURE or a FUNCTION or a SUBROUTINE then Virtual Memory Processor and Macro Basic is for you.

The Virtual Memory is an aid to Acorn BASIC 2 (1982). It stores a large proportion of the program in Sideways RAM therefore reducing its size. Whenever Basic cannot find a DEFPROC (DEFinition of PROCedure) or a DEFEN (DEFinition of a FUNction) or a line number, an error will be generated and trapped by a VMP which then reacts by copying the missing item from Sideways RAM to somewhere between TOP and LOMEM, resets Basic pointers and returns control to Basic.
Since the system depends on the logical layout of the program, it encourages structured programming. All the DEFPROCs and DEFFNs should be regrouped at the end of the program, GOTOs and GOSUBs should be avoided as much as possible and the number of nesting levels should be kept as low as possible.
Macro Basic on the other hand is a program generator. Primarily it finds any missing DEEPROCs and DEFFNs in your program, locates them somewhere in other programs and appends them to your program. The result is a perfect program which will run on any BBC computer even without Sideways RAM fitted.
Secondly, Macro Basic translates MACROs into Basic statements. Macros are subroutines that you create from PROCs, FNs, machine code or other programs. Macros need to be defined once. The result can be used over and over again, like DEEPROCs and DEFFNs with VMP.
One could say that VMP is instant and volatile Macro Basic.

3.3.1	MACRO BASIC
Macro Basic is the program that writes a new program using bits found in old programs.

The MACRO BASIC disk has the following programs:

MBASIC (MACRO BASIC)
LINKEDT (LINKER-EDITOR)
VMP1.0 (VIRTUAL MEMORY PROCESSOR VERSION 1.0)
VMP1.2
LIB10 (LIBRARY OF PROCEDURES)
LIB30 (MORE LIBRARY)
LIB (SAMPLE LIBRARY)
TS100 (SAMPLE MACRO BASIC PROGRAM, which is not
different from any other program but cannot run without
MBASIC or VMP)
TV100 (SAMPLE VMP PROGRAM)
TB100 (SAMPLE BASIC PROGRAM AS GENERATED BY
MBASIC)
M.VIRTUAL (Sample Macro file)

3.3.1.1	SOURCE PROGRAM FORMAT:
There is a sample program on the disc. ‘TS100’ (Test, Source, 100 passes). Load it and list it.
You will notice that line 60 reads: 60 PROCabc. There is no

DEFPROCabc in this program. The same thing happens at line 70:

	70 PROCghk, no DEFPROCghk in sight.
	So that the Source File format is the same as any Basic program except that DEFPROCs and DEFFNs are allowed to be missing.

3.3.1.2 LIBRARY FILE FORMAT:
	Load in the ‘LIB program and list it. You will see that DEFPROCabc, def and ghk are all in LIB.
	So the library file format is the same as any Basic program, complete with DEPPROCs and DEFFNs. This explains why ANY program can be a LIBRARY, as far as it contains some useful DEFinitions.

3.3.1.3 MACRO BASIC IN ACTION:

Now enter:
CHAIN “MBASIC” <RETURN>

The computer expects a filename:
‘Source filename, please? . . . Type in:
TS100 <RETURN>
‘Output filename, please? . . . Type in:
TB100 <RETURN>
‘>>WARNING: file TB100present< <’
‘Automatic LinkEdit of program? . . . Type in (for yes) 
Y <RETURN>
‘Library name (/ to end) . Type in:
LIB <RETURN>
Library name (/ to end) . . . Type in:
/	<RETURN>
‘Simple line renumbering? . . . Type in:
Y <RETURN>
‘Automatic run of output program? . . . Type in:
Y <RETURN>

In less than five seconds, MBASIC (and LINKEDT) generates the program and runs it for you. The copy of the generated program is ‘TB100’. It will run perfectly on any BBC computer, even without Sideways RAM.
List ‘TB100’. You will find that ‘TB100’ is composed of ‘TS100’ and the missing ‘DEFs’ borrowed from ‘LIB.

3.3.1.4	MACRO BASIC AND LINK. EDITOR FOR THE TECHNICALLY MINDED
Macro Basic scans the ‘Source Program’ or ‘Macro file’ and translates all MACROs (see below) and text into a Basic program. Macro Basic is flexible enough to accept text files produced by a wordprocessor as Source files. Users of Scribe and View please note that Text Files must be spooled to disk to strip all control

characters related to the particular wordprocessor you are using. Examples of Macros are illustrated in the M.VIRTUAL file.
The previous ‘TS100’ is a trivial example as there is no ‘Macro present.
Usually automatic link-edit is assumed. After generating the program from the ‘Source’ MBASIC repetitively calls ‘LINKEDT’ to scan the librar(ies) to pickup any DEFPROC or DEFFN that are still missing. For example, although PROCdef was not called in the Source program, it is called by PROCabc. So LINKEDT must scan the output program until it is satisfied that all missing ‘cues’ are found.
How to write your own Macros is explained in the Technical Manual. It is beyond the scope of this Manual. Solidisk Support Service will attempt to build up a library of programs, subroutines, DEFPROC, DEFFNs, etc., for the BBC computer). Instead of typing DEFPROCs and DEFFNs, you may just leave it to MACRO BASIC and Solidisk program database.
But there is more to it: if the program size exceeds 24k it won’t fit into any BBC computer You will then need VMP, the Virtual Memory Processor.

3.3.2	SOLIDISK VMP.90:
Solidisk Virtual Memory Processor version .90 is the simplest answer to the ‘No room’ error message.
Here are the steps to add the Virtual Memory facility:
1)	Load your program.
2)	Add one extra line to your program:
	o *VMP <RETURN>
3)	Save the program.

3.3.2.5	AN EXAMPLE WILL MAKE IT CLEARER:

The following example will make it clearer to you:

Load in the ‘MENU’ program:
LOAD ”MENU” <RETURN>

Add one line to it:
		o	*VMP <RETURN>
Save the new MENU program under the new filename
NWMENU
SAVE “NWMENU” <RETURN>

Load into Sideways RAM to VMP.90:
*VMP.90 <RETURN>
OLD <RETURN>
RUN <RETURN>
You will see that functionally nothing has changed.

	Press the <ESCAPE> key. Enter:
LIST <RETURN>
You will see that the NWMENU program is much shorter than the MENU program.
You can therefore add extra features to the program.

3.3.2.1 THE LOMEM QUESTION:
When *VMP is issued, the VMP.90 proceeds as follows:
1) It scans the program from PAGE to TOP looking for the token DEF (&DD). The line before the first DEF is found will be marked.
VMP will copy all the lines after this point into Sideways RAM. TOP is then lowered accordingly.
2)	 It sets LOMEM=NEWTOP + 1024. The space put aside (1024 bytes from NEWTOP to LOMEM) will belong to the VMP.
3) It intercepts the BREAK instruction vector (&0201) to interpret any error message.
Only two errors will be handled directly by VMP.90: DEF missing (error &1D, No such PROC/FN and error &29, No such line). VMP will find the missing PROC/FN or the line and pass control back to BASIC.
3) VMP returns to BASIC.
The overall effect is that your program will gain as much room as the VMP can take MINUS 1k bytes.
The VMP.90 can accept only 14k bytes.
The maximum saving is therefore 13k bytes.

3.3.2.2 HOW VMP.90 WORKS:
Whenever a PROC or a FN is needed, BASIC looks for the beginning of the DEFPROC or DEFFN. If the DEFPROC in question cannot be found, Basic will then signal the error, which is trapped by VMP. VMP scans its store, finds the DEFPROC or DEFFN, copies it into its workspace (between TOP and LOMEM), loads BASIC pointers with the appropriate values and jumps back to BASIC.
VMP is very fast: it does all the previous steps in 2 milliseconds on average, as demonstrated in the ‘TV100’ program.
VMP deals similarly with GOTO and GOSUB. It finds the missing lines, copies a block of lines comprising the missing line to its workspace and goes back to BASIC.

3.3.2.3	WHERE IN THE WORKSPACE DOES THE VMP COPY
THE MISSING ‘DEF’?
VMP divides the program into blocks separated by the lines containing ‘DEF’.
The VMP puts the requested ‘DEF’ just ABOVE the actual block that requests the ‘DEF’. This ensures that nested GOTO, GOSUB and other items will run properly while keeping its workspace as small as possible. So if there is a line like:

1000 PROCa :PROCb.

VMP will put DEFPROCa at TOP, get BASIC to execute it. When BASIC has finished with PROCa, VMP will load DEFPROCb at TOP and get BASIC to execute it. But if PROCa calls PROGc, VMP will load PROCc as above, PROCa. More room will be needed that before.

 3.3.2.4	REDEFINE LOMEM:
In practical use, LOMEM will need to be redefined immediately after *VMP. Some of the reasons are:

1)	You need to accommodate some machine code.
2)	You need to increase the VMP workspace as provision for possible overflow.
3)	You want more room.

To do so, estimate the maximum amount of RAM you can spare, for example 3000 bytes. Add:

1 LOMEM=TOP+3000.

Important:
NEVER EDIT OR SAVE ANY PROGRAM THAT HAS
BEEN RUN
THE LARGEST PART OF THE PROGRAMME WILL HAVE BEEN DELETED

As the VMP will delete the largest part of your program to make room, if you save a program that has been run you may find that you replace a fully working 16k program by just the first few lines.
RELOAD THE PROGRAM FROM DISC BEFORE EDITING

3.3.2.5	WHERE TO PUT YOUR MACHINE CODE?
Machine code assembled to fixed (known) locations or protected by an array (such as DIM Q% 100: P%=Q%) do not need to be altered.
Machine code part of a basic program assembled using TOP as program, counter MUST be given a new value, related to LOMEM or other variables such as M% using DIM M%500, for example.

3.3.2.6	HOW TO ORGANISE YOUR PROGRAMS TO USE VMP AT ITS BEST:
1)	Keep the depth of any nesting as small as possible even if you have to add some extra lines.
2)	Write in order: main program, subroutines, DEFPROCs and DEFNs that do not call any other PROC and FN, machine code assembly and text.
3)	Prefer VMP1.0 for programs using a lot of machine code assembly.
4)	Do not leave any space between the words DEE and PROC:
DEFPROC is legal, DEF PROC is not.

3.3.2.7	DO NOT TRY VMP.90 ON BEEBUG MASTERFILE:
Many of you will be tempted to use VMP.90 to run BEEBUG Masterfile in order to get more free memory. It is not possible with VMP.90. The reason is as MF21 is 20k long, VMP.90 can only take the bottom 14k, leaving 6k to the Basic RAM. It would run perfectly if some PROCs calling other PROCs were

not located in the first 6k. The only ‘fix’ will be a MP32 using two Sideways RAM banks as opposed to one. The other solution is using VMP1.2 with Solidisk. A few of our programmers are able to relocate some Masterfile PROCs to get 1200 bytes free with it, but the method is too complex to go into in this manual.

3.3.2.8	THE VMP.90 and VMP1.0 SOURCE CODE:
The source code for both programs is included for possible improvements. Solidisk Software Support will give the best support towards developing both versions even further to cover ‘No such variable’ and ‘Array too large’. Any user interested in this work should contact the Software Support Service immediately.

3.3.3	THE STOCK CONTROL PROGRAM
This program illustrates the use of VMP.90 to increase the possible number of stock items that the program can handle.
To start, 
CHAIN “SC” <RETURN>
You will be requested to give your name and the date which will be logged as ‘last user’. All options are menu driven, so simply answer to the prompts. Usually you start by loading a STOCK file. There is also a sample stock file called ‘STOCK’. So load stock first, then ask for an ‘Evaluation Report’.
You can create new stock files for various suppliers. Ask for price list, update stock situations, etc.

VOLUME 4 : S/D

3.4.1	SOLIDISK DATAFILE:
Solidisk Datafile is a general database management program. 
To start, place Volume 4 disk in drive 0 and enter:
*E.!SD <RETURN>
After reading the key setting (see below), hit the space bar. When the screen is clear, press the function key ‘f0’.
As with all databases you are prompted with a series of questions —first the date, then the password a which is 1234 on the
Volume 4 diskette.
So let’s start by:

SOLIDISK
DATAFILE
Does file exist on DISC Y/N
Answer ‘Y’,
Today’s date?
Answer Day-Day (space) Month-Month (space)
Year-Year <RETURN>, example:
10 1 84 <RETURN>

You should see:
	Mm=19553
	SOLIDISK
	DATAFILE
	FILES:
………	D.SAMPLE
	Enter filename required:
	Answer with ‘SAMPLE <RETURN>
	Password?
	Answer with ‘1234 <RETURN>’
	(This password can be modified later).
	Now you will be presented with the main Menu; there are 11 options in all.
	Choose ‘2’ first.
	You should see:
	FIELDS:
	1) Name
2)	Surname
3)	etc.
	No of FIELDS required:
Answer with 9 as this is the maximum number of fields that have been created with this datafile.
	If you answer with a smaller number you will be asked to supply your selection.
	Is print-out required:
	Answer with ‘N’ to get only screen display.
You can browse quickly through the datafile. Hold down the space bar to ‘freeze’ the record or RETURN to stop.
Escape will return you to the main Menu. Once you have seen the datafile through I am sure you will be able to use all the other options as most of them can be operated quite intuitively.

3.5 THE SILEXIGEN PROGRAM

The Silexicon package consists of three diskettes. Each contains the Silex program, the Silexigen, Dictionary Generatory program and a specially compiled Dictionary/T1. The dictionaries are English, French and German. There will be other languages later on.

3.5.1	RUNNING THE SILEXIGEN PROGRAM:
The Silexigen (SIGEN on the disk) is capable of making a dictionary from a wordprocessor text.
First, use View or Wordwise to enter the new dictionary or addition to the other dictionary.
	Place Volume 4 disk in drive 0, enter:
	*E.L. <RETURN>

	Then hit the space bar to set up the Solidisk as usual.
	*COPY 01 SIGEN <RETURN>
Place the Silexicon disc containing, for example, the Swahili dictionary that you want to add new words to in drive 0.

Enter:
*COPY 01 T1 <RETURN>
*COPY 01 DIC <RETURN>
Now place the disk containing the additional text into drive 0 and enter:
*:1.SIGEN <RETURN>
You should see the SILEXIGEN screen and will be requested to enter the filename of the additional text.
Please type in the filename, for example:
SWA-Z <RETURN>
Leave it running until it stops.
Press key ‘3’ to quit Silexigen.
Now place the original disk containing your Swahili dictionary back in drive 0 and enter:
*COPY 01 T1 <RETURN>
*COPY 10 DIC <RETURN>

Please make plenty of backups of your master disks before adding new words to the dictionary as these can be very long files therefore much exposed to disk corruption. Check the new dictionary out before copying it to your master disk.

VOLUME 8 : SOFTWARE DEVELOPMENT TOOLS:
SOLIMON, SOLITRACE, 65C02 UVIPROM, SPRITE AND DEFINE

3.8.1 	THE SOLIMON PROGRAM:
This program is a very fine machine code monitor.
Solimon is of little use for debugging ordinary Basic programs.
For that a Basic TOOLKIT will be available later on.
If you program in machine code you will soon discover that Solimon is simply one of the best tools around.
To start, place the Volume 8 disk in drive o and enter:
*SOLIMON <RETURN>
Solimon is now loaded into Sideways RAM 15. If you are loading Solimon from the MENU program please note that the actual version of Solimon will not operate in any other Sideways RAM bank than 15.
BBC computer
Solimon
Acorn DFS
BASIC
>

Once loaded, Solimon will work as a language, i.e. similar to Basic, View or Beebcalc. To evoke Solimon, enter:
*SOLIMON <RETURN>

You should see the command status panel.
		The screen is then divided into two parts. the top part is the status panel, the bottom part is free and destined to run your program while debugging it with Solimon.

3.8.1.1	COMMANDS AVAILABLE IN SOLIMON
Now that Solimon has taken over from Basic (you can return to Basic any time by entering *BASIC), press:
	?
This command will display all available commands in Solimon and their single letter commands.
They are:
•	D for disassembler, D 0C00 0CFF will disassemble the code from &0000 to &0CFF.
•	You will notice that all numbers (databytes or addresses) are typed in or printed out in HEX.
•	L for Hex dump; L 8000 BFFF will dump any selected Sideways ROM. Again all numbers are in hex. An ASCII dump is also provided.
•	// Toggle printer on/off, to obtain a hard copy of anything printed on the screen.
•	H for string hunt (search). H 1900 6C00 Hello <RETURN> will locate Hello in memory and print out ‘found at: 2345 etc.’
•	I for fill memory. I 5000 6000 FF will put ‘FF’ in every location between 5000 and 6000 (inclusive).
•	F for byte search. If you have selected the DFS as Sideways ROM with the ‘!’ command, F 8000 C000 80,FE <RETURN> will find out where the DFS reads or writes to the FDC command register.
•	* for OC commands. *BASIC <RETURN> will exit from Solimon.
•	Q Quit Solimon and returning to Basic.
•	T Test subroutine. T 0C00 does a JSR to 0C00 so to check it out (if it crashes, chances are that the machine won’t hang).
•	S for single step. S 0C00 will single step the code starting at this location. Space bar steps forward, escape returns to command mode.
•	B sets breakpoint, B 0C50 sets breakpoint at 0C50. If a T (test) command is issued, it will exit at the breakpoint.
•	R runs a program. R 0C00 performs a JMP to the specified location in memory.
•	M moves a block of memory. For example: M 8000 9FFF 2000 will move your selected Sideways ROM down to normal RAM so that you can save it.
•	W sets panel. You will notice the row of numbers under the header. Simply enter W and the new panel you wish to set.
•	U clears previously set breakpoints.
•	! selects Sideways ROM/RAM sockets. It is worth mentioning that breakpoints can also be set in Sideways ROM or RAM. Remember the display of the MENU program so that you can

	select the correct ROM. As a rule, in non-Sideways RAM machines, the leftmost ROM socket is !C, the rightmost is IF. In Sideways RAM machines the ROM sockets are 10 to “2 from left to right; “3 to !E are all in Sideways RAM. To be sure:

D 8000 <RETURN>, disassemble the beginning of the ROM so that you can read the ROM title.
•	‘? Help’ brings up the Info help message.
•	E edits memory location; E 1900 <RETURN> prints out the actual value. Press RETURN if you don’t want to modify it; enter a new HEX number if wanted. Escape will return you to the panel.
•	% spools disassembler code to disk for word-processing.

3.8.2	THE 65002 ASSEMBLER:
SOLIDISK 65C02 SYSTEM FOR BBC MICROCOMPUTER
Two programs are included in this package and the user will need to have BASIC 2 for both of them. The presence of BASIC 2 is established by typing in REPORT and pressing RETURN. If the date on the copyright message is 1982 then you have BASIC 2 in your machine. Other BASICs are not at present compatible with this system.
The first of these is the CO2ASMB program and the second is the PATCH program courtesy of Simon Taylor and Bob Watford.

The CO2ASMB program
The CO2ASMB program is an overlay for BASIC 2 to facilitate machine code assembly for the Rockwell 65C02 microprocessor and indeed all of the current 65 series, including single chip microcontrollers and emulators. It even includes the unsigned multiply (MUL) which is used on the available dual processor (65C29).
The 65C02 is basically an upgraded version of the old 6502 but with a few improvements. These include:

(i)	12 new instructions for a total of 68
(ii)	59 new opcodes for a total of 210
(iii) 	Two new addressing modes
(iv) 	Lower power consumption (4ma/Mhz)

Using the new assembler
The assembler needs at least 16k Sideways RAM, BASIC 2 and the MENU, TEST and CO2ASMB programs on disk.
To run the program type in CHAIN’ ‘CO2ASMB” followed by the return key.
As the program runs it first confirms that BASIC 2 is in fact resident in your BBC. It then copies it across to Sideways RAM and proceeds to run the overlay to enhance the BASIC assembler. Upon completion of the process a message is displayed on the screen to show that the overlay is finished.

When the program has finished running, the new assembler will identify itself as 65C02 on the screen in the place where BASIC would normally appear.

Later on, the 65C02 assembler can be evoked simply by 
*65C02 <RETURN>.

You now have an upgraded assembler overlayed on the original BASIC that retains nearly all of the original functions of BASIC 2 except for the trigonometrical and logarithmic functions which would not usually be required when assembling machine code anyway. Hence the assembler retains the powerful editing and assembling capacity of the BASIC but with the addition of the new 65C02 command set and a further Pseudo operation (RES).

This Pseudo Op (Syntax:RES xx). Where xx is a number or variable of a value less than 256) will reserve a specified number cf bytes in the assembled code which may then be used for any required purpose.

For example: RES&10 will reserve 16 bytes from the current value of P% to P% + 15 and increment P% accordingly.

Another improvement over BASIC is that now all errors are suppressed on OPTO,2,4 and 5, meaning no more out of range errors when assembling using 0%.

When using this assembler for other types of 65 series processors care may need to be taken not to use codes that are not valid on that particular processor. So it is recommended that the appropriate programming manual is carefully studied to avoid unnecessary debugging.

General information
As previously mentioned there are 12 new instructions and a total of 59 new opcodes. Please note, however, that not all of these commands are available on the GTE 6502 at present used in the Acorn’s TUBE second processor. The missing instructions are as follows: TRB, TSB RMB, SMB, BBR and BBS.

It should also be noted that this assembler is not compatible with the undocumented commands on the 6502 with the exception of the STZ absolute command (opcode &9C) and also that the software which uses these commands will almost certainly not run on the 65C02.

There is also one more command incorporated into the assembler which, as previously mentioned, is only implemented on the dual 65C29 processor and 65C00/21 microcomputer. This is the unsigned multiply command (mnemonic MUL) which multiplies together the A and Y registers and then places the result back in the same registers with the MSB in A and the LSB in Y. The time taken for this instruction is 10 machine cycles.

New Addressing modes
Added to the old set of instructions are a few new addressing modes and these are documented below. Those that now support Zero page indirect addressing are:
	Mnemonic	Bytes	Opcode	Cycles	  Syntax
	ADC	2	72	5TM	ADC(ZP)
	AND	2	32	5	AND(ZP)
	CMP	2	D2	5	CMP(ZP)
	EOR	2	52	5	EOR(ZP)
	LDA	2	B2	5	LDA(ZP)
	ORA	2	12	5	ORA(ZP)
	SBC	2	F2	5TM	SBC(ZP)
	STA	2	92	5	STA(ZP)
TM 6 in decimal mode. ZP = Zero Page address

In the zero page indirect mode the second byte of the instruction points to the zero page location that holds the effective (i6 bit) address. Therefore an instruction such as LDA ( &8o) would take the information in &8o and &81 as a i6-bit address and load the accumulator from the new address.

The BIT command has three new addressing modes as follows:
	Mode	Bytes	Opcode	Cycles	Syntax
	Zero page,X	2	34	4	BIT ZP,X
	Absolute,X	3	3C	4’	BITabs,X
	Immediate	2	89	2	BIT # imm
	 ‘ 5 if page 	boundary crossed
Z = Zero Page address 	abs = 16 bit address 	imm = <255 
The JMP command allows one more mode as follows:

	Mode	Bytes	Opcode	Cycles	Syntax
	Indirect,X	3	  7C	  6	JMP(abs,X)

This is another totally new addressing mode and adds the X register to the  second and third bytes of the instruction to give the effective address. The mode is useful for the implementation of jump tables.

New instructions
The accumulator mode includes two new instructions as follows:
	Command	Bytes	Opcode	Cycles	Effect
	INCA	1	1A	2	A=A+1
	DEC A	1	3A	2	A—A—1

These are quite self-explanatory and also quite useful instructions, so no further time will be spent on these.
One further branch instruction is added to the list. This is the branch always and is an unconditional branch.

	Command	Bytes	Opcode	Cycles	Syntax
	BRA	2	 80	  3’	BRAnew
‘4 if page boundary crossed. 	New=PC—127 to PC+128

Four new stack processing operations are included:

	Command	Bytes	Opcode	Cycles	Syntax
	PHX	1	 DA	3	PHX
	PHY	1	5A	3	PHY
	PLX	1	FA	4	PLX
	PLY	1	7A	4	PLY

	PHX and PHY push the X and Y registers on to the stack whereas PLX and PLY pull these registers from the stack. This saves the need for a sequence like PHA:TXA:PHA:TYA:PHA which can be replaced by PHA:PHX:PHY with a saving of four machine cycles.

	Another very useful command is the Store Zero (STZ) which is allowed four addressing modes as below:

	Command	Bytes	Opcode	Cycles	  Syntax
	STZabsolute	3	9C	4	STZabs
	STZabs,X	3	9E		STZabs,X
	STZ Zeropage 	2	64	3	STZ ZP
	STZ Zer.pg.,X 	2	74		STZ ZP,X

	This command clears the contents of the location pointed to by the second and/or third bytes of the instruction. In the indexed mode, though, the contents of the X register are first added to the address before execution of the instruction.

Bit Manipulation Instructions
	The remainder of the new instruction set deals with bit manipulation and when used effectively can save a considerable amount of code, and hence execution time, over the basic 6502 code.

Set and Reset Memory Bit (SMB RMB)
	These only support the Zero Page addressing mode and the bit to be operated on is added to the highest four bits of the instructions base code. This bit is then either set or reset depending on the instructions in use. The entire set follows:

	Command	Bytes	Opcode	Cycles
	RMB 6 ZP	2	 67	5
	RMB 7 ZP	2	 77	5
	SMB 0 ZP	2	 87	5
	SMB 1 ZP	2	 97	5
	SMB 2 ZP	2	 A7	5
	SMB 3 ZP	2	 B7	5
	SMB 4 ZP	2	 C7	5
	SMB 5 ZP	2	 D7	5
	SMB 6 ZP	2	 E7	5
	SMB 7 ZP	2	 F7	5

These instructions perform in just one byte and five machine cycles what would have previously requires six bytes in a similar sequence to:
LDA&77:ORA# &01:STA&77
and therefore help considerably towards developing compact code when using flags in zero page memory.
Test and reset/test and set memory bits with accumulator (TRB/TSB). This set of instructions allows both zero page and addressing modes and set or reset the bits in memory according to the contents of the accumulator. The Z flag is also set or reset depending on the previous contents of the memory location as ANDed with the accumulator contents.
	Command	Bytes	Opcode	Cycles	Syntax
	TRB zero page	2	14	5	TRE ZP
	TRB absolute	3	1C	6	TRBabs
	TSB zero page	2	04	5	TSB ZP
	TSB absolute	3	0C	6	TWBabs

The final set of new instructions are the branch on bit set and branch on bit reset commands (BBR BBS). These are three-byte commands with the first byte containing the bit number to be tested and the command type. The second byte contains the zero page location to be tested and the third byte is the branch offset which must be in the range of -126 to + 129 from the instructions address to be valid.
	Command	Bytes	Opcodes	Cycles
	BBR 0 offset	3	0F	5’
	BBR 1 offset	3	1F	5’
	BBR 2 offset	3	2F	5’
	BBR 3 offset	3	3F	5’
	BBR 4 offset	3	4F	5’
	BBR 5 offset	3	5F	5’
	BBR 6 offset	3	6F	5’
	BBR 7 offset	3	7F	5’
	BBS 0 offset	3	8F	5’
	BBS 1 offset	3	9F	5’
	BBS 2 offset	3	AF	5’
	BBS 3 offset	3	BF	5’
	BBS 4 offset	3	CF	5’
	BBS 5 offset	3	DF	5’
	BBS 6 offset	3	EF	5’
	BBS 7 offset	3	FF	5’
	
	  ‘=6 cycles if page 	boundary crossed

This completes the description of the new opcodes on the 65C02. There is, however, one point to note—that on the overlay a new error message may be generated. This is BIT error and indicates that an attempt has been made to do an operation on a bit with a number greater than 7.
It is also worth noting that the bit value may also be a numeric variable as long as its value is 7 or less.

The PATCH Program
This program requires no Sideways RAM but does, however, take up space in the user memory. It has all the same facilities of the previous overlay type program except for the loss of the RES pseudo op and the MUL unsigned multiply. It also retains the full capabilities of the BASIC rom with no loss of maths routines.
All of the new commands in this program are implemented by the use of the OPT command followed by a FU and the opcode mnemonic. All of the new opcodes need a dummy argument (Z% is used in this case) because of the use of FN. All arguments then required for assembly will go inside the brackets. In the example TEST is used as a single byte or zero page address argument, and BIGTEST as an absolute address argument.
There now follows the complete PATCH program with the OPT FN definitions:
>L.
100DIM CODE% &100
110TEST=&12:BGTEST=&ABCD
120FORZ%=4 TO 7 STEP 3
1300%=CODE%:P%=&1000
140 [
150OPT Z%
160OPT FNBRA(Z%,TEST)
170OPT FNORA(Z%,TEST)
180OPT FNAND(Z%,TEST)
190OPT FNEOR(Z%,TEST)
200OPT FNADC(Z%,TEST)
210OPT FNSTA(Z%,TEST)
220OPT FNLDA(Z%,TEST)
230OPT FNCMP (Z% ,TEST)
240OPT FNSBC (Z%,TEST)
250.LABEL1 OPT FNTSB(Z%,TEST,
260OPT FNTRB (Z%,TEST)
270OPT FNBIT (Z%TEST)
280OPT FNSTZ (Z%,TEST)
290OPT FNSTZ (Z%,TEST)
300OPT FNRMB(Z%,0,TEST)
310OPT FNRMB(Z%,1,TEST)
320OPT FNRMB(Z%,2,TEST)
330OPT FNRMB(Z%,3,TEST)
340OPT FNRMB(Z%,4,TEST)
350OPT FNRMB(Z%,5,TEST)
360OPT FNEMB(Z%,6,TEST)
370OPT FNRMB(Z%,7,TEST)
380OPT FNSMB (Z%,0,TEST)
390OPT FNSMB(Z%,1,TEST)
400OPT FNSMB(Z%,2,TEST)
410OPT FNSMB(Z%,3,TEST)
420OPT FNSMB(Z%,4,TEST)
430OPT FNSMB(Z%,5,TEST)

440OPT FNSMB(Z%,6,TEST)
450OPT FNSMB (Z%,7,TEST)
460OPT FNBITI (Z%,&AA)
470OPT FNINCA(Z%)
480OPT FNDECA(Z%)
490OPT FNPHY(Z%)
500OPT FNPLY(Z%)
510OPT FNPHX(Z%)
520OPT FNPLX(Z%)
530OPT FNTSB(Z%,BGTEST)
540OPT FNTRB (Z%,BGTEST)
550OPT FNBIT(Z%,BGTEST)
560OPT FNJMP (Z%,BGTEST)
570OPT FNSTZ(Z%,BGTEST)
580OPT FNSTZX(Z%,BGTEST)
590OPT FNBBR(Z%,0,TEST,L2)
600.L2 OPT FNBBR(Z%,1,TEST,L3)
610.L3 OPT FNBBR(Z%,2,TEST,L4)
620.L4 OPT FNBBR(Z%,3,TEST,L5)
630.L5 OPT FNBBR(Z%,4,TEST,L6)
640.L6 OPT FNBBR(Z%,5,TEST,L7)
650.L7 OPT FNBBR(Z%,6,TEST,L8)
660.L8 OPT FNBBR(Z%.7,TEST,L9)
670.L9 OPT FNBBS(Z%,0,TEST,L10)
680.L10 OPT FNBBS(Z%,1,TEST,L11)
690.L11 OPT FNBBS(Z%,2,TEST,L12)
700.L12 OPT FNBBS(Z%,3,TEST,L13)
710.L13 OPT FNBBS(Z%,4,TEST,L14)
720.L14 OPT FNBBS (Z%,5,TEST,L15)
730.L15 OPT FNBBS(Z%,6,TEST,L16)
740.L16 OPT FNBBS(Z%,7,TEST,L9)
750]
760NEXT
30000REM START OF 65C02 FUNCTIONS
30001END
30002DEFFNBRA(opt%,where%)
30003[OPT opt%:BNE where%:]
30004IFopt% >3 0% ?—2 = &80 ELSEP%—2 = &80
30005=opt%
30006DEFFNBBS (opt%,bit%,address%,where%)
30007 [OPT opt%:BNE where%:]
30008IFOpt% >3 O%?-2=&8F+bit%*16:O%?o= (Q%?-1)-1:
O%?-1=address%:O%=O%+1
ELSEP%?-2=&8F+bit%*16:P%?o=(P%?-)-16:P%?-1=address%
30009P%=P%+1
300010=opt%
300011DEFFNBBR(opt%,bit%,address%,where%)

30012[OPT opt%:BNE where%]
30013Fopt% >3 O%?-2=&0F+bit%*16:O%?0=(O%?-1)-1: O%?-1=address%:O%=O%+1 ELSE%?-2=&0F+bit%*?0=(P%?-1)-1:P%-1=address%
30014P%=P% + 1
30015=opt%
30016DEFFNPHY (opt%)
30017[OPT opt%:EQUB &5A:]
30018=opt%
30019DEFFNPLY (opt;)
30020[OPT opt%:EQUB &7A:)
30021=opt%
3022DEFFNPHX (opt%)
30023 [OPT opt%:EQUB &DA:]
30024 = opt%
30025DEFFNPLX (opt%)
30026[OPT opt%:EQUB &FA:]
30027 = opt%
30028DEFFNRMB (opt%,bit%,address%)
30029 [OPT opt:EQUB bit%*16+&07 EQUB address%:]
30030=opt%
30031DEFFNSMB (opt%,bit%,address%)
30032 [OPT opt%:7EQUB bit%*16+&87:EQUB address% :]
30033=opt%
30034DEFFNINCA (opt%)
30035 [OPT opt%:EQUB &1A:]
30036=opt%
30037DEFFNDECA (opt%)
30038[OPT opt%:EQUB &3A:]
30039 = opt%
30040DEFFNTSB (opt%,address%)
30041IFaddress%>&FF [OPT opt% :EQUB &0C:EQUW address%:]
	ELSE [OPT opt%EQUB &04:EQUB address%:]
30042 =opt%
30043DEFFNTRB (opt%,address%)
30044IFaddress%>&FF [OPT opt% :EQUB &1C :EQUW address% :]
ELSE [OPT opt%:EQUB &14EQUB address% :]
30045 = opt%
30046DEFFNSTZ (opt%,address%)
30047IFaddress%>&FF [OPT opt%:EQUB &96:EQUW address%:]
	ELSE [OPT opt%:EQUB &64:EQUB address%:]
30048=opt%
30049DEFFNSTZX (opt%,address%)
30050IFaddress;>FF [OPT opt%:EQUB &9E:EQUW address% :]
	ELSE [OPT opt% :EQUB &74 :EQUB address %:]
30051=opt%
30052DEFFNORA (opt%,address%)
30053[OPT opt%:EQUB &12EQUB address%:]
30054=opt%

30055DEFFNAND (opt% ,address%)
300561 [OPT opt%:EQUB &32:EQUB address%:]
30057=opt%
30058DEFFNEOR (opt%,address%)
30059 [OPT opt% :EQUB &52:EQUB address% :]
30060=opt%
30061DEFFNADC (opt%,address%)
30062 [OPT opt%:EQUB &72:EQUB address%:]
30063 =opt%
30064DEFFNSTA (opt%,address%)
30065 [OPT opt%:EQUB &92:EQUB address%:]
30066=opt%
30067DEFFNLDA (opt%,address%)
30068 [OPT opt%:EQUB &B2:EQUB address%:]
30069=opt%
30070DEFFNCMP (opt%,address%)
30071 [OPT opt%:EQUB &D2:EQUB address%:]
30072=opt%
30073DEFFNSBC (opt%,address%)
30074 [OPT opt% EQUB &F2:EQUB address%:]
30075=opt%
30076DEFFNJMP (opt%,address%)
30077 [OPT%:EQUB &76:EQUW address%:]
30078=opt%
30079DEFFNBIT (opt%,address%)
30080IFaddress%>&FF [OPT opt%:EQUB &3C:EQUW address%:]
ELSE [OPT opt%:EQUB &34:EQUB address % :]
30081=opt%
30082DEFFNBIT1 (opt%,bvte*)
30083 [OPT opt%:EQUB &89:EQUB byte%:]
30084=opt%
When developing code with this program it is only necessary to use from line 30000 onwards as the preceding lines are purely for demonstration purposes.

3.8.3	SOLITRACE
	Solitrace is an improved version of a commercially available TRACE program from Quasar software. The beautifully presented Manual of the TRACE program is not available to Solidisk Sideways RAM users, but those interested may contact Quasar Software. A practical user guide is provided under the filename MTRACE.

3.8.4	UVIPROM 1.0 AND SOLIDISK EMPROM PROGRAMMER
DISCLAIM:
IMPORTANT: The Eprom Programmer is a simple device yet requiring great care and attention in handling. In our experience mishandling happens with most Eprom programmer users sooner or later.
We hereby give notice that no claim whatsoever for any loss or consequential damage to any software or equipment, including

the Eprom programmer, will be entertained.
Under all circumstances our responsibility will be restricted to the servicing, at your cost, any damage caused to the Eprom programmer.
Eproms as supplied by us or other reputable distributors are certified by the manufacturers. They are not guaranteed otherwise than leaving our premises with the usual caution for handling MOS devices. We do not accept any return for replacement.
The present notice is explicitly included in the conditions of sale of the Eproms and Eprom programmer.

3.8.4.1	THE UVIPROM PROGRAM
The UVIPROM program is specially adapted to drive Solidisk Eprom programmer (available as optional extra). It provides four commands:
*READ <filename>
*BLOW <filename>
*COMP <filename>
*VIEW <filename>
The system is disk based although it would run from tape. The Uviprom program is a Sideways ROM type software.

3.8.2.4	EPROM AND EPROM PROGRAMMER
EPROM (Erasable Programmable Read Only Memory) is the type of ICs that you install into your Sideways ROM sockets. Its appearance is quite easy to recognise: it has a glass window. The EPROMs are normally blank when you buy them from an electronic computer distributor (such as Watford Electronics, Technomatics or Semicomponents, to cite a few). The BBC computer can only read the EPROMs if they are inserted into the Sideways ROM sockets but cannot write into them as into Sideways RAM. To do so you will need a special hardware device capable of generating:
1) the correct programming voltage (21-22V);
2)	the correct programming pulse (50ms per byte); 
This is done by Solidisk Eprom Programmer.

3.8.4.3	PROGRAMMING AN EPROM:
Here are the steps to program (or ‘blow’) an EPROM:
1) connect the Eprom Programmer to the user port;
2) place a blank Eprom in the programming socket;
3) enter *BLOW <filename> <RETURN>

Now the details:

3.8.4.4	CONNECTING THE EPROM PROGRAMMER 
	TO THE USER PORT
Switch off the computer and turn it over to expose the row of sockets under the keyboard.

Connect the 2o-pin IDC cable to the user port, situated between the printer port and the 1MHz port. Make sure that the ‘bump’ on the IDC it mating correctly with the user port socket.
Notice a 28-pin socket on the EPROM PROGRAMMER just above the ribbon cable; this is the Programming Socket.
Power on the computer.
There are two LEDs (Electra-Luminescent Diodes), coloured red, on the EPROM PROGRAMMER. The one nearest to the ribbon cable is labelled ‘5’ (for 5 volts)—the ‘Vcc’ indicator; the other one is labelled ‘21’ (for 21 volts)—the ‘Vpp’ indicator. Vcc is also the ~v. supply to the Eprom Programmer, borrowed from the user port. Vpp is the programming voltage supply generated by a switched mode power supply built into the programmer.

IMPORTANT: NO INSERTION OR REMOVAL IS ALLOWED WHEN EITHER LED IS ON! Permanent damage (pure loss) will result from careless handling of Eprom devices.

Next to the LEDs are two switches, one for Vcc next to the Vcc indicator, the other is for the Vpp.
If you are using the Eprom Programmer for the first time try these switches until you are sure to understand how they work:
if the switch is on, the LED will be lit; if the switch is off, the LED will go off. Try them as many times as necessary.
Notice the small hissing sound when Vpp is switched on: it is generated by the high frequency going through the coil. The Vcc switch does not produce any sound.
Note: By experience we know that mishandling will sooner or later happen to most Eprom Programmer users, so please pay attention to this device—simple but capable of costing you money unnecessarily.

SWITCH OFF BOTH SWITCHES

3.8.4.5	READ AN EPROM ALREADY PROGRAMMED INTO 
	THE COMPUTER
Before you ‘blow’ the first Eprom with the Eprom programmer, it is useful to start by reading an EPROM already programmed and store it on to your disk.
Connect the Eprom Programmer as per section 3.8.4.3.

3.8.4.5.1	INSTALL AN EPROM INTO THE PROGRAMMING SOCKET
Place an EPROM that is already programmed into the programming socket. Ensure that pin 1 (top left-hand corner) of the EPROM is facing the ‘1’ sticker on the Eprom programmer. If in doubt ring us for advice. The top of the EPROM has a small notch. It should match the same notch on the programming socket. The bottom of the Eprom is facing the ribbon cable.

3.8.4.5.2	RUNNING THE UVIPROM PROGRAM:

Enter:
*UVIPROM <RETURN>
The screen should be cleared and you now see:
BBC computer
UVIPROM 1.0
Acorn DFS
BASIC
>

Enter:
*READ DUMMY <RETURN>
Dummy is one of the names that you can give to the Eprom being read.
You should see:
> >Press the BEAK key if Vcc is off< <
Press the BREAK key, switch on Vcc (the one nearest to the ribbon cable).
PRESS THE BREAK KEY AGAIN
Now re-enter:
*READ DUMMY <RETURN>
The previous exercise was devised to get you noticing the way the UVIPROM program reminds you to switch on Vcc and how to react to this request.
As Vcc is switched on, UVIPROM will start reading the Eprom right away. Your disk should be whirring for a couple of seconds and then stops. You may enter:

*DUMP DUMMY <RETURN>
You should recognise the EPROM that has been read by reading the copyright notice at the beginning of the DUMMY file. UVIPROM will report disk error if there is any, as usual. Especially, if no valid filename is given it will report:

BAD COMMAND
>

3.8.4.5	TESTING A BLANK EPROM:
There is no need to switch off the computer.
Switch off Vcc.
With a small screwdriver, remove the Eprom that was read.
Place a blank Eprom into the programming socket.
Switch on Vcc.
Enter:
*TEST <RETURN>
You should see:
OK
>
If the blank test fails, the locations where it fails will be displayed. Press the <ESCAPE> key to end the blank test.

3.8.4.6 PROGRAMMING AN EPROM
Suppose that you have done the blank test to the Eprom in the programming socket. Now you are ready to put program your first EPROM.
Suppose the program you want to put on to the EPROM is called ‘FOREVER’.
Enter:
*BLOW FOREVER <RETURN>
You should hear the disk drive whirring for a couple of seconds, then the prompt:
FILE LENGTH &. . . . . . . , Program this Eprom (Y/N)?:
appears.
As the Eprom programmer cannot distinguish between a 2764 and a 27128 EPROM, although it can program both devices, it cannot take a decision; it asks you to take it. Basically the answer is very simple: if the file length is &2ooo or less you can put it on to either a 2764-35 or 27128-35 EPROM. If it is greater than &2000 but smaller or equal to &4000, a 27128-35 will be required.
Important: Many programs saved with the MENU programs may show 4000 Hex as file length whereas their true length is only 2000 Hex or less. Please correct this by *LOADing it at 2000 and *SAVEing it again before blowing the EPROM.
Example: You have successfully created an NEWROM in Sideways RAM and saved it with the MENU program.
*INFO NEWROM <RETURN> 
NEWROM 8ooo D9CD 4000 120
	>

Now enter:
*LOAD NEWROM 2000 <RETURN>
*SAVE NEWROM 2000 +2000 D9CD 8000 
<RETURN>
So if the EPROM is a suitable type, press Y
The screen will be cleared and the prompt:
>SWITCH ON VPP AND PRESS <RETURN><<
Do as it says. Both LEDs must be lit before you press the <RETURN> key.
The programming sequence is now initiated. To keep your attention a hex dump of data being programmed on to the Eprom is displayed. You can halt the programming sequence by holding down both the <CONTROL> and the <SHIFT> keys. Programming can be abandoned at -any time by pressing the <ESCAPE> key.
When the programming is terminated, a ‘beep’ will be sounded and you are asked to switch off Vpp.

SWITCH OFF Vpp.

Then press the RETURN key.

3.8.4.7	COMPARE AN EPROM WITH THE MASTER:
To ensure that the programming of your EPROM is quite successful you can either remove it and use it in one of the Sideways ROM sockets or compare it first against the source file.

Enter:
*COMP FOREVER <RETURN>

All the display should be in green. Any mismatch found will be displayed in red. A summary of all mismatches will be displayed at the end of the COMParison sequence.

3.8.4.8	THE VIEW COMMAND:
*VIEW <filename> is a colourful version of *DUMP <filename>. It is provided to examine data programs before you program your EPROMs.

3.8.4.9	COMMAND SHORTFORM:
Once you get used to the UVIPROM program, commands may be entered in short form with a .‘ such as *BL., *V.,
*COM., *RE., etc.
	*H. U <RETURN> will show a summary of available commands.

3.8.4.10	UVIPROM SOURCE CODE
	The program ‘UVP’ is a source code for the UVIPROM. It is included for possible modification for yourself.

3.8.5	THE SPRITE PROGRAM:
	This program allows up to 50 SPRITES to be stored in Sideways RAM and printed anywhere on the screen using the PLOT command.
	Each Sprite takes up 256 bytes and can be created using the DEFINE program or the ‘Rubber Band’ (available later).
	The easiest way to get to grips with this simple yet potentially great idea is to run the ‘TEST’ program.

	To start:
	*SPRITE <RETURN>
	CHAIN “TEST” <RETURN>
	Every time you hit a key the test sprite will be printed at random location. The speed is all right: 20ms to send a sprite anywhere you want.
	It is possible to move up to 6o sprites per television frame; more than what the eyes can follow.
	To create your own sprites use the DEFINE program.

3.8.6	CHAIN “DEFINE” <RETURN>
	The Define program displays a grid of the size you want, up to 24 x 24 pixels. Press the cursor keys to move the cross hair over the chosen (enlarged) pixel and then the colour number.

3.11	VOLUMES 11 TO 20 : THE SOURCE CODE

The Source Code is the original material as it is sent to us by the authors of the programs published in other volumes. They include authors’ own annotations. You can not only modify these original programs to suit a particular situation (such as running Silexicon with a single disk drive) but also learn programming techniques from their authors, especially those of you who want to write your own Sideways software.
We are sure that this work will provoke interest in many users with regard to programming in machine code.

Chapter 4: Solidisk Local Experts

4.1.1	GETTING TO KNOW YOUR LOCAL EXPERT:
If you have any difficulty in fitting your Sideways RAM ring the Sales Office and we will give you the address, telephone number and the most suitable time to ring your nearest Solidisk local expert.
He will be able not only to sort out your hardware problems but also, while you are with him, to give you some advice on the software side.
Solidiak will pay his time spent with you, so don’t worry about the extra cost.
At the present time Solidisk local experts will intervene only if you have a hardware problem, NOT SOFTWARE PROBLEMS which must still be referred to the Technical Department. In the near future Solidisk will extend this software support service to the local network.

4.1.2	BECOMING SOLIDISK LOCAL EXPERT:
If you feel you are capable of helping other Sideways RAM users please write or ring us immediately.
To be eligible you must have BBC model B fitted with Sideways RAM. a fine soldering iron, a tester and good experience with the BBC hardware and software.
You are expected to work more than five hours a week (evenings or Saturdays) and should earn more than £20 extra cash every week.
At present time the general terms for a Solidisk local expert include payment for fitting service and special discount on diskettes and EPROMs which we expect the caller to buy from you.

1)	The basic rate for fitting a Sideways RAM or Solidisk DDFS is £3 per BBC computer—paid at the end of each month.
2)	The basic discount on EPROMs and DISKETTES is 15% for any quantity.
3)	10% discount for your own equipment (disk drives, printers. monitors, prom Programmers, Eprom Erasers, etc.).

So if you are interested please ring us as soon as possible.

4.3	WRITING TO US:
TOBY MAINWARING has been appointed as supervisor of the local help network and editor of the bi-monthly Solidisk Newsletter.
So please write to him and talk about your problems, comments, suggestions, etc.

Send to him any programs, routines, discoveries, hints and tips that you want to share with other users. The address is:

	Mr. T. MAINWARING
	Solidisk Technology Ltd.
	17 Sweyne Avenue
	Southend-on-Sea
	Essex SS2 6JQ

ACKNOWLEDGEMENTS
We would like to thank all those who have contributed towards our software support in general and also to this manual. Any suggestions and constructive comments are always welcome and we look forward to valuable participation in the future.
If you intend to send in programs, please remember: the support service is not rich enough to pay four programmers doing the same job. It is in the interest of all users that we should create different software and therefore talk to the support service. Another point is that it is so simple to turn any program into Sideways RAM program which will then have much faster loading and ease of use.
Please carefully label any disk you send in with your names address, the name of the program, and include a covering letter. Please allow three weeks for acknowledgement.
Thank you again for the numerous letters received every day by the service. We are considering introducing a “FREE AD” service.
Solidisk will pay for a one-page advert in one of the popular BBC magazines containing free advertisements of programs not published by the Service because they are too expensive to be added to the Service or they are not of interest to the majority of Sideways RAM users.
Authors can then advertise their programs at no cost. We shall, however, impose the condition that no program diskette will cost more than £5 to any Solidisk Sideways RAM user and adequate documentation and service must be provided.