The error numbers returned indicate the type of error encountered. Exactly why slightly more meaningful messages are not returned I am unsure. The error codes meanings are as follows :-
ST506 error codes &01 ABT Command abort has been accepted &02 IVC Invalid command &03 PER Command parameter error &04 NIN Head positioning, disc access, or drive check before SPC has been issued &05 RTS TST command invalid after SPC &06 NUS USELD for a selected drive has not been returned &07 WFL Write fault has been detected on the ST506 interface &08 NRY Ready signal has been negated &09 NSC Seek completed (SCP) wasn't returned before a timeout &0A ISE SEK, or disc access command issued during seek &0B INC Next cylinder address greater than number of cylinders &0C ISR Invalid step rate: highest-speed seek specified in normal seek mode &0D SKE SEK or disc access command issued to drive with seek error &0E OVR Data overrun (memory slower than drive) &0F IPH Head address greater then number of heads &10 DEE Error Correction Code (ECC) detected an error &11 DCE CRC error in data area &12 ECR ECC corrected an error &13 DFE Fatal ECC error in data area &14 NHT In CMPD command data mismatched from host and disc &15 ICE CRC error in ID field (not generated for ST506) &16 TOV ID not found within timeout &17 NIA ID area started with an improper address mask &18 NDA Missing address mark &19 NWR Drive write protected IDE errors - As ST506, except: &02 IVC Command aborted by controller &07 WFL Write fault &08 NRY Drive not ready &09 NSC Track 0 not found &13 DFE Uncorrected data error &16 TOV Sector ID field not found &17 NIA Bad block mark detected &18 NDA No data address mark &20 No DRQ when expected &21 Drive busy when commanded &22 Drive busy on command completion &23 Controller did not respond within timeout &24 Unknown code in error register
There are various programs out there now which fix this problem. The PD ones all are 'caveat emptor' programs but are worth trying if you vitally need to recover some files, or just don't have the floppy disc/streamer space to back your drive up.
In the FAQ maintainer's experience the utility 'fsck' (a shareware utility available at good FTP sites near you) works reliably and well. The distribution version does not work with the new FileCore but by registering you can obtain a version that does repair the newer format discs. Fsck has now spawned a commercial version, called Disc Doctor, which not only handles all disc formats but allows the undeleting of files as well. Contact Oregan Developments for more information on Disc Doctor.
Another shareware tool is DiscEdit - strictly speaking it is a disc sector editor but it also contains routines for directory repair. Even so it is recommended that if you have critical data on your drive you should use one of these tools to recover the data and then reformat the drive.
Another commercial disc repair application is available from Look Systems, called ADFS Rescue which is also recommended.
The power on self test was introduced with RISC OS 3.0 and later versions of the OS. On power up your machine checks the hardware for physical faults before letting you use it, hopefully signalling important errors to you before further hardware damage can result.
The purple screen at power on indicates that the self-test has begun. A brief ROM, RAM, VIDC and IOC test is performed and then the screen colour changes to blue and a limited memory test [1] is performed, along with a second test of the VIDC and IOC. When the screen returns to purple, the machine is testing for an ARM3 (or better). At the end of this sequence the screen colour is set to green (for pass) or red (for fail). If the tests have all passed then the machine starts to boot and the RISC OS 3 welcome screen is displayed.
If any test fails, the screen will remain red and the disc drive light will blink a fault code. A short flash is used to indicate a binary '0' and a long flash indicates a binary '1'. The bits are grouped into eight nybbles (blocks of four bits) with the most significant bit first.
The lowest seven bits are a status word. The meaning of each bit is
given below in hex :-
00000001 Self-test due to power on 00000002 Self-test due to interface hardware 00000004 Self-test due to test link 00000008 Long memory test performed 00000010 ARM ID detected (ARM 3 fitted for non-RiscPC hardware) 00000020 Long memory test disabled 00000040 PC-style IO world detected 00000080 VRAM detected
Bits 8-31 indicate the fault code and are described below. Not all the
bits are used. If the code is marked as reserved on the RiscPC this means that
error number is currently either unassigned or it's meaning on older hardware
is no longer sensible for the newer machines (and thus it's meaning may be
reassigned on the newer versions of the OS.)
00000100 CMOS RAM checksum error 00000200 ROM failed checksum test 00000400 MEMC CAM mapping failed (A reserved code on the RiscPC) 00000800 MEMC protection failed (A reserved code on the RiscPC) 00001000 (A reserved code on the RiscPC) 00002000 (A reserved code on the RiscPC) 00004000 VIDC Virq (video interrupt) timing failed 00008000 VIDC Sirq (sound interrupt) timing failed 00010000 CMOS unreadable 00020000 RAM control line failure 00040000 Long RAM test failure 00080000 (A reserved code on the RiscPC)
Some third party VIDC enhancers on older hardware trigger the self test to fail. If you are getting a failed self test with a VIDC enhancer, yet the machine is working fine, enter and run this BASIC program and then save your CMOS settings :-
REM Toggle state of power on self test bit in CMOS REM Read byte SYS "OS_Byte",161,&BC TO ,,byte% REM EOR byte with mask for bit 1 byte% = byte% EOR %10000000 REM Write byte back again SYS "OS_Byte",162,&BC,byte% ENDThis modifies the self test to cope with the VIDC enhancer.
[1] By limited it meant that it verifies the VRAM, if present, and checks the first 4 MB of RAM in the machine. (Or so I am told.)
This is a problem caused most often by 'rogue' software chatting to the IIC bus and incorrectly setting the pause bit on the RTC control register. Symptoms of this happening are that the time is always the same every time you reboot and the software clock tends to run slightly slow (losing about a minute every hour or so.). If you are experiencing these symptoms this program should restart your RTC clock :-
REM poke RTC control register REM Bit 0 1 REM 7 Count ResetDivider REM 6 Count HoldLastCount REM write 0 for normal operation, write &80 or &40 freezes RTC DIM cmosdata% 16 !cmosdata%=&00000000 REM write 0 twice to RTC, first 0 is address- control reg REM second is control reg value 0 is default i.e. clock on SYS &240, &A0, cmosdata%,2 ENDYou will need to reset the time after running this program but hopefully your RTC will keep the correct time from here on in.
If the same symptoms persist after trying this program contact your local Acorn dealer as something more serious has gone wrong. Note that to check that the symptoms are persisting you must reboot your machine after running this program and having set the time. This is due to the way RISC OS maintains a 'soft' copy of the real time clock and until you reboot it will not be obvious whether your RTC has indeed started working again.
The *Speaker command does not work on new models of Acorn machines. The A300, A400, A3000, A540, A5000 and A4 all had software control of the built-in speaker. With newer machines this feature has been removed in favour of a automatic hardware cut off of the speaker when a jack is inserted into the sound socket on the machine.
However to ensure compatibility with old software the command *Speaker has been left in the OS, it merely doesn't do anything.
This is a problem primarily with the RiscPC machines caused by the fan lubrication drying out. Symptoms generally include the fan making a lot of noise when the machine starts and then, once warmed up, the noise going away. Progressively the amount of warm up time gets longer and longer.
The solution, and this should only be attempted if you are confident in handling your machine's internal components, is to strip the machine down to it's base slice. Remove the label from the fan and the rubber bung from the bearing. Place a drop of three-in-one oil (and not WD40) on the bearing. Replace the bung and reassemble the machine, your problem should be cured.