The purpose of this page is to pass on some software for (the operating system) Risc OS
This OS exists from 1987 on, first on the ARM-equipped Archimedes computer. ARM is now in almost every telephone.
Apart from the Archimedes, there are a number of old machines that are also no more in production and even rare, like RiscPC's and Iyonixes.
New machines based on modern ARM processors that can run this operating system are still available. A quick internet search will find them quickly.
If you want cheap, almost any raspberrypi (www.raspberrypi.com) will do. Only the latest models, CM5, RPI5 and RPI500 cannot run RiscOS natively anymore but can run it in a virtual machine (Risc_OS_Linux_Binary) or under emulation in the RPCEmu emulator, www.marutan.net/rpcemu/
A free operating system for recent hardware is available at www.riscosopen.org or (an alternative version with shedloads of free and modern software) www.riscosdev.com.
The current most modern RiscOS version number is now at 5.31. (as of June 2026)
All the files on the site you are looking at, are zipped so if they have no .zip extension, in your RiscOS desktop, filetype them to 'archive'.
Click on the blue headlines to download the files.
!RegGraph
Zap-like editor only for BBC-Basic, with utilities.
I myself always use it for programming in BASIC because it allows me to quickly test for programming errors.
And unlike !Zap, the 'Insert' keyboard buttom only understands Insert, not Replace - saving me a lot of effort when i forgot what was there in the text before.
And you can search for search items with keywords included.
This project was started as an utility to convert assembler-listings into a graphical form. This explains the name of the program.
Some more background -
When programming in (ARM) assembler, you are likely to end up with more variables than registers. Typically more than the 15 usable registers that 32-bit ARM processors offer. Reggraph makes it relatively easy.
The graphical representation allows you to easily see which variables you can combine, and where some registers can be pushed on stack safely to make place for more variables.
This is also super useful when you have to change an existing program, as you can see where registers are free to use. Or which other registers are not accessed during the time you need more registers.
It also alerts you of errors, e.g. uninitialised registers. It has a database of the RiscOS SWI's as listed in the PRM's, in order to judge which registers are needed or changed with that SWI.
The registergraph looks a bit like the music notation system Klavarskribo. One horizontal line for each instruction, 16 or more vertical lines where the state of registers is shown, ie. free, in use, used as input or output or both.
As you can easily see where you can use one register for multiple variables, and see lines following branch jumps, it is fairly easy to construct assembler with optimal register use that works first time.
But there is more.
An editor was built around this utility with the usual text manipulation features, and more utilities like cross-referencer (per routine and global; global also lets you see which variables are never assigned or used).
For individual variables you can see in which subroutine they are DIMmed, reserved as LOCAL, used as a parameter, read out or assigned.
It has a program cruncher (among more, variablename-shortening and converting everything into an approximately lzw-compressed executable; also BBC-era programs can be compressed).
simple program check (eg. check for correct IF/ELSE/ENDIF,CASE/ENDCASE pairings, number of parameters for each subroutine, () [] {} correctness).
Printing (to a series of jpegs suitable for A4 / 200 dpi pages, to avoid Riscos printing problems, with choice of character size, number of columns, with indentations or without, with or without linenumber).
Character designer, treeview how procedures and functions are interrelated, a calculator (needs some extra attention i must admit) with bitlength up to 128
It can also calculate primes (128-bit, little Fermat method) and crc-polynomes (variable length up to 32-bit)(polynomes with 2^n-1 loop length only, fairly fast).
!ArchiEmu
The first versions of the now ubiquitous ARM processor were used in a series of computers by the British company Acorn.
The Archimedes 305 and 310 were released in 1987, and, a few machinetypes and operating system versions later, they were replaced by the RiscPC.
The chips used in the RiscPC and later machines were so much different that a lot of earlier software did not run anymore, a good moment to write an emulator, !A310Emu.
It turned out that some games and demos required features that I could not add to this older version.
So, start anew and try to implement the versatility that the old version lacked.
Sooner or later it turns out that new versions also can no more be adapted to fresh insights. That's life.
This program is on the edge of inadaptability, especially the screen (wiggling screens it cannot do properly), floppy (no Format+ iirc) and harddisc-image handling (setup is too complicated) cry out for improvement.
The archive contains the emulator itself, and a few example setups.
You can add other OS'es than version 3.11 too, it recognises them automatically.
Tested with Arthur 0.30 and 1.20, Riscos 2.00 and 2.01, Riscos 3.10, 3.11, 3.19, and 3.20, with memorysizes from 0.5 Mb up to 16 Mb. The Readme file has more info where to get more software to revive those days.
The emulator can be used both in multitasking and singletasking.
Supports 2 Harddisc images up to almost 500 Mb each, HostFS and it passes through Midi commands (Sibelius!), if MIDIUSB is active in the host.
!Sudoku12
Solve and create various types of Sudokus, inc. Hexadoku, jigsaw, Sudokumix.
This distribution also includes BASIC and Python versions of a singletasking Calcudoku solver. The Python solver even runs on a RaspberryPi Pico with Micropython installed.
!A310Emu
An older Archimedes-emulator for Strongarm-equipped RiscPC's & Iyonix ,for Arthur 0.30, 1.20, RO200, RO3.11, memorysizes 0M5-16M (depending on OS).
Sound and low-bit-per-pixel screenmodes must be improved. Supports two virtual ST506 harddiscs up to 256 Mb each.
It was effectively abandoned when I started !ArchiEmu, so not everything works, or has bugs.
This one has an code interpreter that analyses each and every instruction before executing them. !ArchiEmu predecodes them to a more easily digestable format, that is faster but also requires much more memory that causes severe cache-thrashing in machines with small codecaches (RiscPC 16K; Iyonix 32K). Therefore on a RiscPC, !ArchiEmu adopts the speed of the RiscPC's slow memory. So for the RiscPC, A310Emu is preferable.
For 32-bit behaviour, it has been adapted for Beagleboard and RaspberryPi but that's it.
It's no longer maintained, it misses some features that !ArchiEmu has.
Nonogram
A program to solve the Nonogram/Griddler/Japanese-picture puzzles. It was mainly written because of the challenge to find an algorithm for these problems. Which is more complicated than it is with Sudoku's.
!Keyboard
Utility to enter keypresses by clicking with mouse on icons. Useful if you forgot to take a keyboard with you, or if you want to enter special characters (it has a submenu for the most common ones). Three different keyboard layouts, can also type into open menus.
Patches for some programs to work in the RaspberryPi 3, and a program to create them
A few very useful programs ceased to work when tried with Riscos on the Raspberry Pi 3. RPI3 has a processor with no SWP instruction. instead it uses two other instructions, LDREX and STREX. PatchSWP replaces SWP with these two. In the RiscOS universe, SWP is almost only used in programs compiled with gcc that expected to be run in a multicore environment. The codefragments where SWP occurs are predictable, which makes replacing easy if these fragments can be recognised.
Most of the time, in front of subroutines there are text areas to indicate where the code came from in the source; those areas could be shortened and make room for the extra space the LDREX/STREX workarounds need.
The patch files can be put into the !Patch directory in the Utilities folder. E.g. SDFS::0.$.Utilities.!Patch.
The files can also be adapted directly, you do not need !Patch.
The PatchSWP application has its own help file.
An Electron emulator.
The Electron (1983/4) was brought to market as a less expensive BBC computer.
Upto now this emulation can read ADFS floppy images, UEF cassette files, ROM cassettes. Sound (16-bit only), Multi- and Singletasking, loading and saving of complete machine state, DFS discs.
A prime number generator
A fairly useless prime number generator, it can also decompose numbers into their factors.
For a program based on the sieve of Eratosthenes, it can handle fairly big numbers (up to 2^96, practically 2^80). It's more out of curiosity and as an exercise in how to write a fast generator rather than something useful.
Usefullness starts at much larger powers of 2, and prime numbers as a basis for encryption is becoming obsolete in the age of quantum.
Lingo assistent.
Lingo is/was een spelprogramma om een 5 of 6 letterwoord te raden.
InvLingo is een multitasking progr dat lijkt op hoe op www.nieuwsblad.be/woordkraker dit spel wordt gepresenteerd.
Laat InvLingo een woord voorstellen, voer dit in op de site, voer de teruggegeven kleurcodes in in InvLingo en voer het nieuwe voorstel door InvLingo in bij Woordkraker.
Uiteraard kun je ook tegen het programma zelf spelen.
VrgrVrkln, a program to change the size of sprites and jpegs
A small program to adapt size, dots-per-inch (dpi), rotate (in steps of 90 degrees), mirror Acorn-type sprites and Jpegs.
It can output the result as sprites (32bpp, 16 bpp in red5-green5-blue5 and red5-green6-blue5 and 'classic' 8bpp) and jpegs.
The latter also in black/white if the original was in colour.
For size, you can use a slider, a button 'fit to screen' and directly enter values as numbers of x- and y pixels.