This is a new section, and thus fairly limited as of yet. Much of the "how-to" information spread out over the other pages will be gathered in the relevant sections here.
Please don't send technical BBC questions to the maintainer of this site, as I will
probably not be able to answer them. Your best bet is to join the BBC micro mailing list,
and post your query there. There are many, very competent people there, and many problems
have been solved through this list.
You should also consider retrieving the mailing list archives, to see if your subject has
already been discussed.
ROM is an acronym for "Read Only Memory", and is normally a chip in your computer that
stores permanent data. In the case of the BBC, it came with two essential pieces of software
stored in ROM:
All proper BBC emulators will need these two pieces of software available as ROM image files,
to be able to provide you with proper BBC emulation. If you don't have these two ROM images,
it's like trying to boot your computer without those two chips inside - i.e. it simply won't
work. Please read on.
The later BBC models (the Masters, for example) came bundled with lots more application
software in ROM.
Where can I find ROM images?
Quite a few ROM images can be found here.
Be careful when downloading ROMs using your browser, as some (Netscape is one) downloads
ROM files as ASCII text over http, and adds certain control characters to the file.
A ROM file should always be a multiple of 1024 bytes long, typically 8192 or 16384 bytes.
If you use ftp, turn on BINARY mode. Most graphical clients do this for you.
Practically all BBC emulators need at least two ROM images to run properly:
"OS 1.2" (the BBC operating system) and "BASIC 2" (version 2 of the BBC BASIC programming language).
While Acorn still existed, the company did not permit usage of the contents of these ROMs
outside authentic Acorn hardware. Nobody seems to care anymore, so:
The Acorn OS 1.2 ROM is available here.
The BBC BASIC 2 ROM is available here.
Acorn DFS ROMs are available here, though I would recommend
Watford's DFS 1.44,
which is Acorn DFS compatible, supports twice as many files on a disk, and has commands
for "downloading" programs in BBC memory.
There are also a couple of "E00" DFS ROMs available (here and
here) which are very often able to load those pesky tape
games from disc, by storing most of the DFS code in sideways RAM or ROM.
(In BeebEm, boot it up with the E00 DFS, go to "Options", "Allow ROM Writes" and choose "DFS".
Press Ctrl+Break (Ctrl+F12 on your PC), and you should see the E00 DFS message.)
How do I use ROMs/ROM images?
In the real microcomputer, ROMs are present and physically fixed in place when you turn it on.
To use ROM images in a real BBC, you must "burn" the image onto a physical ROM chip.
(Anyone care to give more info on this?)
Emulators load the images into memory from files when they are started.
The emulators provide various levels of configurability
when it comes to which ROMs to load, what they are named, and so on.
Consult the documentation for each emulator for details.
In general, issuing the "*HELP" command in the emulator (or a real BBC)
should give you an indication of what ROMs have been recognized, loaded and
activated.
How can I transfer BBC software from my old tapes?
If you want to transfer tape software directly to your PC, you'll need a soundcard to
connect your tape player to. Next, you'll need one of the programs found
here to decode the sound signals into files.
Please read the documentation for the program which suits you best.
Transferring software from tape to a BBC floppy disk might require special
attention. First try this simple procedure:
Note that many tape based games load their next parts using the indetermined
commands CHAIN "", '*LOAD' or '*RUN' commands (i.e. without the file names). These
won't work from disk without modification.
As a last resort, you might want to try the "Tape To Disc" ROM software, found
here. Software transferred to disk using this method
has been verified to work on emulators as well.
How can I *LOAD "locked" files?
The following piece of code lets you *LOAD a "locked" file:
Some standard DFS disk images can be found here. Some Watford DFS disk images can be found here.
Also see the Net resources page for links to other
pages which might have disk images.
How do I read BBC disks? / How do I make disk images?
BBC floppy diskettes use "single density" compared to "modern" diskettes used
on PCs (which are "double" and "high" density).
Modern PCs use floppy drive controllers which are simply not capable of
reading such low densities. However, if you own or have access to an old PC (with
an old floppy controller, of course), it is well worth the try to see if one of the
disk image creation programs in the File transfer
software section works for you. Out of these programs, FDC is recommended.
The readme file which comes with FDC states that the
floppy controller needs two crystals, a 16Mhz and a 9.6Mhz, in order to
be able to read single density.
The "Catweasel Advanced Floppy Controller"
is available for PCs and Amigas, and is rumored to be able to read BBC-formatted disks using
standard PC floppy drives.
According to Mark Usher, his GigabyteDX motherboard (with a P-200) is able to read BBC disks,
but only if they've been formatted using Watford DFS. This might be related to the different
layout of the sectors using this DFS.
Also, for the adventurous, this text file describes how to
modify your floppy controller for reading single density diskettes.
Does anyone have information on reading BBC diskettes on Macs or Acorn machines?
"The BBC Lives!" does not provide a "disk image making" service.
Reading BBC disks on an Acorn machine
(By Andrew Weston)
There used to be a serial link cable available from The Really Good Software Company (http://www.argonet.co.uk/users/sales.rgsc/) which linked the BBC Micro and 32-bit Acorn or Acorn-compatible using programs (provided) on each machine
to transfer the original files. These files could then be used with your BBC emulator. Some games I can confirm in personal experience would transfer successfully but other would pose problems often due to load/execution addresses not bei
ng transferred along with the file data itself.
Also,
there is software called !65link which enables you to use the 32bit
Acorn as a hard drive for your BBC. This should be found:
http://web.inter.nl.net/users/J.Kortink/software/65link.htm
However you need to make a cable and do some other tinkering with
hardware which makes this far less convenient than if it was supplied
already prepared.
Otherwise I believe people have bought old external 5.25" drvies and
connected them to the floppy drive socket of the Acorn machine, but you
still need to make a cable unfortunately,
Hope this helps
Andrew
How do I use disk images?
To use the images with a real BBC, you need to transfer the image to a physical floppy disk.
Otherwise, you need to be using an emulator which supports disk images.
Currently, only the BeebEm family of emulators provides this support (single density images).
The DOS port provides a rudimentary menu from which you can choose any SSD and DSD images in the current directory.
The other versions determine which image to load be interpreting the environment variable BeebDiscLoad - see the BeebEm documentation for details.
From version 0.7 onwards, BeebEm for Windows lets you mount disk images on the fly.
Also, make sure you use a DFS ROM image which matches the type of disk image you want to use.
In the Watford disk image archive, double sided images are available
with each side in separate files, e.g. side 0 in acorn1_a.zip, and side 1 in acorn1_b.zip. These should be joined (interleaved) before loading with BeebEm.
You will need a Watford DFS ROM image to access these images correctly.
See conversion below.
What is the difference between SSD and DSD disk images?
An SSD image is an image of a single sided disk. All data is present linearly as seen on the disk.
A DSD image is taken from a double sided disk - sectors are (usually) interleaved, alternating
between side 0 and side 1.
What is the difference between standard DFS and Watford DFS disks?
A DFS disk is limited to 31 files. A Watford DFS disk supports a format proprietary of Watford
which increases the capability to 62 files. To successfully use a Watford disk image, you must
be using a Watford DFS ROM. A standard DFS ROM won't be able to recognize the last 31 files in
the image.
If all you want is to convert standard format files from "The BBC Lives!"
to a disk image, you'll need either "BBC Explorer" or "bbcim" from the software page.
BBC Explorer is a drag-and-drop Windows program that can create a new disk image from dragged
BBC files or their *.inf files, or extract such files from an exisiting image.
bbcim is a command line utility that is very versatile. The most basic usage is to create
or add files to a disk image, using the command "bbcim -a image.ssd file1 file2 file3 ...".
For this command to work, file1.inf, file2.inf and so on must exist.
Here's my 4DOS/4NT batch script for making a disk image of
the files in the current directory. Even if you don't have 4DOS or 4NT, it should be useful
as a reference. The result is a single sided image, but it will produce double sided images
if the current directory contains only the directories "0" and "2" (which in turn has the
files intended for each side of the disk).
For more general instructions, read this (written by Mark de Weger).
How do I boot a disk image?
Hold down SHIFT then press BREAK. In an emulator, read the documentation to find out which key has been mapped to BREAK.
How do I make a disk !BOOT-able?
First of all you need a file named !BOOT on your disk, which is easily created as follows:
>*BUILD !BOOT
0001 CH."MENU"
0002
>*OPT 4,3
Without the *OPT command, !BOOT will never be loaded. The "3" tells the DFS that !BOOT is to be *EXEC'ed, much like a batch file in DOS.
(Other values: "0" - disable !BOOT, "1" LOAD !BOOT as a BASIC program, "2" CHAIN !BOOT as a BASIC program.)
If you're using a disk image, your first bet should be to boot the disk image
itself. Do this by pressing SHIFT+BREAK. If there's a file called "!BOOT" on
the disk, it should load and run. Many disks come with menus of all the games
available on the disk. (Look in your emulator's documentation to find out which
key on your keyboard provides the BREAK function.)
If no menu or game starts up upon booting the disk, you'll have to look at the
individual files on the disk.
Note that some games provide a machine code or BASIC !BOOT file.
The boot option (*OPT 4) may not have been set correctly on your disk image to
reflect this. If booting the disk crashes or fails otherwise, try one of the
following commands:
Here are some more useful DFS commands:
Note that BASIC commands always require double quotes around the file name, but
that OS commands (like the ones above) or other custom "*" commands usually
never do.
Find the file most likely to be the "loader", i.e. the file you should
initially run - it is usually the file named most closely to the game's name.
Another common alternative is the name "LOADER". Here are the common ways to
load and run a game:
First try running the game as a BASIC program: Use the command CHAIN "f"
(or CH."f" for short) to run the BASIC program in file "f". If it is not a
BASIC program the BBC will simply give you the error message "Bad program".
If CHAIN didn't get you going, try "*RUN f" (remember, no double quotes
around the file name!), which will try to run the file as a machine code
program. Lots of things can go wrong here (see next FAQ, for example), and
if it is not a machine code program (or something else fails), your BBC
(or emulator) will likely crash.
If you're not up and running by now, repeat the process with another likely
loader, or please read on.
Why doesn't game/program X work with emulator Y?
Sooner or later you'll see one of the following messages:
Bad program - you have probably loaded a file which is not a BASIC
program - see above. Technically, this error is reported when the BASIC interpreter
can't find a valid BBC BASIC program starting at the address given by
the system variable PAGE.
No room - the BASIC program you are loading or running is out of
memory. Try selecting MODE 7 and run it again. If that doesn't work,
the value of PAGE needs to be lowered - see below.
Bad mode - the graphics MODE that you or the program is trying to
select needs more memory than is available, typically because a BASIC
program is too large or is loaded too high in memory. Try lowering the
value of PAGE - see below.
Here are some suggestions for cranking a game into an emulator and running it:
You're not loading and running the correct file, or you're loading and
running it incorrectly. See the previous FAQ.
The program needs another value of PAGE than what you're using in the
emulator (they do differ). See the next FAQ.
The program uses capabilities not fully or perfectly emulated by the
emulator. This is often clearly indicated by messages like "illegal opcode" or
"no OSFIND", or the garbled displays seen in Revs in Tom's emulator and Exile
in any emulator. Wait for a better version, use a better emulator, use a BBC,
or cry when you go to sleep at night...
The program is tape based, and assumes PAGE is, or can be set to, &E00.
This can have disasterous results, as data crucial to the successful operation
of a DFS can be overwritten by the program's data, often causing a crash when
another file operation is attempted.
The program is tape based, and uses the command CH."" or *RUN to load the
next file found on the tape, without specifying its name. This command has no
meaning on a disk filing system. If you know what the next part is, you could
try changing the CHAIN statement. This is relatively hard to fix for all but
straight BASIC programs, as many BASIC game loaders have data or machine code
attached to their ends, which will be corrupted when the size of the BASIC
code changes.
The program is tape based and has been modified by end users to use custom
'*' commands, like *MLOAD, *MRUN or *DOWNLOAD to make the program think it is
possible to load low down in memory, so that the game can actually be run from disk. These commands load a file high, then
move it down when all DFS operations are complete, possibly overwriting DFS data.
For the BeebEm family of emulators, try using the
Watford DFS 1.44 when running such a
program. This ROM provides the commands *MLOAD and *MRUN. *DOWNLOAD seems to
be provided by Computer Concepts' DiscDoctor ROM, but I haven't yet been able
to test this. Read on for more about "downloading".
If you think your problem doesn't fit any of these suggestions, and you got
the program from the archives on this site, let me know. There might be missing files or files with errors in them. I can never fully guarantee that any program will work for you.
Downloading on the BBC means loading a file into a certain range of memory,
then moving it to another range, usually lower in memory. A common case
where this is useful is when you need to run a tape based program from disk.
Such a program can for example be a relatively large BASIC program, typically
a text adventure, other BASIC program which assumes that PAGE=&E00, or
machine code programs which load and execute from specific hard-coded
addresses.
PAGE is the variable which dictates where to start loading and
running BASIC programs. To be able to read files from disks you need
a DFS ROM, which needs some workspace in RAM. On a BBC (or emulator) without
DFS, PAGE, is preset to &E00. When a DFS is installed, its value is typically
raised to &1900, subsequently reducing the amount of RAM you have available
to your games and programs.
The load and execution addresses of machine code programs can be located
with the "*INFO f" command (where f is the file name). Such programs are
not at all affected by the value of PAGE.
You can't simply set PAGE to &E00 and then CHAIN your BASIC program, because
as the file is loaded into address &E00 and beyond, the disk filing system's
workspace is being overwritten, and anything can happen. The BBC is probably
going to crash.
Similarly, machine code programs which load into the DFS' working space
will 99% likely yield the same result.
By downloading, you load the file into a "safe" range of memory, then copy
it down to the correct range (e.g. at PAGE=&E00), and start execution at
the correct address. When loading is finished, you should make sure no disk
accesses are being made afterwards, as such accesses will likely crash either
your program or the DFS (not that you'd notice much difference).
How do I "download" a program?
It is assumed that you are using the Watford DFS ROM (see above), which has
the *MLOAD and *MRUN commands for downloading. Writing the downloading code
yourself for a single file is simple, but a bit tedious.
An implementation of the *MRUN command has been added to the archive, and can
be found here.
Downloading should always be performed in "MODE 7", since it has the most
available RAM for the initial loading of the file. In any other mode the
process is much more likely to overwrite screen memory, and data corruption
might occur.
Downloading a BASIC program in file f:
*MLOAD f (loads the file into "safe" memory, then moves the data to a range starting at the load address)
*TAPE (disables disk access)
PAGE=&E00 (locates the start of the BASIC program for editing and/or running - here it is assumed that the load address that *MLOAD uses is &E00)
OLD (makes the BASIC language aware that there is a program here)
Now you can LIST, edit or RUN your BASIC program. If you get
"Bad program", the load address might be different from &E00 - locate it
using the *INFO command, then replace &E00 above with the correct address)
Downloading a machine code program in file f (simple):
*MRUN f (loads the file in "safe" memory, moves the data to the correct
load address - this might corrupt the internal data structures of your
DFS - then execution starts at the correct execution address)
If the above didn't work, the BASIC or machine code program might be trying to read more files before the game itself can start. Since the DFS's internal state data is likely to be corrupted, the BBC is likely to crash. Getting such a program to load and execute correctly is one of the more advanced tasks you can undertake, and you might need to:
write your own customized downloading routine,
make changes to the game's BASIC code to load and use data at different addresses,
patch the game's machine code for the same reasons,
This section will be step by step guides to getting the most popular emulators up and running.
It is assumed you have the BBC BASIC 2 and OS 1.2 ROM images available - I'm not allowed to
provide these to you. For some emulators you also need a DFS ROM image.
Note that the version specific information given below is terribly out of date.
For the most popular emulators, there are much newer versions available.
Always check the emulators page for the latest
versions!
Always read the the documentation for the emulator for the most up to date information.
ZIP files should be
uncompressed with a utility that preserves long file names (like Infoware's unzip or
WinZip). Also make sure you expand full directory path names.
BeebEm
All versions can be found here. Below, "the current
directory" means the directory where you execute the executable from (not
neccessarily the directory where the executable resides!).
First some instructions specific to each version:
UNIX version 0.71b: Uncompress this archive.
Build the executable for the emulator. Read the section called "Installation" in the file
"ReadMe.1st" for instructions on this. The executable will typically be "beeb".
ROM files are to be put in the "beebfile" directory.
Windows 95/NT version 0.71:
Uncompress this archive.
Read "ReadMe.1st", the "ReadMe.Win".
The executables are "intelbin\BeebEm.exe" and "intelbin\BeebEmP.exe" (optimized for Pentium processors).
ROM files are to be put in the "beebfile" directory.
This emulator can load (mount) disk images on the fly, so you don't really need to
bother with the environment variable described below.
Windows 95/NT version 0.4:
Uncompress this archive.
The executable is "example-intel-binaries\rbeebwin.exe".
ROM files are to be put in the "beebfile" directory.
To run, this emulator requires Microsoft's WinG library.
DOS version 1.1:
Uncomress this archive.
The executable is called "BEEBDOS.EXE".
ROM files are to be put in the current directory.
When started, the emulator provides a menu of disc images found in the same directory.
Next, prepare the ROM files needed to run the emulator. They must be copied into the
directory indicated above, and renamed like this:
Rename the OS 1.2 ROM image to "os12".
Rename the BASIC 2 ROM image to "basic".
Rename a disc filing system (DFS) ROM image to "dnfs".
In the UNIX (all) and Windows (pre 0.7) versions, a disc image is selected by setting the environment variable
"BeebDiscLoad" from the command line before running the executable. The format is
"sided:tracks:path" (note the colons!), and the default value is "D:80:discims/elite" (a double-sided, 80-track image
called "elite" in the "discims" directory):
"sided" is "S" for a sigle-sided image or "D" for a double sided (interleaved) image.
"tracks" is 40 or 80 - 80 is a safe bet.
"path" is the file path to the image.
Read this for help on converting games found on "The BBC Lives!" to
disk images.
Horizon
(I have not used the Mac version of Horizon, so I'm assuming it works similar to Horizon 95. Also, I have not used the registered version.)
Horizon 95 requires Direct Draw support to run, and Direct Sound support to produce
sound. These are parts of Direct X. Horizon 95 runs with both Windows 95 and NT 4.0.
Unzip this archive, and change to the
"HZN101DM" directory. The executable is named "HZN101DM.EXE".
Create a subdirectory named "ROMs", and copy the OS 1.2 and BASIC 2 ROM image
files to that subdirectory. Rename them to "OSROM" and "BASIC", respectively.
Software found in the main "The BBC Lives!" software archive must be converted
to Horizon's format. For each BBC file, you'll need to look at the corresponding
"*.inf" file to take note of the load and exec addresses (the first two numbers
after the file name). Copy each file (without the "*.inf" files) to the
"RAWFILES" subdirectory in your Horizon directory. Next, run the APPEND.EXE
utility included with Horizon and type in the name of each file, followed by
its load and exec addresses. Read Horizon's documentation on organizing and using
files in subdirectories, and so on.
If anyone writes a script or program for automating this conversion, please
let me know.
The emulator requires a mouse driver to be loaded, as well as a VESA driver. You can edit the file
"BBC.CFG" to experiment with different modes, amongst lots of other things.
The emulator works in DOS, but also in a DOS window in Windows 95. I have not got
it to work in NT 4.0.
Copy the OS 1.2 and BASIC 2 ROM image files to the directory with the executable, and rename
them to "os12.rom" and "basic2.rom", respectively.
Games found at "The BBC Lives!" are converted for use on this emulator using Tom's "WSCONV.EXE"
program that is included in the archive. Run it without parameters for instructions.
6502Em
I've never even touched an Acorn RISC PC, so I've no idea how this thing
works.
The most common question from RISC users concern how to convert
games from the archive format used at "The BBC Lives!" to Acorn's
BBC/RISC format. Darren Salt has written BeebArc,
which is supposed to take care of this.