GoMMC Guide



Overview

GoMMC is a storage system for the Acorn BBC model B, BBC Master and Electron.

It allows storage of practically any number of floppy discs, harddiscs and tapes, all on one MMC (MultiMedia Card). Once stored, any one of them may be selected by name (with a *-command), and used just like before (only much faster and quieter). GoMMC is completely self-contained, and can make do with a 'bare' machine (without any floppy or harddisc hardware or software).

GoMMC is powerful, and there is a lot to tell. Perhaps too much to do it all in one go. Therefore, this manual is split into two parts.

The 'Basic use' section attempts to describe basic use of GoMMC only, and hold back on details. If you're a first time user of GoMMC, or only looking for basic information, read this section.

The 'Advanced use' section provides systematic, detailed descriptions of all (other) aspects of GoMMC. It's there if you're ready for more, or need to know more details.


Basic use

Overview

Basic use of GoMMC involves :

1) Installation
2) Putting a disc on the MMC
3) Running a patched filing system
4) Use the disc via the filing system

Installation

Step 1 : Hardware installation

Follow the instructions in the Installation section of this manual.

When you've finished hardware installation, a brief checkup can be performed :

So far so good ! Now, if you have an MMC :

This should now at least show the capacity of the MMC. If the MMC is already (GoMMC-)formatted, it should also show the free and used space, and the number of objects.

Note that powering down before inserting or removing the MMC is not strictly necessary. But if you don't, always press CTRL-BREAK afterwards.

Step 2 : Software installation

Follow the instructions in the Software section of this manual.

Step 3 : Get to know the GoMMC tools

The GoMMC tools are an integral part of using GoMMC. You don't need all the details yet, but you do need to know how to run them.

The 'native' GoMMC tools (refer to 'Tools : 8-bit environment' for details) run on your BBC or Electron and are supplied as separate files. To run them, which can be done in several ways, refer to 'Running GoMMC tools'. Note the presence of MMCHelp, which can help you formulate command lines for a number of other GoMMC tools, and explore their capabilities.

The only 'foreign' GoMMC tool (refer to 'Tools : GoMMCio' for details) runs on PCs, as a command-line executable. It accepts commands that act mostly like the corresponding 'native' tools, but has many more options.

Step 4 : Format your MMC

Before GoMMC can use your MMC, you must format it with MMCFO. If you bought the MMC together with GoMMC, it will already be formatted, so you can skip ahead to step 4. Otherwise :

Power down, plug the MMC into GoMMC, and power up. Then run MMCFO.

You should see something similar to :

Formatting flash card ... done
Verifying format ... ok
Please hard-reset your machine now

Do so, e.g. press CTRL-BREAK.

Step 5 : Verify that your MMC works ok

Enter '*MMCInfo' and verify the logic of what it displays (8704 bytes will be 'used', the other values follow from that and the MMC's capacity).

If it says 'MMC not formatted', you have not (successfully) formatted your MMC, and your MMC may be incompatible with GoMMC (but this is exceedingly rare, so do try step 3 again first, then if it keeps failing, contact me).

Putting a disc on the MMC

Discs (floppies, harddiscs) can be put on the MMC by creating new discs or adding existing ones. Creating is introduced here. Adding is accomplished by using either MMCADI or GoMMCio's 'ADD DISC' command. Both real floppies and harddiscs, or images thereof (in files) can be added.

In the following, feel free to replace 'my_disc' with any other name you choose.

To create a generic, double sided, double density DFS disc, enter, e.g. :

*MMCTool MMCNEW D 400K my_disc

To create a generic, double sided, double density ADFS disc, enter, e.g. :

*MMCTool MMCNEW A 640K my_disc

Or, if you want to go 'big', create an ADFS harddisc, and enter, e.g. :

*MMCTool MMCNEW A 100M my_disc

Running a patched filing system

A patched filing system (an original filing system patched for GoMMC) is needed to access the discs on the MMC. Accessing DFS discs requires a DFS type filing system, accessing ADFS discs requires an ADFS type filing system. DFS and ADFS can be used at the same time.

The filing systems that GoMMC supports (i.e. provides patches for) are listed under 'Supported filing systems' in the Advanced section of this manual.

To obtain the filing system ROM image (containing either an original or patched version of the filing system), go to this directory.

The first character of the file name, 'O' or 'P', indicates original or patched respectively. The second, 'D' or 'A', indicates 'DFS' or 'ADFS' respectively. The number that ends the file name indicates the version of the filing system. E.g. 'PAFS130.BIN' is the patched version of Acorn ADFS 1.30.

You can run a patched filing system in two ways. Via sideways ROM, or via sideways RAM.

1) Via sideways ROM

You simply program the 'P' image of the filing system into a PROM and insert that into a free sideways ROM socket (but note that this can only be done with filing systems that don't need to run from sideways RAM).

2) Via sideways RAM

You auto-load the patched filing system into sideways RAM via GoMMC (this also takes care of resetting the machine for you, so it almost seems like the filing system was in ROM).

First you add it to the MMC, by either :

a) running MMCAFS. E.g. use :

*MMCTool MMCAFS PAFS130

(after copying the 'PAFS130.BIN' file as 'PAFS130' to a DFS or ADFS floppy).

b) using GoMMCio's 'ADD FS' command. E.g. use :

GoMMCio -dQ -c "ADD FS 3 PAFS130.BIN"

(after copying the 'PAFS130.BIN' file to the current directory on your PC).

Then, on your GoMMC-equipped machine, enter '*MMCConfig FSNR x' (where x is the GoMMC 'internal' filing system number, which would be 3 for the patched ADFS 1.30 added in the given examples), and '*MMCConfig FSRM y' (where y is the number of the sideways RAM bank that the filing system should be loaded into, or, alternatively, the ROM number of the free ROM bank on GoMMC). Refer to 'Sideways ROM/RAM' in the Advanced section of this manual for details about the sideways ROM/RAM banks available on your particular machine. Then either power cycle your machine or enter '*MMCReset' to auto-load the selected filing system.

Use the disc via the filing system

With the patched filing system of choice up and running, now simply select a DFS and/or ADFS disc (as appropriate for the filing system) with *MMCDisc. E.g. enter '*MMCDisc Work' if you have put a disc called 'Work' on the MMC. Then press CTRL-BREAK, and start using the disc as if it were a regular floppy or harddisc (e.g. enter '*Cat', or SAVE and LOAD a BASIC program).

Select another disc with *MMCDisc at any time you wish, but remember to press CTRL-BREAK immediately afterwards (although GoMMC doesn't need it, the filing system may need it to notice the disc change).

Refer to 'GoMMC ROM : Star commands' in the Advanced section of this manual for more information about the star commands that you can now start using.

Have fun !

Running GoMMC tools

GoMMC tools (e.g. MMCUP, MMCFO, MMCADI, etc.) all need to run 'natively'. That is, on your BBC or Electron. You will find them among the GoMMC software.

You will have downloaded the GoMMC software via Internet, so the GoMMC tool files will initially be on your machine connected to Internet (or on some other PC you subsequently copied them to). That machine will be referred to as 'the foreign machine'.

There are a number of ways of running a tool (skip to the one you want to use) :

1) Via ToolROM

