External changes in Arthur 2: bugfix numbers refer to bugs.1-20 (This file provided for information only: it does not affect documentation changes)

Version 1.21

Oscli gives an error if a special field is found in the filing system prefix, e.g. *net#arf:setstation now gives an error.

*Modules counter doesn't wrap at 256 (and neither does *ROMModules) (bugfix of 506)

If a module fails to initialise, the module handler doesn't free incarnation node twice, and doesn't poo in the system heap. (bugfix)

RdArgs SWI added, NoSuchSWI error made non-dynamic

Version 1.22

Module death can now be recursive (bugfix #526) Module header fields checked for validity: word-aligned where appropriate, and within code length.

CAO during startup set to 32M: allow overwriting of MOSROM modules. (bugfix #525)

Module SWI lookup much faster: uses a hash table, rather than linear search of the module list.

Added SWI OS_ReadRAMFsLimits

Looks for keypad * pressed on reset; drops into supervisor. (see bug #511)

T,Delete and Copy power-on added. R and T power-on clear the MOS CMOS, with different sync settings; DELETE and COPY clear all the CMOS.

List, Type use RdArgs (File/A,TabExpand/S), and expand tabs into 8 spaces.

SWI despatcher goes into caller's IRQ state; subsequent changes in next few versions to get the right IRQ state for individual SWIs.

Version 1.23

Bugfix (#529) of Oscli: copes with buffer overflow in alias expansion parameter substitution.

Version 1.24

New much faster IRQ despatch, along with new SWIs to claim and release "devices" (i.e. bits in IOC interrupt registers A and B, with the podule device the only one capable of having multiple owners).

EnumerateROMModules call (and so Rommodules) bugfixed (#532).

*RMFaster added.

Interruptible (and also bug-fixed) heap manager incorporated.

Version 1.25

Default IRQ2V clears the appropriate mask bit, returns. This is necessary for "devices" to have temporary drivers; anybody using the new IRQ SWIs must simply delink from the device vector when they have finished; subsequent IRQs will then either go to the next driver on the chain, or be disabled by the MOS.

SWI ModHand: ExtendBlock will return V set if appropriate. (bugfix #553)

Register dumping bugfixed (#552); now saves right registers for FIQ/IRQ.

ValidateAddress fixed for screen memory. (bugfix #554)

Version 1.26

MOS help messages tidied up.
Redirection errors are handled better. (see bug #573)

Alias terminators same as module command terminators. (see bug #571)

MOS workspace rationalised; there's now an enormous amount of sharing.

SWI not known error contains SWI number if it wasnt done under interrupt.

Backspace in readline = delete

Version 1.27

Background FIQ handling done; Service_ClaimFIQ and Service_ReleaseFIQ now come round immediately after Service_Reset, to set up the default handler.

Stuart's HeapSort SWI added
SWI ExitAndDie added
SWIs to delink and relink application vectors added

SWIs to allow user CAM-bashing; soft reset makes the application space contiguous again.

ChangeEnvironment has a new reason code to allow setting of the application space size.

Reset code masks CMOS; if top bit of CMOS gets set, used to be in a state where lots of memory was allocated, but *status said little was being requested.

Version 1.30

New extensions to callback; can now ask to be put on a vector. The vector is also called if waiting to read a character; code on it is not allowed to generate errors, etc.

ChangeDynamicArea refuses to do anything if called from an interrupt routine.

Version 1.31

Supervisor printing of time taken dropped. System heap and cursor memory user-write-protected.

Version 1.32

Bugfix of heap block extension.
Dynamic SWI not known built in better buffer.

Improvement of heap block extension; will extend into preceding block if possible.

PrettyPrint bugfix: hard space after tab works.

Writeability of CAO (for WIMP) via changeenv.

Checks for keypad 0,1,2 on "power-on" resets, and sets monitor type from it.

ReadBlockSize reason code added to heap manager.

Defined R0-R3, R12 corruptible for IRQ processes.

Version 1.34

Old style handler setters don't poo on r12 value (bugfix).

ReadDefaultHandler SWI added; pass number from hdr.envnumbers, returns

        R1=address, R2=workspace, R3=buffer. 0 means not relevant.

Version 1.37

Service_MemoryMoved offered after ChangeDynamic has moved stuff.

Version 1.39

R0 in Service_Memory corrected. (bugfix)

Monitortype bits expanded in status/configure.

r1 uncorrupted in OS_Exit.

Version 1.40


Help matches against module titles as a postscan, giving keywords recognised in the module.

Version 1.41

ChangeDynamicArea rejects out of range area numbers (instead of crashing).

SWI Module performs better when block extension has to try and extend the RMA.

ROM unplug bits extended by using original Master frugal bits.

Version 1.43


Default CMOS changes: NewADFSCMOS+2=1, DumpFormat=4. Prettyprint expanded to allow tokenisation.

Version 1.44

DrawV added.

Version 1.45

PrettyPrint allows you to specify the MOS dictionary by setting r1=0.

Version 1.46

Made IRQ vector claim force release of any previous entries. SubstituteArgs:
tbs r0 on entry => don't tack any unused part of the line on the end.

New HeapSort which can shuffle data/build array pointers for you

Help text compressed.

BGet cache put into kernel.

Version 1.47

Added EconetV

Fixed module name match: adfs. no longer matches adfs

Version 1.48

*Quit migrated: now a utility command, rather than a supervisor command. BPut cache migrated into kernel.