Make your 32-bit computer do an Impression (ho-ho) of a 26-bit one!
When Castle Technology Ltd launched the IYONIX pc, back in 2002, there was a significant question users needed an answer to before upgrading to the new computer: Would their old software run on the new hardware?
The problem was that for all the previous RISC OS computers, the ARM CPUs worked in (or supported in the case of StrongARM) an addressing mode we refer to as ’26-bit’, in which the program counter and processor status flags are contained in a single register; six bits are used for the status flags, and 26 bits for the program counter – the pointer to where in memory instructions are read for execution. With instructions always being word-aligned, rather than byte-aligned, the 26-bit program counter actually provides a 28-bit address range, representing bits 2 to 27 in the actual address – the lower two bits pointing to the instruction to be read are always zero.
Due to the way it was written, up until this point, RISC OS needed the processor to be working in a 26-bit mode in order to run.
The IYONIX pc, however, used an Intel XScale 80321 processor that, being based on ARMv5 architecture, didn’t support a 26-bit mode – it was a 32-bit only processor. The version of RISC OS used on the new computer had already been updated to work using a processor that only supported a 32-bit mode, but the third party software that people would want to run on it was another matter.
Some software was fine; users could just install it on the new machine and it would work.
In some cases, the developers were still active (or others were able to take on the mantle) and the software was updated; users could upgrade to the new version, and that would work.
In other cases, though, there was a problem. The software, like older versions of RISC OS, was written in such a way that it could only run on a processor that was working in 26-bit mode – and there was no way to update it. A very notable example of this was – and remains – the Impression family from Computer Concepts (now Xara) ; software that is still very popular, but to this day remains 26-bit only*.
The solution came in the form of another piece of software, written by Adrian Lees, and sold through Spellings.net – Aemulor, released in early 2003; an emulator that provided a 26-bit environment on the 32-bit processor, and thus allowed 26-bit software – such as Impression – to run on the 32-bit IYONIX pc.
It provided users of older machines, such as the Risc PC, a way to move to the IYONIX pc, knowing that their old software would run on it.
Moving forward to today, we find ourselves in a similar situation once again, with platforms such as the BeagleBoard (on which the ARMini is based) and PandaBoard. Aemulor was originally written specifically for the XScale processor used in the IYONIX pc (and later updated to run on the ARM9 processor used in the A9Home computer), but it wasn’t suitable for use on the ARMv7 processors used by the new generation of devices – and therefore old favourites like Impression could not be used on them.
Adrian Lees has been working on a new version of Aemulor for use on the BeagleBoard and PandaBoard, and it has now been made available, free of charge.
This new version provides the same 26-bit compatibility features of Aemulor that are found in the original version:
- Full 26-bit application emulation (C, ARM Code etc.)
- StrongARM-class performance
- 26-bit module support
- 26-bit BASIC assembler support
- BASIC programs run at native speed
- RISC OS 4 to 5 SWI emulation
- RISC OS 4 internet error code emulation
- SWI Flag preservation
- Dynamic area creation in “low” memory
It also has the following additional features:
- support for low bits-per-pixel screen modes (i.e. those with a small range of colours, needed by Sibelius and many games, for example)
- 26-bit sound module support (voice generators, linear handlers, channel handlers and schedulers – which, again, is likely to be necessary for many old games)
- 26-bit filing system support (such as CFS, LanMan98FS, WebFS, and Win95FS)
- Simple emulation of the Archimedes hardware (VIDC/IOC) or RiscPC hardware (VIDC20/IOMD) which is directly accessed by some games.
- Altered memory map and hardware configuration is presented to 26-bit code that expects certain addresses and controllers.
ARMini users (and subscribers to R-Comp’s BeagleBoard Support Scheme) can download the software from the private area of the ARMini website, while anyone else can download it from Spellings.net’s online store.
* X-Ample Technology acquired the source code to Impression Style, Publisher and Publisher Plus in 2003, with the goal of making them 32-bit compatible. To date, however, that goal does not appear to have been achieved.