You must have a 'ToolROM' (which is a PROM containing the ROM image file 'TOOLROM', which you'll find among the GoMMC software). This contains a few of the tools, including MMCUP, MMCWI and MMCFO (but not all of them, unfortunately, because ROM space is limited to 16 KB).

Power down, insert the ToolROM into a free sideways ROM socket in your machine, then power up again. Then use the '*ToolRun' command to run the tool, e.g. enter '*ToolRun MMCUP'. To see which tools are in the ToolROM, enter '*ROM', then '*Opt 1 2', then '*Cat'.

For more details, refer to 'Tools : TOOLROM' in the Advanced section of this manual.

2) Via floppy

A floppy disc drive must be available on your (Acorn) machine, and you must find some way to transfer the tool file from the foreign machine to a DFS or ADFS floppy that your (Acorn) machine can read.

This can be a complicated matter, since not all modern PCs can handle (and thus write files to) DFS or ADFS formatted floppies. They certainly can't do it 'out of the box' software-wise (nor, oftentimes, hardware-wise).

You may want to consider using the following tools (find them on Internet via a search engine) :

- OmniFlop (e.g. search for 'OmniFlop')
- DFS or ADFS Explorer (e.g. search for 'DFS Explorer')
- XFer (e.g. search for 'XFer BBC')

Once the tool file is on floppy, to run the tool, simply enter e.g. '*Run MMCUP'.

3) Via 65Link

65Link is a 'remote storage filing system' for the BBC. Setting up a 65Link system is not trivial (it includes making a special cable and programming a PROM), but you will be able to run tool files straight from the harddisc of your foreign machine.

For more information, see :

//www.zeridajh.org/software/65link/

Once the tool file is on a 'disc' in a 65Link 'volume', to run the tool, simply enter e.g. '*Run MMCUP'.

4) Via the MMC

Use GoMMCio's 'ADD TOOL' command to copy the tool to the MMC (refer to 'Tools : GoMMCio').

To copy the tool, use :

GoMMCio -dQ -c "ADD TOOL <your tool name> <tool file name>"

where Q is the drive letter of the MMC, <tool file name> is the file name of the tool, and <your tool name> is the name you want to give it on the MMC, e.g. :

GoMMCio -dK -c "ADD TOOL WI MMCWI"

or (under Linux) :

GoMMCio -d/dev/sdc -c "ADD TOOL WI MMCWI"

and verify that GoMMCio exits without error.

If your MMC is not yet formatted for GoMMC, add '-f -x ' (note the space after the x) before the '-c'. This is useful if your only way of running MMCFO is via the MMC, but your MMC is unformatted, which would seem to cause a 'chicken and egg' type of problem.

Now power down your (Acorn) machine. Move the MMC from your flash card reader to GoMMC. Power up your (Acorn) machine. Then enter e.g. '*MMCTool WI'.


Advanced use

The hardware

There are a few important things to note about the GoMMC hardware before you use the software.

Most importantly this : GoMMC has two on-board 16 KB ROM banks, one of which contains the GoMMC ROM software (as programmed by MMCUP), and one which is 'free' (referred to as 'the free ROM bank on GoMMC'). To the machine, the free ROM bank is no different than any other ROM bank : it is read-only, its contents are remembered when the machine is powered down, and it appears as ROM number x (what x is depends on the machine, refer to 'Sideways ROM/RAM' for details). But its contents can be changed by software, in particular the GoMMC ROM software (via configuration options FSNR and FSRM) and MMCWI. I.e. the free ROM bank is similar to a flash ROM.

Note also that GoMMC can be 'read disabled', to prevent corrupted code in one or both of GoMMC's ROM banks from crashing the machine. Refer to 'Recovery' for details.

The software

The GoMMC software consists of several components :

The sideways ROM provides low level access to the MMC, interfaces with patched filing systems and provides simple interactive functionality (select and use discs). The tools mainly allow discs and other data to be added to the MMC. They are mostly command-line utilities, to allow operation in batch mode (e.g. from an *EXEC file).

The 8-bit tools provide for :

The PC tools provide for :

The functionality provided by the GoMMC ROM is discussed in the sections titled 'GoMMC ROM : etc.'. The tools are discussed in the sections titled 'Tools : etc.'.

Filing systems

Probably the most 'difficult' part of using GoMMC is how to handle (patched) filing systems. This is mainly a consequence of the fact that GoMMC supports not just one, but many different filing systems.

Filing systems reside in sideways ROM or RAM. It is highly recommended that you first read 'Sideways ROM/RAM', to get to know more about the sideways ROM/RAM banks in your machine.

Regular/original filing systems like DFS and ADFS cannot access the MMC 'out of the box'. Most of them were meant to (and can only) access physical floppies and harddiscs, e.g. via a floppy disc interface (based on an 8271 or 1770 floppy disc controller).

Regular/original filing systems can, however, be patched to access the MMC (via GoMMC) instead of physical media (note that such a patched filing system can no longer access physical media !). In GoMMC parlance, these filing systems are simply called 'patched filing systems'. Wherever in this manual I refer to a 'patched filing system', such a filing system is meant.

A patched filing system can be introduced to the system in PROM (insert this into a free sideways ROM socket), or by auto-loading it into either a sideways RAM bank (see configuration options FSNR and FSRM for details) or the free ROM bank on GoMMC.

GoMMC provides suitable patches for a large number of filing systems. Refer to 'Supported filing systems' for details (and to 'Running patched filing systems' for details on where to obtain the filing system images).

You will usually need to run both the original and patched versions of a filing system. The first to be able to copy the contents of your physical discs to the MMC, the second to be able to access them from there. But note that original and patched versions of the same filing system cannot be run together at the same time.

On the BBC Master, the mechanism to arrange this is simple. When you need to add physical discs to the MMC, ensure you've *INSERTed the original version of the filing system, and *UNPLUGged the patched version of the filing system (if any). When you wish to access those discs via GoMMC, ensure you've *INSERTed the patched version, and *UNPLUGged the original version.

On the BBC B/BBC B+/Electron, there is no standard mechanism, but the GoMMC ROM software can help. This is only fully reliable when it runs as ROM number 15, because only ROMs with lower numbers can be affected. To 'unplug' a ROM, enter :

*MMCConfig ROMx 1

where 'x' is the ROM number (0 through 9 and A through F for ROMs 0 through 15 respectively). To 'insert' a ROM, enter :

*MMCConfig ROMx 0

Then enter '*MMCReset' (or power-cycle your machine). The 'unplugged' ROM will now be inactive and the 'inserted' one will be active.

NOTE !!! If the original and patched versions of a filing system do not differ in their first 1K bytes, the OS will permanently disable the one with the lowest ROM number (currently, this is the case for, e.g., DFS 2.26). In such a case, call the higher numbered one 'x' and the lower numbered one 'y', and then not only

*MMCConfig ROMx 1

but also

*MMCConfig ROMy 2

(i.e. 2 instead of 0). This ensures that the lower numbered ROM is not disabled by the OS (or, rather, that it is re-enabled by GoMMC).

