When using the BBC Micro, I use BeebLink, a package that lets your PC act as a file server for the BBC Micro. This way, I can use the PC to edit and assemble files for immediate use on the BBC Micro.
BeebLink stores each BBC file as a loose file on your PC, plus an associated .inf file that stores file attributes, so the tools here are oriented more towards this way of working. (There are also other tools that work with this format.)
For more info, run each with
-h on the command line.
Python 2.7 script that converts tokenized BBC BASIC files to text. Originally by Matt Godbolt. I updated it with support for line numbers and BASIC II.
-h to get a help page.
(If you want to use this to produce output for use with
*EXEC on the
BBC, use the
BBCBasicToText can be used in a pipeline, but when used this
way it might not work properly on Windows as it doesn't reopen stdin
in binary mode. (This will get fixed at some point, I promise...)
Using with git
You can use
BBCBasicToText as a git diff driver, so you can get text
diffs of changes to tokenized BASIC code.
To do this, ensure
BBCBasicToText is on
PATH. Then edit the
.git/config file in your working copy, and add something like this
to the end:
[diff "bbcbasic"] textconv = BBCBasicToText -n
-n tells it to operate in a diff-friendly mode: no leading line
numbers, and line numbers in the program (e.g.,
replaced with numbered
Then use the
specify the diff driver for your BBC BASIC files:
$.MYBAS diff=bbcbasic *.bbcbasic diff=bbcbasic
You can use wildcards (as in this example) if your BBC BASIC file
names conform to a pattern. There's no standard pattern, though, so
you may have to just list them out in the
.gitattributes file in
each folder. Either way, it's worth the effort!
Simple tool that scans sideways ROM headers and prints info to stdout. I used this to have a quick look at Wouter Scholten's monster ROM archive.
Python 2.7 script that builds a single-sided disc image from .inf files.
Supply list of files on the command line. Files that have a corresponding .inf file are assumed to be BBC files, and other files are ignored.
Files are added to the disc image in the order given, with the first file given starting at sector 2. You can combine manual lists of files with wildcards, if you want to add a whole folder's-worth of files, but only some need to go in order; if the list includes the same file multiple times, only the first occurrence counts.
Python 2.x script that converts a SSD or DSD disc image into a folder
of .inf files suitable for use with BeebLink. Supply name of disk on
command line; it will create a BeebLink-compatible folder in the same
folder, named after the disc image. Alternatively, specify
-2 to have it output files from side 0 or 2 straight into the folder
-b switch to have it find tokenized BBC BASIC files,
convert them to text with
BBCBasicToText.py, and save them to a
Python 2.7 script that converts a BBC screen dump into an image.
Supply name on command line of dump of screen RAM (as saved by, e.g.,
*SAVE X FFFF3000+5000) and MODE the dump was taken from. Use
specify output file. Specify
-r to have image resized to 640x512,
making the image look reasonable on a PC. Specify
-p and a list of
physical colour numbers, in order, to specify the palette (e.g., for a
-p 13 to specify yellow on red.)
(Maybe one day I'll figure out how to make animated GIFs so that flashing colours can be supported.)
Join a service ROM and relocatable modules, creating a new ROM image.
(Note that while this will consume modules produced by JGH's tools, I
haven't tested its interaction with
*SMLoad (etc.) - I just use this
to create new standalone ROMs.)
Make a relocatable module from a service ROM.
Assemble the service ROM twice, once at $8000 (a valid ROM image that
you might actually use) and once at $8100 (not a valid ROM), and
supply both files to this tool. The output is a valid ROM with a
relocation table that can be used by
smload_join, and ought to work
with JGH's tools too.
Along the lines of
convert files between modern standard line endings (lines ending with
LF, or, on Windows, CR+LF) and BBC-style ones (lines ending with CR).
Create an ADFS disk image from a set of DFS-style .inf files.
$ will be placed in the ADFS root, and additional
directories will be created to hold DFS files in other directories as
Specify file order in the same way as
Extract an ADFS disk image to .inf files.
The directory structure of the ADFS disk will be reproduced. PC folders will be created corresponding to each ADFS directory, with data/.inf files created in each PC folder corresponding to the ADFS files.
The .inf format isn't ADFS-minded, so note that the conversion process may be lossy. ADFS file names will be stored in the .inf files, so they can always be reconstructed, but there is no similar mechanism for ADFS directory names, which may become lost if they use chars not supported by modern PC filing systems.
Create a BBC bitmap screen memory image from a .png file.
The .png file should contain only valid BBC colours - (0,0,0), (255,0,0), etc. - but png2bbc will try to do its best, within the constraints of the mode specified.
Convert a C64 PRG file, as output by 64tass, into a BBC data/inf pair.
The PRG file's load address will be used as the BBC file's load address and execution address, and the output file name will be used to generate the BBC name in the .inf file.