Command Pool Utility v1.20
--------------------------
By Lars 0sterballe, Denmark.

The Command Pool is a sort of inbetween of a ROM and a RAMdisk - combining good features from both. Your sideways RAM must not be write protected while the Command Pool is active, as more RAM locations are used actively while running Command Pool routines. Your sideways RAM must be of the Master type: It should act as a ROM via the ROM paging register (&FE30) so that a write operation to addresses &8000 to &BFFF is directed to the ROM/RAM that is paged in through address &FE30. Most sideways RAM will work correctly - but some third party products use other addressing methods. You can change the program to fit a non-standard SWRAM (ex. BBC+ ?), as the source code for the Command Pool can be found in the file 'B.Command' for BASIC II only. To make it BASIC I compatible, replace the EQUs with OPT FNEQUs in the usual way.

You could compare the Command Pool to the IBM compatible DOS directory on harddisk. This directory contains all the more rarely used DOS-commands. If you want to execute one of these, you type the command from the command line.

The computer loads and runs the command, as any other program.

The Command Pool does exactly the same for the 8bit BBC.
The only command in Command Pool is *UPLOAD. 

Syntax:

  *UPLOAD <afsp>

<afsp> must be a machine code program, suitable for execution in the base memory (0000-7FFF) and taking up no more than about 15K.

When you type *UPLOAD <afsp> the file <afsp> will be uploaded to the Command Pool, where it will remain until the Command Pool is erased, either with *REMOVE or by turning off the computer. 

Type *HELP to see which files are uploaded to the Command Pool.

The may be no more than 14 files in the pool, or a total of about 15K.

When you want to execute a command from the pool, simply type:

  *<afsp>, ex: *hilace

The pool does not distinguish between upper- and lower-case letters.


The opportunity to make an AUTOEXE file has been included in v1.20. AUTOEXE must be an ASCII file containing the commands that will be executed after BREAK or CTRL+BREAK. An example of an AUTOEXE file:

*FX12,3
L.O7
MODE 3

The file AUTOEXE must be uploaded, as other files, with *UPLOAD. AUTOEXE may be no longer that the amount of characters allowed by the keyboard buffer (30). Do not try executing AUTOEXE as a star-command (*AUTOEXE)!

Abbreviations are supported. Ex: *HIL. for *HILACE .

When you execute a pool command it will be downloaded to base memory at the address given in the file description as on disk.

The used base memory will not be restored after use.

As you see, executing a pool command gives the same result as executing it from disk.

Command Pool effectively is a new drive for the BBC, eliminating the need to swap disk all the time. Tape users could have a set of often used commands ready for excution, without loss of base memory.

When you have created a pool, you could alternatively save the ROMimage with *ARCHIVE. Upon retrieval all the pool commands will be resident. Allways remember to keep a backup of the original ROMimage!

The Command Pool uses up no vectors, giving total compatibility (allmost) to all other software, unless sideways RAM is grabbed. No zero-page locations are corrupted.

You'll need at least 16K of sideways RAM (no more will be used).


OTHER COMMANDS ON THIS DISKETTE:
--------------------------------

*ARCHIVE

Used to save (archive) the contents of a RAM bank to diskette/tape.


*FILTER

A kind of *CAT/*INFO command which filters out different kind of files. Output can be redirected to memory. This enables you to make a pick-file window easily.


*HILACE

Usefull in MODE 0/3 wordprocessors. Makes reading easier in some cases.


*KILL

Erases the base memory: Equivalent to:
   *FX247
   *FX200,2
   <BREAK>


*MAPMEM

Returns a list of free sideways RAM banks.


*PLUG

Loads a ROMimage into a free sideways RAM bank if any.


*REMOVE

Removes a ROMimage from a specified RAM bank.


*RESERVE

Reserves a sideways RAM bank by setting it up as a simple ROMimage, thereby faking *PLUG or *MAPMEM to skip it on search for memory.