Note that GoMMC is perfectly happy to serve multiple filing systems at the same time. E.g. it's perfectly possible to run both DFS 2.26 and ADFS 1.30 at the same time, and, e.g., copy files between them.

Tools : 8-bit environment

The tools called MMCUP, MMCWI, MMCFO, MMCADI, MMCAFS, MMCATO, MMCNEW, MMCDEL and MMCCPY run on your BBC or Electron only. They are all command-line utilities, some taking arguments, some not. If you run them via a filing system (instead of *MMCTool), they all need to have their load and execution address set to (hex) &2000 (check that with *Info before you *Run them !).

In addition, there is a tool called 'MMCFlop' (which allows you to write discs on the MMC back to a physical floppy), a tool called 'MMCMenu' (which is an interactive disc or tape selection program), a tool called 'MMCHelp' (which allows you to build a tool command line by question / answer) and a tool called 'MMCCXD' (which displays some interesting information about your MMC). All these are BASIC programs. Simply CHAIN them.

You can store the tools on a physical floppy and run them via an original (i.e. unpatched) filing system, or you can store them on the MMC and run them via the *MMCTool command, which eliminates the need to have a physical floppy, with the tools on it, accessible at all times.

Finally, the TOOLROM file contains a ROM image. Refer to 'Tools : TOOLROM'.

Tools : PC environment

A powerful tool called GoMMCio is provided, allowing you to manipulate the MMC contents on a PC with a flash card reader that accepts MMCs.

Tools : MMCUP

This tool updates the GoMMC ROM software. It takes no arguments (enter e.g. '*MMCTool MMCUP').

Usually, a previous version of the software will already be running on your machine. If so, GoMMC's ROM number will be determined automatically. If not, you will be asked for it (use 0 through 9 and A through F to specify ROM numbers 0 through 15 respectively).

After running MMCUP, always power-cycle the machine (switch it off, wait a few seconds, then switch it on again).

Tools : MMCWI

This tool wipes the free ROM bank on GoMMC. It takes no arguments (enter e.g. '*MMCTool MMCWI').

You will be asked for the ROM numbers of GoMMC and the free ROM bank on GoMMC (use 0 through 9 and A through F to specify slots 0 through 15 respectively). E.g. for the BBC Master, you would probably answer '6', then '7'.

After running MMCWI, always press CTRL-BREAK.

Tools : MMCFO

This tool formats an MMC for use by GoMMC. It takes no arguments (enter e.g. '*MMCTool MMCFO').

Note that all the usual formatting warnings apply, especially that all data previously stored on the MMC is lost, so use this tool with care.

After running MMCFO, always press CTRL-BREAK.

Tools : MMCAFS

This tool allows you to add patched and/or original filing systems to the MMC, so they can be auto-loaded (see configuration options FSNR and FSRM).

Enter e.g. '*MMCAFS <file name>' where <file name> is the file name of the filing system ROM image (it must be exactly 16 KB in size). If the image is recognized, it is added to the MMC. Refer to 'Supported filing systems' for details (and to 'Running patched filing systems' for details on where to obtain the filing system ROM images).

Note that both the original and patched version of a filing system may be stored on the MMC. When you make use of the filing system auto-load functions, this allows you to switch easily between the original and patched filing system (simply reconfigure to the other one and *MMCReset or power-cycle the machine to auto-load it).

Tools : MMCATO

This tool allows you to add (GoMMC) tools to the MMC, so they can be run directly from the MMC, without a disc containing the tools needing to be present (and the filing system needed to access it).

Enter e.g. '*MMCATO <file name> <tool name>' to add tool <file name> under the name <tool name>. Thereafter, you can run the tool using '*MMCTool <tool name>'.

Note that a tool may be a BASIC program as well as a machine code program, and need not be a standard GoMMC tool : it may also be something you made yourself. For details, refer to the discussion of *MMCTool.

Tools : MMCADI

This tool allows you to add discs to the MMC. A.k.a. "what it's all about" ! ;-)

It takes either a disc image (i.e. an image of a floppy or hard disc in a file) or a physical floppy or hard disc as its input. Disc image files may be on any filing system you want, you only need to ensure that the file is accessible when you run MMCADI.

Enter e.g. '*MMCADI DN <file name> <disc name>' to add a DFS disc image in file <file name> to the MMC under name <disc name> (the latter is what you thereafter specify to *MMCDisc and *MMCList to find the disc).

The disc name may be up to 48 characters long. Note, in this respect, that you can use a simple kind of 'directory' structure (refer to the discussion of *MMCPrefix), so it pays to put a little thought in how to name discs.

'MMCADI DN' (Add Disc DFS Non-interlaced) is used to add DFS type floppy discs, with a disc image file as the source. The file may be any size, up to 400 KB, must contain <drive 0> <drive 2>, in that order, and results in a disc of the same size as the disc image (but rounded up to a 512 byte multiple).

'MMCADI DI' (Add Disc DFS Interlaced) is like 'MMCADI DN', but the image file contents are 'track-interleaved', must contain <track 0, drive 0> <track 0, drive 2> <track 1, drive 0> ... <track 79, drive 2>, in that order, and always results in a 400 KB size disc.

'MMCADI DR' (Add Disc DFS Real) is used to add DFS type discs, with a real floppy disc as the source. Replace <file name> with the drive number(s) to copy (e.g. '0' for drive 0 only, or '0+2' for drive 0 and 2).

'MMCADI AN' (Add Disc ADFS Non-interlaced) is used to add ADFS type floppy or hard discs, with a disc image file as the source. The file may be any size, up to 512 MB, and results in a disc of the same size as the disc image (but rounded up to a 512 byte multiple).

'MMCADI AI' (Add Disc ADFS Interlaced) is like 'MMCADI AN', but the image file contents are 'track-interleaved', must contain <track 0, head 0> <track 0, head 1> <track 1, head 0> ... <track 79, head 1>, in that order, and always results in a 640 KB size disc.

'MMCADI AR' (Add Disc ADFS Real) is used to add ADFS type discs, with a real floppy or hard disc as the source. Replace <file name> with the drive number to copy (e.g. '0' for drive 0, or '4' for drive 4).

Note that adding real discs will cause a temporary switch from the currently selected filing system to (A)DFS. If errors occur, the switch back may fail.

Tools : MMCNEW

This tool allows you to create a new, empty DFS or ADFS disc.

Enter e.g. '*MMCNEW D <size> <disc name>' to create a DFS disc (size may be 1 KB - 400 KB) or '*MMCNEW A <size> <disc name>' to create an ADFS disc (size may be 2 KB - 512 MB). Post-fix your size with 'K' or 'M' (for KB or MB respectively), e.g. '400K' or '100M'.

The free space on new discs that are 'floppy sized' (640 KB or under) will be explicitly wiped. The free space on larger discs is left 'as is' (because explicitly wiping e.g. a 512 MB ADFS harddisc would take way too much time).

Tools : MMCDEL

This tool allows you to delete an object (filing system, tool or medium (disc or tape)) on the MMC.

The object is removed from the catalogue, but it will still occupy the same storage space it did before. To reclaim the storage space (e.g. when your MMC is becoming full) do a backup and restore with GoMMCio.

