; > 5thColumn.Concept RISC OS Support for extension ROMs ================================== Author: Tim Dobson Status: Draft Issue: 0.02 History: Date Revision Changes 11-Oct-90 0.00 Started 16-Oct-90 0.01 Completed first draft 04-Feb-91 0.02 Updated to reflect reality This document describes the purpose of the extension ROM system and discusses various design issues. For the full technical documentation, refer to the document "5thColumn.Manual". The extension ROM system allows the development of hardware platforms fitted with a normal 32 bit wide RISC OS ROM set plus one or more 8, 16 or 32 bit ROMs or EPROMs containing software modules which add to or replace modules in the main ROM set. This allows the same main ROM set to be used in a wider variety of hardware platforms, removing the extra cost and lead times of re-romming, and possibly reducing costs by allowing bulk purchase of the main ROM set. The extension ROM(s) appear in the memory map in unused parts of the low (&03400000 to &037FFFFF) or high (&03800000 to &03FFFFFF) ROM areas. A 32 bit wide extension ROM set is directly executable in place, saving on user RAM. 8 or 16 bit wide sets have to be copied into RAM to execute. By using the low ROM area (whose access time is programmable independently from the high area containing the main ROM set) slow EPROMs can be used. A particularly attractive configuration might be to have 8 ROM sockets on the board, 4 for the main ROM set, and the other 4 capable of taking either one 32 bit wide set (eg a large set of applications eg Internet) or up to 4 individual 8 bit wide ROMs containing smaller applications or utilities. The scheme also allows a machine to have limited protection against unauthorised access, if the extension ROM contains a module which requires a password to be entered before continuing. In order to allow different sizes of EPROMs to be used without having to have links on the board, the software will look for extension ROMs at higher addresses first, and work backwards. This means that the high order address lines (which should be tied to +5v on smaller sizes of EPROM) will be pulled high initially, although they will be pulled low later on when looking for further extension ROMs. The way in which the kernel initialises modules has been changed. If there is more than one version of the same module present in the ROM (which includes the main ROM, expansion card ROMs and extension ROMs) then only the newest version of the module is initialised. If an extension ROM contains a newer version of a module in the main ROM, then the newer version will be initialised at the point in the initialisation sequence where the main ROM version would have been initialised. This allows main ROM modules to be replaced without the problems associated with initialisation order.