APP:USB Disc Filing System for the BBC Micro
Assembly C C++
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
d6502
firmware
server
udfs_rom
uptx_rom
xbm2bbc
LICENSE.txt
Makefile
README

README

BBC MICRO USB DISC FILING SYSTEM

The UDFS is a patched Acorn DFS ROM (based heavily on Martin Mathers' patches
for his MMBEEB project[1]), which allows a "real" BBC Micro to "mount" disc
images stored on a host computer (Windows, MacOSX, Linux) using a cheap USB
cable.

TODO

  * BBC cannot save data to disc images yet
  * Perhaps the choice of disc image should be made by the BBC?


SOFTWARE

You need the MakeStuff build infrastructure[2] to build the code. For the 6502
code you need ACME[3], and for the AVR code you need AVR-GCC.

The important code is in these three directories:

  udfs_rom - The ROM itself, in 6502 assembler.
  firmware - The USB cable AT90USB162 firmware.
  server   - The "disc image server" program.

There's also some other code here which will probably be of no use to anyone,
but which I don't want to lose, so I put it here:

  d6502    - Hacky disassembler to get an ACME-compatible MMBEEB ROM source file.
  uptx_rom - Simple sideways ROM for passing arbitrary commands to host over USB.
  xbm2bbc  - Image converter to make BBC MODE4 screen-memory dumps from XBM files.


HARDWARE

For the USB cable you will need a board based on the Atmel AT90USB162 or
similar. Probably the cheapest option is to buy a Minimus board[4], which will
cost about £5. Since you want the AT90USB162 to draw power from the Beeb, you
need to cut the USB power line, as shown on the left in [5].

You then need a 20-pin IDC connector and a short (~30cm) length of ribbon cable,
connected like this:

  +-------------+-------------+
  |   IDC Pin   | Minimus Pin |
  +-------------+-------------+
  |      1      |     VCC*    |
  |      2      |     PC4     |
  |      3      |     VCC*    |
  |      4      |     PC2     |
  |      5      |     GND     |
  |      6      |     PD0     |
  |      7      |     GND     |
  |      8      |     PD1     |
  |      9      |     GND     |
  |     10      |     PD2     |
  |     11      |     GND     |
  |     12      |     PD3     |
  |     13      |     GND     |
  |     14      |     PD4     |
  |     15      |     GND     |
  |     16      |     PD5     |
  |     17      |     GND     |
  |     18      |     PD6     |
  |     19      |     GND     |
  |     20      |     PD7     |
  +-------------+-------------+

  * Put a 10uF tantalum capacitor between VCC and GND

You need to write the udfs_rom.bin image to a suitable EPROM and install it in
your BBC Micro. You then need to program the AT90USB162 in your Minimus board
with the supplied firmware. Finally, with the cable installed in your BBC's
user port and your PC's USB port, you should be able to mount a disc image:

sudo ./linux.x86_64/rel/server -v 03eb:3002 ../../images/elite_a.ssd

Hit Shift-Break on the BBC and you're away!


[1] http://swhs.home.xs4all.nl/bbc/mmbeeb/
[2] http://www.makestuff.eu/wordpress/?page_id=1489
[3] http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/acme/
[4] http://www.ck3.co.uk/minimus-avr-usb-development-board.html
[5] http://www.swaton.ukfsn.org/uploads/2012/02/minimusAVRISP2.jpg