Enter e.g. '*MMCDEL F <FS number>' to delete a filing system (where <FS number> is the GoMMC 'internal' filing system number, refer to 'Supported filing systems' for a list). Enter e.g. '*MMCDEL T <tool name>' to delete a tool. Enter e.g. '*MMCDEL M <disc or tape name>' to delete a disc or tape.

Tools : MMCCPY

This tool allows you to copy the entire contents of one disc to another. The discs must be the same filing system and size.

Enter e.g. '*MMCCPY <disc name 1> <disc name 2>' to copy 'disc 1' to 'disc 2'.

One scenario that makes MMCCPY useful is one where you have a 'work disc' that you regularly reset to the state of a 'reference disc'.

Tools : MMCFlop

This tool allows you to write discs on the MMC (back) to a physical floppy. Enter e.g. 'CHAIN "MMCFlop"' to run it.

Ensure that no patched filing systems are running (if necessary, use '*Unplug' on the BBC Master, or '*MMCConfig ROMx 1' on other machines).

When run, MMCFlop will present a simple menu (which will gain a few choices as you go along) :

0. Exit
1. Switch to ADFS (now DFS)
2. Select target drive
3. Select source disc

Press 0,1,2 or 3.

0 exits MMCFlop.

1 allows you to switch between DFS and ADFS. When you switch, your previous choices are assumed not to apply anymore, and you will revert to the basic startup menu.

2 allows selection of the drive to copy to (on your physical floppy).

3 allows selection of the disc to copy from (on the MMC). You may use wildcards.

4 ('Select source drive'), which appears once you made a selection via '3', allows selection of the drive to copy from (i.e. a drive contained by the disc selected via '3'). Beware of selecting 'shrunk' drives, since they will leave part of your floppy's capacity unused, and won't allow files to be added later on.

5 ('Copy source drive to target drive'), which appears once you made a selection via '2', '3' and '4', will start a drive copy.

6 ('Verify target drive via source drive'), which appears once you made a selection via '2', '3' and '4', will start a drive verify.

Note that if you selected a DFS disc that contains more than one drive (e.g. two, originating from a 'double-sided' disc), you will want to copy both drive 0 and 2 to your floppy (and/or 1 and 3 to a second floppy, if there are four drives).

Tools : MMCMenu

This tool allows interactive selection of a medium (disc or tape). It is meant to be used in conjunction with the BOOT configuration option (refer to its discussion for details). Enter e.g. 'CHAIN "MMCMenu"' to run it.

When it is run, you're prompted to enter (any part of) a disc or tape name to search for (you can make use of the left and right arrow keys and DELETE, and SPACE to reset to an empty name). Press RETURN to start the search. All matches that '*MMCList *xxxx*' would have brought up will be listed (where xxxx is what has been entered of the medium name). Choose any one of them by pressing the key indicated in front of the full medium name, or press RETURN to return to the medium name prompt and do another search. If there are more matches than will fit on screen, the list will end with a '...' line. Then either enter more of the medium name to reduce the number of matches, or choose a match anyway.

Choosing a match will execute an *MMCDisc or *MMCTape command, as appropriate, and exit MMCMenu. If you selected a disc, then, assuming a patched filing system is running, subsequently pressing CTRL-SHIFT-BREAK should boot the selected disc. If you selected a tape, enter '*Tape', then 'CHAIN""' or '*Run' as appropriate.

