!BOOT files, modules and memory

Richard Bettis
One of the main drawbacks of the Hybrid Music System is the limited memory of the BBC micro. A lot of memory is taken up by the Studio 5000 modules all of which may not be necessary. Some modules, once loaded, cannot be removed - these are known as 'fixed-only'. Other modules can be removed, saving memory, depending on how they were loaded.
If they were loaded via INSTALL, they cannot be later removed. If, however, they were loaded via MLOAD, they can be removed later via MDELETE, or by loading a program which does not require them.
The standard system disc !BOOT file loads several modules into memory using INSTALL. This means that some of these modules, which are not 'fixed-only', cannot be removed even if they are not required.
In order to get the most free memory with any particular setup, therefore, only the necessary modules should be INSTALLed. On loading, all programs will 'call up' any modules they require, and these will be removed when the next program is loaded. But without the basic modules required by all programs there will be a lot of noisy and tedious disc accesses as each new program MLOADs the modules it requires.
Because of this, a !BOOT system should INSTALL all the modules in constant use, and ONLY those modules. In my setup, this has led to a number of different !BOOT discs: one for the Music 5000 alone, one for the Music 4000, one for the Music 2000 (all as supplied by Hybrid), and even at one time a disc which INSTALLed Notepad and the Mixing Desk for setting up mixes without lots of disc accesses.
Now I have rationalised the system, and only have one disc, which contains all the modules I have, but with a menu system for booting up the system I want at the time.
The main !BOOT file looks like this:
*BASIC MODE 7 CHAIN"!MENU"
where !MENU is the following BASIC program:
10 *FX18
20 *FX15
30 MODE7
40 PRINTTAB(0,5)"Hybrid Music System"''''
50 PRINTTAB(10)"1) with MIDI Module"
60 PRINTTAB(10)"2) without MIDI" 
70 PRINTTAB(10)"3) without M4000 keyboard"
80 PRINTTAB(10)"4) with only MIDI module"
90 REPEATPRINTTAB(0,18)"Which system?";:A$=INKEY$(10)
100 UNTILVAL(A$)>0 ANDVAL(A$)<5
110 OP=VAL(A$)
120 PRINTOP
130 ON OP GOTO 140,160,180,200
140 *EXEC !M2BOOT
150 STOP
160 *EXEC !M4BOOT
170 STOP
180 *EXEC !M5BOOT
190 STOP
200 *EXEC !M2ONLY
210 STOP
The required system for that session is then chosen, and the appropriate file *EXECed.
The files are the original !BOOT files from my various other system discs, shown below.

!M5BOOT

*BASIC
*/C.PREPARE R K
*FX 202,48
*FX 118
*KEY 0 |"A.MPLINEX|"LOADRUN|M
*AMPLE
% Studio 5000 ... M5 only !BOOT
":0.M." MPREFIX
"INT" INSTALL
"M5" INSTALL
"EW" INSTALL
"MENU" INSTALL
"FX1A" INSTALL
"INS1" INSTALL
MAIN

!M4BOOT

*BASIC
*/C.PREPARE R K
*FX 202,48
*FX 118
*AMPLE
% Studio 5000 ... M5 & M4 !BOOT
":0.M." MPREFIX
"INT" INSTALL
"M4" INSTALL
"M5" INSTALL
"EW" INSTALL
"MENU" INSTALL
"FX1A" INSTALL
"INS1" INSTALL
MAIN

!M2BOOT

*BASIC
*/C.PREPARE R K
*FX 202,48
*FX 118
*AMPLE % Studio 5000-2 Release 2
":0.M." MPREFIX
"INT" INSTALL
"M2" INSTALL
"M4" INSTALL % Optional
"M5" INSTALL
"EW" INSTALL
"MENU" INSTALL
"FX1A" INSTALL
"INS1" INSTALL
READY 8 VOICES MIDIV 1 MIDILINE
&B0 MIDIOUT % Kill EMT-10
124 MIDIOUT % OMNI ON mode
0 MIDIOUT   % (Send Mode 1)
MAIN
Note: the Music 5000 only module is used almost exclusively with AMPLINEX, and hence the 'f0' key is programmed to LOAD and RUN "A.MPLINEX".
I also have a Yamaha EMT-10 Expander in my MIDI set-up (a nice sampled piano for the money...) which powers up receiving on all MIDI channels; hence the little program segment at the end of the Music 2000 boot-up.
The file for final menu option - !M2ONLY - is the same as !M2BOOT but does not INSTALL the Music 5000 sound modules (EW and INS1). This is for when I am only using MIDI sound sources.
I hope this technique may be of use to all those who are suffering, as I was, from a surfeit of discs all labelled 'xxxx System Disc'. Now I only have to remember which program disc that tune was on...

Published in AMPLINEX 015, January 1990