Beebug
1st October 1986
Author: Geoff Bains
Publisher: Clares Micro Supplies
Machine: BBC Master Compact
Published in Beebug Volume 5 Number 5
Ramrod (Clares Micro Systems)
RAMROD is the latest all-purpose utility ROM from Clares, covering the Tube, DFS and ADFS, and sideways RAM, as well as all the more obvious features of the Beeb. Geoff Bains gives his assessment.
Ramrod is a 16K ROM that provides 54 commands to help you use a model B, B+, or Master 128. Ramrod is supplied either as an actual ROM or as a ROM image on disc to load into 51deways RAM. Either way, Ramrod is an ingenious collection of utilities covering a wide range of requirements.
The functions of Ramrod fall into four categories - General, Tube, Disc and ROMs. Indeed, there are so many commands that no complete *HELP list is provided. Instead, the display of the commands' syntax is split into four, accessed with an extended *HELP command such as *HELP GENERAL.
Most Ramrod commands are used to manipulate memory. The General section has commands to search for bytes or strings, to edit memory and to disassemble machine code programs. These are given the names BYTE, FIND, EDIT and DISS, prefixed with 'M' for main memory area or 'S' for the shadow memory area, if present.
Numeric parameters to specify start and finish addresses and so on can, where relevant, be specified in either hex or decimal by preceding the characters with the usual '&' for hexadecimal or '/' for decimal. However, default number bases for each parameter means that you don't have to trouble about this. Parameters can even take the value of a resident integer variable (A% - 2%) simply by giving the variables name in place of the parameter. All four commands are based around the same routine. EDIT, FIND, and BYTE produce a mode 7 display of the section of memory in dump format. If a search command initiated the display, the first find is shown at the top of the screen, and the TAB key moves on to the next. DISS gives a display with disassembled mnemonics.
Whichever command was used, CTRL-TAB switches between dump and disassembler format. Both displays are also dynamic, changing as memory contents change.
The whole display can be scrolled back and forth with the cursor keys and the memory altered in either hex or ASCII. The current ROM is displayed at the top of the screen and can be altered to inspect or disassemble another sideways area (or even edit it if it's in sideways RAM). The disassembler is very fast. Indeed, the whole routine is easy to use and provides a very effective series of facilities.
As well as the scrolling disassembler and editor, simpler versions are also provided. *MNEMONIC, disassembles from a specified address in a mode @ format. *TEXT and *HEX dump memory in in hex or ASCII, again in a mode @ format.
Other memory utilities are included. *FILL seeds an area of memory with a specified byte. *SHIFT moves an area of memory to a new address. *RELOCATE changes a piece of machine code to run at a different location. This isn't fool proof; and no relocation program can be. It must be used with a reasonable knowledge of the machine code program in question.
Such commands can act on sideways ROM or RAM, as well as main memory. Ramrod has a clever way of specifying which sideways ROM area is to be used. If the memory to be used is in the normal RAM area then start and finish addresses are specified as normal. A sideways ROM is indicated by designating the start address as &8000 and adding the ROM name or socket number onto the end of the command. In this way a common command structure suits all the eventualities.
The General section covers other functions too. *VECTOR prints a list of the current settings of all the page two vectors. *CHECK verifies a Basic or data file on cassette or disc with one in memory. *MCOMPARE does the same between two areas of memory, including sideways RAM/ROM. Two more familiar utilities, but with a new twist, are *SKEY and *LKEY. These save and load function key definitions from tape or disc. The twist is that they cope with the Master 128 which stores the definition in its inaccessible private workspace.
The prefixing of the commands is used a lot in Ramrod. Many of the General commands are used in the Tube section, prefixed with a 'T'. This leads to rather unpronounceable (and therefore unmemorable) commands, but does mean that a consistent nomenclature and syntax is used right across Ramrod's wide range of facilities.
Four extra Tube commands are included. *IOTCOMPARE will compare an area of memory in the I/O processor with one across the Tube. *TIOCOMPARE performs the reverse. For those interested in using the Tube for more than just running commercial software, two useful commands are IOTSHIFT and TIOSHIFT. These transfer data between the two processors, previously a very complex process.
The Disc section of Ramrod also offers the three operations - BYTE, FIND, EDIT. For discs these commands are prefixed with a 'D' for a normal DFS disc (including the 1770 DFS used on the Master) or an 'A' for ADFS users. These commands produce the same scrolling dump display as used for the memory and Tube commands.
Naturally, operation is slower as disc access is required, but Ramrod provides one of the best disc sector editors around. An 'M' can be added as a parameter following the command to specify a mode 0 display instead of the usual mode 7. If 80 column output is chosen in this way, but the machine has no shadow memory, then a 'Go (Y/N)' prompt is given before the command is executed, as a protection against corruption of important data that maybe overwritten. It's a shame this option is not provided for the memory commands.
The final section of Ramrod is concerned with sideways ROM and RAM. This provides one of the best collection of ROM-managing utilities around. *RON and *ROFF enable and disable a ROM and a disabled ROM can be kept off through Ctrl-Break. *RWIPE clears a bank of sideways RAM and *RLIST 1lists all the ROM/RAMs in the machine along with their type and enabled state. ROM images can be loaded from disc with *RLOAD and moved or swapped between ROM sockets with *RMOVE and *RSWAP (as long as they are suitably equipped with sideways RAM).
Perhaps the most useful command is *RPASS, used to pass a command directly to a named ROM and so avoid any command conflicts.
Ramrod also provides several utilities to use the ROM filing system. *RLOAD will format a bank of sideways RAM ready for program storage. *RTITLE will name it and *RINFO detail the programs there. *RFILE is used to add any Basic or machine code program to the bank.
There is nothing very new about many of these facilities. You'd be forgiven for thinking Ramrod is just another forgettable utility ROM. Although Ramrod's features are mostly familiar they ar implemented more efficiently than most of their predecessors. However, Ramrod's real appeal lies in the sheer number of utilities provided with a common syntax and its compatibility across the whole range of BBC micros.
There are few ROMs around that cover as much ground as Ramrod. If you already have a number of the utilities provided by Ramrod then £40 is going to be a lot to pay for a few more. However, if your ROM sockets are not yet fully stocked, or if you want to rationalise your collection, Ramrod is hard to fault.