mmbeeb: MultiMediaCard interface and software for the BBC computer

Martin Mather's MMC beeb website, slightly reorganized and made a bit more pretty by WHS (Martin's original site is/was at http://members.lycos.co.uk/mmbeeb/, and before that at http://mmbeeb.mysite.wanadoo-members.co.uk/, was originally created on 22-02-2006, last updated 20-11-2008, and apparently won't be updated any further).
WHS: Note that I reorganised it for myself only, so things can be changed or removed at any time. The windows stuff isn't of interest to me for example, has been put on a separate page, and may be removed. I will make some utilities for FreeBSD (or any other unix variant) to do what MMB imager does and possibly the other utilities. I've removed the links to the standard BBC micro websites, just keeping those for hardware references.
Contents:
More on this MMC card/software can be found in this Stairwaytohell.com forum topic. See also: MMC windows software
MMC interface hardware
(Click images to enlarge)
This simple device plugs into the BBC’s User Port. It contains a 3.3V
regulator to supply the MMC card with power, resistors to reduce the User Port’s 5V signals to approximately 3.3V, and an “edge-connector” into which the card is inserted.
The associated software (see below) uses the interface to create a
serial “SPI” bus to communicate with the MMC
card. The clock (PB1) and data out (PB0) are controlled by
software, and data in (CB2) is shifted into the 6522’s Shift
Register (SRMODE0 - see the Advanced User Guide, page 409).
The read/write speed is approximately 10Kbytes/second.
As-built drawing - Note I built this board without planning its layout first.
The following is a diagram of the circuit:

The components used are
(with Maplin's Stock Code and prices inc. VAT as at 27-10-2006):
| Code |
Qty |
Description |
Cost |
Comment |
| JP47B |
1 |
Stripboard 29 x 39 |
2.70 |
The one shown is a 29 x 39 way cut in half, i.e. 29 x 19. |
| |
1 |
47K Resistor |
|
|
| |
5 |
4K7 Resistors |
|
|
| QL80B |
1 |
1N4148 Diode |
0.16 |
|
| JC03D |
1 |
2 x 31 Way 0.1" Pitch Edge Connector |
1.30 |
I cut this down to suit with a junior hacksaw. |
| N57CA |
1 |
TS1086CZ-3.3 |
0.94 |
A 3.3V voltage regulator. |
| WW68Y |
2 |
10uF 16V Tantalum Capacitors |
0.70 ea. |
As per the voltage regulator's datasheet. |
| JH36P |
1 |
16 Way DIL Header |
1.06 |
To connect the ribbon cable neatly to the stripboard. |
| |
1 |
16 Way Ribbon Cable x approx. 14" |
|
I used part of an old floppy disk cable. |
| FG84F |
1 |
2 x 10 Way IDC Plug |
1.88 |
For the BBC's User Port. |
| BL94 |
1 |
10m Bell Wire |
1.55 |
Plenty spare! |
Of course you also need a soldering iron, solder (lead free),
and a “spot cutter”, plus a multi-meter is useful
to check for shorts, and that the voltages of the signals to the card
are ok.
See Page 426 of the Advanced User Guide for a diagram of the User Port
socket.
The interface is accessed via a patched DFS (Acorn DFS 0.90) with extra commands (DUTILS).
Features:
The TUBE is supported, and a number of bugs have been
removed. However, the maximum size of a single block for
reading or writing is 63.75 KB.
The actual DFS disk images are stored in a single
“MMB” image file. This can contain up to
511 single sided 200Kb disk images, i.e. 99.8Mb of data.
An actual MMC card being used with a BBC must be partitioned and
formatted as FAT16. The MMB file must not be fragmented, its
filename must be “BEEB.MMB” and be in the first 8
entries in the main directory. (Note: Long filenames use
several directory entries.)
Other programs and documentation:
- MMCDriver08-revX.ssd (Updated 06-11-2008): Contains a cleaned-up version of the original interface software, written in BASIC, and allows sectors to be read from or written to the MMC card.
- Source code for the DFS 0.90 ROM patches: DFS4C.SSD (diskimage)
- DFS_0.90_disassembly.pdf (WHS: This file was hidden away as above in a zip file that I split).
- MMC_new_code.pdf (WHS: This file was hidden away as above in a zip file that I split).
- Old version: old__DFS_4/DFS-4.ssd old interface software (WHS: This file was hidden away on the website and could only be read by opening the source_files/ directory. I split the original zip file into this file + the above PDF files).
- Old version: MMCDriver08-revC.ssd WHS: old version of MMCDriver08-revX.ssd, was found as above. Might be of interest, I'll have a look.
- Old version: DFS09MMB-2008.08.14.rom WHS: This is the 14 August 2008 version of the DFS09MMB.rom, was found as above. Might be of interest, I'll have a look.
Note by WHS: I've been having problems transferring files with osword 7F from Opus Challenger to MMC. I think the problems are due to DFS 0.90. For example, it doesn't appear to handle service calls 0B (NMI release), 0C (NMI claim), 0F (vectors claimed), 10, 12 (Initialise filing system). I'm working on disassembling DNFS and using that as a basis for a new MMC rom. I've disassembled it already and am comparing it to DFS 0.90...

Allows quick selection of your favourite game!
Can be used with a standard DFS, or with dfs09mmb.rom. With the former the user is prompted to insert the required disk.
The dataset is based on the 'STH Collection', but others can be created using the associated VB6 MakeGamesData program.
All the files for the MMC games menu can be found in the following zip file:
Games menu (zip) (source: Games Menu source code (BBC and PC utility))
Links
64MB MMC und PIC-Mikrocontroller This site gave me all the info I needed on MMC cards and how to interface to them.
6502.org Information on the 6502 and associated chips.
The Electronics Club Information on electronics!