Writing Rom Images for the BBC Series Machines. So you have this idea for a great
utility or language, but you cannot
program in 6502 assembler therefore
your idea cannot be turned into
reality. Wrong, this article explores
the options open to non-6502 assembler
programmers who wish to produce Rom
Images.
The first option is to get hold of
a Rom Filing System (RFS) formatter.
This formats an 8K or 16K ram image to
allow programs (either Basic or Machine
Code) to be added. Once the image is
complete, the whole lot can be
programmed into an Eprom or loaded into
sideways ram, and the programs are then
available for use. They are obtained by
selecting the Rom Filing System (RFS)
by entering *ROM and then CHAIN or *RUN
the relevant program. The RFS is a
serial filing system, whose format is
similar to the Cassette Filing System.
All the normal filing system commands
are available, except those commands
whose action causes a write e.g. SAVE,
*SAVE since this is a read-only system.
If you wish to have the extra
commands to provide write accesses to
the filing system, then the image must
obviously be in sideways ram, and
Beebug have an excellent rom, 'ROMIT',
which provides support for a Sideways
Ram Filing System. Unfortunately, any
potential users of your new Rom which
utilises Beebug's 'ROMIT' commands must
therefore have a copy of 'ROMIT'
themselves.
The next option is really an
extension to the first. Several Eprom
blowing software utilities provide a
means of placing Basic programs in Roms
to be invoked by a '*' command.
All of the above methods have a
major drawback in that the programs do
not run in the Rom itself, but are
download into main ram and executed
there.
The next option is to program in
one of the languages that provides a
Stand-alone Generator, which I
mentioned in my previous programming
article
The following languages can
therefore be used :-
BBC Basic compiled by Computer Concepts Accelerator. This allows you to produce language
roms from BBC Basic with the following
restrictions :-
Real (floating point) is not supported.
Integer variables are only 2 bytes long
instead of the usual 4.
Some additional functions are not
supported e.g. ADVAL, EVAL.
Some System Variables are not supported
e.g. LOMEM, HIMEM, PAGE.
Acornsoft's BCPL. This provides support for both
Language and Service Roms. Real
(floating point) variables are not
supported, unless you have the Floating
Point Calculations package. Other than
that this is a good language to write
Rom images in.
Acornsoft's ISO Pascal.
This also provides support for both
Language and Service Roms. This too is
a good language to write Rom images in.
Mijas 'C'. This provides support for Language
roms only. Real (floating point)
variables are not supported. This is a
more complex environment in which to
write Rom images, but it still quite
useful as the compiler generates
machine code eventually.
I hope this has given you a taster
of what is possible on our beloved
machines, and eagerly await your
comments on the direction I should take
in future articles.
Stephan Richardson (K2O).