home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / SYSTEM / XAAES936 / DOCS / HISTORY7.TXT < prev    next >
Text File  |  2000-08-25  |  70KB  |  1,584 lines

  1. Development Log for XaAES
  2.  
  3. All of this file now respects 80 character line limits.
  4. All entries except those at the very bottom are Craig's.
  5.  
  6. It's a big job...but someone had to do it :)
  7.  
  8. [27/9/95]
  9. o Began coding XaAES kernal. Where to begin?
  10.  
  11. [28/9/95]
  12. o Coded alert parser (seemed an easy place to start)
  13. o 3d sculpted dialogs.
  14. o VDI calls from the auto folder/MiNT.CNF now work.
  15. o Auto-folder detection.
  16.  
  17. OK, perhaps I should get the kernal stuff working before messing about in
  18. the actual GUI bits...
  19.  
  20. [2/10/95]
  21. o TRAP intercept now works and gets correct parameters from standard AES
  22.   calls.
  23.  
  24. [3/10/95]
  25. o TRAP intercept now returns values correctly.
  26. o Can now do form_alert calls to XaAES in place of GEM.
  27. o For testing, XaAES currently uses trap 3 instead of trap 2 to allow it to
  28.   be debugged under MultiTOS (until I've got it working far enough to replace
  29.   MultiTOS as my default enviroment).
  30.  
  31. [5/10/95]
  32. o AES kernal now creates the XaAES.cmd command pipe & blocks waiting for
  33.   instructions to arrive.
  34.  
  35. [7/10/95]
  36. o appl_init() call now works from other process' and correctly creates
  37.   a reply pipe for that application, then returns the application's AES id
  38.   (which is (under XaAES) the same as the MiNT process id).
  39.  
  40. [8/10/95]
  41. o Coded the kernal's opcode->function jump table structure.
  42. o Client's now block waiting for reply from the AES server, and actually
  43.   get the right replies. As soon as client blocks on the reply pipe,
  44.   MiNT task switches, allowing the AES server to get in - and other
  45.   process' as well :) .
  46. o appl_exit() stub added.
  47. o form_alert() now works via the XaAES pipes interface.
  48. o Tested with XaAES as sole GUI server without MultiTOS - seems to work ok
  49.   with two client applications at the same time.
  50.  
  51. [11/10/95]
  52. o Mouse Server coded to handle mouse button clicks without busy waiting
  53.   in the AES kernal - this also prevents clicks being missed (they may
  54.   get delayed slightly, but never lost).
  55.   XaAES spawns MOUSESRV at boot time, and MOUSESRV communicates with XaAES
  56.   kernal via the standard XaAES.cmd pipe using a special op-code and
  57.   AESCMD_NOREPLY mode (direct pipe access, not going via the trap interface).
  58.  
  59. Now that the bare-bones kernal is up & running and the trap-to-pipe interface
  60. is working, I can get on and do the interesting bits :)
  61.  
  62. [12/10/95]
  63. o Added evnt_button() code (allows multiple apps to wait on mouse events).
  64.  
  65. [13/10/95]
  66. o Began coding windowing system. Not sure how to approach the look & feel
  67.   here. I've got some funky sculpted 3D routines, so I'll use them until they
  68.   get slammed for being to slow.
  69.  
  70. [18/10/95]
  71. o Internal wind_find() now works
  72. o Moved over to a special mouse packet format for communication between
  73.   MOUSESRV & XaAES.
  74. o MOUSESRV now reports coords, an double click timing is much better.
  75. o evnt_button() now correctly returns mouse coords to client app.
  76. o wind_create() and window_open() op-codes now supported.
  77.  
  78. [20/10/95]
  79. o evnt_button() now only returns events for clicks on the client applications
  80.   windows
  81.  
  82. [23/10/95]
  83. o wind_close() now supported.
  84. o graf_mouse() now fully supported.
  85. o Mouse cursor enabled when XaAES run from the console without a standard
  86.   Atari AES loaded.
  87. o Client reply pipe is now opened as a local file handle for the client and
  88.   the server (via a new XA_NEW_CLIENT op-code), instead of as a pair of
  89.   global file handles. This allows loads more clients to run at once, as
  90.   the limited number of global file handles isn't used up. I've managed
  91.   30 concurrent applications with no slow-down at all!!!! This is looking
  92.   faster than Geneva, and almost quick enough to catch MagiC (and pisses on
  93.   AES4.1).
  94. o Added an new op-code XA_CLIENT_EXIT to tell the server to close its end
  95.   of a client reply pipe (allows re-use of the file handle for a new process).
  96.  
  97. [24/10/95]
  98. o Click on widgets no longer generates a button event to the application, it
  99.   now calls the appropriate callback to handle the widget.
  100.  
  101. [25/10/95]
  102. o graf_handle() now supported
  103. o graf_mkstate() now supported
  104. o Window dragging is now supported (with a nice custom mover mouse shape).
  105.  
  106. [30/10/95]
  107. o wind_set() now supported
  108.  
  109. [1/11/95]
  110. o Moved over to a faster (and simpler) system for handling clients waiting for
  111.   different types of event. I used to use a queue system, now I just set a
  112.   flag in the client descriptor.
  113. o Coded AES messaging system.
  114. o evnt_mesag() now supported
  115.  
  116. [3/11/95]
  117. o Close widget now sends WM_CLOSED message to the client, and changes state
  118.   when clicked on.
  119. o Mover now sends WM_MOVED message to the client.
  120. o wind_set(..,WF_CURRXYWH,...) in response to a WM_MOVED message now works.
  121.  
  122. [4/11/95]
  123. o Rectangle list generation implemented.
  124. o Background window moves work correctly.
  125. o Click on title bar now tops a window correctly.
  126.  
  127. [5/11/95]
  128. o Fixed most of the redraw bugs with windows.
  129. o The client closedown routine now delete's all an apps open windows, and
  130.   deletes pending AES messages.
  131. o Multiple application tests work fine - got 10 programs with two windows
  132.   each running - no slowdown at all, and all seems to work fine.
  133.  
  134. [6/11/95]
  135. o Finally tried running on trap 2 instead of trap 3, and found I'd forgotten
  136.   that the VDI and the AES share a trap - oops. Added code in the low-level
  137.   handler to field VDI requests to the old trap2 vector. It's a little (well
  138.   a lot) of a kludge
  139.   - there's even a spot of self modifying code in there...but it does work.
  140. o Linked the test app with ordinary GEM libraries and test ran. The same
  141.   executable definitely runs under AES4.1, TOS4.02 and XaAES without any
  142.   problems - so it's looking good :).
  143. o Stopped using trap 3 for testing now that enough of the system is working
  144.   to interact with.
  145. o wind_get() now supported.
  146. o wind_set(..,WF_BOTTOM,...) added.
  147. o wind_find() now supported.
  148. o Windows can now only be moved if their MOVER attribute is set (even if
  149.   they have a title bar).
  150. o Coded screen and mouse locking.
  151. o wind_update() now supported.
  152. o Using wind_get(...,WF_FIRSTXYWH,...) to walk the rectangle list now works.
  153. o Added compile time switch FORCE_WINDOWS. If set to 1 then user operations on
  154.   windows are done immediately, and the client program is sent a message just
  155.   to say that it has happened (allows windows from apps that are deep in
  156.   thought to be shifted around while we wait for the app to get back to us).
  157. o Added the resizer widget.
  158.  
  159. [7/11/95]
  160. o Each client app can now have its own totally seperate mouse cursor shape.
  161.   The one that is actually used is determined by the owner of the top window
  162.   - or if there are no windows open, then by the usual GEM free-for-all
  163.   method. As soon as a window is opened, the owner's cursor takes over.
  164. o wind_set(..,WF_NAME,...) now works (ish).
  165.  
  166. [8/11/95]
  167. o WM_REDRAW messages are now sent to clients when a redraw is needed.
  168.  
  169. =================================================================
  170. **                    MINIX PARTITION CRASHED                  **
  171. ** Gotta redo the AES messaging - I should backup more often.  **
  172. =================================================================
  173.  
  174. [12/11/95]
  175. o Got rid of the busy wait loop in the mouse server by using /dev/mouse to
  176.   wait for the initial mouse click, then using VDI vectors to do the double
  177.   click timing.
  178.  
  179. [13/11/95]
  180. o Moved over to using /dev/mouse fully for the mouse handling.
  181. o Added a bit of a hack (using a stable, compatible method so don't worry) to
  182.   insert coordinates and button states from /dev/mouse into the VDI's internal
  183.   mouse handling routines.
  184.  
  185. [14/11/95]
  186. o Ditched /dev/mouse again 'coz it's to much hassle to use at the moment.
  187. o graf_dragbox() now supported.
  188. o graf_rubberbox() now supported.
  189.  
  190. [16/11/95]
  191. o Sizer widget now sends a WM_SIZED message to the client.
  192. o Fixed evnt_button() click to return correct keyboard shift status.
  193. o Click on top window's title bar sends window to the back using a WM_BOTTOMED
  194.   message.
  195.  
  196. [17/11/95]
  197. o Now using animated colour bitmaps for the standard GEM window widgets.
  198.   Very nice looking :) It's also a fair bit faster than drawing them by hand
  199.   like I was before, but is a great deal nicer than just having a single
  200.   character like in other AES's.
  201. o User work area support added.
  202. o wind_get(.., WF_WORKXYWH, ...) now works.
  203. o Title bar highlighting for top window.
  204. o XaAES logo added to title bar, selected when moving windows.
  205. o Added FULLER widget.
  206.  
  207. [18/11/95]
  208. o wind_get(.., WF_PREVXYWH, ...) now works
  209. o wind_get(.., WF_FULLXYWH, ...) now works
  210. o Click on FULLER widget now sends WF_FULLED message to client.
  211.  
  212. [22/11/95]
  213. o Added horizontal and vertical scroll arrow widgets.
  214.  
  215. [23/11/95]
  216. o Scroll widgets now send WM_ARROWED messages.
  217. o Added an active/pending widget attribute to the client descriptor to help
  218.   support repeated sends from a widget that is held down (ie. the scroll
  219.   arrows).
  220. o Fixed widget redraws when selecting in the background.
  221.  
  222. [26/11/95]
  223. o Added slider bars to windows.
  224. o Much to my suprise, I found that to a great extent XaAES works in all
  225.   screen modes - I've tested these modes:
  226.    ST-Low
  227.    ST-high
  228.    832*620 mono
  229.    800*600 4 colour
  230.    800*600 16 colour
  231.   They all run, ST-Low is unusable - widgets are too big.
  232.   The mono & 4 colour modes will need a little work, as all the 3D sculpting
  233.   just comes out as black, but the widget bitmaps display OK (but in black
  234.   & white) - a special mono version may be in order to make things more
  235.   presentable...
  236.  
  237. [27/11/95]
  238. o Slider bars now actually slide :) - and they send the appropriate
  239.   WM_HSLID/WM_VSLID messages to the client.
  240.  
  241. ==============================================================================
  242. I've now missed the first release date I promised - this is a definitely a
  243. REAL atari program now ;)
  244. (I could even go on to found Microsod Mk2 at this rate)
  245. ==============================================================================
  246.  
  247. [7/12/95]
  248. o Added a XaAES logo displayed at startup (actually it's a seperate program
  249.   spawned during the boot sequence). Not very constructive I know, but it
  250.   does look quite pretty
  251.  
  252. [8/12/95]
  253. o Ditched the slider bar handling as I wasn't happy with it, and coded a
  254.   replacement.
  255.  
  256. [9/12/95]
  257. o XaAES changes its process priority to -20 on startup (ie. highest priority).
  258.   This improves performance loads, and doesn't slow down other programs, as
  259.   XaAES spends most of its time blocked anyway...but when you need it, it
  260.   responds faster now.
  261.  
  262. [10/12/95]
  263. o Got the Atari Compendium...
  264. o Fixed appl_init() to fill in the globl array correctly.
  265. o Added wind_delete() call.
  266. o Added wind_new() call.
  267. o wind_get/set(.., WF_HSLIDE, ...) now works
  268. o wind_get/set(.., WF_VSLIDE, ...) now works
  269. o wind_get/set(.., WF_HSLSIZE, ...) now works
  270. o wind_get/set(.., WF_VSLSIZE, ...) now works
  271.  
  272. ==============================================================================
  273. Definitely suffering from binary bloat - the Kernal is now a 51K binary...
  274. ==============================================================================
  275.  
  276. [13/12/95]
  277. o Added info bar widget.
  278. o wind_set(.., WF_INFO, ...) now works
  279.  
  280. [20/12/95]
  281. o Added evnt_timer() handling via the MiNT SIGALRM signal.
  282.   At the moment this only gives a resolution of one second, as I used the
  283.   Talarm() function to implement it - I'll replace this with a custom
  284.   vex_timv() routine that gives a better resolution at a later date as this
  285.   makes things like LINES seem dead slow 'coz the shortest timeout from an
  286.   evnt_multi() is 1 second.
  287.  
  288. [28/12/95]
  289. o Added evnt_keybd() using the /dev/console device.
  290. o Added use of Fselect() to block on the console device & the AES message pipe
  291.   at the same time.
  292. o Added evnt_multi().
  293. o Added a 'xaaes.cnf' file parser (compatible with GEM.CNF) that allows
  294.   programs to be auto-run by XaAES when it starts up.
  295.  
  296. [29/12/95]
  297. o Added rsrc_load() based on the resource handler from Steve Sowerby's AGiLE
  298.   library.
  299. o Added rsrc_gaddr()
  300. o Added rsrc_free()
  301. o Debugged the keyboard handling & added a kludge to cope with the MiNT
  302.   Fselect bug.
  303.  
  304. ====================
  305. New Year's......2 weeks drunk!!!
  306. ====================
  307.  
  308. [12/1/96]
  309. o Bit of a gap there... ;)
  310. o Fixed the resource loader
  311. o Added the basic objc_draw() tree handler routine.
  312. o Added rsrc_obfix()
  313. o Added some extra debugging facilities - a DEBUG command in the xaaes.cnf
  314.   file allows xaaes' console output to be re-directed to any file or device
  315.   (I use it to dump debug to my Wyse terminal via the serial port).
  316.  
  317. [16/1/96]
  318. o Added objc_offset()
  319. o Added wind_find()
  320. o Finally got a 'real' GEM program to run on XaAES - Calapt by Atari...
  321. o Changed widget sizing & placement to tidy things up a bit.
  322.  
  323. [17/1/96]
  324. o Added objc_find()
  325.  
  326. [18/1/96]
  327. o Added small font size support to object handler.
  328. o Added support for AES4.1 style GDOS font's in object tree's.
  329. o Made the default AES fonts & sizes a compile time option.
  330. o Fixed objc_find
  331. o Actually got some GEM programs to respond to their windowed dialogs!!!!
  332.  
  333. [19/1/96]
  334. o Programs run from xaaes.cnf are now launched in their home directories.
  335. o Added G_ICON support to the object handler.
  336. o Fixed the fill styles to be correct for object tree display.
  337.  
  338. [21/1/96]
  339. o Added G_CICON colour icon support to the object handler.
  340. o Added G_IMAGE support to the object handler.
  341.  
  342. [23/1/96]
  343. o Included a new root_window into the code - this is to provide support for
  344.   a desktop via the existing window system.
  345. o Added a new widget 'XAW_MENU' that any window can have - initially, only
  346.   the root window has it & that behaves like the GEM menu (taking over the
  347.   menu of the topped process).
  348. o Lattice C almost runs under XaAES now (thank god).
  349.  
  350. [26/1/96]
  351. o Coded the menu tree handler to go with the XAW_MENU widget.
  352. o Moved the mouse data stream into its own pipe, seperate from the AES
  353.   command stream. This has improved mouse response a bit, as mouse
  354.   packets now don't get bogged down in amongst the client data (if mouse
  355.   & client packets arrive at the same time, they both get processed
  356.   but the mouse gets done first).
  357. o Modified the mouse server to use the new data pipe, and improved single
  358.   click response.
  359. o Added a check for mouse movement in the mouse server double click wait
  360.   loop. Big improvement, click and drag now registers with no delay at all...
  361. o Added menu_bar() function
  362. o Added menu_tnormal()
  363. o Added menu_icheck()
  364. o Added menu_ienable()
  365. o Added menu_text()
  366. o Extened the XA_CLIENT structure to include a pointer to each client's
  367.   standard GEM menu bar.
  368. o Added appl_getinfo()
  369.  
  370. ==============================================================================
  371. Big landmark here. I finally got Lattice C to load & run correctly under XaAES
  372. - it's not a lot of use yet as I've not done a file selector or a lot of the
  373. forms code...but the bloody thing at least gives me the menu's and an edit
  374. window.
  375.  
  376. Also, as I've managed to get to the bottom of the click-drag bug, the response
  377. time is way up - faster than AES4.1 at any rate!!!!
  378. ==============================================================================
  379.  
  380. [28/1/96]
  381. o Added G_STRING,G_FTEXT & G_FBOXTEXT support to the object handler.
  382. o Added form_dial() call.
  383. o CTRL+ALT+TAB now swaps menu-bars between active clients.
  384. o Improved menu handling a bit.
  385. o Added menu_register().
  386. o Added graf_growbox()/shrinkbox()
  387. o Added graf_movebox()
  388. o Added appl_find()
  389. o My life is complete - Yukon (the solitaire game) runs under XaAES almost
  390.   perfectly...
  391.  
  392. [29/1/96]
  393. o Thanks to the MiNT mailling list for pointing out that there is a Tmalarm()
  394.   call for millisecond resolution alarm signals...evnt_timer() is now much
  395.   closer to the 'real thing'.
  396.  
  397. [30/1/96]
  398. o Improved wind_calc() to actually get borders right without messing about
  399.   examining each individual widget.
  400. o Small optimisation of the client redraw list handling to clip just to the
  401.   work area instead of the window.
  402. o Added support for selected objects in the object tree hander.
  403. o Added support for 3D object flags in the object tree hander.
  404. o Added SHADOW flag support in the object tree handler.
  405. o Added G_BUTTON objects.
  406.  
  407. [31/1/96]
  408. o Added graf_watchbox() function
  409. o Added form_button() function (no text field support at the moment)
  410. o appl_init() now supports the AES4.0 extended information about system font
  411.   sizes.
  412. o Added a kludge for the strange illegal / undocumented call that TOSWIN
  413.   makes on startup (you can find it in HANDLER.C).
  414.  
  415. [1/2/96]
  416. o Fixed the keyboard & mouse response problem when using evnt_multi() with a
  417.   timer - the un-used timers were staying in the delta queue if they hadn't
  418.   gone off when the first alternative event occurred, and then interfering
  419.   with subsequent key/mouse events.
  420.  
  421. [5/2/96]
  422. o Added a simple console window (to be honest it's a bit crap...)
  423. o Added a new call 'short appl_pipe(void);' - this returns the file handle of
  424.   the clients reply pipe so they can use non-blocking calls & handle piped
  425.   replies themselves.
  426. o Re-worked the keyboard handling (again) to try and fix the lost characters
  427.   problem.
  428. o The client reply pipe handle can now be found in the AES global array at
  429.   global[12].
  430.  
  431. ==============================================================================
  432. Well, no way to delay it any further...techie beta 1 went out today.
  433. ==============================================================================
  434.  
  435. [6/2/96]
  436. o Fixed a bug in drawing shadowed objects.
  437. o (ref:31/1/96) Thanks to Eric Smith for pointing out that the funny call that
  438.   TOSWIN was making is in fact vq_gdos(), though why Atari had to add a special
  439.   case call is beyond me...what was wrong with the ordinary VDI magic number?
  440. o Added support in the low-level trap handler for the '$c9' method of testing
  441.   for an installed AES.
  442.  
  443. [7/2/96]
  444. o Object-Tree widgets now work for types other than menus.
  445. o Added HIDETREE support to the tree display routines.
  446. o Now got a nice set of pretty icons for alert boxes...
  447.   These are currently loaded from an external resource file - I'll embedd them
  448.   when things are a bit more settled.
  449. o Re-worked the alert box handler (the other was just a debugging aid).
  450.   Now supports all AES4.1 icons, and a couple more, returns the correct
  451.   button, and uses proper 3D push buttons.
  452. o Alerts now displayed in windows, and don't block other processes.
  453. o AES owned windows now don't recieve topped/bottomed messages - they are done
  454.   automatically. (eg. the AES owns alert windows, but doesn't need the
  455.   messages, so we can just top & bottom the alert windows immediately)
  456. o Extended window attribute NO_REDRAWS stops windows from generating
  457.   WM_REDRAW messages.
  458. o Added semaphore locking to the sensitive areas of the Trap handler (just
  459.   in case).
  460. o Another extended window attribute, STORE_BACK. If this is set, a window
  461.   will preserve its own background (like alerts do under normal GEM). Useful
  462.   for alert windows, where the client is asleep & can't respond to redraw
  463.   messages, and also to provide
  464. o Alerts use STORE_BACK window attribute.
  465.  
  466. [8/2/96]
  467. o New search order for xaaes.cnf:
  468.    .\xaaes.cnf
  469.    u:\c\mint\xaaes.cnf
  470.    u:\c\multitos\xaaes.cnf
  471.    u:\c\xaaes.cnf
  472. o New keyboard combo's
  473.    ALT+CTRL+TAB   - swap app menus (not top app) (ok, that's an old one, but
  474.                     it's documented now)
  475.    ALT+CTRL+L     - list current clients to DIAGS/'debug device'
  476.    ALT+CTRL+K     - tidy up: cleans up after any apps that died without
  477.                     calling appl_exit()
  478.  
  479. [9/2/96]
  480. o Added form_do() call (only creates & displays non-modal dialog window at
  481.   the moment)
  482.  
  483. [10/2/96]
  484. o Implemented the form_do() click handler. Doesn't know about editable text
  485.   fields yet, but does do radio buttons, hidden, disabled, exit & touchexit.
  486. o Added scrap_read() & scrap_write()
  487. o New command CLIPBOARD in the xaaes.cnf file allows the default clipboard
  488.   path to be set on startup.
  489. o Modified the initialisation code so that apps that weren't launched with
  490.   shell_write() don't crash xaaes when they call shell_read().
  491. o Added a fix-up for menu trees, as some resource files don't have the right
  492.   spacing & stuff (and my resource loader doesn't do them).
  493. o Added objc_change() call.
  494. o Form_dial(FMD_START) now creates the window to put a dialog in...this helps
  495.   with programs that call FMD_START, then handle their own dialog interaction.
  496. o Argggghhhhh. Where was all my memory going? Found (and fixed) a massive
  497.   memory leak in the menu handler. Every time a menu was dropped down, a new
  498.   buffer was allocated - but I never got round to freeing them...sorted it
  499.   out now though.
  500. o Fixed the transparent G_BOX problem in the object tree routines.
  501. o Fixed vertical positioning problem with small texts in dialogs.
  502. o The inherited default dialog background colour mode is now supported by the
  503.   object tree routines.
  504.  
  505. ==============================================================================
  506. Hmmm. Beta 1 was a bit of a disaster, very few people could make it work, and
  507. there were a lot of real problems with it. Things are much better now though,
  508. with several programs running perfectly (Z'Org for instance).
  509. ==============================================================================
  510.  
  511. [11/2/96]
  512. o Extended the applications list to include what apps are waiting for.
  513. o Included a new ALT+CTRL+D key combo to dump system info.
  514. o Re-coded the mouse clicks handler, so the app that owns the mouse lock
  515.   gets all clicks, even those outside of its own windows.
  516. o Finished form_button()
  517.  
  518. ==============================================================================
  519. The XaAES mailling list starts today.
  520. Had a play with the competition (oAESis), and found it doesn't run as many programs
  521. as XaAES does - but it does run some XaAES doesn't (like Lines for instance).
  522. Got XaAES to run Pagestream today, which cheered me up.
  523. Checked out the performance of XaAES compared to oAESis - oops...oAESis piss's
  524. all over XaAES in terms of speed....
  525. ==============================================================================
  526.  
  527. [12/2/96]
  528. o Added a call_direct interface in the trap handler for functions that don't
  529.   impact on main memory to any great extent...this by passes the pipe's queue
  530.   to call routines direct. I know, it's gonna be a pig to debug...but the
  531.   performance gain you get from doing it is amazing - TOSWIN runs so fast I
  532.   didn't believe it at first... It doesn't have to be used for everything,
  533.   just for common 'quickie' calls. NOTE: I've not used this generally at the
  534.   moment to avoid memory ownership problems - and it makes things very
  535.   unstable...
  536. o Re-coded wind_update to use semaphores & call_direct...first big improvement
  537.   from the new system.
  538.  
  539. [13/2/96]
  540. o Nicked the rc_intersect code from oAESis - it was better than mine.
  541. o Re-worked the rectangle list generation to use the above poached code.
  542. o Added loads more semaphore locking on various ops (mostly in c_window.c).
  543. o More work on the trap handler.
  544. o Appl_init() now allocates a private stack for use during AES calls.
  545.  
  546. ==============================================================================
  547. Got Johan's GCC diffs - gotta find time to include them (probably over the
  548. weekend).
  549. Got Martin's Lattice diffs.
  550. ==============================================================================
  551.  
  552. [14/2/96]
  553. o Applied Martin Koehling's diffs - here's his summary of what got fixed...
  554.  
  555. ----Quote----
  556. This is my first take on hacking XaAES; a context diff (relative to
  557. the beta1 release) is appended to this message. [CRAIG NOTE: I've applied
  558. the diffs already...]
  559.  
  560. Summary of changes (I hope I didn't forget anything):
  561.  
  562. a_handler.s:
  563.         Modified the TRAP2 handler to use the XBRA protocol (no
  564.         more self modifying code, too).
  565. a_handler.s:
  566.         BUGFIX: TRAP2 handler now saves *all* modified registers (AFAIK,
  567.         GEM AES does the same, and some APPs/TSRs rely on this [undocumented]
  568.         behaviour)
  569. handler.c:
  570.         Modified hook_into_vector to use Setexc() instead of directly
  571.         hacking the exception vector table; patch_handler() is no longer
  572.         needed. New function unhook_from_vector().
  573. handler.c:
  574.         Added __saveds keyword to XA_handler(), thus eliminating the need
  575.         for `far' data.
  576. appl_init.c:
  577.         Removed a few `far' keywords.
  578. resource.c:
  579.         BUGFIX: improved obfix() to be more GEM AES compatible (fractional
  580.         offsets, ob_width==80 special case).
  581. std_widg.c:
  582.         BUGFIX: wind->widgets[XAW_MENU].w wasn't initialized at all.
  583.         NOTE: there seems to be still another missing-initialization bug
  584.         lurking somewhere - when the FASTLOAD bit is *set*, xaaes.tos
  585.         sometimes simply hangs when I start it from the desktop; this
  586.         does *not* happen when xaaes.tos was started from mint.cnf
  587.         (->clean memory) or when the FASTLOAD bit is *cleared*...
  588. bootup.c:
  589.         If there are less than 16 colors (or was that `colours'? ;-))
  590.     available (like on my monochrome monitor), initialize
  591.     display.dial_colours differently; the display is still terribly ugly,
  592.     but at least now I can *see* something besides black text on black
  593.     ground... :-)
  594. bootup.c:
  595.         BUGFIX: use vqt_attributes() (instead of vqt_extend()) to initialize
  596.         display.c_max_w/display.c_max_h - this yields the correct values
  597.         8 and 16 for the `monochrome' system font.
  598. bootup.c:
  599.         BUGFIX: use obfix() in SYSTEM_MENU initialization; don't forget
  600.         SYSTEM_MENU[16] :-).
  601. bootup.c:
  602.         Use a different method for AUTO folder detection: after an
  603.         appl_init() call, check if global[0] (AES version) is still
  604.         zero - this indicates that no AES is present...
  605.         (This method has been documented and successfully used for
  606.         years, and it's inituitively "cleaner" than the original one; in
  607.         addition, it obviates the need for the isauto.s module.)
  608.         (appl_init() should have been called anyway since graf_handle()
  609.         is called later...)
  610. bootup.c:
  611.         New function `Cleanup()' that closes workstations, restores
  612.         the TRAP vector, calls appl_exit()...
  613.         Still quite incomplete (and currently unused anyway).
  614. Others:
  615.         Some changes to header files to reflect the above modifications.
  616.         Added `#include <memory.h>' to a few modules to get rid of `No
  617.         prototype declared for function' warning (some are still missing).
  618. ----Un-Quote----
  619.   All of the above went in apart from the obfix() stuff and register save
  620.   mod, which I'd already done.
  621.   Seem's to have improved stability a lot, especially for call-direct ops,
  622.   and there's a lot of other good stuff like the XBRA support in there as
  623.   well.
  624.  
  625. [15/2/96]
  626. o Fixed a bug in the draw_object_tree() routine (HIDETREE wasn't handled
  627.   properly).
  628. o Enabled direct call for more op-codes to improve performance.
  629.  
  630. [16/2/96]
  631. o Included Mario Becroft's monochrome widget set as a compile time option.
  632. o Tested XaAES in mono for the first time in ages...hmmm. Certainly works,
  633.   but you can't see windows except for the widgets. Needs some work I feel...
  634.  
  635. [17/2/96]
  636. o Added shel_find() (uses the standard MiNT enviroment)
  637. o Added shel_envrn()
  638. o New keyboard combo ALT+CTRL+R - attempts to recover control of a hung
  639.   system.
  640. o Added mode 1 (SWM_LAUNCHNOW) support to shell_write().
  641. o Added a SIGCHLD handler to spot exitting children.
  642. o appl_exit now calls Pwait() to get the app exit status
  643.  
  644. [18/2/96]
  645. o Removed all the delta-queue stuff, and replaced the timer events with a more
  646.   advanced and versatile method based on Evan's idea of using Fselect
  647.   time-outs instead of SIGALRM signals. This does away with having to
  648.   maintain the delta queue & simplifies cancelling evnt_multi. It does mean
  649.   that the trap handler is a bit more complex now...
  650.  
  651. ==============================================================================
  652. Beta 2 released via Johan's ftp site today
  653. ==============================================================================
  654.  
  655. [19/2/96]
  656. o Added a check for missing system resource file (exit gracefully instead of
  657.   bus error).
  658. o Fixed a bug in the SIGCHLD handler (wasn't extracting the child pid
  659.   correctly)
  660.   - dieing children are now caught correctly and clean-up happens
  661.   automatically.
  662. o Added new 'About XaAES...' dialog.
  663. o Added handler for clicks on the system default menubar - only 'About' is
  664.   actually used at the moment, but at least the code is there now.
  665. o Fixed the CTRL+ALT+TAB app switch so that you can always get to the system
  666.   menu if you need to.
  667.  
  668. [20/2/96]
  669. o Integrated Martin Koehling's 2nd set of diffs - here's Martin's list of
  670.   changes:
  671.  
  672. ----Quote----
  673. bootup.c:
  674.    Remove Semaphores in Cleanup().
  675.    Print an error message and call Cleanup() & exit when opening of
  676.    KBD_device failed.
  677.    Ditto when LoadResources("system.rsc") failed.
  678.    (The latter would have saved me two to three hours of bug-hunting
  679.    yesterday...)
  680. resource.c:
  681.    Removed auto-freeing of existing resource in rsrc_load handler;
  682.    under GEM AES, programs *can* have multiple resources.
  683.    (This function still needs some more work - in particular,
  684.    resource memory should *always* be owned by the APP!)
  685. xa_aes.prj (separate file):
  686.    Removed all local compiler options - apparently they had just
  687.    accumulated over time and served no practical purpose...
  688.    (problem of of the Lattice IDE)
  689.    [CRAIGS NOTE: They are a side effect of how I locally turn on diagnostics
  690.    output when I'm debugging: I only define GENERATE_DIAGS for the modules
  691.    I'm working on...]
  692. Others:
  693.    Lots and lots of added #includes; XaAES should now compile without
  694.    any warnings even with `Enforce function prototypes' enabled - this
  695.    should make porting XaAES to other compilers (or changing the `int'
  696.    size, or changing the parameter passing conventions) somewhat
  697.    easier...
  698. ----Unquote----
  699.  
  700. ...And yes, it does compile with no warnings even with Enforced prototypes.
  701.  
  702. o Added a new auto-redraw callback function to windows, to allow the work area
  703.   to be redraw automatically without sending redraw messages or walking the
  704.   rectangle list. This is mainly aimed at displaying the root window...but it
  705.   could be useful for other things?
  706. o Added the desktop/root window object tree.
  707. o Made the root window a NO_MESSAGES type window - we had a memory leak there,
  708.   as the AES never checks for messages to itself, redraws were just building
  709.   up...and it can redraw itself using auto-redraw, so there is no to send
  710.   messages.
  711. o Removed the erase_nontopped_window() function as the desktop support
  712.   made it redundant.
  713. o Changed the way window redraws are calculated in display_windows_below()
  714.   to prevent all windows below being drawn even when they are obscured by
  715.   other windows.
  716.  
  717. [21/2/96]
  718. o Added wind_get(...,WF_NEWDESK,...)
  719. o Added wind_set(...,WF_NEWDESK,...)
  720. o Integrated Martin's bugfix for the semaphores version of wind_update()
  721.   function (with a small fix to a bug in Martin's version).
  722. o Added a new wind_set() mode WF_AUTOREDRAW. This allows a windows
  723.   auto-redraw function to be set. Takes a pointer to a WindowCallback type
  724.   function, passed in parm1 (hi word) & parm2 (low word):
  725.    short my_redraw_function(XA_WINDOW *window)
  726.    {
  727.       /* Do the redraw, using the coords from the XA_WINDOW structure */
  728.    }
  729.  
  730.    void set_a_redraw(void)
  731.    {
  732.       WindowCallback rd=&my_redraw_function;
  733.       wind_set(my_window_handle, WF_AUTOREDRAW,
  734.          (unsigned short)((rd&0xffff0000L)>>16),
  735.          (unsigned short)(rd&0xffffL), 0,0);
  736.    }
  737. o Added PROGDEF support to the object tree handler.
  738. o Went over most of the source replacing vs_clip() with set_clip() 'coz the
  739.   PROGDEF's needed to know the current AES clipping rectangle :(
  740.   (I'm dead pissed off about that, but can't see a way round it).
  741. o Added appl_write() function - direct result is that AV-PROTOCOL applications
  742.   (GEMVIEW for example) now work under XaAES when run with Thing.
  743.  
  744. ==============================================================================
  745. Hey!!! 'Thing' now displays its desktop & directory windows properly, with
  746. colour icons, backdrops, drag & drop onto the desktop...the works!!!
  747.  
  748. The redraw algorithm is still very iffy - the whole desktop gets redrawn far
  749. to often.
  750. ==============================================================================
  751.  
  752. [22/2/96]
  753. o Improved the menu_xxx functions to prevent the redrawing of the whole
  754.   desktop each time.
  755. o Added wind_set(.., WF_STOREBACK, ...) to allow user programs to set their
  756.   own store background property.
  757.  
  758. [24/2/96]
  759. o Hacked around with the window redraws to get rid of some more root redraws.
  760. o Fixed graf_handle() to give correct character cell sizes.
  761. o Root window clicks now go to the current owner of the desktop (so clicking
  762.   on Thing's desktop icons works).
  763. o Fixed form_button() - Thing's dialogs work now.
  764.  
  765. [25/2/96]
  766. o Ran Johan's xlcc2gcc program over the source tree to remove all C++ style
  767.   comments.
  768. o Applied about 2 thirds of Thomas' diffs.
  769.   - most notable fix is that shel_wrt() works properly now (mode 0 at least).
  770.  
  771. [2/3/96]
  772. o Sorted out some problems with window list locking, so that wind_get()
  773.   could move over to direct call. This fixes the major speed problem
  774.   XaAES had, and also seems to have made things a lot more stable (but I
  775.   always say that don't I ?).
  776. o Removed the funny sliders that everyone was complaining about.
  777.  
  778.  
  779. [3/3/96]
  780. o Added appl_search()
  781. o Fixed problem with window slider paging (added a click behaviour to the
  782.   widgets).
  783. o Added drop shadows to windows.
  784. o Reduced size of object shadows to 2 pixels to match GEM (some apps make
  785.   assumptions about this when storing backgrounds).
  786. o Object tree handler: CICON's will use nest best colour depth if an exact
  787.   match cannot be found (eg. if there is a 16 colour icon, it will be used in
  788.   256 mode if there is no 256 icons).
  789.  
  790. [4/3/96]
  791. o Menu's only redraw sections that are changing rather than the whole menu.
  792. o Changed to a more 'GEM' method of highlighting menu options.
  793. o Fixed CICON's (again). Resource loader now uprates all CICON's to the
  794.   current screen colour depth on loading (eg. 4 bit plane will convert to 8
  795.   bit plane when run in 256 colour mode). There's still some nasty bugs in
  796.   this code...
  797.  
  798. [5/3/96]
  799. o Applied Martin Koehling's appl_getinfo() patch.
  800.   This fixed a couple of problems with one or two apps - notably, 7UP &
  801.   Kandinsky work now because of this...
  802.  
  803. ===============================================
  804. HARDDRIVE CRASH
  805. - Luck recovery...
  806. ===============================================
  807.  
  808. ==============================================================================
  809. Beta 3 released.
  810. ==============================================================================
  811.  
  812. [8/3/96]
  813. o Fixed form_button() so that objects without their selectable attribute set
  814.   still return if they are EXIT or TOUCHEXIT. This means that Thing's
  815.   scrolling lists in dialogs now work correctly.
  816.  
  817. [9/3/96]
  818. o Started adding underlying support for keyboard entry into forms.
  819. o Added a new callback attribute for windows to handle keyboard entry. If an
  820.   edit field is specified in form_do() then this attribute is set for the
  821.   window containing the form.
  822. o New ob_flag bit IS_EDIT tags the current edit field so that the object
  823.   drawing routines know to show the cursor.
  824.  
  825. [10/3/96]
  826. o Added support to the form click handler to change the current edit field if
  827.   an EDITABLE object is clicked on.
  828. o Fixed non-3D button drawing.
  829. o Fixed radio button redraw.
  830. o Fixed the CTRL+ALT+R 'recover control' combo so that XaAES doesn't crash
  831.   when its used.
  832. o Fixed appl_search() to not return illegal values for AES id's.
  833. o SIGCHLD handler doesn't try to do any clean-up now, it just sends the
  834.   XA_CLIENT_EXIT message to the kernal, and the standard cleanup handles it.
  835.  
  836. [11/3/96]
  837. o Fixed shel_write() TOS program launch to drop the correct info into the
  838.   TOSRUN pipe for TOSWIN to run the TOS program for you.
  839.  
  840. [20/3/96]
  841. o Applied 2 sets of diffs from Martin (see 5diff & 6diff).
  842.  
  843. [21/3/96]
  844. o Coded the keyboard handler for form_do(). The following are supported:
  845.   Field selection:
  846.       TAB or DOWN-ARROW    - next field
  847.       UP-ARROW             - previous field
  848.       SHIFT+DOWN-ARROW     - last field
  849.       SHIFT+UP-ARROW       - first field
  850.    Cursor movement:
  851.       RIGHT-ARROW          - cursor right
  852.       LEFT-ARROW           - cursor left
  853.       SHIFT+RIGHT-ARROW    - cursor to end of field
  854.       SHIFT+LEFT-ARROR or
  855.          CLR/HOME          - cursor to start of field
  856.    Editting:
  857.       ESCAPE               - clear field
  858.       DEL                  - delete character under cursor
  859.       BACKSPACE            - delete character behind cursor
  860.  
  861.    other keys go straight into the text field.
  862.  
  863.  
  864. [22/3/96]
  865. o Added the display function for the iconify widget.
  866. o Appl_getinfo(11) modified to indicate presence of iconifier widget.
  867. o Added wind_set(.., WF_ICONIFY, ...) support.
  868. o Added wind_get(.., WF_ICONIFY, ...) support.
  869. o Click on iconify widget now sends WM_ICONIFY message to client.
  870.  
  871. [23/3/96]
  872. o Added wind_set(.., WF_UNICONIFY, ...) support.
  873. o Added wind_get(.., WF_UNICONIFY, ...) support.
  874. o Click on iconify widget of an iconified window now sends WM_UNICONIFY
  875.   message to client.
  876. o Double-click on title widget of an iconified window now also sends
  877.   WM_UNICONIFY message to client.
  878.  
  879. ==============================================================================
  880. After discussing it with Martin, we've decided to ditch the big clients[]
  881. array in the near future. The use of the Martin's Pid2Client() macro is an
  882. interim thing. Once all direct access to the clients[] array has been replaced
  883. with Pid2Client() we can replace the array with a dynamic structure that
  884. doesn't swallow 120K of RAM to no good reason.
  885. ==============================================================================
  886.  
  887. [24/3/96]
  888. o Another big diff from Martin Koehling:
  889.  
  890. ----Quote----
  891. objects.c, objects.h, many *.c:
  892.    BUGFIX:
  893.    Changed parameter list for set_clip() from `x1,y1,x2,y2' to `x,y,w,h'.
  894.    Changing all set_clip() calls accordingly removed many of the `+1'
  895.    errors, and saved a few bytes, too.
  896. objects.c:
  897.    clear_clip() now doesn't really turn clipping off but only sets the
  898.    clipping rectangle to the entire screen - this is safer since
  899.    otherwise memory areas outside the screen might be overwritten by
  900.    buggy code! (Probably depending on function called and VDI version...)
  901. rectlist.c:
  902.    BUGFIX:
  903.    Since the redraw problems had actually gotten *worse* after the
  904.    set_clip() changes (some bugs had apparently cancelled each other),
  905.    I first replaced rc_intersect() with a time-proven version; but this
  906.    wasn't the problem...
  907.    (I kept the new version because its more readable and actually
  908.    about 50 bytes shorter than the original. :-))
  909.    The *real* bugs were in generate_rect_list(): after removing
  910.    several instances of `-1'/`+1', redraws work *much* better now...
  911.    (There are still a few problems - I suspect bugs in the calculation
  912.    of window work/border areas...)
  913. shellwrt.c, new_clnt.c, bootup.c:
  914.    BUGFIX:
  915.    shel_write() used to free the command line and the command
  916.    tail - much too early!
  917.    Moved this to XA_client_exit().
  918. wind_fns.c:
  919.    Added test-and-set-mode to wind_update() (BEG_UPDATE|0x100,
  920.    BEG_MCTRL|0x100); would somebody please try this out? ;-)
  921. appl_ini.c:
  922.    EXPERIMENTAL:
  923.    Put AES version number 1.4 (instead of 4.1) into global[] array;
  924.    possibly some programs are crashing because they expect MTOS (AES 4.x)
  925.    features to be present that are not yet implemented???
  926.    <CRAIG'S NOTE: This isn't such a good idea so I've #if'd it out of the
  927.    binary>
  928. getinfo.c:
  929.    Some changes to info_tab[]:
  930.    - mode 4: indicate that appl_search() is implemented
  931.    - mode 10: indicate shel_write() modes supported
  932.    - mode 11: indicate `wind_update() check and set present'
  933. getinfo.c:
  934.    BUGFIX:
  935.    appl_find(NULL) should returns the AES process id of current
  936.    process, *not* the menu bar owner - at least according to all
  937.    documentation I have access to.
  938. getinfo.c:
  939.    appl_find("?AGI") now returns 0, indicating that appl_getinfo()
  940.    is understood by the current AES - normally this function is
  941.    only present in AES versions >= 4.0 (i.e. MTOS; old AES versions
  942.    display an "Illegal Function" alert instead).
  943.    The "?AGI" feature was invented by Martin Osieka for his
  944.    AES extension WINX, which adds appl_getinfo() (and other
  945.    things) to "old" AES versions; MagiC 4.0 (AES 3.99!) supports
  946.    "?AGI", too.
  947.    The proper way of checking for the presence of appl_getinfo()
  948.    is:
  949.    `has_appl_getinfo = (global[0]>=0x400) || (appl_find("?AGI")==0) ;'
  950. appl_ini.c, c_window.c, new_clnt.c:
  951.    Replaced direct accesses to clients[] array by Pid2Client() calls.
  952.  
  953. ----UnQuote----
  954.  
  955. o There was one thing in that diff that Martin seems to have forgotten he did
  956.   - if you hold down either shift key during startup, XaAES will swap to
  957.   medium res if it was being started in Low Res. It's not quite the all
  958.   singing all dancing res change we talked about on the mailling list yet,
  959.   but it's sort of a start isn't it?
  960. o Fixed window drop-shadow bug.
  961.  
  962. [27/3/96]
  963. o Added objc_edit()
  964. o Added form_keybd()
  965.  
  966. [28/3/96]
  967. o Added Martin's appl_ini() patch to get round an apparent MiNT pipe deletion
  968.   bug. (this is what was stopping lines.prg from working, see 8diff for
  969.   details)
  970. o Debugged objc_edit()
  971. o Mono icons now display their text field correctly.
  972. o BOXTEXT's now get border properly.
  973.  
  974.  
  975. [29/3/96]
  976. o Added falcon video mode switches to the command line:
  977.       -video 0->3
  978.    where:
  979.       0 = 80 column, non-interlace, mono
  980.       1 = 80 column, non-interlace, 4 colour
  981.       2 = 80 column, non-interlace, 16 colour
  982.       3 = 80 column, non-interlace, 256 colour
  983.   These don't work very well at the moment, but do get round the NVDI2.5
  984.   problem.
  985. o Added Shutdown option to the XaAES system menu. This isn't 100% yet, but
  986.   it's a start... Shutdown will kill all clients, and exit XaAES - but you
  987.   can't get back into XaAES again at the moment, so I've obviously missed
  988.   something...
  989.  
  990.  
  991. [31/3/96]
  992. o Added new functions (OBJECT*)CloneForm(OBJECT*) and
  993.   (void)DeleteClone(OBJECT*) to create copies of the resource templates in
  994.   SYSTEM.RSC (this stops multiple clients using alerts from interfering with
  995.   one another).
  996. o Alert box handler now uses the CloneForm/DeleteClone routines.
  997. o Added proper XBRA unhook to restore the correst AES trap vector.
  998. o Major change to the architecture of XaAES:
  999.   The XaAES.cmd pipe is no longer a global file handle. The reason for this
  1000.   is to ensure that all XaAES's pipes get deleted when the system is
  1001.   shutdown - otherwise if you restarted XaAES without re-booting, the new
  1002.   server couldn't open the command pipe.
  1003.   The new approach is to have XaAES.cmd as opened by one process at a time,
  1004.   and then only during appl_init(). The process uses XaAES.cmd as an
  1005.   'introduction pipe' to send an XA_NEW_CLIENT message, then closes it again.
  1006.   The main body of commands comes from what used to be the clients reply pipe
  1007.   (this is now a bi-directional pipe), and the kernal selects on all the
  1008.   client pipes at the same time.
  1009.   This is a pretty major change, and I've only done it because several people
  1010.   asked for a clean shutdown/restart procedure without having to reboot the
  1011.   machine. Ok, you've got it.
  1012. o 'Shutdown' works correctly, and XaAES can be re-started as many times as
  1013.   you like (only one server at a time though) without rebooting the machine
  1014.   (from a command line).
  1015. o MOUSESRV opens its comms pipe as O_RDWR to allow it to be deleted again.
  1016. o SIGINT and SIGQUIT are now caught and cause a graceful shutdown (exactly
  1017.   like selecting the 'Shutdown' menu option).
  1018.  
  1019. =====================================================================================
  1020. Beta 4 released.
  1021. =====================================================================================
  1022.  
  1023. [2/4/96]
  1024. o Johan mailled me James Cox's MooseServ replacement for the MOUS_SRV mouse
  1025.   program (I missed it when he first posted it). It's a great improvement
  1026.   over the original that I wrote, a proper MiNT device, all coded in
  1027.   assembler - the full works. It's gotta become the standard XaAES mouse
  1028.   handler starting from now - mainly because it does away with the busy wait
  1029.   loop in the mouse handler, but also because double click response is
  1030.   much better than it was in my version.
  1031.  
  1032. [9/4/96]
  1033. o Fixed graf_watchbox() - sorry, that was an error in Atari Compendium
  1034.   as regards where parameters were passed (that was why Everest didn't work
  1035.   up to now).
  1036. o Added some code to not select objects that aren't selectable in
  1037.   form_butn().
  1038. o Added CH_EXIT message to the SIGCHLD handler. This is now sent to the
  1039.   'AES parent' of an app. This is different to the MiNT parent - all client
  1040.   apps should be children of the XaAES server, bgut their 'AES parent' is
  1041.   the app that launched them with shel_write().
  1042. o Shel_write() mode 1 now blocks the client (as it should), and the SIGCHLD
  1043.   handler wakes it up again when the child exits.
  1044.  
  1045. [12/4/96]
  1046. o Johan found the problem with running MGIF, so I've fixed it - menu_text()
  1047.   was just changing the pointer to the menu text, instead of copying the text
  1048.   over the existing data (as it should have done).
  1049.  
  1050. [16/4/96]
  1051. o Fixed a bug in shel_write() - XaAES was corrupting the clients copy of the
  1052.   command when it launched the new program, so if the client attempted to
  1053.   re-use the command string it was invalid (this showed up when running
  1054.   AntMail 0.7.5).
  1055.  
  1056. [17/4/96]
  1057. o Added CHECKED & CROSSED support to the object display routines.
  1058. o Added the new XaAES/oAESis extended shel_write() stuff to allow explicit
  1059.   setting of user/group id's when a child is launched. Haven't done the
  1060.   UID/GID inheritance stuff yet (that will need a little more work).
  1061.  
  1062. [18/4/96]
  1063. o Added tear away menu bar's (CTRL+click on a menu to tear away). This isn't
  1064.   a final thing, it's just really to show how easy it is to add this sort of
  1065.   thing to XaAES.
  1066. o Added support for NO_WORK window attribute, so a window can have no work
  1067.   area at all.
  1068. o Alert box's & form_do() now use NO_WORK windows.
  1069. o Alert box default button set correctly (although the keypress is ignored
  1070.   at the moment).
  1071. o Disabled the OS_SPECIAL memory patch (new switch in XA_DEFS.H
  1072.   'DODGY_MEMORY_PROTECTION') as I think it causes a massive memory leak in
  1073.   the MiNT kernal.
  1074.  
  1075. [19/4/96]
  1076. o Various fixes to the object tree drawing routines.
  1077.   - Finally sorted out the black bars problem.
  1078.   - Selected text is now highlighted.
  1079.  
  1080. [25/4/96]
  1081. o The owner of the screen update flag now recieves all mouse input even
  1082.   if it hasn't grabbed the mouse flag.
  1083. o The owner of the screen update flag now recieves all keyboard input
  1084.   as well. These two patches help several programs to work better
  1085.   with the Selectric fileselector (notabley, Egale works now).
  1086. o Replaced form_do.c, forms.c & objcedit.c with Johan's patched
  1087.   versions - the form handling should work a little better now.
  1088. o Added hide/show cursor to the objc_draw & objc_change functions
  1089.   - this gets rid of almost all the 'mouse droppings' that we were
  1090.   suffering.
  1091.  
  1092. [26/4/96]
  1093. o Got a new version of the Moose (mouse) server from James Cox. The actual
  1094.   device driver is now a MiNT loadable device (XDD) and remains loaded all
  1095.   the time. Eventually we'll scrap the mousesrv program and use the device
  1096.   directly :)
  1097.  
  1098. [27/4/96]
  1099. o All OS functions now return unsigned long instead of short.
  1100. o Removed the 16 tick minimum on event timeouts - you can now do a timeout
  1101.   with 1.
  1102. o appl_init() & appl_exit() now block the client until the server process
  1103.   recieves the (de)registration message.
  1104. o appl_init() & appl_exit() no longer special cased (that was leftover from
  1105.   before I added the call direct interface).
  1106.  
  1107. [30/4/96]
  1108. o Applied Martin's object display diffs:
  1109.  
  1110. ---Quote---
  1111.  
  1112. xa_globl.h:
  1113. -  Added macros FirstClient() and NextClient() - useful for all
  1114.    functions traversing the entire client table (used in bootup.c
  1115.    only at the moment).
  1116.  
  1117. objects.c, draw_2d_box(): *****Martin's version of this is a bit duff [Craig]
  1118. -  Rewritten completely (outside/inside borders were reversed [IIRC],
  1119.    outside borders looked rather strange).
  1120.  
  1121. objects.c, display_object():
  1122. -  Lots and lots of changes - object appearance should match
  1123.    GEM AES much better now!
  1124. -  Rewrote SELECTED handling in mono (<16 colors) mode - this
  1125.    fixed the "object text in SELECTED objects vanishes in mono
  1126.    mode" problem.
  1127. -  Shadowing and outlining objects now works correctly.
  1128. -  Fixed colorword->opaque handling (which does only apply to
  1129.    text within an object, not to object body).
  1130. -  Slightly changed USERDEF handling: the user function is
  1131.    supposed to return the ob_state bits that still need to
  1132.    be handled by the AES; since all documentation on this
  1133.    topic is *very* vague (and earlier experiments weren't
  1134.    conclusive either), I'm not *quite* sure if my change
  1135.    is correct - but it doesn't appear to break anything!
  1136. -  Added support for object states CHECKED, CROSSED, DISABLED.
  1137.  
  1138.    ********* NOTE: *********
  1139.    I did *NOT* test all of this in ">=16 color" modes yet - but
  1140.    I hope my changes didn't break anything; 3D objects should be
  1141.    unchanged, too...
  1142.    COLOR USERS: PLEASE TEST THIS!
  1143.  
  1144. objects.c, draw_object_tree():
  1145. -  Added v_hide_c() and v_show_c() - the caller doesn't need to
  1146.    call this anymore.
  1147.  
  1148. form_do.c, click_object_widget():
  1149. -  It wasn't possible to de-select a SELECTED object by clicking
  1150.    on it - on the screen it was de-selected, but internally the
  1151.    SELECTED bit got set again!
  1152.  
  1153. forms.c, XA_form_button():
  1154. -  Fixed width/height parameters of a set_clip() call (overlooked
  1155.    last time).
  1156. -  Don't SELECT a TOUCHEXIT object if it isn't SELECTABLE, too.
  1157.    (Actually, there are still several other special cases not
  1158.    handled quite correctly - but I think this can wait...)
  1159.  
  1160. frm_alrt.c, do_form_alert():
  1161. -  Set interior color of alert box to "system background color"
  1162.    in "monochrome" (<16 colors) mode.
  1163. -  Make alert buttons 2D in monochrome mode (color buttons are
  1164.    still "black text on black background")
  1165.  
  1166. mousesrv.c:
  1167. -  Added a SIGTERM handler, allowing to restore interrupt vectors
  1168.    before termination.
  1169.    (I'm not quite sure why nobody reported any problems with the
  1170.    SHUTDOWN handling - I regularly had crashes after terminating
  1171.    XaAES if it was started from the DESKTOP; possibly some AES
  1172.    versions are more forgiving in this area than my AES 3.2
  1173.    (TOS 2.06)??) (I'm still having trouble if I restart XaAES
  1174.    after a SHUTDOWN - but at least it works most of the time...)
  1175.  
  1176.    BTW: James Cox' moose server probably presents a *major*
  1177.    problem in this regard - it installs a device driver, and
  1178.    MiNT has *no* way to cleanly de-install one of those... :-(
  1179.    (*PLEASE*: correct me if I'm worng!!:-))
  1180.    This means basically that the server must *never* be killed;
  1181.    in addition, there needs to be a way (Fcntl?) to disable
  1182.    the server when XaAES exits, and to re-enable it when XaAES
  1183.    is started again...
  1184.  
  1185. bootup.c:
  1186. -  Send SIGTERM instead of SIGKILL to the mouse server - SIGKILL
  1187.    can't be caught!
  1188. -  Wait for the mouse server's termination before proceeding
  1189.    (important!!!).
  1190. -  Send SIGTERM instead of SIGKILL to apps, too; probably XaAES
  1191.    *should* wait for the applications' termination, too - but I'll
  1192.    leave this alone for the moment...
  1193. -  Pass *physical* (not: virtual) workstation handle to mouse server;
  1194.    the docs are not very clear on this point - but this *seems* to
  1195.    be cleaner, since the VDI interrupt vectors are not a "per-
  1196.    vworkstation" resource...
  1197. -  Simplfied F_OS_SPECIAL setting: "u:\proc\.-1" refers to the
  1198.    current process (as documented in Appendix B of the MiNT 1.12
  1199.    docs).
  1200.    ********* BTW: re: "Why does XaAES still crash with memory
  1201.    protection on?"
  1202.    Craig: did you try setting the protection bits of MOUSESRV.TOS
  1203.    to SUPER? This is necessary since it contains interrupt handler
  1204.    code...
  1205.  
  1206. logo.c:
  1207. -  Added WM_BOTTOMED/WF_BOTTOM defs (not defined in my aes.h).
  1208.  
  1209. ---UnQuote---
  1210.  
  1211. [3/5/96]
  1212. o Finally got things working properly again after putting in Martin & Johan's
  1213.   form & object patches.
  1214.  
  1215. [4/5/96]
  1216. o Added loads of memory allocation error checking to try and cut down on
  1217.   crashes - seems to have improved things a bit.
  1218. o Fixed Johan's objc_edit() and forms keyboard handling code to correctly
  1219.   interpret valid characters (was locking out some perfectly admissible
  1220.   characters).
  1221. o Another small change to the client startup/shutdown stuff - CH_EXIT is now
  1222.   sent again (parent field was being invalidated to soon). Multiple
  1223.   shutdown/restart sequences seem to work pretty well now.
  1224. o Extended client list reporting (when debug enabled) to show more info on
  1225.   each client.
  1226.  
  1227. [5/5/96]
  1228. o Added support for Braodcast (mode 9) shel_write()
  1229. o Added support for Shutdown (mode4) shel_write()
  1230. o Added support for Desk Accessory loading in shel_write() (mode 3).
  1231.   - actually, I blagged a couple of lines of assembler from oAESis 0.70
  1232.   to trick accs into loading correctly. Accs load & seem to behave correctly,
  1233.   but you can't open them yet (they aren't in the menu anywhere yet).
  1234. o House keeping now gets done after a 2 second inactivity OR 5000 OS request.
  1235.   This helps find dead clients more reliably...
  1236.  
  1237. [6/5/96]
  1238. o Loaded applications & ACCs are displayed in the desk menu, with a tick next
  1239.   to the one that owns the current root window menubar.
  1240. o ACC's are autoloaded on bootup. New xaaes.cnf directive ACCPATH allows you
  1241.   to set the path that ACC's will be loaded from. (default is c:\)
  1242. o ACC's are tagged in the desk menu so you can see which they are.
  1243. o Clicking on an ACC's menu entry sends AC_OPEN to the it.
  1244. o Clicking on an APP's menu entry gives it the root window menu & desktop.
  1245.  
  1246. [7/5/96]
  1247. o Put in Johan's new rectangle list handling code.
  1248.   Here's Johan's comments on what he's done:
  1249.  
  1250. ---Quote---
  1251. In 'rectlist.c' the old rc_intersect has been optimized a bit and there
  1252. are two other new static functions with almost the same function.
  1253.  
  1254. For external use there are two new functions:
  1255. create_work_list     -  Creates a second rectangle list, covering only the
  1256.                         parts that are within the window's work area.
  1257. invalidate_rect_list -  Marks all rectangle lists below a specified window
  1258.                         (including that one) as invalid. The rectangle
  1259.                         objects are deallocated, naturally.
  1260.  
  1261. Two other static functions take care of rectangle object allocation and
  1262. deallocation.
  1263.  
  1264. The diff files mostly remove unnecessary calls to generate_rect_list() and
  1265. add invalidate_rect_list() calls where needed.
  1266. ---Unquote---
  1267.  
  1268. o Added the check for out of clip objects that Johan suggested in 
  1269.   draw_object().
  1270.  
  1271. ==============================================================================
  1272. Beta 5 released.
  1273. This is an obscenely fast release. It's now officially a shit load 
  1274. faster than AES4.1 (my original aim). This is all thanks to Johan's 
  1275. work on the rectangle lists and the object clip fix (in the case of 
  1276. Thing's directory window scrolling), as well as my re-vamped 
  1277. evnt_multi().
  1278. ==============================================================================
  1279.  
  1280. [8/5/96]
  1281. o Stopped root window redrawing when first real window is opened.
  1282. o Fixed display bug when topping windows.
  1283. o Stopped whole root window redrawing when last window is closed.
  1284. o Added undocumented entry in applications global[] array that the EGEM
  1285.   library relies on (naughty of them), so ESSDecode, LHAshell, et al should
  1286.   all work now.
  1287.   (thank you to the oAESis guys (namely Christer G) for sorting that out).
  1288.   
  1289. [9/5/96]
  1290. o Fixed mouse click drop through when clicking on menus.
  1291. o Menu titles are un-highlighted after selection.
  1292. o STORE_BACK windows (ie. dialogs) now stay on top, and you can't
  1293.   move windows that are behind them.
  1294. o Fixed NO_MESSAGES type windows (dialogs again) when used with 
  1295.   Johan's rectangle list code.
  1296. o NO_WORK windows don't have the window borders drawn, they just get a
  1297.   plain filled rectangle instead.
  1298.  
  1299. [10/5/96]
  1300. o Small patch to shel_write() to make detecting type of program to launch in
  1301.   mode 0 work a little better.
  1302. o Can now move windows off screen.
  1303.  
  1304. [11/5/96]
  1305. o Applied Martin Koehling's latest diffs:
  1306. resource.c:
  1307.    FixColourIconData() had a serious bug: if
  1308.    c->num_planes > display.planes, the end of an Mxalloc'ed
  1309.    memory block was overwritten; this was probably responsible
  1310.    for spurious crashes in `lowcolor' resolutions - for example,
  1311.    on my Mega ST XaAES Beta 0.5 *always* crashed during initialization
  1312.    if it was run from MINT.CNF!
  1313. resource.c:
  1314.    FixColourIconData() had another bug: the destination MFDB
  1315.    wasn't properly initialized (fd_stand in one case, fd_addr
  1316.    in another one) before vr_trnfrm(); I can't explain how
  1317.    this code could work at all...
  1318. xa_defs.h:
  1319.    During bug hunting, I added:
  1320.       #define malloc(m) calloc(m,1)
  1321.    I think it's a good idea to have allocated memory blocks
  1322.    initialized to zero - at least during debugging!
  1323. xa_globl.h:
  1324.    Added a typecast to get rid of a syntax error (Pid2Client(pid)->...
  1325.    didn't work).
  1326. objects.c:
  1327.    draw_2d_box() still has problems with *outside* borders; I've
  1328.    added my version (which is modeled closely after Atari's own
  1329.    algorithm) for easier comparison - if any shift key is pressed,
  1330.    the old version is used, otherwise my version...
  1331.    (No, I don't propose to leave this in XaAES 1.0!;-))
  1332.  
  1333. NOTE: Martin's version of draw_2d_box() doesn't work, so I've not put it in.
  1334.  
  1335. o Widget bitmaps are now stored as icons in the system.rsc file.
  1336.   This means that one version of XaAES runs in all colour modes, and that
  1337.   widgets now appear correctly in 256 colour modes :)
  1338. o Fixed converting selected images of colour icons from one colour depth
  1339.   to a higher one.
  1340.  
  1341. [9/6/96]
  1342. o After a month of fiddling, finally got XaAES to talk to /dev/moose directly,
  1343.   so the seperate mouse server program is no longer required. This speeds
  1344.   things up a little as well because the extra overhead for the mouse pipe
  1345.   is removed.
  1346. o Sorted out some (if not all) of the problems with Johan's rectangle list
  1347.   code.
  1348.  
  1349. [14/6/96]
  1350. o When you click to drop down a menu, you can point at others to pull them
  1351.   down as well.
  1352. o "Click...hold...select-on-release" type selections added to the menubar
  1353.   handler.
  1354. o More fixes to rectangle list & window redraws.
  1355.  
  1356. ==============================================================================
  1357. Memory protection almost works now. Something in shel_write() breaks 
  1358. it if you issue shel_write() from any program apart from XaAES. It's 
  1359. strange, because the initial shel_write() calls when parsing xaaes.cnf 
  1360. don't break memory protection, but if you try to run something from 
  1361. Thing, XaAES will violate memory protection?
  1362. ==============================================================================
  1363.  
  1364. [16/6/96]
  1365. o Re-worked the object display code to use a jump table to seperate
  1366.   routines for each object type instead of the massive switch() 
  1367.   statements that were used before. This makes it easier to add new 
  1368.   object types and makes things a great easier to maintain (the old 
  1369.   version of display_object() was a real mess).
  1370. o Started adding new object type G_SLIST (scrolling list). ob_spec 
  1371.   should point to a SCROLL_INFO structure, which describes the actual 
  1372.   list. New functions in scrlobjc.c provide creation/addition/deletion
  1373.   support for scrolling list entries (as there will never be a 
  1374.   resource editor that supports them). I'll add an AES call interface 
  1375.   to these routines later.
  1376.  
  1377. [9/7/96]
  1378. o Added 'real-time' scrolling when dragging window sliders. This is a fairly
  1379.   minor mod in SCRLWIDG.C that uses the same set_widget_active() method as
  1380.   the arrow widgets. This option can be disabled in XA_DEFS.H using the
  1381.   REALTIME_SCROLL switch.
  1382.  
  1383. [10/7/96]
  1384. o Left hand button is now 'real-time' scroll, right is standard GEM scroll.
  1385.  
  1386.   
  1387. [24/7/96]
  1388. o Finished debugging realtime scrolling.
  1389. o G_SLIST objects now display pretty much correctly (in colour).
  1390. o Added "Task Manager" window, partly as I think it'll be useful
  1391.   and partly to test the G_SLIST object type (list of current
  1392.   AES clients).
  1393. o ALT+CTRL+L now opens the Task Manager.
  1394.  
  1395. ========================================================================
  1396. [2/8/96]
  1397. Got NVDI4 - argggh, now I know why people complain that XaAES
  1398. doesn't work very well with NVDI...stuff that worked with NVDI2.5
  1399. doesn't work at all with NVDI4.
  1400. ========================================================================
  1401.  
  1402. [6/8/96]
  1403. o Fixed NVDI4 compatibility.
  1404. o Reworked video mode select switches. -video now does ST/TT modes,
  1405.   new switch -fvideo does falcon special modes (via VsetScreen).
  1406.   Falcon owners can now access a decent selection of modes (like,
  1407.   2/4/16/256 color & loads of res's).
  1408.  
  1409. ========================================================================
  1410. [8/8/96]
  1411. Finally finished reboxing my falcon into an old Mac II box. They're a
  1412. perfect size to fit a falcon into...now I can get back to doing some
  1413. serious work :)
  1414. ========================================================================
  1415.  
  1416. [19/9/96]
  1417. o Bit of a boob here - I managed to delete the latest history file,
  1418.   so I've reverted to a backup (oops). So, a summary of what got done
  1419.   before now:
  1420.   - File selector (uses Tamminen Eero's directory code with my own
  1421.     wildcards + scroller)
  1422.   - Scroll list objects with icons
  1423.   - Task manager kill function
  1424.   - Launch app
  1425.   - lots of minor bugfixes (but I can't remember what they were).
  1426.  
  1427. [23/9/96]
  1428. o Finally fixed the bug in shell_write() that was breaking the
  1429.   memory protection...you can now run XaAES with MiNT memory 
  1430.   protection active!!!
  1431.  
  1432. ========================================================================
  1433. [16/10/96]
  1434. Deleted the history file by accident (again). Bugger. Here is a 
  1435. backup, with several of my most recent mods deleted.
  1436. ========================================================================
  1437.  
  1438. [16/10/96]
  1439. o Finished a (very) wide ranging overhall of the rectangle list
  1440.   handling. Reasons being: 
  1441.   1) My original scheme did naughty things like calling malloc() as a 
  1442.   result of wind_get() when generating WF_FIRSTXYWH. Ok when the
  1443.   command pipe was used for everything, a real no-no when wind_get()
  1444.   is called via the CALL_DIRECT method to improve performance. And 
  1445.   worse, my original code was dog slow as it re-generated the lists
  1446.   every time they were used, and called malloc() for every entry
  1447.   in every list individually.
  1448.   2) Johan's rect handling scheme also suffered from dodgy malloc's 
  1449.   in wind_get(), but not to the same extent as my original code. It
  1450.   was quicker as it re-used lists instead of regenerating every time,
  1451.   and used a block allocation scheme for list storage. Much faster,
  1452.   but the display bugs from it were pretty bad (I never managed to 
  1453.   chase them all).
  1454.   
  1455.   The new rectangle list handler takes the best ideas from Johan's
  1456.   code and incorporates them into a new scheme. Features of
  1457.   the new scheme are:
  1458.   - Memory is block allocated for each list via a single malloc().
  1459.   - Lists are re-used.
  1460.   - Lists are only re-generated when they have to be. The regeneration
  1461.     is more intelligent than the old verion in Johan's code as it
  1462.     uses a changed rectangle test as well as the original lower
  1463.     window test to check which windows have invalid lists.
  1464.   - The display glitches that dogged the last release are (I hope)
  1465.     all gone now.
  1466.   - No lists are generated (hence no memory is allocated) from within
  1467.     wind_get() so there is no danger of wind_get() breaking memory
  1468.     protection.
  1469.   
  1470.   This has taken bloody ages to do...the rect list stuff is integral
  1471.   to almost every aspect of the system!!!
  1472.  
  1473. [16/10/96]
  1474. o MiNT memory protection compatibility. Hurray for our side. The
  1475.   wind_get() generate_rectlist() calls were what was killing XaAES
  1476.   with memory protection turned on (it resulted in clients mallocing
  1477.   memory that would be tied into OS level structures but owned by
  1478.   client processes). Ta Da :) it works...now, gotta do some thinking
  1479.   about intercepting VA_PROTOCOL messages and copying them into
  1480.   global tagged memory buffers to stop VA_PROTOCOL from breaking
  1481.   mem protection...
  1482.  
  1483. [17/10/96]
  1484. o Added new functions to c_window.c for move and close windows. Should
  1485.   have done it ages ago really... XAwind_set(WF_CURRXYWH) now
  1486.   just calls move_window() and XAwind_close() calls close_window().
  1487.  
  1488. [19/10/96]
  1489. o Added blit support to the move_window() function - top window only,
  1490.   as handling the rect lists for non-top windows will need some 
  1491.   thought. It still makes things 'feel' much faster though as the
  1492.   most common window move is the top one...
  1493.  
  1494. ========================================================================
  1495. [20/10/96]
  1496. Beta 6 Released
  1497. ========================================================================
  1498.  
  1499. [6/11/96]
  1500. o Fixed the 'no parameters' bug. A physical workstation is now correctly
  1501.   opened to the current res if no -fvideo or -video switch is given.
  1502.  
  1503. [16/12/96]
  1504. o Menu's are now drawn as proper object trees - not quite debugged properly
  1505.   yet - Lattice C's IDE still crashes rather big time, but Thing works
  1506.   ok (you get the lines as seperators).
  1507. o Narrowed the window borders down 'coz everyone hated the old ones.
  1508.  
  1509. [25/2/97]
  1510. o Finally got my re-work of the menu's to work. Full object tree's
  1511.   are now used correctly (including progdefs in menu's as used in
  1512.   Lattice C's IDE).
  1513. o Added extra code check for already being in Supervisor mode in
  1514.   objects.src/progdef.c - this allowed me to turn CALL_DIRECT on again
  1515.   without Thing crashing.
  1516.  
  1517. ========================================================================
  1518. Oops. Not been writing these down lately. Can't rightly remember what
  1519. I've done to the code...luckily (if you can call it that) no-one else
  1520. has sent me any mods in ages so I've not got to describe anyone elses
  1521. work.
  1522. ========================================================================
  1523.  
  1524. [16/5/97]
  1525. o Anyway, added new functionality in kernal to call 'active_function'
  1526.   with a given frequency if required (gonna use it for menus).
  1527. o Added extra debug op-code to the API, for use with DU Debug
  1528.   (when I get round to adding the other end support).
  1529.  
  1530. [17/5/97]
  1531. o Menus using the new non-blocking scheme work now.
  1532. o Fix to make menu bar width match screen width.
  1533. o Speeded up menu tracking response.
  1534.  
  1535. [19/5/97]
  1536. o Added a kludge version of mouse rectangle tracking, not at all
  1537.   good and I'll replace it ASAP.
  1538. o Fixed a memory leak in the AES messaging system.
  1539.  
  1540. [20/5/97]
  1541. o New version of moose.xdd that supports button release
  1542.   events as well as clicks.
  1543. o Added support to evnt_button & evnt_multi() for button
  1544.   release events.
  1545. o Tidied up the window work area calculation and display
  1546.   (removes display glitches in most window apps).
  1547. o Info widget now matches rest of the look & feel of the windows.
  1548. o Desktop size now returns correctly, so Lattice C
  1549.   will now work in 640*XXX modes (it always worked in higher
  1550.   res modes).
  1551. o Tagged backgrounds of system dialogs & alert boxes as colour 0,
  1552.   fill transparent + 3D attributes, making them system-dialog-background
  1553.   coloured. Now you can actually see them on a mono system.
  1554.  
  1555. [21/5/97]
  1556. o New Salert() (/pipe/ALERT) handling code, prevents screen corruption
  1557.   when a program exits and also lets you review error messages.
  1558.   What you get now when a program crashes is a nice alert box (like
  1559.   using the old MiNT ALERT.ACC program), and also a log window which
  1560.   keeps a list of Salert() messages that you can scroll through. This
  1561.   window is accessed via a new option on the XaAES system menu.
  1562.  
  1563. [22/5/97]
  1564. o It's now only possible to open one copy of the system alerts dialog
  1565.   and the task manager (it wasn't sensible to allow more).
  1566.  
  1567. [12/6/97]
  1568. o Replaced the polled from the main kernal mouse rectangle check with a
  1569.   multi-threaded checker instead.
  1570.  
  1571. ================= beta 7+ on the way (Johan) =====================
  1572.  
  1573. [980714]  (Well, that's how we write dates in Sweden ;-)
  1574. o I guess I should update this file once in a while, but the work
  1575.   on this release has been very diverse.
  1576.   Suffice it to say that lots of bugs have been fixed.
  1577.  
  1578.   Since I was going through all the sources anyway to get a good
  1579.   grip on things, I took the opportunity to clean them up.
  1580.   The style is now mostly identical to what K&R used in their book.
  1581.  
  1582. ===================== beta 7+ released ===========================
  1583.  
  1584.