home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
misc
/
tornado
/
t2demo012a
/
History
< prev
next >
Wrap
Text File
|
1996-12-30
|
7KB
|
185 lines
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 ...