Qemu download 1.7MB Tar BZ2
In Daniel's own words.
Notes for anybody interested in downloading:
- Supply your own 3.5/3.7 rom, or use an arm linux image (must be a
modern 2.4/2.6 with modern boot argument passing (ATAGS)).
- This is built around qemu-0.8.0, but the revelant arm bits weren't
any different in cvs the last time I checked.
- The main "machine" part is in the 'integratorcp.c' file, although
very little of the original version of this remains aside from the
mini linux boot loader.
- Also in that file is found a #define RISCOS/#define LINUX to select
the relevant boot up strategy, and paths for ROMs/kernels.
On the qemu front, over Christmas I had a go at trying to contort qemu
into pretending to be a riscpc. Then I read on some riscos news site
that there is now Tom Walker's windows riscpc emulator, and qemu work
based on Nick Burret's work.
My qemu attempt is different to both of these as it is supposed to be
a hardware implementation dynamic recompilation rather than
swi-cloaking-magic. I choose the Risc PC because the processor as it
stands is obviously more similar than to an ARM 3. I am not totally
sure of what the Nick Burret version consists of but here is what I
I started by using a 3.7 ROM, but after a while realised that if I
used ARM Linux I would have a source to follow. Despite this I have
come to a sticking point - both RISC OS and ARM Linux hang or crash in
the boot up (puzzling memory aborts in ARM Linux), and I have no idea
where the problem comes from. I stared at Tom Walker's source, butthis has not shown any significant difference.
- Implement all 26 bit modes - the hard part here being altering the
instructions to handle the PC correctly in all instructions. This code
is not thoroughly tested, but appears to work.
- Change small details of the processor to make RISCOS & ARM Linux
built for RISC PC play nicely with it. (Especially making NV behave
'properly' at the start of the 3.7 ROM).
- Hooked up the qemu ps2 hardware into the arm processor, and made a
basic set of arm timers, hooked up the arcem i2c code into qemu,
programmed in lots of the arm750 iomd registers.
In conclusion, if anybody wishes to pick up the pieces and have a go
using any of the code I have written, or alternatively using it as a
base for something else, then the source is available on request; I
don't have anywhere convenient to put it at the moment.