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

  1. History of the Tornado II Support Module:
  2. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  3.  
  4. 30-12-1996:
  5. -=-=-=-=-=-
  6. Due to my mother dying on the 22nd after having been in hospital since the
  7. 20th, essentially a whole week has been lost in development. This means
  8. threads will not be implemented by the end of these Christmas holidays.
  9. Apologies to those I promised they would be.
  10.  
  11. During the week fixed many potential reentracy problems and finally twigged
  12. today yet another reentracy problem and fixed it through some god-awful code
  13. to get around the SA bug too. It does mean interrupts get disabled for a good
  14. bit of time though :(
  15.  
  16. Added Tornado_SetPollMask
  17.  
  18. 18-12-1996:
  19. -=-=-=-=-=-
  20. Now is version 0.12alpha.
  21.  
  22. Fixed a bug in which Tornado_Initialise was returning the wrong tornado version
  23.  
  24. Implemented 1ms interrupt facilites.
  25.  
  26. 1ms interrupt facilities don't seem to work! But after six hours of trial and
  27. error, it would seem you need R14 in the stack frame. Why? Dammed if I know.
  28.  
  29. 17-12-1996 (v0.11alpha release):
  30. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  31. And then it hits me!!!! It may well be 3am, but I know what it is!!!
  32.  
  33. Tornado_RedrawWindow turns off preemption. But it doesn't really - it only
  34. turned off the *interrupt* routine - so if there the polling code had
  35. /already/ been requested by the interrupt routine and was pending - it would
  36. execute during the redraw loop, right where it mustn't.
  37.  
  38. Thus the error was randomish. The worst kind.
  39.  
  40. I hate these kinds of bugs.
  41.  
  42. Now it tests the semaphore in the actual polling code instead. I hate easy
  43. fixes to horrible bugs.
  44.  
  45. Changed the polling code so that if it's locked it sets a flag to tell
  46. Tornado_GetRectangle to restart preemption once it's finished. It's more
  47. efficient than interrupting every 1ms to see if the redraw's done yet.
  48.  
  49. Fixed a small potential bug in that should an app die during a redraw it will
  50. take the support module with it as preemption is still locked out and this is
  51. a global semaphore. Now it checks on app death to see if the semaphore is
  52. set, and if it is it unsets it. Should be enough as the context consistancy
  53. is maintained AFAICS.
  54.  
  55. Fixed another bug introduced by RO3 - apparently it doesn't like the
  56. environment handlers getting changed unless it changed them. This BTW breaks
  57. the RO2 API *again* in which you always set up your handler before using it -
  58. never relying on it being set to anything from previous settings as anything
  59. else might have changed it.
  60.  
  61. Obviously some twat at Acorn didn't think of this possibility ... anyway, the
  62. module now restores the callback handler state after it's finished with that
  63. handler.
  64.  
  65. Some odd bug still remains which causes preemption to halt and everything to
  66. hang. I'm dammed if I know what it is though, but it's rare enough to make
  67. myself feel okay in releasing it.
  68.  
  69. Changed how the preemptor requests restarting - now a general purpose status
  70. variable is used and this can be used to determine the state of the system at
  71. any time.
  72.  
  73. Released version 0.11alpha to hensa.
  74.  
  75. 16-12-1996:
  76. -=-=-=-=-=-
  77. Spent the day trying to figure out this damn GetRectangle bug ...
  78.  
  79. 15-12-1996:
  80. -=-=-=-=-=-
  81. Added error handling to the demo app.
  82.  
  83. Fixed a bug in the memory routines that was causing RMA usage mode to die.
  84.  
  85. Seems this GetRectangle bug is random. I have a window running here for the
  86. past ten minutes okay yet the one before it died after only a few seconds.
  87. Odd.
  88.  
  89. 14-12-1996:
  90. -=-=-=-=-=-
  91. Thought it was a bug on SprOp 52 but actually it was my preemptor code not
  92. exiting from the interrupt properly when a lock had been placed on
  93. preemption. Twat I am ...
  94.  
  95. Now everything works! At 6.52pm today I am proud to announce the first fully
  96. functional preempted RO multitasking application ever to run on the Acorn
  97. series!
  98.  
  99. Ooar - doesn't seem to work quite so well! Somehow for odd reasons crashes
  100. and dies with "Wimp_GetRectangle not called correctly". Odd.
  101.  
  102. Also the whole thing doesn't work on RO2. :( I think it's because RMA usage
  103. doesn't work too great!
  104.  
  105. 13-12-1996:
  106. -=-=-=-=-=-
  107. Yet another bug in RO has had me for a day now ...
  108.  
  109. This bug is in sprite area initialisation - when you initialise it with bits
  110. 8 and 9 clear it utterly bollocks the sprite area (not that any of the sprite
  111. routines notice of course but just blindly lock up the machine in a random
  112. nature). This one *definately* worked on RO2 ...
  113.  
  114. 12-12-1996:
  115. -=-=-=-=-=-
  116. This bug has had me for four days now ...
  117.  
  118. Found it! Subroutines like .getblk and .execathread as called from .callwimppoll
  119. use R13 which is a temporary variable in .callwimppoll!!!!
  120.  
  121. It was using the fp register dump as a stack for a while and other areas too.
  122. Nasty!
  123.  
  124. Added vdu redirection dumping. Redirection into mask calls not trapped yet
  125. though.
  126.  
  127. Bug found in RO! RO2 uses &2e,60,0,0,1 to return to screen - RO3.5 hangs on
  128. this. Needs &2e,512+60,0,0,1 apparently (twats at Acorn ...). This BTW yet
  129. again breaks API's *written* *in* *stone* in the RO2 PRM's but the twats just
  130. don't care ... :(
  131.  
  132. Added error handling throughout the module. It now traps all possible problems
  133. and sends them somewhere - when it can (it can't always). It also doesn't
  134. necessarily send them to a nice place - the current application's error
  135. handler is one such example ... ;)
  136.  
  137. Added facilities for a client application to handle errors occurring in the
  138. tornado preemptor routine and fix the problem where necessary
  139.  
  140. 08-12-1996:
  141. -=-=-=-=-=-
  142. Now is version 0.11alpha.
  143.  
  144. Added a trap to shut down the task as a preempted one should it die
  145. unnaturally.
  146.  
  147. Added check in module finalise for whether tasks are still using it.
  148.  
  149. Added check to Tornado_Initialise to stop it running more than 32 processes
  150.  
  151. Added memory freeing on call Tornado_Closedown - memory leakage now doesn't
  152. happen anymore
  153.  
  154. Added stacking and restoral of FP registers over Wimp_Poll - checks first to
  155. see whether the FPEmulator can handle multiloads and stores and uses them if
  156. it can.
  157.  
  158. 07-12-1996 (v0.10alpha release):
  159. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  160. Found the bug sticking me for a long time (since last night): R12 was getting
  161. corrupted by the APCS veneer for the 17,18 and 19 handler and then everything
  162. was accessing the wrong workspace!
  163.  
  164. Uploaded the first version of the support module (0.10alpha) to hensa and
  165. mailed it to a few friends.
  166.  
  167. 06-12-1996:
  168. -=-=-=-=-=-
  169. Ran through the code - found myself using SVC reliant code where I was in USR
  170. mode. Fixed it and it works (10.25pm)! (this also has the advantage as the
  171. SVC reliant code causes that bug in the SA so this is no longer a problem).
  172.  
  173. Added Wimp_Poll returns storage and Tornado_Poll to retrieve it all.
  174. Implemented support for 17,18 & 19 codes handler. Won't work though ... :(
  175.  
  176. 30-11-1996:
  177. -=-=-=-=-=-
  178. Cobbled together some old tornado I code and rewrote it for this new
  179. non-tornado context. Wrotes skeleton API's.
  180.  
  181. Awful skeleton module created but then refused to work. Realised 68000
  182. programming was the cause and fixed the problems. Never tested it though.
  183.  
  184. Then went back to Trinity for the last week of term ...
  185.