> Text.Changes List for Proto-Arfur. Versions up to .078 are ancient history, man. Version .078 ============ Bugfix of environment string setting Version .079 ============ Converted to new error header Top bit R0 error indicator support removed Flags added to ReadLine : bit 31 R0 set => don't reflect chars not going into the buffer bit 30 set => any reflection done with char in R4 Heap robustification : checks that hpds, etc are in existing LogRam New heap call : ExtendHeap, takes hpd in R1, size to change by in R3. Gives two errors : BadExtend for wally changes (i.e. end moves outside existing RAM), and ExcessiveShrink for end moved below area in use. The heap end has been moved as far as possible in the second case. R3 returned as amount actually changed by. Default Sys$DateFormat set up to give string identical to Master TIME$. Version .08 =========== Heap changes bugfixed *con. monitortype added Default screen on 512K Weed is 80K If no keyboard (on ANY reset), it autoboots irrespective of other state. Version .081 ============ Overlong environment strings / errors don't overwrite your breaklist. Service_Memory issued when AplWork size being changed : error given if service is claimed. Service therefore means "are you using the AplWork?" R2 contains the address of the currently active object, so winge if this address is within your code. Sources changed : conditional flags for native VDU, tube connected removed ; it didn't stand a chance of working anyway if you changed either flag. New Tim stuff : key up/down events, Con. monitortype does things. SWI to set handlers with workspace added : handlers yet to change. New fileswitch : buffering buggette fixed Version .082 ============ Configured sizes are now "PageSize" (8 or 32K) units. Vset returns from module Init bugfixed. VSets in RMTidy better Bug in WriteI fixed (if an error occurred, it poked the stacked R14 with the error pointer, rather than the stacked R0!) Utility open file with winge has had open bits added (nodir,mustopen) Major bash of handlers, also 3 escapes aborting removed. SWI OS_ChangeEnvironment added : calls the envchange vector, default owner of which sets the handlers. Give handler number in R0 (see hdr.envnumbers), address in R1, workspace pointer in R2 (if used), buffer pointer in R3 (if used). All old handler setting SWIs call this internally. Version .083 ============ Rationalised version number (cor). Escape handler calling bugfix Version .084 ============ ValidateAddress acts sensibly for zero-length ranges. New TimStuff Kludge for now : workspace for error handler passed in in R0. Help Commands lists *Modules and *Configure. Assembly flag ; can assemble versions that convert exceptions into errors with negative numbers ValidateAddress allows the part of PhysRam that's in the screen. Bugfixes of callback, breakpoint handler setting *GO doesn't screw with your error handler, and supervisor doesn't reset the world every time it panics. New FileSwitch Default PrinterType$4 variable *Error and *Eval Aliasing bugfix : *fred. doesn't match Alias$Fred *Create bug fixed : *create jim now works All files closed on all resets Changes to CMOS reset : station ID unmolested (use magic Set transient!), and Sync state is TOGGLED rather than set. Do R-power on twice if necessary! Version .085 ============ INKEY -256 bugfix Version .09 =========== Version number rationalised! Configure language added. Configured language used, which meant changes to module entering : this sets up the envstring from anything after the filename on RMRun, or from the string pointed at by R2 on Enter. New Timstuff, new fileswitch Attempts to restore registers 10-12, lr on exceptions. .09/a ===== Bugfix of cmd tail on *Go. Monotonically increasing time added, + SWI to read it. *GOS starts up the Supervisor application, which lives in the utility module .09/b ===== Oscli Bugfix : *Volume127 not OK. SWI Module doesn't enable interrupts for claim, release and describe ops New Timstuff : should beep! .09/c ===== Bugfix of errors from exceptions Ballsup in ReadLine removed! Sam hack of Beep code to make it beep at least a bit. *Unplug etc. added. .09/d ===== Beep on hard reset moved. Sound CMOS set on CMOS reset : speaker 1, volume 7, channel 1. Reducing RMA / sysheap updates hpd proply. RMTidy tries to shrink RMA if tidy successful .09/e : Hard reset beep moved a bit more. .09/f : Silly screensizes converted to as close to 20K as poss Optional 325 speed for a1 roms. .09/g : Reset initialises timer0 so can use CMOS RAM read write. .09/h : IOC Control set to FF on reset, new Tim code to do spastic things with Break key. .09/i : Nibble mode ROM speed removed from A1 version! Better Tim code, new fileswitch .09/j : RMReInit reports errors when inserting unplugged modules. .09/k : Allowed to con. screensize 0-127, max screen actually set up 480K Bug in Create fixed. Dump now allows tbs -> printable masking Entry Envstring for RMRun fixed. Entry to Supervisor always by RMEntering utilitymod. ValidateAddress allow super stack Net EX/CAT CMOS reset better Status/configure when listing all goes into paged mode .09/l : Soft break possible : FileSwitch tried and found Guilty of corrupting system heap. New Tim stuff, + weird country stuff in init. .09/m : Basic SWI code doesn't change FIQ bit. Can set dump area for default exception handlers. *Help says "Help on keyword flurgle" instead of just flurgle. Oscli terminators table adjusted. .09/n : Minor help text changes Fixed module command tails New Tim doobries : no chars from Rodent buttons! *Dump given offset=filesize winges "Outside File" .09/o : New fileswitch ; *Copy. *Shadow implemented " :" changed to ":" Paged mode in *Show New TimStuff .09/x : Timstuff .09/y : Show pagemode bugfix Country CMOS reset to 1 New fileswitch .1 : Too much optimism and new Tim stuff .11 : Keyboard code in reset fixed. <65junk> will expand variable 65junk Syntax/help messages tidied up *Time, *Ignore added New Tim stuff Conversion SWIs added Vectored SWIs (notably osbyte) can only affect C and V .12 : Exception errors put PC on error msg. *Shadow (no param) works, *ignore 3please faulted .13 : Conversions point R1 at 0 .20 : New fileswitch Language 3 set on CMOS wotsit .21 : PrinterType$4 not set by MOS. ChangeDynamicArea does nothing if attempt to extend a heap too far. Also always leaves one page in AplWork Enters configured doodad if error on autoboot. Redundant bits removed. .22 : Wierd terminator chars removed from ReadUnsniged, bit 29 flag added: restrict range to 0..r2 (inclusive). Used in SWI naming stuff (won't say "OK" to "Econet_&FFFFFFFF" etc. Unknown SWI error gives SWI number. .23 : CMOS reset TV is 0,1 Configured RMASize is amount free in RMA after mos initialisation. Fixed tbs restrict in PrintCharInGSFormat Errors propagated back in utilities from file closure. Exception register dump area only reset on break. .30 : V set return from Help_Is_Keyword code not ignored Nude flieswitch R12 to Help_Is_Keyword code correct Bugfix of OS_ConvertNetStation : no explosion for bad net New glue together .31 : XOS_Heap(DescribeHeap) subs 4 off right value. Setting Restrict Range to R2 flag in ReadUnsigned meant only base 10 OK Default R12 for event/escape handlers = -1 XOS_Heap(ExtendBlock) by 0 works, valid block checking better. First version multiple incarnations, podule support. *Modules gives numbers DFlynn/AThomas memory page/size evaluation used. MOS now pagesize independant. Can assemble a multiple keyboard version *net: bye etc fixed. SWI dispatch immeasurably improved Module LookupName added Bugfix of *Status <module keyword> Module prefixes on oscli added: can specify command only comes from (a particular incarnation of) a particular module Bugfix of 239: wrch errors not being dealt with New fileswitch; oscli also reads any secondary FS command table Interrupts enabled in SWI name <-> number conversions SWI PrettyPrint & SubstituteArgs .32 New fileswitch .33 New Tim stuff: SWIs Plot & WriteN. Slight changes to allow service calls to be issued before modules are initialised. Note may get modechange service before Service_Reset. .34 Configured lang was out by 1. SysHeap is shrunk to minimum, then configured extra size added (after main initialisation). Should give about 16K extra on 305/310 Service_UKConfig conforms to (latest PRM) spec. SubstituteArgs terminator corrected. .35 Nude TimBits: optimised plots, etc. ValidateAddress looks up screensize in VDU workspace ChangeDynamic funkyfied .36 ADev versions hurl abuse at 3 micron ARMs. OS_Claim frees any links with same values first. OS_AddToVector has old Claim semantics INKEY-256 returns &A1 RMReInit clears CMOS of unpluggies before initialisation. *ROMModules added as a replacement for *ROMS EnumerateROM_Modules reason code for OS_Module Bugfix of init strings on rmreinit. Order of files changed: in * prompt, utilitymod should always be CAO ChangeDynamic involving screen removes the cursors SpriteSize is a 6-bit field in Status/Configure Write0 shortened! .37 VecSwi call shortened. Stu did something to FileSwitch - R6 not wally for some entries. .38 Obscuro bug in heap block extension - made RM manager free workspace while checking block validity! If ExtendBlock frees the whole block, it updates the returned block pointer to -1 (i.e. really naff ptr). RMClear doesn't kill podule modules. New TMD stuff (some RS423 bugs fixed, faster this and that). .39 New big version (new DeskTop, Wimp,...) New block copy/move code SpriteV added Escape purging of sound now uses duration 1 (at request of DFlynn) 1.00 New RS423, FileSwitch, ADFS ... CMOS reset sets 1987 V not cleared for CallAVector Configure mode allows up to 23 PrettyPrint reads window width 1.01 Status/Configure deals better with Wrch errors. Modules " (Tutu number output fixed). Guess what; ReadUnsniged fixed AGAIN !!! ... FileSwitch Opt 1,n bug fixed + {on} in Count SWI WriteEnv invented for JGT use in debungler New TimBits: fix embarrasment with lines, palette 1.10 Apparently this is a more aesthetically appealing version number. Nuder TimBit: service_prereset lives! 1.11 OSGBPB 5,6,7 r6 bug fixed MOS 2 micronised. Default callback shrank! 1.12 Dump code shortened + gives better error response for IsDir etc Another (nastier) FileSwitch Opt 1,n bug fixed Module handler returns proper w'space contents for LookUpName Installing keyboard handler might work now says Tim More FileSwitch changes. And yet more. Dump fixed. 1.20 another release, another number 1.21 Oscli whinges about *net#arf:thing etc. *Modules counter doesn't wrap at 256 (and neither does *ROMModules) Module init failure: doesn't free incarnation node twice, and doesn't poo in the system heap. RdArgs SWI added, NoSuchSWI error made non-dynamic timbits/fileswitch 1.22 Added code to issue service call on RMA claim fail, as requested for ADFS. Not actually assembled in though! Module death can now be recursive Header fields checked for validity: word-aligned where appropriate, and within code length CAO during startup=32M: allow overwriting of MOSROM modules. Module SWI lookup much faster: enter into hash table on init Added SWI OS_ReadRAMFsLimits Looks for keypad * pressed on reset; drops into supervisor. T,Delete and Copy power-on added. List, Type use RdArgs (File/A,TabExpand/S), and expand tabs into 8 spaces. Buggette in Module handler: recursive death may lead to operating on a module with 0 incarnations. SWI despatcher goes into caller's IRQ state; individual SWIs yet to be inspected. Supervisor doesn't reference ESCCNT or ESCFLG any more. Vecnum=Swinum SWIs enable IRQs, except for Byte & Word which disable them. Module SWI enables IRQs explicitly except for heap ops. 1.23 SWI Mouse disables IRQs Bugfix of Oscli: copes with buffer overflow in alias expansion parm substitution. 1.24 Simon Smith and his Amazing Dancing IRQ Despatcher! 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) fixed. Workspace reordered so can call handlers by LDMIA R12, {R12, PC} *RMFaster added. Link passed to module SWIs has correct IRQ state. Interruptible (and also bug-fixed) heap manager incorporated. New Tim stuff 1.25 Default IRQ2V clears the appropriate mask bit, returns. SWI ModHand: ExtendBlock will return V set if appropriate. Register dumping changed; may save right registers for FIQ/IRQ. ValidateAddress fixed for screen memory. New Timstuff; ECF origin settable. 1.26 MOS help messages tidied up. Redirection errors better. Alias terminators same as module command terminators. Scratchspace sorting out: "bad number of parameters" error constructed in an Oscli buffer. Stack full error in Oscli has a sensible number; HelpBuffer allocated on the stack. Redirection handles made byte-sized. MOS buffers 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 1.27 Modules can refuse to initialise again. 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 Configure keyword MouseStep added; can also do nK on size fields. ChangeDyn file improved; if cam map corrupted, necessary registers pulled. 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. SWI number->name conversion uses hashtab. FE0-FFF initialisation removed. 1.28 TV configure syntax nitpicked. New FileSwitch 1.29 Monotonically increasing time move to &10C; now a public location. *key fixed; (re)uses EnvString as does *show 1.30 *show prettified FIQ downgrade highest priority interrupt. MOS FIQ claim/release handling altered; now should cope with background claims and/or releases occuring during a foreground claim. New extensions to callback; can now ask to be put on a vector. Hacked source.pmf.key so it calls the callback vector (but NOT the callback handler) in readc/inkey, if its bored. ChangeDynamicArea falls at the first fence if an IRQ is threaded. SWI despatch in RAM; 10% faster StoreHD. Bugfix of SWI node release on module death; bugfix of error percolation in new incarnations. 1.31 Supervisor printing of time taken ditched; bottom 32K, sysheap, cursor user-write-protected. Processor-speed dependant waits in NewReset now use Tim's magic delay routine. New TimStuff. 1.32 Bugfix of heap block extension. Dynamic SWI not known built in better buffer. Vector stasher always terminates the buffer (unless totally spastic buffer size). Improvement of heap block extension; will extend into preceding block if poss. Also fix of code spotting interrupted heap ops (from 1.30). PrettyPrint bugfix: hard space after tab. Writeability of CAO (for WIMP) via changeenv. Checks for keypad 0,1,2 on "power-on" resets, and sets monitor type accordingly. ReadBlockSize reason code added to heapman. New fileswitch. ROM speed slugged. Bugfix of SetMemMapEntries, soft reset copes with many pages mapped to the same address. Defined R0-R3 corruptible for IRQ processes. 1.33 Cam bashing revisited; PPL kept in soft copy too. ChangeDynamicArea also understands that the sysheap should be kept protected too. Dynamic "SWI not known" error fixed. Doesn't go address exception if no kbd. 1.34 Another instruction removed from SWI despatch. Times CPU and susses in spec ROM speed at reset Old style handler setters don't poo on r12 value. New fileswitch & timstuff: VDU output to sprites. RAMfs space protected. ReadDefaultHandler SWI added; pass number from hdr.env*, returns R1=address, R2=workspace, R3=buffer. 0 means not relevant. CAM soft copy size doubled; 8Mbyte may work. 1.35 New fileswitch. 1.36 MOS Default FIQ ownership fixed. New Timstuff: window width obscurities, border stuff. 1.37 CAM bashing revisited for 8M; next bit up now included. Ta Jamie! Bugfix of SubstituteArgs. New Timstuff. Service offered after ChangeDynamic has moved stuff. When copying (if screen is being extended), ChangeDynamic copies from a PhysRam address. The last page of application workspace is copied into, so this MUST NOT be doubly mapped in MEMC. Bugfix of RMtidy: checks CAO in RMA again. 1.38 SWI despatch understands that modules may have zero incarnations. Ballsup of ReadDefault corrected. 1.39 ChangeDynamic overhauled: changing screensize cooperates better with VDU drivers. Setting of variables uses a stack buffer; scratchspace use across sysheap extension a nono. R0 in Service_Memory corrected. Always issues post-service, even if error/nothing to move. Monitortype bits expanded in status/configure. r1 uncorrupted in OS_Exit for HMeekings. 1.40 Help matches against module titles as a postscan, giving keywords recognised in the module. Bottom 32K protection removed. 1.41 Soft break forces noprot on application space. ChangeDynamicArea rejects out of range area numbers (instead of crashing). SWI Module does better when block extension has to try and extend the RMA. Exported HLINE takes colour information. ROM unplug bits extended by using original Master frugal bits. 1.42 Setting of numeric variables fixed. 1.43 Default CMOS: NewADFSCMOS+2=1, DumpFormat=4. Much molested prettyprint. 1.44 DrawV added. 1.45 New fileswitch. PrettyPrint allows you to specify the MOS dictionary by setting r1=0. Saved a word in CallVector (2 micron needed); stopped error gen if vector number > NVectors (defined r0-r3,r12 trashable on IRQ vectors) 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 Much munged help text. BGet cache put into kernel so we save about 4us per call (saves branches, temp register pushes). New FileSwitch 1.47 ROMModules fixed. Added default handler for EconetV for Bruce Minor speedups/space savers from Stu. Fixed module name match: adfs. no longer matches adfs 1.48 Removed fast entry for Args/GBPB/File/FSControl as it was dangerous new fileswitch that matches the above, so default vechandlers changed *Quit migrated. BPut cache migrated into kernel; removed VecFSSwi code 1.49 Fixed syntax message expansion. 1.50 ChangeDynamic has 3 = Sprite area 1.60 Richard III is dead New serial stuff, apart from XON/XOFF InstallKeyHandler with R0=1 => read keyboard id 1.61 Default osbyte vec has r12=OsbyteVars Error returns for bad RMA heap claim/extend improved. RMA block extension needing RMA extension fixed. Doesn't corrupt end of physram on reset. System heap not protected just because there are idiots instead of programmers out there. RMEnsure. SystemSpeed CMOS removed. Noo really dangerous FoolSwatch 1.70 New title for release 1.71 Heap Extend wallyism removed. System heap protection really removed. Changed help for load/save/create etc. to keep DBell happy New FileSwitch CRC stored in pair of bytes at end of each ROM image HeapSort now does B SLVK rather than LDR pc, =BranchToSwiExit Exception handlers disable FIQ asap, shorter Interrupt handling fix: DiscChanged on Archie became winnie IRQ! Memory speed/MEMC1a flag (tbs) saved in RAM at &110. CMOS resetting modo-fied a la Tim Caspell - R/T-power-on don't reset harddiscs or country, or time; DEL/COPY zap harddiscs/country, but also leave the time alone. ****** N. B. ********* harddiscs not being reset may lead to long waits the first time a named disc is used: on current ADFSs, it will be an infinite wait. Added help on Break, Reset and PowerOn. Module handler fudged a bit for modules with 0 incarnations; tidier after somebody explodes in Initialisation/Finalisation. "Module postfix given" now reads "'%' in module title". Even newer FileSwitch SYS OS_ReadSysInfo: give it 0 in R0, it returns what screensize is set by CTRL-BREAK. *type/list with only one param assume it's a filename. Made memory speed a halfword; MEMC1A flag now bit 16. Byte at &107 is an inconsistency semaphore; if non-zero at reset, hard reset is forced. ALWAYS lower and raise with IRQ disabled. New monitor type 2, compatible with UNIX monitor (mode 23 only). Minisculely faster floodfill. SWI OS_Confirm. New multi-threadable FileSwitch (actually saved code and store !) SKS fixed SWI OS_Confirm - it never cleared Z or C ! It also used wrong exit criteria; &1B does not necessarily mean an escape condition exists it also corrupted r3. SKS fixed SWI OS_ReadSysInfo; it actually preserved r0! 1.72 New FileSwitch + loads of modules for yet another release SWI ClipBox Fixed FileSwitch howler 1.73 Help terminates on escape. Autoboots if unrecognised keyboard too. New FileSwitch CAM remapping don't fiddle with the interrupt state; caller must think this through themselves. Default CMOS sez ArthurLib Added periods to end of configuration help where they were missing Moved more supervisor stuff into Super1 ReadLineV default owner gets called with suitable r12 Attempt to fix *-reset by delay loop Calling of CallEvery events fixed; CallAfter/CallEvery SWIs don't corrupt r1. Made keyboard + printer buffers bigger, cut down Sound0,1,2,3,Speech Reduced *-reset delay loop; moved Inter+IntKeyModules higher in list Added ConvertFileSize+Fixed, CRC swi IRQs off when entering callback handler. 1.75 Made a500 version for release Fixed Copy use of WimpFreeMemory <-- NB. A500 versions are wrong and set SlotSize 0. Sorry chaps. 1.76 should have been set AS SOON AS THE CODE WAS CHANGED (Stuart). Extended RESET helptext. MouseStep all one word. Mutter mutter. Explicitly reeenable irq before waiting for metrognome change. Fixed power-on monitor type reconfigures 1.77 Status doesn't say 0K for screen. Moved OPT code to kernel so *opt1 etc. valid. Shortened PrintR0Decimal 1.78 Made a500/a1 versions for release Fixed conversion swi number to name to recognises new swis New FileSwitch After looking at the MOS irq device handlers, we'd better define r11 to be trashable on IRQ device handlers as well as r0-r3,r12! Also IRQ1 Default IRQ shorter - people on IRQ2V must preserve all except r12! Defining r3 -> IOC for all IRQ handlers would be a very good move Compressed SysComms, added MakeErrors in most of MOS + FileSwitch FileSwitch now has path: stuff Fixed default callback handler Make redirection work with INKEY as well as RDCH 1.79 Bugfix ReadArgs; non-abbreviated keywords with aliases now work. Made RMEnsure scan for digit after getting to 16th col in module help string anyway; means we can rmensure the current clib. *Error GSTranses the error string. Callbacks will be processed before calling the error handler. Put in new SLVK exits to save space Nude fileswitch Fixed SWI OS_GenerateEvent so can call from non-SVC mode. Should we define r9 trashable on module SWI calls ??? Move V test into RAM SWI area Default event vector call with appropriate r12 Faster BPut; we have deviant wp in top vector node Made error handler shorter New entry to PMFWrch, gets OsbyteVars up its' entry point Removed error on setting callback handler if callback outstanding; came in earlier in 1.79. Improved 'RM not found' and RMEnsure errors. SWI OS_ServiceCall instead of BL Issue_Service in reset. 1.80 Made image for release 1.81 Faster SWI OS_CRC by TMD Padded OS_Confirm pointer shape, put the active point on the right. Added an upcall handler. Font cache at 30M; ValidateAddress modified. Reason code 4 in ChangeDynamic = font cache SWI OS_ReadDynamicArea. Regard keyboards with ids 1-31 as the same. Got a dozen spare vectors 1.82 *Time copes with oswrod errors CallAVector internally preserves caller's interrupt state. 1.83 Fix to ChangeDynamic of font area. Fixed PIRQ/PFIQ despatch for case when LSB of B CONT ~= 0 Also made the above faster/shorter 1.84 Fixed ChangeDynamic for sprite area; used to indirect into deep space Also allow APL/BottomWS to shrink to 32K Fixed ReadArgs to allow y and z in keywords. Fixed code in heap block extension to satisfy comment. Changed default Sys$DateFormat to "%24:%mi:%se %dy-%m3-%ce%yr" Changed *Time to use OSWord 14,0 ExtendHeap was total garbage! Make MODE 23 Unix compatible 1.85 ReadDynamicArea returns start of screen address ChangeDynamic safe in conjunction with background heap ops New FileSwitch Moved Quit in command table to alphabetic place Put a B in TimeCPU to make result more accurate 1.86 OS_ReleaseDeviceVector disables IRQs. OS_AddCallBack disables IRQs earlier. OS_Confirm mouse shape has no colour 2 Flushing the printer buffer makes it dormant if not a stream CheckModeValid works properly with a user monitor type A500 keyboard changed Mouse buffer not flushed when new bounding box set, instead coords are clipped against the current bounding box when read out of the buffer. MODEs 21 (multisync) and 24 added Set DomainId to 0 at reset Made process_callback_chain disable IRQs round updating head^ so we didn't lose callback vector requests when processing the chain; saved 2 instructions in AddCallback Maximum configurable mode is the max mode the MOS implements ChangeDynamic can do RAMFS if no files in it. Heap Extension call rounds size to words correctly (always towards zero). Handlers zapped to defaults if app starts and exit handler belongs to supervisor. VGA modes (25..28) added ChangedBox fixed for VDU 5 8x8 and 8x16 text 1.87 Hi-Res-Mono palette changed so PP field returned is &10 or &11 or &12 Also changed to return full black or full white for the RGB fields, not red. Bugfix in *Help; Escape while printing a module summary gave a random error message. Swapped silly name for another silly name. 1.88 Heap manager size call fix. 1.89 TimeCpu code was wrong (misordered merge of 2 8-bits) and had wrong cutoff point for MEMC1a 1.90 New week number code - now conforms to BS4760 (supposedly) New FileSwitch with file buffering fixed 2.00 (15 Sep 88) Econet background FIQ problem fixed NetStatus and Hourglass error handling improved Kernel locks out background FIQ claims while the release service call is in progress. 2.00 (03 Oct 88) New FileSwitch - default run action for text files is now *Type New NetFiler - version in previous MOS was out-of-date 2.00 (04 Oct 88) New ADFS (Winnie podule problem fixed) New TaskManager (doesn't claim null events when window not open) Note: Change all occurrences of GoVec(2) May also note that default vector owners can trash r10, r11 IFF they claim the vector... 2.01 (02 Mar 89) New version of ChangeDynamicArea which reenables interrupts. Heap manager optimised in a few places. Fixed bug in extend heap call (stack imbalance when returning 'No RAM for extending heap' error) Heap manager extend block has improved IRQ latency. 2.01 (29 Mar 89) Fixed "*%" (LDREQB not LDREQ). 2.01 (31 Mar 89) Fixed OS_ReadArgs with a /E argument that evaluates to a string (always used to give 'Buffer full' - also fixed 2 other bugs lurking in the background, viz. did STRB of buffer addr assuming it was non-zero to indicate a string, and didn't allow for length and type bytes in amount free value. 2.01 (11 May 89) Fixed OS_Word &15 reason code 4 (Read unbuffered mouse position) - it used to generate undefined instruction trap due to stack mismatch. Fixed OS_SWINumberToString with negative numbers. 2.01 (16 May 89) Fixed ROMModules never saying 'Running'. Fixed bug which occasionally left soft cursors on the screen. 2.01 (23 May 89) Made OS_SpriteOp reentrant by pushing register dump area on stack. Fixed sideways scroll by one 'byte' in MODEs 3 and 6. 2.01 (26 May 89) Made OS_Byte &87 restore caller's IRQ state during call. 2.01 (30 May 89) Made OS_Word &0E,0 enable IRQs during call. Made OS_Word &15,0 enable IRQs during call. 2.01 (01 Jun 89) Fixed incarnation names being terminated by 1st character. Fixed *Unplug using address as extra terminator for module name. 2.01 (30 Jun 89) Fixed podule IRQ despatcher corrupting R0 (prevented it from correctly disabling the podule IRQ (or podule FIQ-as-IRQ) interrupt if no handler) Fixed rename incarnation bug. 2.01 (01 Sep 89) Added help on LEN in *Help Eval. 2.01 (04 Sep 89) Fixed bug in prefer incarnation which returned duff error pointers. 2.01 (06 Sep 89) Changed BadTime error message from null string to 'Invalid time interval' Fixed bug in CallAfter/Every which returned duff error pointers. 2.01 (11 Sep 89) Fixed bug in AddCallBack which freed the wrong heap node. 2.01 (12 Sep 89) Fixed bug in monadic plus/minus in EvaluateExpression (eg *Eval 50*-3) 2.01 (25 Sep 89) Fixed bug in GSRead with quoted termination. Fixed bug in keyboard driver (pressing Break (as escape) key when keyboard buffer full did nothing) 2.01 (27 Sep 89) Added SWI OS_ChangeRedirection 2.01 (06 Oct 89) Optimised ConvertTo5Byte routine 2.01 (10 Oct 89) Took new FileSwitch from Neil 2.01 (12 Oct 89) Added SWI OS_RemoveCallBack 2.01 (19 Oct 89) Added code to poke VIDC clock latch from bits 9 + 10 of control register. Modified FIFO request pointer algorithm to new one, also taking the VIDC clock speed into account. Changed INKEY-256 to &A2. 2.01 (23 Oct 89) Changed memory sizing routine to cope with 12 and 16MBytes (but CAM map still needs extending!). Added keypad-4 reset to select monitor type 4 (super-VGA). 2.01 (26 Oct 89) Put in variables for pointer to CAM map and number of CAM pages. Recoded ChangeDyn and NewReset to set these up and use them. CAM map is now either in low-down area for up to 8MBytes, or just above IRQ stack for 12 or 16MBytes. 2.01 (27 Oct 89) Added new VDU variable VIDCClockSpeed(172), the current VIDC clock speed in kHz. 2.01 (02 Nov 89) Added ModeExtend pixel rate specification interface. 2.01 (03 Nov 89) Changed fast CLS code so it can cope with screens which aren't a multiple of 256 bytes long (eg 800x600x4bpp). 2.01 (07 Nov 89) Put in code to handle sync polarity programming (including ModeExtend interface). 2.01 (08 Nov 89) Fixed over-zealous fast CLS code. Made a 4MBit EPROM image of this. 2.02 (09 Nov 89) Changed start-up message to "RISC OS+" (removed flag Fix0). Started test software integration. 2.02 (10 Nov 89) Incorporated new screen modes from Paul Swindell. 2.02 (20 Nov 89) Changed RS423 RXIRQ routine to process the 'serial input ignored' OS_Byte flag after checking for XON/XOFF characters. 2.03 (21 Nov 89) Changed !Draw and !Paint run file WimpSlots 2.04 (30 Nov 89) Got new headers (including new Hdr.CMOS). Removed initialisation of CatalogCMOS and ExamineCMOS in R-poweron. Optimised PushModeInfoAnyMonitor so it doesn't set up VIDC stuff - this speeds up SWI OS_ReadModeVariable enormously (this had slowed down due to VIDC tables now being different for different monitor types). 2.04 (01 Dec 89) Fixed OS_Word &07 (SOUND) needing a word-aligned control block. Added SWI OS_FindMemMapEntries. 2.04 (04 Dec 89) Changed SWI OS_FindMemMapEntries to new spec. 2.04 (07 Dec 89) Modified SpriteLoad/SpriteMerge to use OS_File instead of OS_Find/OS_Args/OS_GBPB - this means the Econet broadcast loader doesn't have to sit on SWI OS_SpriteOp. 2.05 (08 Feb 90) Updated *Help PowerOn to mention 4 key on numeric keypad. 2.05 (01 Mar 90) Put in code for handling squeezed modules. Bit 31 of init entry set => module is squeezed (bits 0.30 are the length of the module, at the end of which are the unsqueeze information words. Bit 31 of die entry set => module is not killed by RMClear (the unsqueezed module image normally has this bit set). 2.05 (05 Mar 90) Changed title back to "RISC OS" from "RISC OS+". 2.06 (27 Jun 90) (some intermediate versions missing) New screen mode parameters - letter box modes for VGA OS_Byte &7C and &7D changed to use SWI XOS_SetCallBack rather than poking to the callback flag themselves (other bits are used in this flag) OS_ChangeDynamicArea now checks explicitly for areas trying to grow beyond their maximum possible size (necessary for machines with more than 4MBytes) OS_ReadDynamicArea specification changed: if bit 7 of r0 set on entry, then on exit r2 holds the maximum size of the area (and r0, r1 are set up as per usual) 2.06 (16 Aug 90) Fixed bug when configured screensize is less than 20K. Started splitting off MEMC-specific stuff. 2.07 (08 Oct 90) Fixed bug in OS_ReadVarVal when you test for presence of a variable with R2<0 and R4=VarType_Expanded and the variable is a macro. 2.07 (30 Oct 90) Made errors from unknown OS_Module call and unknown dynamic area in OS_ChangeDynamicArea be "Unknown OS_Module call" and "Unknown dynamic area" respectively rather than "" and "" respectively! (They share the same error number). 2.08 (31 Oct 90) Fixed three bugs in the *Help code, to do with correctly handling errors from OS_WriteC (via OS_PrettyPrint). 2.08 (16 Nov 90) Changed module handler to call Podule manager to translate podule number into hardware address, rather than doing it itself. OS_ValidateAddress now issues Service_ValidateAddress when area appears to be invalid, so modules can add valid areas. 2.08 (19 Nov 90) Fixed two bugs in RMEnsure; (a) no help string (b) help string shorter than 16 chars 2.08 (27 Nov 90) Added 3 more bytes of unplug CMOS 2.08 (28 Nov 90) Divorced kernel from FileSwitch (BGET and BPUT now always go thru vector) 2.08 (08 Jan 91) Fixed bug in OS_Module 11 (copied extra word, which could corrupt RMA) 2.08 (15 Jan 91) Fixed bug in OS_Module 17 (corrupted R9 on exit) Changed OS_Module 17 to cope with extension ROM modules (including directly executables). 2.08 (23 Jan 91) Changed OS_Module 19 to cope with extension ROM modules Added OS_Module 20 (same as 19 but also returns version number) Fixed zero-effect bug in OS_Module dispatcher - if called with maxreason+1 it jumped off the end of the table - into the unknown reason code routine! SpriteOps 60 and 61 (switch output to sprite/mask) now issue Service_SwitchingOutputToSprite after switching Issue Service_PostInit after all modules have been initialised 2.08 (01 Feb 91) Added *RMInsert command Finished off extension ROM code (hopefully!) 2.08 (06 Feb 91) Changed keyboard code to only send LED changes when state has actually changed 2.08 (07 Feb 91) Made hardware address of extension ROMs zero 2.08 (13 Feb 91) Made OS_ReadSysInfo return screensize in step with real algorithm, ie a) ignore top bit of CMOS, b) if less than 20K, add in extra pages until >= 20K 2.08 (01 Mar 91) DoMicroDelay optimised by Ran Mokady Started to put in Configure Mode/MonitorType/Sync Auto. Conditionally remove parallel/serial drivers Stopped *Configure allowing garbage on end of command, eg *Configure Delay 30 this is rubbish Fixed *Status TV corrupting error pointer while printing "TV " 2.08 (04 Mar 91) Merged Configure Mode and Configure WimpMode Set 'DriversInKernel' flag for now Added OS_ReadSysInfo(1) - return configured mode/wimpmode value (with Auto expanded) Fixed OS_ReadSysInfo(>1) so it returns an error properly 2.08 (08 Mar 91) Put in Configure PrinterBufferSize and support code 2.08 (11 Mar 91) Used to change screen mode and print "RISC OS xK" before module initialisation. Now it changes screen mode before (in case modules print during init), and afterwards (in case a module has provided a new screen mode), and then prints the message. Also after a monitor type reconfigure, selects default mode, not mode 0. 2.09 (12 Mar 91) Fixed *Status MouseStep corrupting error pointer while printing "MouseStep ". Fixed *Status corrupting error pointer from module code. 2.09 (15 Mar 91) Put in IOEB and LC detection, and monitor lead type detection. 2.09 (19 Mar 91) Completed monitor lead type interface. Changed default Language to 4 (which is new Desktop module number). 2.09 (21 Mar 91) Improved monitor lead detection of Hsync. Made InitialiseROMModule return errors correctly. 2.09 (25 Mar 91) Fixed bug in OS_SWINumberFromString to do with checking for valid module SWI chunk. Fixed loads of other bugs in SWI OS_SWINumberFromString. 2.09 (26 Mar 91) Fixed similar bugs in SWI OS_SWINumberToString. 2.11 (02 Apr 91) RM - Changed time calls to use TerritoryManager calls to cope with local time. OS_ConvertDateAndTime now calls Territory_ConvertDateAndTime Changes made in: Source.PMF.osword and in Source.PMF.convdate. 2.11 (05 Apr 91) Finished putting in 82C710 detection and configuration. 2.11 (12 Apr 91) Put in support for new serial drivers. 2.11 (18 Apr 91) Moved Service_PostInit to after filing system selection. 2.12 (26 Apr 91) Put in SWI XPortable_Speed in RDCH/INKEY. Made *Modules and *ROMModules check Escape flag. 2.12 (29 Apr 91) TestSrc.* (Power-on Selftest) - 82C710 changes addressing for FDD inuse light - Validation of CMOS checksum - Disables long memory test (blue phase) if Misc1CMOS bit 7 is set NewReset - Checks CMOS checksum on Power-on{delete/copy/r/t}. Forces complete (including Econet station number) reset if checksum is corrupt. - Initializes checksum if CMOS reinitialised. Source.PMF.i2cutils - Addition of ValChecksum and MakeChecksum - 'Write' now maintains checksum byte. Checksum byte itself may be changed. Hdr.A1 - Addition of ChecksumCMOS switch. FALSE removes checksum maintenance. 2.12 (02 May 91) Changed default configured caps setting to NOCAPS. 2.12 (07 May 91) CMOS checksum seed changed to 1 (CMOSxseed in Hdr.CMOS) Selftest reports CMOS failure to user only if IIC fault occurs Space reserved for processor test removed from TestSrc.Begin 2.13 (13 May 91) Put in code to read unique ID 2.13 (20 May 91) Added new characters to system font 2.13 (23 May 91) Put in debugging for forced hard reset Updated *Help Power-on Fixed bug: if configured monitortype is unknown, uses naff VIDC parameters 2.14 (05 Jun 91) Put in hex digit pairs for characters 80..8B, corrected location of new characters. 2.16 (12 Jul 91) Changed default buffer flags for MOS buffers. 2.16 (18 Jul 91) Changed default 82C710 configuration. 2.17 (26 Jul 91) Adjusted Error_Code to place constructed error at GeneralMOSBuffer+4 rather than GeneralMOSBuffer to avoid clashes with default error handler's use of GeneralMOSBuffer. 2.17 (26 Jul 91) Adjusted default owner of error vector to copy the error text limited to 252 characters, truncating if necessary. Avoids duff error blocks destroying the system. 2.17 (26 Jul 91) Fix display of error by default error handler - it used to not put the error number out. 2.17 (30 Jul 91) Changed the value of INKEY(-256) to &A3. Modified DoInsertESC (OS_Byte 153) to only do special things on buffers 0 or 1. 2.17 (05 Aug 91) Changed default CMOS settings. 2.18 (12 Aug 91) OS_Byte(2,non-zero) code now checks if serial stream open before trying to open it again. 2.18 (13 Aug 91) Changed Messages file: removed extra space in "Extn", added space on end of "EXTROM", "PODROM". 2.18 (16 Aug 91) Added code to respond to service DeviceFSCloseRequest to close printer and serial streams. 2.18 (19 Aug 91) Changed *Error to use MessageTrans error buffers. Avoids numerous clashes in GeneralMOSBuffer. 2.18 (23 Aug 91) Made ErrorSemaphore a byte, not a word. Added PortableFlag so that we don't issue more than one abortive SWI Portable_Speed. Change RS423Vdu to not put bytes in the serial output buffer if couldn't open serial stream, and also to report any error. 2.18 (30 Aug 91) Change error "System variable not found" to "System variable 'blah' not found" 2.19 (05 Sep 91) Change monitor type for superVGA monitor ID to 1 for LiteOn monitor. 2.19 (06 Sep 91) Added an extra space on end of "Result: Result is %0, value :" message. 2.19 (10 Sep 91) Fixed kernel messages not translated after soft reset bug. 2.19 (11 Sep 91) Fixed Configure Mode Auto always using 27. 3.00 (25 Sep 91) Amber release. 3.01 (07 Oct 91) Fixed bug A-RO-9984 (requests to close kernel device streams didn't work). Removed redundant non-functional code from DoOsbyteVar which tried to close the serial output stream if WrchDests no longer included serial - this code is not needed because the kernel now responds to the DeviceFSCloseRequest service. Put in checks on OS_SpriteOp for SLoad/SMerge. 3.01 (15 Oct 91) Fixed bug RP-0039 (OS_ChangeDynamicArea goes wrong when amount to change = &80000000). Removed redundant copy of month names table from kernel. 3.01 (17 Oct 91) Added DebugHeaps option to initialise used and freed blocks in heaps. Changed OS_SpriteOp check: it used to check that offset to first sprite = 16, but this is too stringent - there are silly files out there that have extension words in the header - so now it just checks that the offset is within the file. 3.01 (21 Oct 91) Put in support for 82C711 (including OS_ReadSysInfo(3)). 3.03 (11 Nov 91) Enhance system variables: increase allowable length from 256 to 16M; don't assign if going to overflow (found to be bad in practice). Split Arthur2 into system variable stuff (GSTrans etc, OS_ConvertBinaryToDecimal, OS_ReadVarVal etc) and Utility, the start of the utility module. 3.03 (13 Nov 91) Change palette code to use PaletteV. 3.03 (18 Nov 91) Added support for module to tell OS the real VIDC clock speed. 3.03 (22 Nov 91) Added bit in CMOS that is set on a CMOS reset, and cleared on any other reset. 3.03 (25 Nov 91) Added new screen mode 22 for visually disabled - 768 x 288 x 4bpp, XEIG=0, YEIG=1, for monitor types 0 and 1. 3.04 (20 Dec 91) Fixed system SetVarVal to no GSTrans a string result from EvaluateExpression (ie fix *SetEval). As a consequence a new SetEval type allowed: VarType_LiteralString - string without GSTransing. 3.04 (15 Jan 92) Added OS_SetColour. Switching output to a sprite takes into account Fg/BgPattern setup by OS_SetColour. 3.05 (21 Jan 92) lrust Changed mouse buffer routines to BufferManager block transfer buffers to improve interrupt latency. 3.05 (24 Jan 92) JRoach Increase default mouse step from 2 to 3 as per ECR. 3.05 (28 Jan 92) LRust Changed OS_Claim/Release code to restore IRQ state prior to releasing vector node to system heap (conditional on IrqsInClaimRelease) to improve interrupt latency. 3.05 (30 Jan 92) LRust Changed ProcessTickEventChain to re-enable IRQ's while returning ticker nodes to the system heap (conditional on TickIrqReenter). CallEvery/After events are now processed last in centisecond clock interrupt. 3.06 (14 Feb 92) TDobson Fixed dotted line bug (dotted lines with a dot pattern length > 32 which start outside the window where the number of undisplayed pixels modulo the dot pattern length exceeds 32 go wrong). 3.06 (14 Feb 92) LRust OK lets�start with the easy ones! Fixed bug report RP-0387. Change *Error syntax in 'HelpStrs' to show error number as optional. 3.06 (18 Feb 92) LRust Fixed RP-1299 - stack imbalance for OS_Word &0F under error conditions 3.06 (19 Feb 92) TDobson Added Welsh characters and swapped direction of hex number characters in kernel system font. 3.06 (19 Feb 92) LRust Fix RP-0617. TranslateError now preserves callers IRQ state 3.06 (20 Feb 92) JRoach Install an index on system variables to speed their assignment and access. 3.06 (20 Feb 92) LRust Invoke Service_SyntaxError from OS_CLI if command syntax error 3.06 (26 Feb 92) LRust Fix RP-0609 and RP-0370. Callback handler only entered if SVC stack is empty. RTC day/months of 0 are forced to 1 3.07 (03 Mar 92) LRust Setup of printer buffer uses internal CMOS read routines, not OS_Byte which enable interrupts. This prevents system hanging during start-up if keys are pressed. Fixes RP-0990 etc. 3.07 (03 Mar 92) LRust Fixed OS_Word 11 to return palette data to r1+1, fixing RP-1429 3.07 (04 Mar 92) LRust OS_GSInit now only resets the evaluation stack (in system workspace) if the string contains a '<' character. This prevents contention between high level calls to OS_GSTrans and low level use by FileSwitch while opening message files. This fixes RP-1483 OS_SetVarValue fixed to use XOS_GSTrans (was non X form) OS_SetVarVal now returns correct error if string is bad 3.07 (05 Mar 92) LRust OS_Confirm now reads Yes/No characters from message file. The pointer shape to be displayed is now read from the Wimp sprite pool, RMA first followed by ROM, looking for 'ptr_confirm'. Fixes RP-1449 3.07 (06 Mar 92) LRust OS_Byte 129,0,255 now returns version number &A4 (was &A3) fixing RP-1638. 3.07 (06 Mar 92) TDobson Sprite load/merge now only checks offset to first sprite is < length of file, fixing bug RP-0589. 3.07 (09 Mar 92) TDobson Don't reset keyboard on OS_InstallKeyHandler if we've only just got the keyboard ID. 3.07 (17 Mar 92) JRoach Postpone error lookup in ChangeDynamicArea to after the reconstruction of the RAM and System Heaps. Prevents double-mapping of pages resulting in a dead system. G-RO-5512. 3.08 (23 Mar 92) LRust OS_EvaluateExpression now returns R1 = 0 (no returned string) if the expression evaulated by GSTrans overflowed the internal buffer. This ensures that *IF reports the buffer overflow error message instead of "not a string", fixing RP-1534 3.08 (01 Apr 92) TDobson Added code to switch into user mode and issue a dummy SWI just after Service_PostInit, so that any pending callbacks get serviced (fixes RP-1812). 3.08 (02 Apr 92) TDobson Added screen blanking code. 3.08 (03 Apr 92) LRust RMTidy copies errors during die to GeneralMOSBuffer to ensure not overwritten during re-initialisation. 3.08 (07 Apr 92) TDobson Fixed DebugHeaps code in ExtendHeap (used to overwrite data below base of heap). 3.09 (23-Apr-92) LRust * Fixed CTRL-Break/Reset causing CMOS corruption by doing 16 IIC start/stop sequences after reset to allow RTC to shift out any data requested. * IIC start sequence extended to allow BMU to detect a start. * IIC read/write now disable IRQs during clock and data hi times to prevent erroneous idle sequence detection by BMU. 3.09 (24-Apr-92) TDobson Removed range checking of buffer number in OS_Byte &15 (flush buffer). 3.10 (30-Apr-92) Disable interrupts around IIC receive to aid BMU start/stop detection by preventing idle periods (clock & data hi). -- RISC OS 3.10 released to public -- 3.20 (xx-Apr-93) JRoach Added read option to OS_SetColour 3.20 (15-Apr-93) TDobson Made OS_CRC return an error if increment is zero, rather than looping forever. < lots of Medusa work > 3.21 (21-Jul-93) TDobson First Medusa release 3.22 (09-Aug-93) AGlover vdugrafg/vdugrafdec: Fix bug in putsprite|mask when LH edge obscured vdugrafh: Fix bug in SwitchOutputToMask when calculating mask size (18-Aug-93) TDobson RMA, System heap, Sprite area, Font cache, RAM disc are now new-style areas. Sprite area, Font cache, RAM disc, Free pool maximum sizes are now dynamic (ie total ram size), and their base addresses are allocated at run-time. Doubly-mapped areas are now supported, but known bug exists if screen grows and needs pages in use by a doubly-mapped area. Spec change to OS_DynamicArea (Create dynamic area): if workspace pointer passed in is -1, the value used is the base address of the area (this is important if the base address is being allocated by RISC OS). (20-Aug-93) TDobson New addition to OS_ReadDynamicArea: if r0 on entry is -1 then information is returned on application space: r0 = base address (&8000) r1 = current size (excluding bottom 32K) r2 = maximum size (excluding bottom 32K) (23-Aug-93) AGlover vdugrafK: Ensure new format sprites aren't screensaved with palettes (03-Sep-93) TDobson Areas which require particular physical pages should now work. LateAborts assembly option added (untested). (03-Sep-93) SCormie Memory information SWI (OS_Memory) added (file MemInfo). Processor vector indirection added, including SWI OS_ClaimProcessorVector (file ExtraSWIs). -- Version 3.23 released -- (17-Sep-93) AGlover (vdugrafdec, vdugrafj vdugrafk) Sort out screenloading of sprites with new mode format mode words (untested at present). (20-Sep-93) TDobson Screen is now a new style area. All old-style area code now removed. Fixed bug MED-00488 (composite sync inverted). Fixed bug MED-00583 (modes with line length > 4Kbytes didn't work). (21-Sep-93) TDobson Fixed bug MED-00395 (OS_Byte 70 and 71 corrupting r5). Made kernel enable cache and write-buffer again. (22-Sep-93) TDobson Removed old screen modes 47-51 and put in new modes 47 (PCSoft) and 48,49 (Games). Fixed DataControlRegister programming so that eg mode 29 works with 2M VRAM. Late abort option enabled. -- Version 3.24 released (01-Oct-93) TDobson After pre-shrink handler is called, round down shrink value returned to a page multiple. (07-Oct-93) TDobson Fix MED-00626: RMReInit should only write to CMOS if module was unplugged to start with (solves FSLock problem). (08-Oct-93) TDobson Bottom level DPMS control put in - byte at location &147D controls DPMS state on blanking. Modified OS_Word(&15,4) (Read unbuffered mouse position) to call PollPointer, so that if no flyback IRQs happen (because hsyncs have been turned off), moving the mouse pointer still unblanks the screen. -- Version 3.25 released (19-Oct-93) TDobson Fix MED-00523: Remove pointer if would be completely off LHS of screen, otherwise can upset display if it straddles hsync pulse. Fix MED-00637: Creating dynamic area of zero maximum size now works. Screen mode 32 changed to NColour=63 and ModeFlags=0, like all other numbered 256 colour modes. -- Version 3.26 released (21-Oct-93) SCormie *Configure MouseType should have called OS_Pointer. (25-Oct-93) SCormie NewReset now waits up to 1 sec for keyboard present. (25-Oct-93) TDobson Fix bug MED-00811 - initialise SpriteSize to zero on reset. (25-Oct-93) JRoach Fix bug MED-00680 - *Save syntax message not tokenised properly. (26-Oct-93) JRoach Fix bug MED-00570 - delete-power-on gives 1997. Problem was delete-power-on set base to 1994 and so when the modulo of '3' came out of the clock the kernel thought it had to be 1997. (26-Oct-93) TDobson Fix bug MED-00301 - mode selector block now alternates between two overlapping ones, so that returned mode number changes each mode change (although if someone goes eg M%=MODE:MODE 12:...:MODE M% it will use the block specified by M%). (28-Oct-93) AGlover : vduswis, vdudriver, vdugrafj, vdugrafk Bugfixing session on sprites. Major points:- Screensave works, and gives old format sprites where possible. Screenload works, and no longer believes the mode number in the sprite - it will always build a mode selector to suit the sprite. EIG 0 and EIG 3 sprites supported - fixes DragASprite leaving trails on-screen in these modes. Mode 32 is now the monitor type 4 256 colour substitute mode. GetSprite(User) ensures no LH wastage on new format sprites. Screensave now copes with saving a full entry 256 colour palette. Whenever possible GetSprite will make an old format sprite - if you must have a new format sprite make it first with CreateSprite. While there are four of us intermittently touching bits of the kernel please say which files you've actually altered. Thanks. amg (03-Nov-93) AGlover : vdugrafj Change substitute mode numbers used for 90 x 90 dpi sprites to 25-28 instead of 18-21. (04-Nov-93) JRoach : GetAll, Kernel Enable IncludeTestSrc and make Reset vector for resetting work in conjunction with the test source. (08-Nov-93) TDobson : vdudecl, vdudriver Complete kernel support for DPMS. (10-Nov-93) TDobson : source.pmf.osbyte Fix bug MED-00963: INKEY(-256) now returns &A5. (11-Nov-93) TDobson : source.vdumodes Fix bug MED-?????: mode 32 now same timings as modes 29-31. (12-Nov-93) AGlover : source.vdugrafg Fix bug MED-01112 : 32K/16M sprites not working with SpriteOp ReadPixelColour (41) Fix bug MED-????? : Correct the routine which bounces palettes on new format sprites -- Version 3.27 build (18-Nov-93) AGlover : source.vdugrafh, source.vduswis, source.vdudriver, source.vdugrafj Fix bug MED-01130 : GetMaskSpWidth was going wrong when mask exactly fitten in a word Change handling of sprite type so that unknown types are handled as 32bpp - will make life easier for people adding new types that the OS doesn't handle. (23-Nov-93) AGlover : source.vdugrafg, source.vdugrafh, source.vdugrafi Fix bug MED-01281 : return an error when I should for spriteops given new format masks. (24-Nov-93) AGlover: source.vdugrafg Fix bug MED-????? : sprite name matching code was being broken by changed lowercase macro. Code now uses uk_lowercase which retains the original behaviour of the macro keeping the sprite stuff compatible with 3.10 (25-Nov-93) TDobson: source.vdumodes Fix mode definition for mode 47 (PCEm mode 360 x 480) to have sync polarity 3, so it gives correct height on VGA-only monitors. (26-Nov-93) SCormie: Source.PMF.key, Source.PMF.osinit Keyboard driver and key handler now trigger each other correctly during reset. Change default serial threshold from 9 to 17. (30-Nov-93) AGlover: source.vdu23, source.vduwrch Fix bug MED-01141: Split CompileTextFgBg into two separate routines and only call the one actually relevant. This prevents spurious colour changes when a text colour set by OS_SetColour is changed using VDU 17 or VDU 23,17 (what used to happen is that because the Fore/Back Col and Tint words didn't produce the colour in use (which had been modified directly by OS_SetColour) it was replacing it with whatever the ForeCol and Tint produced. Note: Doing a VDU 23,17 before the first VDU 17 will still go wrong - but I don't think it's worth fixing. (30-Nov-93) TDobson: source.vdumodes Change XEigFactor for games modes 48,49 to 2 (from 1) at the request of Ran Mokady. (01-Dec-93) TDobson: source.pmf.osword Fix bug MED-00355: OS_Word(&0F) no longer requires a terminating character after string (it now pushes the string on the stack and terminates it, before calling the TerritoryManager). (01-Dec-93) TDobson: NewReset Fix bug MED-01513: now prints eg "RISC OS 10MB" on startup. (02-Dec-93) TDobson: ModHand Fix bug MED-01229: now uses 8 bytes of unplug CMOS for podules, + 1 for network card (06-Dec-93) JRoach: NewReset Correct mouse step default to 2 for faster mice we'll be using. (07-Dec-93) AGlover: source.vdugrafj, source.vdugrafk Fix bug MED-?????: make sure screensave and getsprite(user) don't permit palettes on sprites which it can't force back to an old screen mode (09-Dec-93) TDobson: source.vdudriver, source.vduswis Use Roger's algorithm for default XEigFactor, YEigFactor for mode selectors. (13-Dec-93) TDobson: GetAll Set AddTubeBashers flag to FALSE. (15-Dec-93) TDobson: GetAll, NewReset Set DebugROMInit and DebugROMErrors flags to FALSE. Fix bug MED-01774: Change default FontSize to 64K. -- 3.28 build (21-Dec-93) AGlover: source.vdugrafj Change screenload so that should the mode selector it made fail, and the sprite has a mode number, it will select that mode as a fallback. Note: this won't work fully until OS_ScreenMode correctly returns VS for a mode it can't do. Bug MED-01895. (21-Dec-93) OLove: Messages Changed 'Memory cannot be moved' error message. -- New version 3.29 spuriously created by Owen Love 21-Dec-93 (21-Dec-93) AGlover: arthur3 Fix bug MED-01583 - *eval 9999999999999 was calling msgtrans twice to return error (06-Jan-94) TDobson: Kernel, Source.PMF.Key, SWINaming Added SWI OS_Reset - part of fix for MED-01397. (10-Jan-94) BCockburn: Middle Fixed Ethernet address generation to use the correct base (&0000A4100000) value rather than the value &0000A4000000 as found in the Dallas chip itself. (10-Jan-94) TDobson: source.vdudriver, source.vduswis Fixed bug MED-00563: invalid mode selector should return error from mode change, not select mode 0. If current monitor type is a file, now uses VGA substitute table for unavailable mode numbers - eg if you select mode 16, you now get mode 27, rather than mode 0. (10-Jan-94) TDobson: source.vdudriver Fixed bug MED-00483: "mode selector" not on a word boundary (eg sprite mode word) is now not offered round to Service_ModeExtension, so should now give error, rather than data aborts. (12-Jan-94) JRoach: GetAll Fixed bug MED-00585: configured language wasn't 10, and now is. (13-Jan-94) TDobson: GetAll, ModHand Introduced conditional flag RMTidyDoesNowt - if true (which it is on Medusa), then RMTidy returns having done nothing. This is because it would always fail anyway, because FSLock always refuses to die. Fixes MED-02125. (14-Jan-94) SCormie: source.PMF.osinit Changed combo chip configure sequence so that 710 configuration doesn't put 665 into a strange state if receiving at the same time (caused chip to generate an interrupt which could not be cleared. (14-Jan-94) JRoach: Arthur2 Changed GSInit/GSRead to use its stack memory as a wrapping buffer. This means GSInit doesn't need to flatten it before starting which means recursive calls the GSTrans work. (17-Jan-94) TDobson: ARM600, ChangeDyn Put in semaphore, so that OS_ChangeDynamicArea will fail if it is already threaded. (Data abort handler clears it, in case area handler goes bang!) (17-Jan-94) TDobson, AGlover: source.vdugrafj Fixed the 21-Dec-93 fix so it assembles and hopefully works! (18-Jan-94) TDobson: ARM600, Kernel, SWINaming Added soft copy for MMU control register, and SWI OS_MMUControl to update it. (19-Jan-94) AGlover: source.vdugrafg Fix bug MED-02210 - plot mask for 1bpp masks was going wrong when plotting clipped. (19-Jan-94) JRoach: NewReset Correct CMOS default for textured window background to match the CMOS spec. (The spec says set bit 7 of &8c to 0 to turn on textured window backgrounds). (19-Jan-94) JRoach: NewReset Correct CMOS default for desktop font to '8' which is still Homerton.Medium. Changed needed as Darwin has been removed and so the numbers change. (19-Jan-94) TDobson: ARM600 Fixed bug MED-02452: make BangCamUpdate check if oldaddr=newaddr, and don't remove page from old address if so. (19-Jan-94) TDobson: source.vdudriver Changed notional operational range for VCO to 55-110MHz (from 40-80MHz). (21-Jan-94) TDobson: ARM600 Changed ROM access speed to 156.25ns (from 187.5ns) (21-Jan-94) TDobson: source.vdudriver Changed ComputeModuli to only use R-values up to 16 (not 64), to improve minimum comparison frequency. Change FIFO load position algorithm to use table produced by Peter Watkinson. (24-Jan-94) TDobson: GetAll, source.vdudriver, source.vduswis Conditionally reversed change to XEig/YEig algorithm back to what it was in 3.27. (25-Jan-94) TDobson: source.vdudriver Fixed FIFO load position table to use correct units. -- New version 3.30 created by JRoach (28-Jan-94) AGlover: syscomms, source.vdugrafj Fix bug MED-01570 (syscomms), and various bugs reports involving 1bpp 2 x 2 eig modes (vdugrafj: sanitizesgetmode was mishandling double pixel modes) (28-Jan-94) TDobson: source.vdumodes Update kernel's hard-wired mode tables to use new VCO range. (28-Jan-94) TDobson: TickEvents Fixed bug MED-02498: OS_CallAfter/Every and OS_RemoveTickerEvent problems. (31-Jan-94) TDobson: TickEvents Fixed register corruption in above fix. (01-Feb-94) AGlover: hdr:sprite, vdugrafdec, vdugrafj, vdugrafk, vdugrafl Fix bug MED-02160. Make switching output to, and screenloading of, a 256 colour 8bpp sprite work. The hdr change is because the value of MaxSpritePaletteSize has been updated. (03-Feb-94) TDobson: ARM600, ChangeDyn, GetAll Fix bugs MED-00793, MED-01846. Dynamic areas which may require specific physical pages must now have a new bit set in the dynamic area flags. As a result, other areas can perform large grows in one chunk, rather than being split up, because it is not necessary to set up the page blocks etc. Therefore a) dragging RAMFS bar is much faster and b) there's no chance that intermediate reinits of RAMFS can steal pages that were to be used for subsequent chunks. -- New version 3.31 built by TMD (08-Feb-94) AGlover: source.vdugrafh Fix bug MED-01885. WritePixelColour wasn't working correctly for 8bpp full palette sprites. (09-Feb-94) TDobson: Messages Fix part of bug MED-02389 by changing system heap full message. (10-Feb-94) AGlover: source.vdugrafh More on MED-01885. AddTintToColour decides what to do by NColour, rather that SprRdNColour which is correct for Write/ReadPixel in sprite. Set NColour to SprRdNColour for the call and then restore it afterwards. The scope of the bug was more than first thought - it affected writing to any 8bpp sprite in anything other than an 8bpp screen mode. (11-Feb-94) TDobson: NewReset Limit maximum size of RAM disc to 16MB, because FileCore can't cope with some larger sizes. -- New version 3.32 built by TMD (14-Feb-94) TDobson: NewIRQs Fix bug MED-02859 - Unknown IRQ code now copes with DMA IRQs. (17-Feb-94) AGlover: source.vdugrafk Fix bug MED-02895 - *screenload was discarding the error pointer on an error return from WritePaletteFromSprite (18-Feb-94) AGlover: source.vdugrafj Secondary fix for MED-02895. WritePaletteFromSprite was actually destroying the error pointer. Remove the change to vdugrafk. ====> Medusa OS build <========================================================== (28-Apr-94) AGlover: source.vdugrafj Fix screenloading of 8bpp non-full palette sprites (deferred fix from Medusa freeze). MED-03186 (28-Apr-94) AGlover: source.vdugrafh Fix spriteop readpixel for 256 colour full palette modes (deferred fix from Medusa freeze). MED-03090 (28-Apr-94) AGlover: source.vduswis Fix readmodevariable returning 63 instead of 255 for a sprite mode word. MED-03265 (25-May-94) AGlover: source.vdugrafg,j,k Changes to allow palettes on new format sprites of 8bpp and below. Also William Turner's vdugrafh,i. **** this has been superceded by the +log file - no further entries here. (amg: 21st September 1994)