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 MachineCode) to be added. Once the image is complete, the whole lot can be programmed into an Eprom or loaded intosideways ram, and the programs are thenavailable for use. They are obtained byselecting the Rom Filing System (RFS) by entering *ROM and then CHAIN or *RUNthe 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 musttherefore 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 Romsto 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 languageroms from BBC Basic with the following restrictions :- Real (floating point) is not supported.Integer variables are only 2 bytes longinstead of the usual 4. Some additional functions are not supported e.g. ADVAL, EVAL. Some System Variables are not supportede.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 FloatingPoint Calculations package. Other than that this is a good language to write Rom images in. Acornsoft's ISO Pascal. This also provides support for bothLanguage 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 takein future articles.
Stephan Richardson (K2O).