MMCMenu is ideally used in conjunction with the BOOT configuration option (refer to its discussion for details). E.g. if you put MMCMenu on the MMC as a tool named 'MMCMenu', and configure BOOT to 3, every CTRL-BREAK will auto-run MMCMenu. You then select a disc, and press CTRL-SHIFT-BREAK to boot the selected disc (MMCMenu won't be run this time, because the BOOT setting is ignored when SHIFT is pressed).

Tools : MMCHelp

This tool allows you to interactively build a tool command line. Simply run it (enter e.g. 'CHAIN "MMCHelp"') and answer the questions.

Tools : MMCCXD

This tool displays some interesting information about your MMC. Enter e.g. 'CHAIN "MMCCXD"' to run it.

Tools : TOOLROM

This is the image of a ROM that contains a copy of MMCUP, MMCWI, MMCFO and MMCADI, allowing you to run these tools via the ROM filing system (which is standard on all BBCs and Electrons).

It may be useful if, for example, you need to run MMCUP or MMCFO on your machine, but are unable to do so in any other way, e.g. when your only means of file transport from the outside world to your machine is GoMMC.

Burn the ROM image into a 16 KB PROM (e.g. a 27C128). Then : power down, insert the PROM into a free sideways ROM socket, power up, and use the '*ToolRun' command to run the tools, e.g. enter '*ToolRun MMCUP'.

Note that, on an Electron, you can use the ToolROM by switching the utility socket on the interface to 'ROM' mode (refer to the Installation section of this manual for details), and replacing whatever is in the utility socket with the ToolROM.

Note that tools can also be run with '*Run' (after selecting the ROM filing system with '*ROM'), but this is not recommended for several reasons. For example, on the BBC model B and Electron, no parameters can be passed (i.e. MMCADI cannot be used). But more importantly, on any machine but a BBC Master, there is a serious bug in the ROM filing system that causes corruption of random memory locations (possibly even of the memory copy of the executable, before it is executed). To circumvent this bug, you would need to enter '!&C8=&70' (or, if you wish, '!200=112') before every '*Run' command.

Tools : GoMMCio

GoMMCio runs on a PC with a flash card reader and allows batch-wise addition, extraction, deletion and renaming of discs, tapes, tools and filing systems, including backup and restore of the entire contents of the MMC.

GoMMCio accepts any number of 'commands' (taken from script files, or specified directly on the commandline), and executes them in one go.

The basic syntax is : 'GoMMCio -d<drive> <script>', where <script> is the file name of a script, and <drive> is the drive letter under which the MMC appears (if you don't know which one it is, you may want to 'double-click' all the flash card reader drives, and find the one where this invokes a 'not formatted' type of error). Under Linux, instead of 'K', specify what your MMC appears as under /dev (e.g. use '-d/dev/sdc' instead of '-dK').

You may combine any number of scripts (specified by file name) and 'single' commands (specified by double-quoting, preceded by '-c'). They are executed in the order in which they are specified on the commandline. E.g.

GoMMCio -dK -c "ADD DFS DISC N Hopper Hopper.ssd"

will simply add one (single-sided) DFS disc to the MMC. Or e.g.

GoMMCio -dK script.txt

will execute all the commands contained within the file 'script.txt'. Or e.g.

GoMMCio -dK -c "DO SHRINK" script.txt

will first execute a 'DO SHRINK' command, and then all the commands contained within the file 'script.txt'.

You can optionally add a '-f' to the command-line. Use -f with extreme caution because it instructs GoMMCio to 'forget' the old contents of the MMC before doing anything. Note that the MMC must have been formatted with MMCFO, although it need not be empty. If the MMC has not been formatted before, you can use '-x' together with '-f' to force a temporary '1 MB MMC' format (use this only in the course of transferring MMCFO to your machine, i.e. if there is no other way to do that than via the MMC and GoMMCio, and don't forget to run MMCFO immediately afterwards to properly format the MMC !).

You can optionally compact, shrink and/or 'blow up' all the drives contained within DFS or ADFS discs while adding them to the MMC. Compact moves all objects on a drive to the 'front' (exactly like the *Compact command). Shrink does that too, but also minimizes the drive's size (i.e. no free space will remain). Blowup will enlarge a drive to a specified size (or the nearest one possible). Simply add 'DO COMPACT', 'DO SHRINK' and/or 'DO BLOWUP <size>' (where <size> is e.g. '200K' or '16M') to your commands. They will affect all following commands. Use 'DO NOCOMPACT', 'DO NOSHRINK' and/or 'DO NOBLOWUP' (or 'DO NONE' as a shorthand for all of them) to 'undo' the previously specified option(s).

Add '-l' to the command-line to list the new MMC catalogue after the commands have been executed.

A script is a text file that looks like this :

# start
ADD DFS DISC N Elite C:\GoMMC\Discs\Elite.ssd
ADD DFS DISC N Hopper C:\GoMMC\Discs\Hopper.ssd
ADD DFS DISC N Snapper C:\GoMMC\Discs\Snapper.ssd
# end

There's one command per line. Empty lines are ignored. If a line starts with a '#' it is a comment, and is ignored as well.

A description of the available commands follows.

Note that <object type> is 'FS' for a filing system, 'TOOL' for a tool, 'DFS DISC' for a DFS disc, 'ADFS DISC' for an ADFS disc, 'HADFS disc' for a HADFS disc, 'TAPE' for a tape, or 'MEDIUM' for either a disc or a tape (where allowed).

Also note that <object name> is the name that you want the object (tool, disc or tape) to have on the MMC. I.e. it is the name by which you select the tool, disc or tape with *MMCDisc, *MMCTape or *MMCTool.

You can use the following commands :

ADD <object type> <object name> <file name>

Where <object type> may not be 'FS' (this needs a different syntax, see below), or 'MEDIUM'.

For object types 'DFS DISC' and 'ADFS DISC', follow <object type> with 'N' or 'I' depending on whether <file name> contains a non-interlaced or interlaced disc image respectively (refer to 'Tools : MMCADI' for details about interlaced disc images), e.g. 'ADD DFS DISC N Hopper Hopper.ssd'.

This command adds a tool, disc or tape to the MMC.

Note that 'TAPE' expects an 'ungzipped' UEF file (as available from Internet). GoMMCio puts a 'stripped' version of this UEF file on the MMC. 'TAPE' will recognize and accept this stripped version as well (e.g. when restoring a BACKUP, since this will have saved the stripped versions, not the original UEFs). Refer to 'Tapes' for more details.

ADD FS <FS number> <file name>

Where <FS number> is the GoMMC 'internal' filing system number (refer to 'Supported filing systems' for details).

This command adds a filing system (original or patched) to the MMC.

It will automatically recognize both the original and patched version of all supported filing systems. Use FS number 0 to make GoMMCio determine the right filing system number (if the filing system is not recognized, this is an error). If the filing system is recognized, but you're specifying the wrong filing system number, this is an error as well.

Note that <FS number> is not limited to the documented filing system numbers, but may be anything between 1 and 250 inclusive. This is in order to support the use of slightly 'tweaked' filing system images (which GoMMCio will not recognize, so you must use a non-standard filing system number like 200).

NEW <object type> <object name> <disc size>

Where <object type> may only be 'DFS DISC' or 'ADFS DISC', and <disc size(s)> specifies the size(s) of the disc(s) to be created.

This command adds an empty disc to the flash card.

'NEW DFS DISC' creates an empty DFS disc of anything between 1 KB and 400 KB in size (specify e.g. '1K' or '400K' as <disc size(s)>). A size above 200 KB results in a 'two drive' disc.

'NEW ADFS DISC' creates an empty ADFS disc of anything between 2 KB and 512 MB in size (specify e.g. '2K' or '512M' as <disc size(s)>).

DELETE <object type> <object name>

This command deletes the specified object on the MMC.

The object is removed from the catalogue, but it will still occupy the same storage space it did before. To reclaim the storage space (e.g. when your MMC is becoming full) do a backup and restore (refer to BACKUP for details).

RENAME <object type> <object name> <new object name>

Where <object type> may not be 'FS'.

This command renames the specified object on the MMC to <new object name>.

EXTRACT <object type> <object name> <file name>

Where <object type> may not be 'FS' (this needs a different syntax, see below).

For object types 'DFS DISC' and 'ADFS DISC', follow <object type> with 'N' or 'I' depending on whether you want <file name> to contain a non-interlaced or interlaced disc image respectively (refer to 'Tools : MMCADI' for details about interlaced disc images), e.g. 'EXTRACT DFS DISC N Hopper hopper.ssd'.

This command extracts the specified tool, disc or tape from the MMC (copying it to a file).

EXTRACT FS <FS number> <file name>

Where <FS number> is the GoMMC 'internal' filing system number (refer to 'Supported filing systems' for details).

This command extracts a filing system from the MMC (copying it to a file).

BACKUP <directory name>

This command copies everything that is stored on the MMC to the specified directory, in the form of separate files (each containing one object) and a matching script (with which the MMC contents can be restored).

Note that all objects that were 'deleted' (via the 'DELETE' command or the MMCDEL tool) are discarded, i.e. are not written to files and do not appear in the script. To restore a backup, simply 'cd' to the backup directory and run the script through GoMMCio, adding '-f' (e.g. 'GoMMCio -dJ -f script').

Tapes

GoMMC's main 'thing' is discs, but it can handle tapes as well, via the standard Tape filing system. Although it can only 'play', not 'record'.

This works on BBC model Bs running OS 1.20, BBC Masters running MOS 3.20 or 3.50, and Electrons running OS 1.00.

But the machine's OS ROM must be patched to achieve this. Which means you must program a patched OS ROM image into a suitable PROM, and replace your OS ROM with that PROM. The patches in the OS are needed to make the Tape filing system get input directly from GoMMC, instead of the tape interface hardware.

To obtain the patched OS ROM image, go to this directory. It contains the following files :

POS120.BIN is the (16K) BBC OS 1.20 ROM
POS320.BIN is the (128K) BBC Master MOS 3.20 ROM
POS350.BIN is the (128K) BBC Master MOS 3.50 ROM
POS100.BIN is the (32K) Electron OS 1.00 ROM (i.e. this includes BASIC).
POS200.BIN is the (32K) BBC B+ OS 2.00 ROM (i.e. this includes BASIC).

Replacing the OS ROM is not for the fainthearted (only on the BBC model B it is relatively easy to do), and requires some know-how. If you want to do it, but don't know how to proceed, feel free to contact me.

You can add tape images to the MMC using GoMMCio's 'ADD TAPE' command, using 'ungzipped' UEF files (as available from Internet) as source material. They can subsequently be selected by *MMCTape, and 'played' under the tape filing system (if it is not selected, enter '*Tape'). Simply issue the usual CHAIN"" or *RUN command to start loading the tape. Use *MMCRewind to 'rewind' the tape (note that *MMCTape implicitly rewinds as well).

Note that, when you download UEF files from Internet, you may have to 'unzip' the downloaded file (to obtain the actual .uef file) as well as 'ungzip' the .uef file (e.g. rename it to a .uef.gz, then 'gzip -d' it, after obtaining a copy of gzip).

Note also that you can 'slow down' tape loading with the SLOW configuration option (refer to its discussion for details).

GoMMC ROM : Star commands

The following *-commands are available from the GoMMC ROM software (enter '*Help GoMMC' to list them) :

*MMCInfo

Displays the GoMMC software version and date, and MMC storage statistics (the total, used and free number of bytes, and the number of objects).

*MMCDisc (<name>) (A|B|C|D)

Selects disc <name> for subsequent access (by the currently running, patched filing system). The usual * and # wildcards may be used (the first matching disc is selected). If <name> is a single hyphen (-), all disc selections are forgotten (this may occasionally be useful to confirm that what was selected is no longer on the MMC, although normally you would simply make new selections). If <name> is not specified, no (new) disc is selected.

The second argument is optional, and defaults to 'A'. It identifies the 'slot' (roughly equivalent to a real floppy or hard drive) that the disc is 'put into'. For DFS, slot A represents drives 0 and 2, slot B represents drives 1 and 3, and slots C and D represent an override for drive 2 and 3 respectively. For ADFS, slots A, B, C and D represent drive 0, 1, 4 and 5 respectively.

In all cases the (newly) selected media are displayed, as well as the drives found within the selected discs. DFS and ADFS disc selections are remembered separately.

ALWAYS press CTRL-BREAK after selecting a disc with *MMCDisc ! GoMMC does not need this, but the filing system might, to notice the disc change.

*MMCTape (<name>)

Is like *MMCDisc, but selects a tape, for subsequent access by the (patched) Tape filing system.

Refer to 'Tapes' for details.

*MMCList (<name>)

Lists all discs and tapes matching <name> (default '*'). The usual * and # wildwards may be used.

Other objects, and extended information, may be listed as well. Refer to the discussion of configuration options LTYP and LOPT for details.

*MMCPrefix (<name>)

The 'name prefix' may be set by this command. This affects *MMCDisc, *MMCTape, *MMCList and *MMCTool. The name prefix is what implicitly precedes the <name> specified in the affected commands. If <name> is a single hyphen (-), the name prefix is cleared (this is also the default setting). If <name> is not specified, no (new) name prefix is set.

In all cases the (newly) set name prefix is displayed.

E.g. suppose you have three discs, named 'Acornsoft.Hopper', 'Acornsoft.Elite' and 'Aardvark.Frak'. Setting the name prefix to 'Acornsoft.' (note the trailing dot !) would cause '*MMCDisc Hopper' to select the first disc, and '*MMCList *' to list the Acornsoft discs only (as if you had entered '*MMCDisc Acornsoft.Hopper', and '*MMCList Acornsoft.*').

Note that a leading '$' in the name specified to *MMCDisc, *MMCTape, *MMCList and *MMCTool will skip the matching of the name prefix (and the '$' is discarded). E.g. if the prefix is 'A.', then the name '$!Boot' matches '!Boot' only, not 'A.!Boot'.

*MMCTool <name> ...

Runs tool <name>, relaying whatever follows <name>. The usual * and # wildcards may be used (the first matching tool is run).

The tool must have been added to the MMC as <name> (e.g. using the MMCATO tool). For example, if you added MMCADI to the MMC as 'ADI', then instead of entering e.g. '*MMCADI DN filename discname' you can now enter '*MMCTool ADI DN filename discname'.

Tools run with *MMCTool are always copied to memory address &2000. Tools starting with an &0D byte are considered to be BASIC programs, and are executed by inserting 'PAGE=&2000<CR>OLD <CR>RUN<CR>' into the keyboard buffer. All other tools are considered to be machine code utilities, and are executed by calling &2000 after poking a 2-byte pointer to the command line tail to ?&2003 (low byte) and ?&2004 (high byte) (so there better be, e.g., a JMP &2005 at &2000).

Note that you can auto-execute an *MMCTool command on every BREAK using the BOOT configuration option (refer to its discussion for details).

*MMCConfig (<name> <value>)

Allows configuration options to be set and listed. Refer to 'GoMMC ROM : Configuration' for details.

*MMCReset

Performs a hard reset (useful after, for example, configuring FSNR/FSRM). Use this in preference to a power-cycle (switching power off, then on again).

*MMCRewind

This 'rewinds' the currently selected tape. See also '*MMCTape'.

GoMMC ROM : Configuration

'*MMCConfig (<name> <value>)' configures the GoMMC ROM software. '*MMCConfig' without arguments displays a list of the currently configured values.

The <value> is always a decimal number from 0 to 255. The <name> is one of :

Name Description
FSNR sets the auto-loaded filing system number
FSRM sets the auto-loaded filing system ROM number
F2NR sets the (2nd) auto-loaded filing system number
F2RM sets the (2nd) auto-loaded filing system ROM number
LOPT selects the display format of *MMCList
LTYP selects the object types shown by *MMCList
BOOT selects the activity to perform on booting
SLOW sets the artificial delay used in tape loading
WPRO selects the MMC write protection level
TUBE selects the speed of bulk Tube transfers
COPR allows you to specify your co-processor type
ROM0 selects the 'plug' activity to perform for ROM number 0
ROM1 selects the 'plug' activity to perform for ROM number 1
.... ....
ROME selects the 'plug' activity to perform for ROM number 14
ROMF selects the 'plug' activity to perform for ROM number 15

After a GoMMC ROM software upgrade (with MMCUP), all values default to 0.

FSNR and FSRM (F2NR and F2RM for a second filing system, if any)

These options configure the filing system auto-load function. With this, a filing system can be automatically loaded, into either a sideways RAM bank, or the free ROM bank on GoMMC. This will occur on every powerup or *MMCReset.

A sideways RAM bank must be writable simply by selecting it, which is true for most simple and some complex systems for the BBC B/B+, the BBC Master sideways RAM system, and the Electron (if an SRAM chip has been installed on the 'GoMMC to Electron' interface). Refer to 'Sideways ROM/RAM' for more details specific to your machine.

FSNR Auto-load what
0 nothing
1 filing system 1
2 filing system 2
... ...
255 filing system 255

FSRM Auto-load into
0 ROM slot 0
1 ROM slot 1
... ...
15 ROM slot 15
others reserved

E.g. set FSNR to 3 and FSRM to 4 to auto-load ADFS 1.30 into ROM/RAM slot 4. Refer to 'Supported filing systems' for a list of filing system numbers.

Note that the configured filing system must be present on the MMC (put there by the MMCAFS tool, or GoMMCio's 'ADD FS' command, refer to their discussion for details).

LOPT and LTYP

These options 'tweak' the output of *MMCList.

LOPT Listing mode
0 normal
1 extended
others reserved

LTYP List what
0 media
1 filing systems
2 tools
3 tools, filing systems
4 media
5 media, filing systems
6 media, tools
7 media, tools, filing systems
others reserved

In 'normal' mode, *MMCList shows just the object name. In 'extended' mode, it shows 'tt ss aaaaaaaa + ssssssss name', all values hexadecimal, where tt is the object type, ss the object subtype, aaaaaaaa the start address on the MMC, ssssssss the size in bytes.

The underlying rule for LTYP is : set bit x in the value to show object type x+1 in listings. Object types are 1, 2 and 3 for filing systems, tools and media (discs and tapes) respectively.

BOOT

This option selects a boot activity, which is performed on every powerup or BREAK.

BOOT Activity
0 none
1 execute '*MMCTool $!Boot' (1)
2 execute '*MMCDisc $!Boot' (2)
3 execute '*MMCTool $MMCMenu'
others reserved

(1) This is similar to using '*OPT 4 2' on disc filing systems.

(2) This may be useful, for example, if you want to run an alternative 'menu' program. E.g. put it as 'MyMenu' on a disc named '!Boot', put 'CHAIN "MyMenu"' in the disc's !Boot file, issue '*OPT 4 3', and go : CTRL-BREAK (the '!Boot' disc is now selected), SHIFT-BREAK ('MyMenu' now runs), and, when you've selected a disc, CTRL-SHIFT-BREAK (the selected disc now boots).

Note that the '$' causes the *MMCPrefix setting to be ignored, so it cannot affect the boot activity (refer to the discussion of *MMCPrefix for details).

Press SHIFT during powerup or BREAK to suppress the boot activity (e.g. in case your !Boot malfunctions).

SLOW

This option selects the length of the artificial delay in returning 'tape bytes' to the Tape filing system (refer to 'Tapes' for details).

0 is the minimum delay, 255 is the maximum delay. You may want to use a non-zero value if the tape loading speed is to appear more 'realistic'.

Values that approximate the speed of the standard 1200 baud tape system are around 128 (this includes the roughly 1 second gap between blocks) or 94 (excluding the gap). Note that gaps are not emulated. There is only a delay per byte. I.e. 94 is more accurate in terms of the signalling rate, while 128 results in a more accurate block rate.

WPRO

This option configures MMC write-protection.

WPRO Writing is
0 passed
1 silently ignored
2 faulted with an error
others reserved

TUBE

This option selects the speed of bulk transfers across the Tube (i.e. when data is transferred between a file and your second processor's memory). 2-byte transfers are almost twice as fast (75 KB/sec) as 1-byte transfers (40 KB/sec), and should (theoretically) be supported by all second processors.

TUBE Transfer speed
0 1-byte
1 1-byte
2 2-byte
255 warp (1)
others reserved

(1) This is an experimental (and possibly unreliable) setting that reaches dizzying transfer speeds of roughly 150 KB/sec. It seems to work OK on ARM7TDMI coprocessors, and ReCo6502 second processors running at 14 MHz. But do not trust this setting while working with valuable data.

COPR

You should generally leave this at 0.

It allows you to specify which type of co-processor you are using.

COPR Coprocessor type
0 Unspecified
1 6502 Second Processor
2 65C102 Co-processor
3 Z80 Second Processor
4 80186 Co-processor
5 32016 Second Processor
6 ARM Evaluation System
7 ReCo6502
8 ARM7TDMI Co-processor

Normally, GoMMC doesn't need to know. However, if it's a 32016 Second Processor, it does need to know. The 32016 Second Processor cannot handle the maximum transfer speeds that Acorn documented for the Tube. GoMMC operates at those maximum speeds, so it needs to be 'throttled down'. I.e., if you're using GoMMC and a 32016 Second Processor at the same time, you must set COPR to 5. You may want to set TUBE to 2 as well.

ROM0 through ROMF

ROM0 through ROM9 and ROMA through ROMF configure a 'plug' activity for ROM number 0 through 15 respectively.

ROMx Plug activity
0 none
1 unplug ROM
2 re-insert ROM (1)
others reserved

(1) Use this if the OS automatically 'unplugs' the ROM because it looks like an alias of another ROM (refer to 'Filing systems' for details).

Always press CTRL-BREAK after changing one of these options. Note that the GoMMC ROM should have the highest possible ROM number in the machine, since it can only reliably affect the 'plug' state of ROMs with lower ROM numbers. Note that on the BBC Master, *Unplug and *Insert can be used instead of the 1 and 0 settings, respectively.

Sideways ROM/RAM

Different machines have different sideways ROM/RAM systems :

The BBC model B

The standard machine has four sideways ROM sockets (all 16 KB), and no sideways RAM.

Starting at the ROM socket that is closest to the side of the machine, going 'west', the ROM numbers represented by the sockets are : 15, 14, 13, 12.

Only if you installed GoMMC 'with adapter' (refer to the Installation section of this manual for details) you can use the free ROM bank on GoMMC. This can be considered to be a sideways ROM bank, whose number may nevertheless be specified to '*MMCConfig FSRM'. Its number is the number of the ROM socket that the adapter was plugged into.

The BBC Master

The standard machine has three sideways ROM sockets (two 32 KB, one 16 KB), and four sideways RAM banks. Although not all at the same time, see below.

Starting at the ROM socket that is closest to the cartridge connector(s), going 'north', the ROM numbers represented by the sockets are : 4+5, 8, 6+7. I.e. the sockets for ROM numbers 4+5 and 6+7 are the 32 KB sockets. Whether ROM numbers 4+5 or 6+7 are sideways ROM banks (i.e. reflect what is in the ROM socket) or sideways RAM banks (what is in the ROM socket is irrelevant) is determined by links. If LK18 is set 'west', 4+5 is sideways RAM (or if 'east', ROM). If LK19 is set 'west', 6+7 is sideways RAM (or if 'east', ROM).

Usually, GoMMC is in the socket for ROM numbers 6+7, which means that the GoMMC ROM is ROM number 6, and ROM number 7 is the free ROM bank on GoMMC. This can be considered to be a sideways ROM bank, whose number may nevertheless be specified to '*MMCConfig FSRM'.

The BBC B+

The standard machine has five sideways ROM sockets (all either 16 or 32 KB, selectable via links), and no sideways RAM.

ROM sockets IC35, IC44, IC57, IC62 and IC68 represent ROM numbers 2+3, 4+5, 6+7, 8+9 and 10+11 respectively, and links 9, 11, 12, 15 and 18 respectively determine whether they are 32 KB sockets (link set 'east') or 16 KB sockets (link set 'west').

If GoMMC is in the socket for ROM numbers x+y, then the GoMMC ROM is ROM number x, and ROM number y is the free ROM bank on GoMMC. This can be considered to be a sideways ROM bank, whose number may nevertheless be specified to '*MMCConfig FSRM'.

The Electron

You are using the 'GoMMC to Electron' interface. This offers one of :

a) No banks (no chip is installed in the utility socket)
b) Up to 2 sideways ROM banks (28-pin ROM installed in the utility socket, e.g. a 27C256)
c) Up to 2 sideways RAM banks (28-pin SRAM installed in the utility socket, e.g. a 62256)
d) Up to 8 sideways ROM banks (32-pin ROM installed in the utility socket, e.g. a 27C1001)
e) Up to 8 sideways RAM banks (32-pin SRAM installed in the utility socket, e.g. a 628128)
f) 2 sideways FRAM banks (Ramtron FM1808 installed in the utility socket)

