home *** CD-ROM | disk | FTP | other *** search
- History of the Tornado II Support Module:
- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
- 30-12-1996:
- -=-=-=-=-=-
- Due to my mother dying on the 22nd after having been in hospital since the
- 20th, essentially a whole week has been lost in development. This means
- threads will not be implemented by the end of these Christmas holidays.
- Apologies to those I promised they would be.
-
- During the week fixed many potential reentracy problems and finally twigged
- today yet another reentracy problem and fixed it through some god-awful code
- to get around the SA bug too. It does mean interrupts get disabled for a good
- bit of time though :(
-
- Added Tornado_SetPollMask
-
- 18-12-1996:
- -=-=-=-=-=-
- Now is version 0.12alpha.
-
- Fixed a bug in which Tornado_Initialise was returning the wrong tornado version
-
- Implemented 1ms interrupt facilites.
-
- 1ms interrupt facilities don't seem to work! But after six hours of trial and
- error, it would seem you need R14 in the stack frame. Why? Dammed if I know.
-
- 17-12-1996 (v0.11alpha release):
- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- And then it hits me!!!! It may well be 3am, but I know what it is!!!
-
- Tornado_RedrawWindow turns off preemption. But it doesn't really - it only
- turned off the *interrupt* routine - so if there the polling code had
- /already/ been requested by the interrupt routine and was pending - it would
- execute during the redraw loop, right where it mustn't.
-
- Thus the error was randomish. The worst kind.
-
- I hate these kinds of bugs.
-
- Now it tests the semaphore in the actual polling code instead. I hate easy
- fixes to horrible bugs.
-
- Changed the polling code so that if it's locked it sets a flag to tell
- Tornado_GetRectangle to restart preemption once it's finished. It's more
- efficient than interrupting every 1ms to see if the redraw's done yet.
-
- Fixed a small potential bug in that should an app die during a redraw it will
- take the support module with it as preemption is still locked out and this is
- a global semaphore. Now it checks on app death to see if the semaphore is
- set, and if it is it unsets it. Should be enough as the context consistancy
- is maintained AFAICS.
-
- Fixed another bug introduced by RO3 - apparently it doesn't like the
- environment handlers getting changed unless it changed them. This BTW breaks
- the RO2 API *again* in which you always set up your handler before using it -
- never relying on it being set to anything from previous settings as anything
- else might have changed it.
-
- Obviously some twat at Acorn didn't think of this possibility ... anyway, the
- module now restores the callback handler state after it's finished with that
- handler.
-
- Some odd bug still remains which causes preemption to halt and everything to
- hang. I'm dammed if I know what it is though, but it's rare enough to make
- myself feel okay in releasing it.
-
- Changed how the preemptor requests restarting - now a general purpose status
- variable is used and this can be used to determine the state of the system at
- any time.
-
- Released version 0.11alpha to hensa.
-
- 16-12-1996:
- -=-=-=-=-=-
- Spent the day trying to figure out this damn GetRectangle bug ...
-
- 15-12-1996:
- -=-=-=-=-=-
- Added error handling to the demo app.
-
- Fixed a bug in the memory routines that was causing RMA usage mode to die.
-
- Seems this GetRectangle bug is random. I have a window running here for the
- past ten minutes okay yet the one before it died after only a few seconds.
- Odd.
-
- 14-12-1996:
- -=-=-=-=-=-
- Thought it was a bug on SprOp 52 but actually it was my preemptor code not
- exiting from the interrupt properly when a lock had been placed on
- preemption. Twat I am ...
-
- Now everything works! At 6.52pm today I am proud to announce the first fully
- functional preempted RO multitasking application ever to run on the Acorn
- series!
-
- Ooar - doesn't seem to work quite so well! Somehow for odd reasons crashes
- and dies with "Wimp_GetRectangle not called correctly". Odd.
-
- Also the whole thing doesn't work on RO2. :( I think it's because RMA usage
- doesn't work too great!
-
- 13-12-1996:
- -=-=-=-=-=-
- Yet another bug in RO has had me for a day now ...
-
- This bug is in sprite area initialisation - when you initialise it with bits
- 8 and 9 clear it utterly bollocks the sprite area (not that any of the sprite
- routines notice of course but just blindly lock up the machine in a random
- nature). This one *definately* worked on RO2 ...
-
- 12-12-1996:
- -=-=-=-=-=-
- This bug has had me for four days now ...
-
- Found it! Subroutines like .getblk and .execathread as called from .callwimppoll
- use R13 which is a temporary variable in .callwimppoll!!!!
-
- It was using the fp register dump as a stack for a while and other areas too.
- Nasty!
-
- Added vdu redirection dumping. Redirection into mask calls not trapped yet
- though.
-
- Bug found in RO! RO2 uses &2e,60,0,0,1 to return to screen - RO3.5 hangs on
- this. Needs &2e,512+60,0,0,1 apparently (twats at Acorn ...). This BTW yet
- again breaks API's *written* *in* *stone* in the RO2 PRM's but the twats just
- don't care ... :(
-
- Added error handling throughout the module. It now traps all possible problems
- and sends them somewhere - when it can (it can't always). It also doesn't
- necessarily send them to a nice place - the current application's error
- handler is one such example ... ;)
-
- Added facilities for a client application to handle errors occurring in the
- tornado preemptor routine and fix the problem where necessary
-
- 08-12-1996:
- -=-=-=-=-=-
- Now is version 0.11alpha.
-
- Added a trap to shut down the task as a preempted one should it die
- unnaturally.
-
- Added check in module finalise for whether tasks are still using it.
-
- Added check to Tornado_Initialise to stop it running more than 32 processes
-
- Added memory freeing on call Tornado_Closedown - memory leakage now doesn't
- happen anymore
-
- Added stacking and restoral of FP registers over Wimp_Poll - checks first to
- see whether the FPEmulator can handle multiloads and stores and uses them if
- it can.
-
- 07-12-1996 (v0.10alpha release):
- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Found the bug sticking me for a long time (since last night): R12 was getting
- corrupted by the APCS veneer for the 17,18 and 19 handler and then everything
- was accessing the wrong workspace!
-
- Uploaded the first version of the support module (0.10alpha) to hensa and
- mailed it to a few friends.
-
- 06-12-1996:
- -=-=-=-=-=-
- Ran through the code - found myself using SVC reliant code where I was in USR
- mode. Fixed it and it works (10.25pm)! (this also has the advantage as the
- SVC reliant code causes that bug in the SA so this is no longer a problem).
-
- Added Wimp_Poll returns storage and Tornado_Poll to retrieve it all.
- Implemented support for 17,18 & 19 codes handler. Won't work though ... :(
-
- 30-11-1996:
- -=-=-=-=-=-
- Cobbled together some old tornado I code and rewrote it for this new
- non-tornado context. Wrotes skeleton API's.
-
- Awful skeleton module created but then refused to work. Realised 68000
- programming was the cause and fixed the problems. Never tested it though.
-
- Then went back to Trinity for the last week of term ...
-