This is a collection of ROM images from the various models and
versions of the Psion Organiser. Psion retain copyright on their
ROMs but have given permission for them to be used for emulators.
To find out which model and version you have, visit the
Models and Version Numbers page. If you
have a version that that is not available here, I would like a copy
of its ROM to add to this page. You can contact me at
The release notes taken from the Technical Reference Manual
(LZ) are duplicated below. The bugs listed for any
version are fixed in the next released version.
The release notes unfortunately do not cover the whole range of released ROMs.
My remarks are shown in grey. If you can help complete the information, please let me know.
If the install code of a device alters the menu a crash may ensue on a cold boot.
Re-booting a machine with more than one device installed may cause a crash.
An attempt to translate the illegal statement "11SIN" results in a crash.
If a field is assigned to that is beyond those already assigned to
before it may write the data over the diary or operating system
variables. This can, in rare cases, result in a crash. The fix
is to assign (a null string or zero) to the last field after
creating or opening a file and after getting an END OF FILE
condition. (The END OF FILE condition is when EOF is non-zero,
this means that all values of the fields have been zeroed out.)
If the diary is backed over midnight and then brought forward,
using the arrow keys, any diary entries seem to have disappeared.
If RAM is full, editing a procedure can give OUT OF MEMORY and
leave the screen corrupted.
If an error is encountered when adding to or subtracting from a
calculator memory (M0 to M9) then that memory is corrupted.
Floating point AND produces unreliable results.
VIEW(1,"") does not work properly.
VIEW of a 255 character string doesn't scroll.
Strings longer than 255 can be declared (e.g. 256 gives a zero length string).
Declaring arrays which overflow memory size can cause machine to
crash at run-time. e.g. LOCAL s$(255,100) or LOCAL a(10000).
INPUT A.A$ artificially limits the length input to 252 minus the
record size (as found from RECSIZE). It should allow 254 characters.
If the machine is turned off in the minute before an alarm is due
it won't go off for 34 minutes.
If packs are accessed at the same time as the buzzer is used (e.g.
from a key click) the bottom byte of the pack can, very rarely, be
blown to zero.
If after a successful CLOSE another CLOSE is done when no files
are open it can crash the system.
It is possible but unlikely to get spurious alarms when loading devices.
If the ON/CLEAR is pressed at the same moment as an alarm it may be missed.
When a translator error is detected some memory may be lost until the language is run.
Using MENU with an item with more than 17 letters causes an infinite loop.
When on a null diary entry deleting it causes the next diary entry to be deleted.
TRAP DELETE "A:"+XXX$: can cause a crash if there is an error in XXX$:.
If logical name D is used then it can cause OPEN to fail with
error number zero when it should have succeeded. An error of zero
is not reported as an error at the top level. It is safest not
use logical name D.
POS200 ONLY. The menu cell is grown every time the machine is
booted so memory eventually fills up. Solution is to cold boot
If a "workday" alarm is set for the Friday before the end of a
month whose last day falls on a Saturday or Sunday, some corruption
may occur when the alarm goes off or if you attempt to set an alarm
on the Saturday or Sunday following the Friday.
On version V4.2 you will get a DEVICE MISSING error but on V4.3 it will
appear to be ok. In both versions there may be corruption and there may
be a possibility of the machine TRAP'ing. The dates it will occur on
are as follows:
28/APR/89, 29/SEP/89, 29/DEC/89,30/MAR/90, 29/JUN/90, 28/SEP/90 etc