FRAM banks are like RAM banks, but are non-volatile as well (their content is remembered on power down). GoMMC itself uses FRAM, although it is writable only by special means, unlike the banks for option f, which can be written to directly.

Refer to the Installation section of this manual for further details, including how to install the chip.

The ROM numbers are a little odd. For options b, c and f, the lower bank is 3 (and mirror images appear in 2, 1 and 0), and the higher bank is 13 (and mirror images appear in 12, 7 and 6). For options d and e, going from lower to higher addresses within the chip, the banks are 1, 13, 3, 7, 0, 12, 2, 6 (this is, of course, only relevant if you use a ROM, and need to know where to put the ROM images within the chip's address space).

GoMMC is in the socket for ROM numbers 15+14, which means that the GoMMC ROM is ROM number 15, and ROM number 14 is the free ROM bank on GoMMC. This can be considered to be a sideways ROM bank, whose number may nevertheless be specified to '*MMCConfig FSRM'.

Supported filing systems

GoMMC supports (and provides patches for) the following filing systems :

Nr Name
1 (BBC B) Acorn DNFS 1.20
2 (BBC B) Acorn DFS 2.26
3 (BBC B) Acorn ADFS 1.30
4 (BBC Master) Acorn DFS 2.24
5 (BBC Master) Acorn ADFS 1.50
6 (BBC Master) Acorn DFS 2.45 (1)
7 (BBC Master) Acorn ADFS 2.03 (1)
8 (BBC B) Watford DFS 1.44
9 (BBC B) ACP DFS 1.00 (2)
10 (Electron) ACP DFS 2.20 (2)
11 (Electron) Acorn ADFS 1.00
12 (All BBCs) HADFS X.YZ (3)

The number is the GoMMC 'internal' filing system number, i.e. as specified to '*MMCConfig FSNR' and listed as the subtype of filing system objects in 'extended' *MMCLists.

Note that numbers 81 and higher may be used as well. These are the original, unpatched versions of the patched filing systems whose number is 80 less (also refer to the discussion of MMCAFS).

(1) note that DFS 2.45 and ADFS 2.03 are co-dependent (they share routines) and need to be in the machine at the same time, one as an even numbered ROM x, the other as ROM number x + 1. Use FSNR/FSRM to auto-load one, and F2NR/F2RM to auto-load the other. On the BBC Master, you would normally use sideways RAM banks 4 and 5.

(2) note that these are 'E00' filing systems (they leave the default PAGE in an unexpanded machine at &0E00), and have to run in a sideways RAM bank (note that the free ROM bank on GoMMC is not suitable, since it cannot be written to directly).

(3) note that this allocation is versionless (all versions of HADFS are detected as, and considered to be, the same filing system), and that HADFS contains its own GoMMC driver code (i.e. no 'original' version of the filing system, whose number would be 92, is considered to exist).

GoMMC ROM : CRC check

The GoMMC ROM software checks itself for corruption on every powerup (including after *MMCReset) using a 16-bit CRC (Cyclic Redundancy Check).

If this check fails, 'GoMMC : ROM corrupted !' will be displayed at the top of the screen, and you're advised to follow the instructions under 'Recovery'.

Thanks to Greg Cook for providing an especially fast implementation of the CRC algorithm.

GoMMC ROM : Error messages

The following is an exhaustive list of error messages issued by the GoMMC ROM software :

'Please switch off Tube' (code 147) : *MMCTool will not run code on your second processor, so please switch it off.

'Drive not available' (code 183) : No currently selected disc contains the drive being accessed.

'Access outside drive' (code 183) : An attempt was made to access data 'outside' the current drive space.

'MMC is write-protected' (code 201) : An attempt was made to write to the MMC while it was write-protected.

'Syntax error: <correct syntax>' (code 220) : A syntax error has been found in a *-command.

'Unknown option name' (code 220) : The name specified to *MMCConfig is not recognized.

'Prefix too long' (code 220) : The name specified to *MMCPrefix is longer than 31 characters.

'Bad GoMMC FS' (code 0) : The patch used in the patched filing system you are attempting to run has become obsolete. Update the patch.

'ROM corrupted' (code 0) : Your *-command will not be executed, because the GoMMC ROM has been corrupted. See also 'GoMMC : ROM corrupted !'.

'Escape' (code 17) : Escape was pressed during *MMCList.

In addition, these non-BRK warnings/errors are issued on a (hard) reset :

'GoMMC : MMC doesn't respond' : The MMC doesn't seem to be present.

'GoMMC : ROM corrupted !' : The GoMMC ROM software has been corrupted. Refer to 'GoMMC ROM : CRC check' for details.

'GoMMC : Cannot find auto-load FS' : You are trying to auto-load a filing system that cannot be found (i.e. is not present on the MMC).

'GoMMC : Bad slot for auto-load FS' : You are trying to auto-load a filing system into an unsuitable ROM slot (i.e. occupied by the GoMMC ROM, or > 15).

'GoMMC : Press CTRL-BREAK now ...' : You are running BBC Master MOS 3.50, and have auto-loaded a filing system into ROM slot 4, 5, 6 or 7. If the usual powerup reset would be generated now, it would cause the slot to be wiped again by the MOS. Since CTRL-BREAK is the next best thing, but can't be generated, you are asked to do it yourself.

'GoMMC : Configuration reset !' : Means exactly what it says. Refer to 'What is remembered on power down' for details.

Recovery

If the software stored on GoMMC (either the GoMMC ROM, or the free ROM bank, or both) has become corrupted, your machine may hang on powerup, and no recovery may seem possible.

Fear not. This problem has been foreseen. GoMMC can be switched to 'write only' mode, so the corrupted software can no longer hang the machine, but can still be overwritten. MMCUP (to restore the GoMMC ROM) and MMCWI (to wipe the free ROM bank) are the tools to use.

Follow the following recipe :

1) Power down.

2) Move the three-legged jumper on GoMMC (just below the MMC socket) to the 'west' or 'left' position (away from the PCB edge).

3) Power up. Your machine should no longer hang, but GoMMC has 'gone' as well.

4) Run MMCUP. Refer to 'Tools : MMCUP' for details.

5) Run MMCWI. Refer to 'Tools : MMCWI' for details.

6) Power down.

7) Move the three-legged jumper on GoMMC back to the 'east' or 'right' position (nearest the PCB edge).

8) Power up. Your machine should no longer hang, and GoMMC is back in action.

What is remembered on power down

GoMMC makes use of writable but nevertheless non-volatile memory called FRAM. This allows GoMMC to 'remember' some user settings, even on power down (although storing them on the MMC would have been a second possibility).

The remembered settings are :

You can reset all the remembered settings to their default values by pressing the 'G' and 'W' keys simultaneously while switching on the machine. The message 'GoMMC : Configuration reset !' will be displayed to confirm the reset.