home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 91 / af091a.adf / af91a1.lzx / Docs / history < prev    next >
Text File  |  2016-11-28  |  70KB  |  1,663 lines

  1.  
  2.                 -----------
  3.                 ACE history        
  4.                 -----------        
  5.  
  6. 2/3/92            - Version 1.0 released to testers.
  7.  
  8. 13/3/92         - Numerous bug fixes:
  9.                 - parameters were being corrupted in some
  10.                   complex recursive calls (see ackermann.b).
  11.                 - array referencing with float index in INPUT
  12.                   was corrupting the input value.
  13.                 - narrator library was being expunged after
  14.                   every SAY command -- now only expunged
  15.                   once at the end of the program.
  16.  
  17. 14/3/92            - Above fixes released to testers.
  18.  
  19. 22/3/92 - 27/3/92    - Added block comments {...}.
  20.             - Added forward SUB declarations.
  21.             - Made ALL shared variables call-by-reference.
  22.             - Local SUB string duplication bug fixed (same
  23.               BSS object name being given to numerous
  24.               strings in different subprograms). 
  25.             - Re-released to testers.
  26.  
  27. 4/4/92            - Fixed relational string operators >,<,>=,<=
  28.               so that proper lexicographical comparisons are
  29.               made. Even though = and <> worked fine before,
  30.               these have also been modified. All now use a
  31.               more efficient C-style _strcmp function. 
  32.  
  33. 5/4/92            - Update sent to testers.
  34.  
  35. 7/4/92            - Maximum duration for SOUND (in db.lib) changed
  36.               to 999 from 77 to accomodate large sound samples
  37.               (see play.b for an example).
  38.  
  39. 21/4/92            - Sequential files simplified: EOF no longer looks
  40.               for EOF character (ASCII 28), it just tries to
  41.               seek past the current position returning a seek
  42.               error if it can't (ie: EOF reached).
  43.             
  44. 22/4/92            - Made CLS 1.3 and 2.04 compatible (in db.lib).
  45.             - Added logical shift functions [SHL(n,m),SHR(n,m)].
  46.             - Added turtle graphics XCOR and YCOR functions.
  47.             - Fixed long integer SUB bug: when calling a long
  48.               SUB with bsr, A68K spat the dummy when it saw
  49.               a '&' (eg: bsr TEST&). All '&'s replaced by '@'s.
  50.             - Added Ctrl-C trapping to compiler. Partly works.
  51.             - Fixed HEADING so it's always non-negative.
  52.  
  53. 2/5/92 - 8/5/92        - Added screens, PALETTE, PAINT, SYSTEM, DATE$.
  54.             - Made CIRCLE rendering faster by using DrawEllipse()
  55.               if full 360 degree ellipse is requested.
  56.             - Updated ace.doc and noted that SADD is not required
  57.               for string constants (ie: it's optional).  
  58.  
  59. 12/5/92            - Incorporated command line arguments [argcount,arg$].
  60.  
  61. 16/5/92            - Added single precision MOD.
  62.             - Fixed OCT$ which was giving incorrect results
  63.               for high values. Now only handles positive LONGs.
  64.             - Added BIN$. Like OCT$, n=abs(n) [n is LONG].
  65.             - Added FRE(n), with extras (see ace.doc).
  66.             - Added POTX(n) and POTY(n), where n=0 or 1.
  67.  
  68. 17/5/92            - Fixed bug in _deletewindow (db.s): Contents of
  69.               location zero was being moved into window lists
  70.               instead of #0 (!).
  71.  
  72. 6/6/92            - Fixed RIGHT$ bug: was returning the NULL string
  73.               when requested sub-string length equalled string 
  74.               length.
  75.             - Modified MOUSE(1) and MOUSE(2) code to work when
  76.               an ACE screen is active.
  77.  
  78. 8/6/92            - Added WorkBench startup capability.
  79.             - Added REPEAT...UNTIL loop construct ala Pascal
  80.             - Added CASE...END CASE construct.
  81.             - Added DAY function.
  82.  
  83. 9/6/92            - Added two compiler options:
  84.             
  85.                 (i) Ctrl-C break trapping.
  86.                    (ii) Optimisation (peephole).
  87.  
  88. 11/6/92            - Added definable numeric constants.
  89.             - Incorporated a BORDERLESS window for each
  90.               user-defined screen to facilitate IDCMP
  91.               events. 
  92.             - INKEY$ can now be used to read keystrokes
  93.               from a user-defined screen's window.
  94.             - Fixed RAW: window routine bug. The same
  95.               Wdw-id was unwittingly being allowed to be 
  96.               used for more than one window creation.
  97.             
  98. 12/6/92            - Modified CLS to work with user-defined screens.
  99.  
  100. 13/6/92 - 14/6/92    - Incorporated external variables
  101.               and functions (C, assembler...).
  102.  
  103. 28/6/92            - Modified LOCATE to work with user-defined screens.
  104.             - Fixed exponentiation so that it always returns
  105.               a float, in case of a negative exponent.
  106.             
  107. 29/6/92            - Incorporated full 32-bit math. ACE is now Wb 2.0
  108.               *reliant* (due to use of utility.library):
  109.  
  110.                 (i) 32-bit division replaced 32-bit \ 16-bit.
  111.                    (ii) 32-bit MOD replaced 32-bit MOD 16-bit.
  112.                   (iii) Multiplication:
  113.                     
  114.                         - 16 x 16 bit integer (new).
  115.                         - 32 x 32 bit integer (new).
  116.                         - float x float.
  117.  
  118.                    (iv) Array index calculations now use 32-bit
  119.                     unsigned multiplication. This fixes the
  120.                     bug that disallowed absolute indexes of
  121.                     greater than 65535.
  122.  
  123.             - Fixed yet another bug in INPUT: string array input
  124.               was producing pointers which all lead to one string.
  125.             - Defined numeric constants can now be signed.
  126.  
  127. 30/6/92            - Added LOF(n) function.
  128.             - Modified WAVE statement so that size of waveform
  129.               table can be up to 131070 bytes (hardware limitation).
  130.             - Fixed CHR$ bug: LONG parameters weren't being 
  131.               coerced to SHORT.
  132.  
  133. 2/7/92            - Added the CSTR function.
  134.  
  135. 3/7/92            - Added the HANDLE(n) function.
  136.             - split db.s into db.s and turtle.s due to
  137.               link problems: Blink or ACE programs GURU when 
  138.               db.lib too big. 
  139.  
  140. 4/7/92            - Added optional variable declarations.
  141.             - Wrote a simple pre-processor for ACE: app,
  142.               to allow include files.
  143.  
  144. 7/7/92            - Added event trapping: BREAK,MOUSE,TIMER(n).
  145.             - MENU event trapping not yet complete since
  146.               menus themselves have to be implemented.
  147.             - Added CSRLIN and POS for screens only so far.
  148.             - Changed over from SetSignal() to CheckSignal()
  149.               for ctrl-c -b compiler option and BREAK event
  150.               trapping.
  151.  
  152. 16/7/92            - Added: 
  153.                  (i) ADDRESS option for DIM.
  154.                 (ii) SIZE option for STRING.
  155.                    (iii) increment and decrement operators.
  156.                 (iv) indirection operators: @,*%,*&,*!.
  157.  
  158. 17/7/92    - 19/7/92    - Improved efficiency of strings and string arrays. 
  159.               The modifications also allow strings and string 
  160.               arrays to be passed by reference. 
  161.               
  162. 20/7/92            - Modified LOCATE, POS and CSRLIN so they take 
  163.               account of the current font (in ScreenMode).
  164.             - Improved PRINTS so that it behaves in almost the 
  165.               same way as PRINT.
  166.     
  167. 28/7/92            - Added SIZEOF function.
  168.             - Fixed a long-standing bug that caused GURUs
  169.               during parameter passing when a context-switch
  170.               occurred, corrupting the stack. This is a short-term
  171.               fix only, and will be replaced by use of C-style
  172.               parameter passing.
  173.  
  174. 8/8/92 - 9/8/92     - Added structures.
  175.             - Modified VARPTR to handle structures.
  176.             
  177. 6/12/92            - Divided main linked library into functional modules
  178.               which are joined to produce db.lib. The code from
  179.               db2.lib and turtle.lib has been incorporated into
  180.               db.lib.
  181.  
  182. 6/12/92 - 7/12/92    - Further modularised compiler source files. I could
  183.               *really* use a make utility now!
  184.  
  185. 8/12/92            - Changed SHR and SHL code generation from lsr.l and
  186.               lsl.l to asr.l and asl.l respectively, in order to
  187.               handle shifts of negative numbers correctly! (oops)
  188.  
  189. 12/12/92 - 13/12/92    - Improved PAINT. Too much RAM was being reserved.
  190.  
  191. 12/12/92 - 13/12/92    - Added AREA, AREAFILL, PATTERN.
  192.  
  193. 13/12/92        - Added SCROLL, SPACE$.
  194.             - Fixed bug in PAINT: border color not being reset.
  195.  
  196. 21/12/92        - Improved LOF by using Seek() rather than
  197.               Examine() to find file length. This removed
  198.               the need to use the 2.04 function DupLockFromFH()
  199.               making LOF 1.3 compatible.
  200.             - Reverted to SetSignal() from CheckSignal() to
  201.               preserve 1.3 compatibility.
  202.  
  203. 22/12/92        - Replaced 32-bit integer math routines in  
  204.               utility.library with lmath.a routines from 
  205.               Sozobon's ZC.lib. This obviates the need for the 
  206.               2.04 utility.library making all ACE integer math 
  207.               1.3 compatible. The lmath.a module has been
  208.               incorporated into db.lib, with slight modifications
  209.               (source is called lmath.s).
  210.             - Brought DIM in line with AmigaBASIC. If a dimension
  211.               is specified as N, the resulting subscript range
  212.               is 0..N, rather than 0..N-1 (as it is in C and was
  213.               in ACE up until now).
  214.             - Removed reference to ACElibs: from libfunc.c, so 
  215.               this no longer has to be ASSIGNed in the user-startup
  216.               or startup-sequence script.
  217.               
  218. 26/12/92        - Added support for Workbench arguments in the form of
  219.               an include file (WBarg.h).
  220.  
  221. 27/12/92        - Modified APP so that an include file is only ever
  222.               included once per program. APP now also handles
  223.               single and multi-line comments ("'" and {..}).
  224.  
  225. 28/12/92 - 29/12/92    - Fixed some long-standing little bugs in the lexical
  226.               analyser.
  227.             - Moved the code for comments from the parser to the 
  228.               lexical analyser.
  229.             - Added the rest of AmigaBASIC's reserved words for 
  230.               completeness and because I may get around to
  231.               implementing some things that I didn't originally
  232.               think I would.
  233.             - Changed the lexical analyser's reserved word search
  234.               method from sequential to binary. This has resulted 
  235.               in a dramatic improvement in compilation speed 
  236.               (around twice as fast as before). I should have done
  237.               this a long time ago.
  238.             - Added code to prevent APP from looking for comments
  239.               inside string literals!
  240.             - Removed ++ and -- operators from factor() because
  241.               they are confusing (IMHO). Pre-increment (++) and
  242.               pre-decrement (--) can now only be applied to 
  243.               variables, not as part of an expression.
  244.  
  245. 30/12/92        - Added STRING$ and INSTR.
  246.  
  247. 1/1/93            - Added descriptions for ALL functions and commands
  248.               in ref.doc since some people using ACE won't have
  249.               the AmigaBASIC manual.
  250.  
  251. 5/1/93 - 6/1/93        - Work on sequential files:
  252.     
  253.                 - CLOSE can be used to close more than
  254.                   one file now, but at least one filenumber
  255.                   still has to be specified.
  256.  
  257.                 - Added LINE INPUT #filenumber,string-variable.
  258.  
  259.                 - Added INPUT$(X,[#]filenumber) and ditched
  260.                   INP$.
  261.  
  262.                 - Improved performance of all sequential file 
  263.                   functions in db.lib.
  264.     
  265.                 - Made file format produced by WRITE identical
  266.                   to AmigaBASIC.
  267.  
  268.                 - Added PRINT #filenumber,expression-list.
  269.     
  270.                 - Added INPUT#filenumber,variable-list.
  271.  
  272.             - ACE files are now very nearly identical to AmigaBASIC.
  273.  
  274. 12/1/93            - Fixed a bug in VAL that was causing numbers with
  275.               more than 8 decimal places to give weird results.
  276.             - In considering the use of double-precision math
  277.               in ACE, I have realised that Motorola FFP values
  278.               can handle up to 8 decimal places of accuracy,
  279.               whereas in AmigaBASIC, a number with >= 7 decimal
  280.               places is classed as a double-precision value. 
  281.               Given the degradation in accuracy which occurs
  282.               when more than 8 digits (counting both sides of 
  283.               the decimal point) are specified in an ACE FFP 
  284.               value, AmigaBASIC's double-precision convention
  285.               will probably be followed in ACE.
  286.             - Increased the size of the buffer for INPUT$ from
  287.               MAXSTRINGSIZE to MAXSTRINGSIZE*32 (32K currently)
  288.               to facilitate the reading of longer files.
  289.             - Made all library functions which impose a limit
  290.               upon the number of characters in a string or buffer
  291.               use MAXSTRINGSIZE-1 (changed string.s and file.s).
  292.  
  293. 13/1/93            - Stopped a large memory leak when ACE quits due to
  294.               an internal list memory allocation error. There
  295.               still seems to be a small leak however.
  296.             - Modified the bas script so that intermediate 
  297.               files are deleted after each stage of the compile-
  298.               assemble-link process. This frees up more RAM. 
  299.               
  300. 19/1/93            - Fixed a bug in the lexical analyser which was
  301.               returning a value of 1 for ANY number of the
  302.               form nnE[+|-]mm when mm was 0.
  303.  
  304. 20/1/93            - AREA was only allowing 19 points, not 20. Fixed this.
  305.  
  306. 21/1/93            - Fixed a weird AREAFILL and PAINT bug. Both of 
  307.               these routines allocate and initialise a temporary
  308.               rastport for area/flood filling. Although the
  309.               memory was being freed, the TmpRas pointer was
  310.               not zero'd. On the next call to PRINTS or Text()
  311.               a GURU 8100 000C resulted (recoverable alert under
  312.               2.04). It appears that Text() or some lower-level
  313.               graphics primitive tries to use an existing TmpRas
  314.               if one seems to exist. After making Rp->TmpRas=NULL
  315.               the bug disappeared.
  316.  
  317. 26/1/93            - Modified APP so that lines taken up by block
  318.               comments are represented by line-feeds in the
  319.               destination file so as to prevent line mismatches
  320.               between the latter and the source file. This still
  321.               doesn't get around the problem of line mismatches
  322.               caused by #include directives though. 
  323.  
  324. 31/1/93            - Changed effect of DEFDBL and <ident># so that 
  325.               they yield single-precision data types rather
  326.               than double-precision. This avoids any problems
  327.               further down the line (because double-precision
  328.               is not yet supported).
  329.  
  330. 2/2/93            - Added ctrl-c user break trapping to APP and 
  331.               improved the reliability of ACE's ctrl-c trapping.
  332.  
  333. 4/2/93            - ACE v1.0 released to the public! First started
  334.               work on ACE in October 1991.
  335.  
  336. *******************************************************************************
  337.  
  338. 6/2/93            - Work on ACE v1.01 commenced.
  339.  
  340.             - Improved compile-time error handling. Now, the
  341.               whole offending line is displayed and a carat
  342.               marks the place in the line where the error was
  343.               identified. The rest of that line is then ignored
  344.               so as to prevent further spurious errors. More 
  345.               work remains to be done for this revision on this.
  346.             - The observation was made that AmigaBASIC does NOT
  347.               evaluate exponentiation operations from right to
  348.               left as previously thought, but from left to right
  349.               as with all other operations. This obviates the
  350.               need to change ACE's exponentiation evaluation 
  351.               method. 
  352.             - AmigaBASIC does not allow a term of the form:
  353.               n^-m or n^(-m). ACE allows the latter but not
  354.               the former.
  355.              
  356. 7/2/93            - Fixed INPUT from RAW: windows so that the 
  357.               destructive backspace key actually erases text
  358.               as it does in a CON: window. The routine was 
  359.               also cleaned up in general and made more
  360.               efficient.
  361.             - Sequential file OPEN modes can now be upper
  362.               or lower case (ie: "I" or "i" etc).
  363.         
  364. 11/2/93            - Fixed the FOR loop index bug by not allowing
  365.               a shared variable to be used as the index.
  366.             - Trailing characters (other than '&') can now 
  367.                be used to coerce one numeric literal to 
  368.               another. Note that & and % have the same
  369.               effect as CLNG and CINT in ACE (ie: they
  370.               _always_ round up). 
  371.  
  372. 12/2/93            - String literals now need not have an end quote.
  373.               Such a string will be truncated at the end of 
  374.               the line.
  375.             - Fixed bug in LINE INPUT# whereby the variable's
  376.               data type was not correctly established if the
  377.               variable was declared with STRING.
  378.             - LINE INPUT# was also modified to accept a string
  379.               array as well as a simple string variable.
  380.  
  381. 13/2/93            - BASIC line numbers have been implemented for 
  382.               backward compatibility with old BASIC programs 
  383.               and for consistency with AmigaBASIC.
  384.  
  385. 14/2/93            - Fixed a bug in STRUCT..END STRUCT & CASE..END CASE
  386.               where blank lines caused spurious compilation errors.
  387.             - Changed a hard-coded X:Y screen ratio constant in the
  388.               turtle graphics section of db.lib to a data item 
  389.               which can be accessed/modified with ACE's EXTERNAL
  390.               directive (EXTERNAL _tg_xy_ratio).
  391.             - Made several compile-time errors "cleaner".
  392.  
  393. 15/2/93            - Improved error handling for undeclared arrays.
  394.             - Fixed a bug in INPUT#. It was crashing when the
  395.               file wasn't open or the file number was invalid.
  396.             - Rewrote VAL code in C. It now handles fixed-point
  397.               and exponential format single-precision values
  398.                 as well as decimal, octal and hexadecimal integers.
  399.               
  400. 16/2/93            - Rewrote _short_from_string and _long_from_string
  401.               in C. These routines are used by INPUT and INPUT#
  402.               to extract integer values from strings. Decimal,
  403.               octal and hexadecimal values may now be handled 
  404.               via INPUT and INPUT#.
  405.  
  406. 18/2/93            - Rewrote _strsingle which is used by PRINT#, WRITE#,
  407.               PRINTS and STR$ so that it produces fixed-point 
  408.               and exponential format single-precision output.
  409.               PRINT also uses this routine now. The new version
  410.               of _strsingle (written in C) is somewhat faster than 
  411.               the original which was badly coded in assembler.
  412.               A single-precision number is converted to the form:
  413.               -|+.mmmmmmmmE-|+nn by fpa(). If 7 <= nn < -6 the
  414.               number is displayed in exponential format.      
  415.             - Added a FIX command (see ref.doc for details) which
  416.               alters the number of decimal places a FFP value is
  417.               rounded to.
  418.  
  419. 19/2/93            - Replaced _round routine in db.lib. This is used by    
  420.               by CINT and CLNG and wherever a float needs to be
  421.               rounded to an integer. The new version seems to be
  422.               faster than the old one which used fpa() and arnd().
  423.               The former only uses mathffp.library functions.
  424.  
  425. 20/2/93            - ACE v1.01 released.
  426.  
  427. *******************************************************************************
  428.  
  429. 28/2/93            - Work on ACE v1.02 commenced.
  430.  
  431.             - Added a compiler switch (-i) which makes an icon 
  432.               for the executable just created by ACE.
  433.             - Added ON <event-specifier> GOTO. This is in addition
  434.               to ON <event-specifier> GOSUB which was already
  435.               implemented.
  436.             - Changed all bsr and bra 68000 instructions to jsr
  437.               and jmp respectively in order to avoid the 32K
  438.               displacement limit. Moreover, some beq instructions 
  439.               have been replaced by a combination of bne and jmp 
  440.               to avoid this limit. This included changes to the
  441.               code for: IF, CASE, REPEAT..UNTIL, WHILE..WEND.  
  442.             - Fixed a bug whereby return code in d0 was being 
  443.               overwritten before the program ended, due to calls
  444.               to cleanup routines.     
  445.  
  446. 1/3/93            - Changed all occurrences of bsr in db.lib and 
  447.               startup.lib sources to jsr so as to avoid the 
  448.               32K limit mentioned above (28/2/93).
  449.             - Implemented KILL and NAME.
  450.             - ON..GOTO and ON..GOSUB implemented.
  451.  
  452. 6/3/93 - 10/3/93    - Rewrote SAY command in C and added support
  453.               for mode-array(7) and mode-array(8) such that
  454.               ACE SAY now allows for asynchronous speech.
  455.             - Moreover, a SAY(n) function has been added,
  456.               where SAY(0) returns -1 or 0 to indicate whether
  457.               there is active asynchronous speech, SAY(1) returns 
  458.               the mouth width and SAY(2) returns the mouth height 
  459.               corresponding to the phoneme being spoken. 
  460.  
  461. 14/3/93            - Added support for SAY mode-array element #6. This
  462.               allows for 12 different audio channel allocation
  463.               combinations as per AmigaBASIC. See ref.doc for more.
  464.             - Improved performance of INSTR function by only 
  465.               checking first character of target string against
  466.               each character in the source string until they
  467.               match. At this point a full sub-string comparison
  468.               is carried out.
  469.  
  470. 12/4/93            - Fixed a bug in shared library function declaration
  471.               code in which a search for a non-existent function
  472.               sometimes caused the compiler to hang. The routine
  473.               responsible was rewritten with a resultant speedup.
  474.  
  475. 13/4/93            - Fixed a bug which had been lurking for some time,
  476.               related to string variable assignments. A string
  477.               variable not declared with the STRING command was
  478.               not always being associated with a storage area.
  479.               In fact, only the first occurrence of the string
  480.               was being so associated. If this first occurrence
  481.               was in a CASE or IF statement, it might never be
  482.               reached with the consequence that the string
  483.               in question was associated with a random address
  484.               in memory! This is now fixed, so that each time
  485.               the string is assigned a value, it is bound to
  486.               its correct address. Obvious in hindsight.
  487.  
  488. 15/4/93            - Commodore Australia have given me permission to 
  489.               include the .bmap files in the ACE archive. I 
  490.               don't have this in writing yet though. ConvertFD 
  491.               can not be distributed however, so a completely
  492.               new (functionally equivalent) program will have
  493.               to be written. 
  494.  
  495. 16/4/93    - 17/4/93    - A couple of bugs which were related to the above
  496.               string bug (13/4/93) were fixed because they
  497.               were missed at the time and resulted in complaints
  498.               from A68K (legitimate ones) about unknown symbols.
  499.             - Testing has shown that a plethora of problems
  500.               of previously unknown origin were related to the
  501.               string bugs described above. Also, Michael 
  502.               Zielinski has reported that there are no longer 
  503.               any Enforcer hits from ACE now after the fixes
  504.               from 13/4/93.
  505.  
  506. 18/4/93            - ACE v1.02 released.
  507.  
  508. *******************************************************************************
  509.  
  510. 9/5/93            - Work on ACE recommenced.
  511.  
  512.             - ARG$(0) added for access to a CLI command's name.
  513.  
  514. 11/5/93            - CHDIR command implemented.
  515.  
  516. 18/5/93 - 21/5/93    - Enhanced FILES command implemented. 
  517.  
  518. 30/5/93            - A few string functions (ARG$,SPACE$,STRING$,UCASE$)
  519.               were using a single buffer for each result
  520.               which was being overwritten during evaluation
  521.               of an expression such as: UCASE$(..) = UCASE$(..)
  522.               This was fixed by creating a temporary string
  523.               for each function call as with other string 
  524.               functions. 
  525.             - * INPUT$ still uses a single 32K buffer however! *
  526.  
  527. 6/6/93            - Command line argument handling routines completely
  528.               rewritten in C. This fixed an infrequent bug in 
  529.               which the last argument wasn't always being parsed
  530.               and enabled the correct parsing of quoted arguments.
  531.             - Added two new compiler switches: -E and -c. The
  532.               first creates a file called ace.err which contains
  533.               all the compile-time errors at the end of an ACE run.
  534.               The second includes each ACE source code line as a
  535.               comment in the assembly source code.
  536.  
  537. 7/6/93            - A bug in exec.library version checking was
  538.               preventing CLS from correctly changing the 
  539.               background colour after a COLOR command on 
  540.               machines higher than V37 (ie: Wb 3.0 machines 
  541.               like the A1200). This is now fixed.
  542.  
  543. 10/6/93            - Fixed a bug in which CLOSE was sometimes causing a
  544.               privilege violation processor trap. DOSBase wasn't
  545.               always being moved to a6 prior to calling the 
  546.               dos.library Close function (!). 
  547.  
  548. 12/6/93            - Added ptr_term() function between expterm() and
  549.               factor() in expression parser to correct the
  550.               precedence of !%, !& and !* operators.
  551.             - I have decided to leave SUB parameters as they
  552.               are for now. See ace.doc Subprograms section
  553.               for latest details.
  554.             - Added SLEEP command. So far only works when in
  555.               screen mode.
  556.  
  557. 13/6/93            - Fixed a bug in which insymbol() was being called
  558.               one too many times by the "@" code when the address
  559.               of a structure member was being found.
  560.             - Added code to address_of_object() (used by @ and
  561.               VARPTR) to find the address of an array element.
  562.               This code - and therefore @ and VARPTR - can now 
  563.               find the address of:
  564.             
  565.                     - simple variables
  566.                     - external variables
  567.                     - arrays
  568.                     - array elements
  569.                     - structures
  570.                     - structure members
  571.         
  572.             - Added a -l compiler switch which displays each
  573.               ACE program source line before it is compiled. 
  574.             - Implemented SWAP command ala AmigaBASIC. It swaps
  575.               simple and external variables, array elements,
  576.               structures or structure members.
  577.  
  578. 14/6/93            - Modified the handling of string value parameters
  579.               so that association with BSS storage occurs at the
  580.               start of subprogram execution rather than waiting
  581.               for an assignment. This fixes the address for the
  582.               life of the parameter. One consequence of this is
  583.               that VARPTR and @ correctly access the address
  584.               of the formal parameter, not the actual parameter.
  585.               This also ensures the correct handling of such
  586.               parameters by the SWAP command.
  587.  
  588. 19/6/93            - Modified address_of_object() so that when the
  589.               address of a structure variable is requested
  590.               with @ or VARPTR, the address of the variable
  591.               in the stack frame is returned, rather than the
  592.               start address of the structure. The latter can
  593.               still be obtained by simply referencing the
  594.               variable (eg: x = mystructvar). The modification
  595.               makes variable structure parameters possible 
  596.               (see ace.doc "Structures" for an example).
  597.  
  598. 20/6/93            - Made structures sharable with the SHARED statement.
  599.             - SUB parameters may now be preceded by SHORTINT,
  600.               LONGINT,SINGLE or STRING to indicate data type
  601.               rather than always having to use %,&,! or $.
  602.             - String array elements can now have a specifiable
  603.               size via a new SIZE option in DIM. 
  604.             - String variable declarations with STRING command
  605.               will now accept defined constants for the SIZE
  606.               option.
  607.  
  608. 29/6/93            - A bug in both BIN$ and OCT$ (such that negative 
  609.               values were being negated) was fixed.
  610.  
  611. 30/6/93            - ADDRESS data type added. This is really just an 
  612.               alias for LONGINT but it makes a lot more sense
  613.               when viewed in the context of a variable, parameter
  614.               or structure member which holds an address.
  615.             - It is now possible to declare a SUB to be of a
  616.               certain data type by using: LONGINT,SHORTINT etc.
  617.             - Shared structures worked fine when modifying/using
  618.               structure members, but not when modifying the
  619.               address held by the structure variable itself. 
  620.               This has been fixed.
  621.  
  622. 1/7/93            - ALLOC function implemented. This is a hassle-free
  623.               Unix-style memory allocator which makes use of
  624.               the Alloc/FreeRemember functions of Intuition.
  625.  
  626. 2/7/93            - Added ASSEM..END ASSEM for inline assembly code
  627.               inclusion.
  628.             - OPTION <switch>+|-[,<switch>+|-..] can now be 
  629.               used to set compiler directives as well as being
  630.               able to do so from the command line.
  631.  
  632. 3/7/93            - Fixed a bug in which the type of structure
  633.               members was not being correctly determined by
  634.               the SWAP command such that short integer and
  635.               string structure members were not being handled
  636.               properly.
  637.  
  638. 4/7/93            - SIZEOF now correctly returns the size of a
  639.               structure variable. Prior to today, only
  640.               the size of a structure definition was 
  641.               correctly returned. This was an oversight.
  642.  
  643. 10/7/93            - ACE version 1.1a released.
  644.  
  645. *******************************************************************************
  646.  
  647. 4/9/93            - Work on ACE v2.0 commenced.
  648.  
  649. 4/9/93 - 12/9/93    - Flexible serial I/O support added to ACE. Up to
  650.               255 channels are supported.
  651.             - ERR function added (serial errors only so far).
  652.  
  653. 25/9/93            - Serial I/O routines tidied up. 
  654.             - ERROR trapping implemented (serial errors only 
  655.               so far).
  656.  
  657. 26/9/93            - Buffered file I/O error codes added. These are
  658.               returned by ERR and recognised by ON ERROR.
  659.  
  660. 10/10/93        - TAB function now works for screens.
  661.             - Implemented PTAB function.
  662.             - Made PRINT command screen/window mode transparent.
  663.             - This is all part of a conspiracy to make ACE able
  664.               to handle Intuition and DOS windows completely
  665.               transparently. Next comes INPUT transparency. 
  666.               
  667. 11/10/93        - Made INPUT command screen/window mode transparent!
  668.             - Implemented SPC function.
  669.  
  670. 24/10/93        - Extended ctrl-c break trapping to screen mode.
  671.  
  672. 24/10/93 - 25/10/93    - Intuition windows implemented! ACE now allows
  673.               for windows on screens! In fact, all windows
  674.               except the shell/CLI are now Intuition windows
  675.               in ACE. Next comes menus and gadgets...
  676.             - Added WINDOW(12) and WINDOW(13) which return
  677.               font width and height (respectively) for the
  678.               current output window.
  679.             - Screen colours are now adopted from Workbench
  680.               as per AmigaBASIC.
  681.  
  682. 26/10/93        - Window close event trapping implemented. Since
  683.               ACE doesn't automatically handle the closing of
  684.               windows when the close gadget has been clicked,
  685.               a compiler switch (-w) and user-defined event
  686.               trapping was deemed to be the best way to handle 
  687.               this.
  688.             - Fixed yet another bug in CLS which was causing
  689.               the print position to be incorrectly aligned in
  690.               Intuition windows.
  691.  
  692. 1/11/93            - ACE windows now handle certain control characters
  693.               (ASCII: 7,8,9,10,12,13) in exactly the same way as
  694.               AmigaBASIC, eg: CHR$(7) rings the BELL!
  695.             - Implemented boolean gadgets and gadget WAITing.
  696.               Next comes gadget event trapping, a gadget function,
  697.               string and proportional gadgets, as well as some
  698.               tidying up.
  699.  
  700. 2/11/93            - Implemented GADGET(n) function and ON GADGET event
  701.               trapping.
  702.  
  703. 6/11/93            - Implemented String and LongInt gadgets.
  704.  
  705. 7/11/93 - 8/11/93    - Implemented proportional gadgets (horizontal and
  706.               vertical sliders). 
  707.             - Window close gadget events are now passed on for
  708.               ON WINDOW or -w compiler switch trap handling.
  709.  
  710. 9/11/93 - 10/11/93    - Menus have finally been implemented in ACE!! This
  711.               includes menu command keys (keyboard shortcuts),
  712.               MENU WAIT command, MENU event trapping and MENU(n)
  713.               function.
  714.  
  715. 5/12/93            - MENU and GADGET trapping/WAITing now fully 
  716.               supports WINDOW close-gadget handling.
  717.             - WAIT GADGET 0 implemented: waits for ANY gadget.
  718.               This is in my opinion, the best method of dealing
  719.               with gadgets in ACE since it is very flexible and
  720.               CPU-nice. It is however modal.
  721.             - Fixed two bugs in the completely rewritten INPUT
  722.               code: no space after "?" and no scrolling after
  723.               INPUT at bottom of window. 
  724.  
  725. 15/12/93        - Fixed PRINT/PRINTS/PRINT# inability to accept 
  726.               some parameters delimited only by spaces. ACE 
  727.               seems to accept just about anything delimited
  728.               by spaces now (or of course by commas/semicolons).
  729.             - Fixed a long-standing bug in which the compiler
  730.               would incorrectly parse IF .. THEN PRINT ELSE ..
  731.               such that ELSE was ignored. This works fine now.
  732.  
  733. 16/12/93 - 17/12/93    - Fixed BSS structure object alignment so that
  734.               all such structures will be long-word aligned.
  735.             - Reduced the amount of code written to the target
  736.               file when internal compiler errors occur to a
  737.               short skeleton program. This may yet be further
  738.               minimised.
  739.             - I have started the process of improving the
  740.               efficiency of the compiler's memory management
  741.               routines by using code similar to the ALLOC
  742.               function in ACE as well as trying to reduce
  743.               the size of each node in the symbol table. 
  744.             - The arbitrary DIM limit of 10 dimensions has
  745.               been removed; 255 are now allowed as per 
  746.               AmigaBASIC.
  747.  
  748. 17/12/93 - 18/12/93    - Memory management and efficiency improvement 
  749.               continues.
  750.             - The compilation line number indicator has been
  751.               streamlined to cut down on I/O and improve its
  752.               appearance.
  753.             - Memory leaks now seem to be "capped".
  754.             - The arbitrary SHARED limit of 40 has been lifted.
  755.             - Fixed a problem caused by editors which don't
  756.               automatically append a line-feed (ASCII 10)
  757.               to the end of a file, such that the last line
  758.               of a program wasn't being parsed.
  759.             - SERIAL OPEN randomly generating ERR=300 (OPEN_ERR).
  760.               Probably caused by OpenDevice() result not being
  761.               coerced from BYTE to ULONG (??). Fixed this.
  762.             - Fixed a bug in which insufficient memory was
  763.               being allocated to hold DIM index information. 
  764.  
  765. 24/12/93        - CHR$(13) now only performs a CR (in user-defined
  766.               windows) as per the CON: and RAW: windows.
  767.               In AmigaBASIC, CHR$(13) does the same as CHR$(10), 
  768.               ie: LF.
  769.             - Appended ASL library stub (generated by genstubs)
  770.               to ACE's ami.lib so that ASL file requesters can
  771.               be used by FILEBOX$ function (see below).
  772.             - Implemented MSGBOX and FILEBOX$ functions which
  773.               easily allow the ACE programmer to invoke system 
  774.               and file requesters respectively. Thus far only
  775.               the ASL file requester has been implemented. The
  776.               next step is to test for the operating system
  777.               version at run-time and call different file
  778.               requester code for Amigas running anything less
  779.               than 2.04.
  780.             - Started writing the code for an IDE so that ACE
  781.                can be run from the Workbench. This will be
  782.               developed over the coming months, but a simple
  783.               version should be working within days.
  784.  
  785. 25/12/93        - Yes I know it's Xmas. It's also 1 am. 
  786.               So I'm a fanatic! :-).
  787.             - I have *finally* found the ZC code which causes
  788.               the conflict with ACE's ctrl-c trapping mechanism.
  789.               Upon examination of the ZC source code, I found
  790.               the culprit to be a function called Chk_Abort().
  791.               This I redefined (in misc.c of ACE's source code)
  792.               to do nothing except return 0. This redefinition
  793.               has also been made in app.c.
  794.             - APP now uses the alloc()/free_alloc() functions
  795.               for handling memory allocations. 
  796.  
  797. 26/12/93        - Modified ACE so that the ".b" extension can be
  798.               used. This is still optional though. The main
  799.               reason for doing this was to accomodate TDS's
  800.               (Twilight Development System, an excellent
  801.               shareware IDE) apparent need to have the
  802.               extension of source files made explicit.
  803.             - Fixed MsgBox so that it works correctly under
  804.               Wb 1.3. The requester wasn't taking on the
  805.               correct proportions.
  806.             - Added support for a Wb 1.3 FILEBOX$. It requires
  807.               the arp.library. I may eventually replace this
  808.               with standalone code (when I get time to write 
  809.               a nice, simple file requester or some kind soul
  810.               gives me the source for one).
  811.  
  812. 27/12/93        - Implemented "SYSTEM command-string" which has the
  813.               same effect as Execute(command-string,0L,stdout).
  814.             - Finally got around to implementing DEF FN, as a 
  815.               simple variation on SUB.
  816.  
  817. 28/12/93        - Optional parameter is now legal in ACE's RND
  818.               function. It is currently only a dummy.
  819.             - FileBox$ modified so that a single string
  820.               parameter is required. This allows a title
  821.               for the requester to be supplied (eg: "Open"). 
  822.  
  823. 2/1/94            - As promised above (see 24/12/93) I've written
  824.               a simple IDE for ACE called AIDE. This is 1000
  825.               lines of ACE code and the results are fairly
  826.               pleasing. The source code for this program
  827.               will be included in the archive as an example
  828.               of what can be done with some of ACE's more
  829.               recent features. AIDE currently only runs
  830.               properly under Wb 2.04 (and up).  
  831.             - Fixed a bug in which IF..THEN struct->member...
  832.               was causing an Undeclared label error!
  833.             - Changed the return values of MsgBox to -1 and 0
  834.               instead of 1 and 0 so that "OK" (or whatever the
  835.               first gadget is) can be seen as a boolean TRUE.
  836.             - String structure members didn't allow a named 
  837.               numeric constant to be given for the optional 
  838.               SIZE parameter, but they do now.
  839.             - String array, structure member and variable 
  840.               declarations allowed a string of non-positive
  841.               size. This has been fixed.
  842.  
  843. 3/1/94            - I started out with the simple intention of
  844.               adding a bit more compatibility to ACE's
  845.               shared library function handling and ended
  846.               up with almost total compatibility with
  847.               AmigaBASIC. Only "almost" because shared
  848.               library function declarations are still
  849.               mandatory in ACE. That's now the only
  850.               difference. The previous ACE syntax is
  851.               still supported though.  
  852.              
  853. 4/1/94            - I have written an ACE program (autonum.b) 
  854.                 which takes the drudgery out of maintaining
  855.               the line number references to the sections
  856.               in ace.doc and also adds page numbers.
  857.         
  858. 5/1/94            - Implemented a SYSTEM function which returns
  859.               ExecBase->libNode.lib_Version (eg: 34 = Wb 1.3).
  860.  
  861. 6/1/94            - After some false starts, I've added "EXIT FOR"
  862.               which provides a (read: THE) clean way of exiting 
  863.               from a FOR..NEXT loop in ACE.
  864.             - Implemented INPUTBOX and INPUTBOX$! I took the
  865.               syntax from Visual Basic's functions of the same
  866.               names. ACE now has 3 standard requester types.
  867.  
  868. 7/1/94            - Completed the last bits of improving the
  869.               efficiency of ACE's memory allocation routines.
  870.               I couldn't get it to produce any memory leaks.
  871.  
  872. 8/1/94            - Well, I thought I was finished with the memory
  873.               allocation stuff from yesterday, but I decided
  874.               to try speeding things up some more. This I have
  875.               done by decreasing the number of allocation
  876.               function calls by half for the code list. I've
  877.               also switched to ZC.lib's malloc() & free() which
  878.               seem to be solid.
  879.             - Tested ACE on an A1200 this morning. It seems fine
  880.               although a "Magic Menus" commodity didn't get along 
  881.               too well with ACE's menus.
  882.             - Just finished my standard pre-release testing run 
  883.               of ACE which involves compiling and running over
  884.               50 programs under Wb 2.04. A number of programs
  885.               were also tested under Wb 1.3 with and without
  886.               fast RAM switched on.
  887.  
  888. 9/1/94            - Fixed a bug which made A68K generate syntax errors 
  889.               because some label names conflicted with assembly 
  890.               keywords (CPU register names to be specific).
  891.             - In the process I found a couple more bugs:         
  892.               variables starting with an underscore but with
  893.               no trailing type character were not being assigned
  894.               a data type; DEF FN return values were not always
  895.               being coerced correctly.
  896.             - Everything from yesterday is now being re-tested.
  897.  
  898. 10/1/94            - Fixed a bug in which ACE tried to clean up
  899.               asynchronous speech when the narrator.device
  900.               was not present and SAY had aborted. Sigh. 
  901.               Another testing run me-thinks.
  902.  
  903. 12/1/94 - 13/1/94    - Peter Zielinski (Sydney) has been testing ACE the 
  904.               last couple of days and found a problem in which 
  905.               menus looked weird with some fonts. This has been 
  906.               fixed.
  907.             - I realised that there would be a similar problem
  908.               with InputBox$ and fonts other than Topaz 8. This  
  909.               function has been modified to handle non-topaz-8
  910.               requester title fonts, but Topaz 8 is used for
  911.               the requester prompt and boolean gadget text.
  912.             - Fixed a bug in which LIBRARY CLOSE (used without  
  913.               a specific library name) was producing incorrect
  914.               library base names for libraries not on ACE's
  915.               standard libraries list (ie: those opened at
  916.               the start of a program run and closed at the end)
  917.               resulting in an undefined label error from A68K.
  918.             - Also, a library base (again, for non-ACE-listed
  919.               libraries) now gets zeroed after a call to ACE's   
  920.               _close_library routine in case it's closed again
  921.               (_close_library check for NULL).
  922.  
  923. 14/1/94            - Improved menu text rendering by using the graphics
  924.               library TextLength() function to get more precise
  925.               widths for menu titles and items.
  926.  
  927. 15/1/94            - Fixed a bug in which INPBOX[$] was growing in
  928.               size (from the bottom) when called multiple times
  929.               with a non-topaz font as the screen font.
  930.             - Tried many things to fix a bug in which INPUTBOX[$]
  931.               gadgetry display gets corrupted by _some_ fonts.
  932.             - Improved INPUTBOX[$] by making the string gadget
  933.               active when the requester is rendered. This means
  934.               that the user doesn't have to select the string
  935.               gadget before entering text into it. 
  936.             - Tweaked the width of menu item text highlighting.
  937.             - AIDE has been steadily improved over the last week.
  938.  
  939. 16/1/94            - Tested all example programs under 2.04 and 1.3
  940.               (and also with NoFastMem under 1.3).
  941.  
  942. 19/1/94            - ACE version 2.0 released.
  943.  
  944. *******************************************************************************
  945.  
  946. 23/1/94            - Work on ACE recommenced.
  947.     
  948.             - Fixed a bug in val.c: val() and long_from_string()
  949.               were not skipping leading whitespace (<= ASCII 32).
  950.               VAL and INPUT use these functions. So does INPUT#
  951.               but it does its own whitespace skipping.
  952.               I am stunned that this bug has been around since
  953.               February 1993! That's when I rewrote the code from
  954.               assembler (the latter DID skip leading whitespace).
  955.               This is a good example of how it is still possible 
  956.               to overlook simple bugs no matter how much testing 
  957.               you do. I'm just amazed I never caught this one!!
  958.               I found this bug two days after the release of
  959.               version 2.0 :(. Sigh.
  960.  
  961.             - Added a "Run in Shell..." option to AIDE's 
  962.               Program menu (see AIDE.doc). This also handles
  963.               command-line arguments. The "Execute..." I/O window 
  964.               now has a close gadget rather than prompting for
  965.               the 'C' key to be pressed since the latter may fail 
  966.               if the command being executed fails. 
  967.  
  968. 24/1/94            - AIDE: Added code to properly handle 
  969.               multiple "Execute..." and "Run in Shell..."
  970.               selections by using unique shell-startup script 
  971.               names.
  972.  
  973. 6/2/94            - More modifications to AIDE (now v1.02). See
  974.               "Changes" file in AIDE directory from now on.
  975.             - Added FONT and STYLE commands to ACE.
  976.  
  977. 7/2/94            - Implemented LONGINT(n) function.
  978.  
  979. 8/2/94            - ACE now accepts ".bas" extensions for the sake 
  980.               of compatibility with GW-BASIC, HiSoft BASIC etc.
  981.               AIDE and bas have been modified to handle ".bas" 
  982.               extensions also.
  983.  
  984. 15/2/94            - Implemented MESSAGE feature which provides a
  985.               simple interprocess communication facility.
  986.  
  987. 16/2/94            - SCREEN FORWARD and SCREEN BACK added to ACE. 
  988.  
  989. 26/2/94            - Structures may now have other structures as
  990.               members. To use them it is necessary to take
  991.               their address (with "@" or VARPTR) and assign
  992.               this address to a structure pointer of the 
  993.               member's type.
  994.             - FILEBOX$ now has an optional second parameter:
  995.               default-directory. A couple of people requested
  996.               this and I agree with its utility.
  997.  
  998. 27/2/94            - Added support for IFF graphic files. You can
  999.               open, view and get information about picture
  1000.               files in ACE via three commands and a function.
  1001.               See ref.doc under "IFF".
  1002.  
  1003. 28/2/94            - Weird bugs appeared in file I/O after adding
  1004.               the IFF module to db.lib. Excluding iff.o
  1005.               got rid of the problem. It remains out while
  1006.               I figure out the problem. I believe it to be
  1007.               a module/library size problem. This sort of
  1008.               thing has cropped up before.
  1009.  
  1010. 6/3/94            - It was pointed out to me by Chuck Kenny that 
  1011.               user-defined windows could be "lost" behind a
  1012.               screen's default window when the former are
  1013.               equipped with depth gadgets. Jeff Harris
  1014.               made me aware that this would occur if the
  1015.               borderless default window was not also a
  1016.               backdrop window. It wasn't, but now it is. :)
  1017.  
  1018. 7/3/94            - The GADGET statement now allocates memory
  1019.               for each boolean gadget's text and takes
  1020.               a copy of it. This avoids the problem of
  1021.               having the text in two or more buttons 
  1022.               changing when a single variable is used 
  1023.               for all the buttons. I had known about
  1024.               this problem for some time, but recent 
  1025.               discussions with Chuck Kenny and Kendall 
  1026.               Sears made me take definitive action. 
  1027.  
  1028. 20/3/94            - Today I began the process of trying to
  1029.               reduce db.lib module sizes so as to link
  1030.               less non-essential code to ACE executables.
  1031.               An average improvement of 10K has been made
  1032.               thus far, per executable (eg: from 45 to 35K). 
  1033.             - Work has been too busy of late to do any other
  1034.               serious work on ACE. Sigh.
  1035.  
  1036. 3/4/94            - More work on decreasing the size of library
  1037.               modules and limiting dependencies between them.
  1038.  
  1039. 4/4/94            - CLEAR ALLOC statement implemented. This command
  1040.               frees memory allocated by ALLOC at any time,
  1041.               allowing more intelligent use of ALLOC when
  1042.               memory is tight.
  1043.             - ALLOC's second parameter (mem-type) is now 
  1044.               optional. When not specified, or when outside
  1045.               the range 0..5 CLEARED+PUBLIC memory is allocated.
  1046.             - After the modifications to db.lib and a small bug
  1047.               fix in the IFF library module (a file wasn't being
  1048.               closed), the IFF commands and function seem to be
  1049.               coexisting peacefully with the rest of db.lib. 
  1050.  
  1051. 5/4/94            - Fixed a bug in which calls to INPUTBOX were
  1052.               interfering with the correct functioning of
  1053.               INPUTBOX$ by keeping longint string gadget
  1054.               mode and buffer length in force. Peter Zielinski
  1055.               found this problem and reported it to me.
  1056.  
  1057. 10/4/94            - OPEN's "A" (append) mode wasn't creating a new
  1058.               file if the specified file didn't exist! It only
  1059.               worked with files that existed. This was an
  1060.               incorrect interpretation on my part of what
  1061.               "append" mode meant in AmigaBASIC. Thanks to
  1062.               Peter (strikes again) Zielinski for pointing 
  1063.               this out to me.
  1064.             - Added (over the last few days) some more
  1065.               peephole optimisation code to ACE: integer sign 
  1066.               extension, constant negation. The former speeds 
  1067.               up IFS significantly (went from 372 to 507 peephole
  1068.               removals as the result of the new optimisations).
  1069.  
  1070. 11/4/94            - Bogus peephole removals were causing the failure
  1071.               of some programs. This has been fixed.
  1072.  
  1073. 23/4/94            - Window flags were being accumulated so that the
  1074.               type specification of a call to the WINDOW
  1075.               command was affecting subsequent calls (to WINDOW).
  1076.               This meant that if a window was specified as
  1077.               having a close gadget, _all_ later windows were
  1078.               "inheriting" a close gadget. :(
  1079.               Thanks to Kenneth Brill and Sean Miller for picking
  1080.               this one up and reporting it. This and the 5/4/94
  1081.               INPUTBOX[$] bug have taught me to be more careful    
  1082.               with static structures and their contents.
  1083.  
  1084. 30/4/94            - WINDOW OUTPUT was causing windows to be activated
  1085.               contrary to AmigaBASIC. This has been fixed.
  1086.             - I just realised that when no window type is
  1087.               specified in AmigaBASIC, the default is a type
  1088.               value of 31 (ie: the works). ACE has been changed
  1089.               to fall in line with this policy. You can still 
  1090.               specify zero for a window to have no gadgets etc.
  1091.             - I just found an undocumented feature in the 
  1092.               window module of ACE's run-time library. If a
  1093.               type of 32 is specified for a window, the window
  1094.               will be borderless! 
  1095.             - GADGET(1) now returns 256 if the window's close
  1096.               gadget was clicked after doing a GADGET WAIT 0.
  1097.             - It was also discovered that GADGET(1) was only
  1098.               returning valid values for gadget-ids from 1 to 9.
  1099.               Sigh. This has been fixed (allows 1 to 255 now).
  1100.  
  1101. 5/4/94            - Found and fixed two bugs related to MENU. Dan
  1102.               Oberlin reported that using LEFT$ in conjunction
  1103.               with MENU caused problems. Specifically I found
  1104.                 that menu item strings weren't being copied 
  1105.               (same problem as with GADGET command on 7/3/94)
  1106.               so that the LEFT$ buffer (one static buffer per 
  1107.               call to LEFT$) was being used as a source for 
  1108.               all menu items (eg. in a single menu). I also
  1109.               discovered much to my dismay that allocation
  1110.               for menu title strings (and now item strings)
  1111.               was not allocating memory for the end-of-string
  1112.               marker! Double sigh. This is probably the cause
  1113.               of the occasional mergings of characters in the
  1114.               menu bar I've observed. I'm also aware that an
  1115.               extra rightmost menu title appears when the 
  1116.               Magic Menu commodity is used. Thus far I've seen
  1117.               nothing in the MENU code to account for this.
  1118.  
  1119. 6/5/94            - Fixed a bug which has reared its head a number
  1120.               of times before but didn't seem to be repeatable
  1121.               or consistent. In the last week I have had 3 bug
  1122.               reports consistent with this kind of thing. A GURU
  1123.               (80000003) shows up either when the RMB is clicked
  1124.               numerous times in succession or when a window is
  1125.               closed. The first of these has been fixed by 
  1126.               utilising info' posted to the ACE list by Kendall
  1127.               Sears. This was a bug fix posted to BIX by Peter
  1128.               Cherna some time ago concerning the fact that
  1129.               if the IntuiMessage's IAddress field was being
  1130.               dereferenced before the Class of the message was
  1131.               ascertained. If the class wasn't GADGETUP, the
  1132.               IAddress field contained garbage. If this value
  1133.               was a non-longword aligned address, a 68000 CPU
  1134.               trap was invoked. I have yet to determine whether
  1135.               or not the window-close type bug is also related
  1136.               to this kind of dereferencing.
  1137.             - I also took this opportunity to add a call to
  1138.               sleep() before the gadget waiting code. This
  1139.               has been in use in the menu run-time code for 
  1140.               some time.
  1141.  
  1142. 13/5/94            - Opening a file in RAM: for "append" was not
  1143.               working under Wb 1.3. I modified the code to
  1144.               make this work for 1.3 and above, by not using
  1145.               MODE_READWRITE which seems to behave differently
  1146.               under 1.3 and 2.04.
  1147.  
  1148. 14/5/94-15/5/94        - Added SLEEP FOR <seconds> command. Someone asked
  1149.               for this recently (Tim Lewis as I recall) and I've
  1150.               thought about doing it for some time anyway. Why
  1151.               the "noise word" 'FOR'? It's easier to parse it
  1152.               this way (ie. disambiguation from SLEEP).
  1153.  
  1154. 5/6/94            - Fixed a bug in which VAL was returning garbage 
  1155.               from whitespace strings.
  1156.  
  1157. 12/6/94            - Implemented a mechanism to allow for multi-module
  1158.               ACE projects and/or the creation of ACE subprogram
  1159.               libraries. See ace.doc for more about this feature.
  1160.             - Added a push/pop pair for d1-d7 and a0-a6 around
  1161.               external function calls so as to prevent register
  1162.               corruption.
  1163.             - Added to the syntax of DECLARE FUNCTION so that
  1164.               external functions can now be declared via a 
  1165.               similar syntax to SUBs and library functions.
  1166.               The new syntax also allows for an external 
  1167.               function's parameter-list to be documented.
  1168.  
  1169. 20/6/94 - 23/6/94    - Completed work on external SUB definition and
  1170.               declarations. Subprograms in modules retain
  1171.               full functionality albeit with some specific
  1172.               requirements as laid out in ace.doc.
  1173.  
  1174. 24/6/94 - 25/6/94    - Implemented a bevel-box function to give gadgets
  1175.               the look-and-feel of Wb 2.x/3.0. This same
  1176.               function will also be used to implement a 
  1177.               command which allows ACE programmers to easily
  1178.               create bevel boxes. Thus far boolean & proportional
  1179.               gadgets have been converted. Note that GadTools
  1180.               library is NOT used to achieve the 3D beveled
  1181.               look in ACE.
  1182.  
  1183. 25/6/94            - GADGET MOD command added which allows proportional
  1184.               gadgets to be modified after creation. The knob
  1185.               position and maximum number of positions can be
  1186.               changed via this command. The latter is optional.
  1187.             - The keywords ON and OFF may now be used instead
  1188.               of 1 and 0 for the "status" parameter of the GADGET
  1189.               command. STRING, LONGINT, POTX and POTY can be
  1190.               used in place of the "type" parameter in the 
  1191.               GADGET command. In both cases, readability is
  1192.               improved dramatically for what is admittedly
  1193.               a somewhat overloaded command. A BUTTON keyword
  1194.               is also planned for the "type" parameter.   
  1195.  
  1196. 30/6/94            - Added string-gadget bevel-box code to bevel.c
  1197.               which all string gadgets now call to get the
  1198.               GadTools 3D look.
  1199.  
  1200. 6/7/94 - 7/7/94        - Finished tweaking 3D look of gadgets.
  1201.             - Gave InputBox[$] the new 3D look.
  1202.  
  1203. 10/7/94            - Now, if the first argument to the ACE command
  1204.               is "words" (must be lower-case), all reserved
  1205.               words for the current version of the compiler
  1206.               will be dumped to standard output.
  1207.             - BEVELBOX command implemented.
  1208.             - BUTTON keyword added for use in GADGET command.
  1209.               See entry for 25/6/94.        
  1210.             - BUTTON gadget text now uses color-id 1 in 
  1211.               accordance with Workbench (requester) gadgets.
  1212.  
  1213. 12/7/94            - Event trapping is now considerably more
  1214.               harmonious after centralising all Intuition
  1215.               message handling for event trapping (eg. for
  1216.               menus, gadgets, keypresses). The upshot is
  1217.               that event trapping can be mixed in any way
  1218.               the programmer wishes. This is of course, as
  1219.               it should be.
  1220.  
  1221. 14/7/94            - Longstanding PSET bug fixed. PSET didn't
  1222.               modify current output window pen position
  1223.               ready for next graphics operation. This is
  1224.               because WritePixel() alone was being used.
  1225.               Move() is also used now with a tiny penalty
  1226.               in time (~.2 seconds difference over a 10,000
  1227.               pixel plot). 
  1228.  
  1229. 24/7/94            - Fixed a bug in the peephole optimiser which
  1230.               tried to negate things other than immediate
  1231.               mode numeric literals.
  1232.             - Fixed a bug in INPUTBOX[$] code in which 
  1233.               an IntuiMessage field was being dereferenced
  1234.               in a situation in which it should not have
  1235.               been. This had the potential to cause a 
  1236.               GURU, although it never did for me.
  1237.             - Increased buffer for string/longint gadgets
  1238.               to 1024 characters (including NULL).
  1239.             - Also fixed a bug in which the right side of
  1240.               string/longint gadgets had a bite taken out
  1241.               when selected sometimes.
  1242.  
  1243. 24/7/94 - 26/7/94    - After finding that my last approach to improving
  1244.               event trapping was flawed, I had a rethink. The
  1245.               result was a that a lot of code was rewritten. The
  1246.               whole thing is now far simpler and more efficient.
  1247.  
  1248. 28/7/94            - Fixed a bug which was introduced in version 2.0
  1249.               of ACE in which CLS called ClearRaster() (instead
  1250.               of a console control string being executed as it
  1251.               is normally) for a shell window after the final 
  1252.               user-defined screen (when no windows were opened 
  1253.               by the program) had been closed. This resulted in 
  1254.               the shell's borders being erased.
  1255.  
  1256. 29/7/94            - Long-integer math routines modified to be
  1257.               compatible with C code which is linked to ACE
  1258.               programs as EXTERNAL FUNCTIONs. Some operands
  1259.               were previously passed in opposite order to
  1260.               that expected by C code (eg. n / m would have
  1261.               had to be coded as m / n).
  1262.  
  1263. 3/8/94            - ASSEM..END ASSEM was behaving oddly when blank
  1264.               lines were present. This has been fixed. However
  1265.               if anything appears on the same line as "ASSEM"
  1266.               that whole line is included. Also, if anything
  1267.               appears on the same line as "END ASSEM", that
  1268.               whole line is omitted.
  1269.  
  1270. 7/8/94            - Switched over to ILBM.library to get IFF commands
  1271.               and functions working in ACE. Need yet to allow
  1272.               HAM screen mode though via SCREEN command.
  1273.             - Fixed a (dumb) bug in which floating-point "--"
  1274.               function (SPSub) was not being externally 
  1275.               referenced correctly.
  1276.  
  1277. 10/8/94 - 11/8/94    - Added HAM and EXTRA_HALFBRITE screen modes (5,6)
  1278.               to ACE's SCREEN command! (Yippee! About time right?).
  1279.             - IFF commands/functions refined further. ACE now
  1280.               handles HAM pictures. If a picture doesn't display
  1281.               correctly when opened onto an ACE screen, simply
  1282.               allow ILBM.library to open its own screen & window.
  1283.  
  1284. 13/8/94            - Fixed a bug in WINDOW OUTPUT command: if the shell
  1285.               was made active via this command it was still being
  1286.               seen as being an Intuition window. :(
  1287.             - Re-implemented WINDOW(0) correctly after a recent
  1288.               conversation with Peter Zielinski and a question
  1289.               from Kimmo on the ACE list. It now returns the
  1290.               window-id of the selected output window.
  1291.  
  1292. 14/8/94            - Modified MsgBox so that it zero is returned if 
  1293.               button-text1 is NULL. 
  1294.             - Added ctrl-c break trapping to "ACE words"
  1295.               command.
  1296.             - WINDOW code was modified so that a copy of the
  1297.               window title text is made, for the same reason
  1298.               that menu and button text is copied (so it is
  1299.               static).  
  1300.  
  1301. 20/8/94            - Whenever a program uses IFF commands, ACE now
  1302.               looks in LIBS: to see whether the ILBM.library
  1303.               exists. If it doesn't, ACE _creates_ it, deleting
  1304.               it at the end of the program run. If the library
  1305.               already exists before the ACE program begins, it
  1306.               is simply used.
  1307.             - STYLE command extended to work in shells (console
  1308.               windows) as well as windows created with WINDOW.
  1309.             - Fixed a bug which caused some nested CASE statements
  1310.               to fail at assembly time.
  1311.             - ACE was looking at one byte too many when looking
  1312.               for a function name in .bmap files. Fixed this.
  1313.             - A WINDOW bug that gave _all_ windows a title bar 
  1314.               was fixed. This bug was introduced unintentionally
  1315.               via work done on 14/8/94.
  1316.  
  1317. 22/8/94            - Fixed a known bug in which an identifier which
  1318.               started with an underscore _always_ got a type
  1319.               of single-precision. Now an underscore can be 
  1320.               DEFxxx'd in the same way that A..Z can.
  1321.             - Added MESSAGE CLEAR command: removes all messages
  1322.               currently queued at a message port.
  1323.  
  1324. 24/8/94            - In recent times I had a number of reports of
  1325.               certain programs not working correctly on A1200s,
  1326.               involving the use of command line arguments. In
  1327.               fact, these programs (eg. FD2BMAP.b) were causing
  1328.               GURUs. I tracked this down to a call to AllocMem()
  1329.               which specified FAST RAM instead of PUBLIC RAM!!!!
  1330.               I have no idea why I would have done this!! The bug
  1331.               manifested itself when I ran NoFastMem on my A500,
  1332.               simulating the situation found on stock 2 Meg CHIP
  1333.               RAM A1200s. This has been fixed of course!
  1334.  
  1335. 26/8/94 - 27/8/94    - GADGET command now correctly handles Screen TextFont
  1336.               as set in Prefs (affects BUTTON and STRING/LONGINT
  1337.               gadgets).
  1338.  
  1339. 28/8/94            - Added SCREEN(4),SCREEN(5) and SCREEN(6) to return
  1340.               a screen's bitmap and x,y font sizes. The SCREEN
  1341.               function was also rewritten in C.
  1342.             - Changed temporary directory used by IFF READ to
  1343.               ram:ILBMtmp to avoid any complaints about making 
  1344.               the assumption that T: = ram:t. 
  1345.             - SHORTINT parameters to shared library functions 
  1346.               are now always sign-extended to avoid the need
  1347.               for explicit coercion to LONGINT.
  1348.             - MESSAGE WAIT no longer clears a message port of
  1349.               all "old" messages before waiting for a new one.
  1350.               MESSAGE CLEAR is now the only means by which this
  1351.               can be done.
  1352.  
  1353. 1/9/94            - MESSAGE READ now allocates memory for a simple 
  1354.               buffer if necessary.
  1355.             - DIM and DECLARE FUNCTION may now optionally be 
  1356.               followed by one of: SHORTINT, LONGINT, SINGLE, 
  1357.               ADDRESS or STRING.
  1358.             - The formal parameter list identifiers for DECLARE 
  1359.               FUNCTION may now optionally be preceded by one of 
  1360.               the above type identifiers.
  1361.  
  1362. 2/9/94            - The ALLOC function now also handles requests for
  1363.               MEMF_ANY. MEMF_ANY | MEMF_CLEAR has become the new 
  1364.               default. I was prompted to do this after a recent
  1365.               discussion on the ACE mailing list in which it was
  1366.               pointed out that the use of MEMF_PUBLIC memory as
  1367.               the default/norm is not really correct. See RKM
  1368.                 and Exec autodocs for more. 
  1369.             - ACE wasn't complaining when too few array indices
  1370.               were given. It does now.
  1371.  
  1372. 3/9/94            - MSGBOX is now also usable as a statement for those
  1373.               occasions when the return value from sysrequest() 
  1374.               is of no interest. The statement only takes two
  1375.               parameters, not three. See ref.doc for more.
  1376.             - Removed some redundant IDCMP handling code. This
  1377.               resulted in an increase in run-time efficiency. I
  1378.               also suspect that this redundant code caused the
  1379.               loss of a (small but annoying) number of intuition
  1380.               messages.
  1381.  
  1382. 3/9/94 - 4/9/94        - The address of external functions and subprograms
  1383.               can now be determined with VARPTR or the @ operator
  1384.               (see prgs/misc/Task for an example).
  1385.  
  1386. 9/9/94            - ++ and -- were not always correctly handling
  1387.               *external* variables. They do now.
  1388.             - External variable/function declarations can now
  1389.               use type keywords: SHORTINT,LONGINT,ADDRESS,
  1390.               SINGLE,STRING (functions only).
  1391.             - Explicitly disallowed external string variables
  1392.               because of the danger of trying to assign a value
  1393.               to an external character buffer of unknown size.
  1394.               It is still possible to treat such a buffer as
  1395.               an address which can be used when declaring a
  1396.               string variable or with CSTR. Functions can also
  1397.               return pointers to strings. They also didn't work
  1398.               properly before. :(
  1399.  
  1400. 10/9/94            - Occurrences of MEMF_PUBLIC changed to MEMF_ANY
  1401.               in all cases in compiler and library code except
  1402.               aceports.c (message ports).
  1403.             - Line continuation character ('~') implemented 
  1404.               allowing calculations, parameter-lists etc to
  1405.               be spread over multiple lines.
  1406.  
  1407. 11/9/94            - Added SERIAL(n,12) which returns the status of the
  1408.               port lines and registers associated with a serial
  1409.               channel.
  1410.             - ACE's "WORDS" parameter made case insensitive. 
  1411.             - Added ERR values for opening windows and screens.
  1412.             - Improved peephole optimisation further. Certain
  1413.               redundant register moves were not being removed.
  1414.               In the process of doing this, the optimiser had
  1415.               to be tightened up in places to prevent valid
  1416.               code from being removed.
  1417.             - Fixed Turtle Graphics aspect ratio so as to 
  1418.               correctly reflect screen mode.
  1419.  
  1420. 17/9/94            - ON ERROR trapping works for windows and screens
  1421.               now.
  1422.             - Fixed a bug in which spaces always printed in
  1423.               "legal" print rows. This conflicts with SETXY'd
  1424.               (or PRINTs following gfx commands) print positions. 
  1425.  
  1426. 18/9/94            - Version 2.29 released to several beta testers.
  1427.  
  1428. 1/10/94            - Fixed a bug which was introduced on the 1/9/94 such
  1429.               that a declaration like: DIM a(10),b(10),c$(10) 
  1430.               caused c$() to become a single-precision array!
  1431.             - Fixed a bug in EXTERNAL FUNCTION which was also 
  1432.               introduced recently (through accidental code 
  1433.               deletion), in which the absence of a type-word 
  1434.               (eg. SHORTINT) caused the command to be incorrectly 
  1435.               parsed. 
  1436.             - External string variables correctly re-implemented. 
  1437.               This assumes that the external string has been 
  1438.               declared as an array of characters ala C (tested with
  1439.               ZC and SAS/C), _not_ as a pointer to char! See entry 
  1440.               for 9/9/94.
  1441.  
  1442. 22/10/94        - ACE version 2.3 prepared for release (finally!).
  1443.  
  1444. *******************************************************************************
  1445.  
  1446. 27/2/95            - Work on ACE recommenced after a 5 month break
  1447.               during which time ReqEd was developed (and 2
  1448.               revisions released after v1.0), numerous fun
  1449.               programs were written by yours truly and a 
  1450.               zoo of bugs was uncovered. These are now my
  1451.               priority before adding further features. 
  1452.  
  1453.             - Fixed a bug in which too many gadgets were
  1454.               being refreshed when a gadget was modified,
  1455.               or removed and replaced. This sometimes
  1456.               resulted in ACE's 3D gadget imagery being
  1457.               mangled by old intuition imagery. 
  1458.  
  1459. 5/3/95            - Since bevelboxes were added to INPUTBOX[$]
  1460.               graphics.library has been required as well
  1461.               as intuition.library. This was not being
  1462.               explicitly opened, resulting in a GURU if
  1463.               some other command/function didn't open it.
  1464.  
  1465.             - Even when RANDOMIZE was used RND always returned
  1466.               the same first value. This has been corrected by 
  1467.               having RANDOMIZE call RND once.
  1468.  
  1469.             - Linkable subprogram modules were unable to 
  1470.               externally reference _EXIT_PROG in the main
  1471.               module requiring a kludgy workaround (see the
  1472.               Changes file in the latest version of the FontReq
  1473.               SUBmod). This has been rectified.
  1474.  
  1475. 10/3/95            - Fixed a bug in which certain shared library 
  1476.               function entries weren't recognised as being 
  1477.               in a bmap file because of ACE mistaking a zero
  1478.               byte in a function offset for the end of the 
  1479.               register list in certain entries.
  1480.  
  1481. 11/3/95            - ALLOC function was sharing code with an internal
  1482.               db.lib memory allocation function. This worked 
  1483.               fine so long as CLEAR ALLOC was never called.
  1484.               If db.lib had invoked any functions which called
  1485.               the alloc() function, CLEAR ALLOC caused the 
  1486.               memory so allocated to be freed! This kind of
  1487.               coincidence happened rarely enough for the bug
  1488.               to evade my notice for some time. When developing
  1489.               ReqEd, the bug bit me however. I chose to employ
  1490.               a workaround in that case, but have now made a 
  1491.               clear internal distinction between db.lib's and
  1492.               ALLOC's memory allocator.
  1493.             - While fixing the ALLOC bug, I noticed that in a
  1494.               couple of cases, internally (db.lib) allocated 
  1495.               memory wasn't being freed. This has been fixed.
  1496.             - Fixed the nasty array bug which was discussed 
  1497.               at length via the ACE mailing list in January.
  1498.               This involved ensuring that all occurrences of
  1499.               "(aN,d7)" were replaced by "(aN,d7.L)" so that
  1500.               d7 is considered to hold a LONGINT index for
  1501.               use with register indirect with displacement
  1502.               and index addressing mode.
  1503.             - Gadget imagery was being mangled when string,
  1504.               longint, potx and poty gadgets were closed.
  1505.               This has been fixed.
  1506.             - When button gadgets were closed and opened
  1507.               again using the same gadget-id, if no style
  1508.               parameter was specified upon reopening, the
  1509.               previous state (ON or OFF) was being retained!
  1510.               This was due to an internal flag not being
  1511.               reset when opening a gadget. This has been 
  1512.               fixed.
  1513.             - Fixed a bug in the peephole optimiser in 
  1514.               which code such as:     CONST x = -2 
  1515.                         y% = -x
  1516.               generated:
  1517.                         move.w #--2,-(sp)
  1518.               instead of:
  1519.                         move.w #2,-(sp)
  1520.  
  1521. 12/3/95            - Button gadgets may now have their text's font
  1522.               and style specified.
  1523.  
  1524.             - Version 2.35 prepared for release. This is only 
  1525.               a partial release: ace, db.lib ref.doc and this
  1526.               history log.
  1527.  
  1528.             - I expect there to be a few small releases (such
  1529.               as this one) in the next couple of months because
  1530.               it's the only way in which I can hope to provide
  1531.               ACE programmers with any updates at the moment.
  1532.               Work is very busy right now and study is keeping
  1533.               me busy at other times.
  1534.     
  1535. *******************************************************************************
  1536.  
  1537. 7/8/95 - 8/8/95        - Recommenced work on ACE.
  1538.             - SUBs may now be used as event handlers via
  1539.               ON <event> CALL <SUBname>. 
  1540.  
  1541. 5/10/95 - 6/10/95    - Received permission from Dr Peter Kittel to make
  1542.               the bmaps and ACE headers (converted from C by Nils
  1543.               Sjoholm) available to the ACE community. Fantastic!
  1544.             - Fixed a dumb bug which caused certain borderline 
  1545.               integers to be misclassified (ie. shortint instead
  1546.               of longint). This has been lurking for a long time
  1547.               but only recently caused problems. Thanks to Nils
  1548.               Sjoholm and Andrew Fineberg for alerting me.
  1549.             - Fixed a bug in ASSEM..END ASSEM in which certain
  1550.               assembly code caused "unknown symbol" errors.
  1551.  
  1552. *******************************************************************************
  1553.  
  1554. 3/11/95            - Fixed a bug in SAY command which prevented multiple
  1555.               SAYs when no mode array was supplied due to a bogus
  1556.               check for non-existent data. This managed to hide
  1557.               due to the fact that I almost always supply a mode
  1558.               array. John Mason reported this behaviour to me.
  1559.  
  1560. 5/11/95 - 6/11/95     - Exponentiation in ACE is now carried out via the
  1561.                IEEE single-precision function IEEESPPow() because 
  1562.               it is more accurate and handles negative base values 
  1563.               correctly. The parameters and result are converted 
  1564.               to and from IEEE format respectively. 
  1565.  
  1566.               This change was necessitated by a bug uncovered 
  1567.               when strange behaviour was reported by Petterri 
  1568.               Heikinnen, namely that if the base was negative 
  1569.               and the exponent odd, the result was positive! 
  1570.               This is manifestly a bug in the FFP mathtrans.library!! 
  1571.               Surely this has been observed before by others!? I am
  1572.               as surprised as ever about this one...
  1573.  
  1574.                Only in the event that mathieeesingtrans.library
  1575.                can't be opened will the FFP SPPow() function
  1576.                be used. Note that this should only happen on
  1577.                systems with an OS prior to Release 2.0. Note
  1578.                also that bogus results will be obtained via the
  1579.                FFP function if the base is negative. This doesn't
  1580.                seem to be worth producing a fix for since only old 
  1581.               systems will be affected.
  1582.  
  1583.               The following program ran in 5.4 seconds on my
  1584.               unaccelerated A1200 when the IEEE library was
  1585.               present and in 7.6 seconds when it was not:
  1586.                 
  1587.                 for i=1 to 10000
  1588.                     x = 2^3
  1589.                 next
  1590.  
  1591.               indicating an increase in performance with the
  1592.               IEEE function in use. This is despite the overhead
  1593.               involved in FFP <-> IEEE conversions.
  1594.  
  1595. 6/11/95            - Added GADGET OUTPUT command. See ref.doc for more.
  1596.               This uncovered a bug in which the default value of 
  1597.               a LongInt gadget was not being set at gadget creation
  1598.               time. It never showed up before because the only time
  1599.               the LongInt member of the StringInfo structure was
  1600.               examined was when a gadget event occurred by which time
  1601.               the LongInt structure member had been given a value.
  1602.               Since GADGET OUTPUT allows a LongInt gadget's value 
  1603.               to be queried at _any_ time, unless the gadget had 
  1604.               been modified (or the gadget selected), the LongInt
  1605.               field would still have been zero. This has been fixed
  1606.               by ensuring that the LongInt member is set when the
  1607.               gadget is created.
  1608.  
  1609. 7/11/95            - Added GADGET(4) which returns the address of the
  1610.               last gadget selected via a gadget event or a call
  1611.               to GADGET OUTPUT. This can then be used in conjunction
  1612.               with Intuition library functions such as ActivateGadget()
  1613.               and so GADGET(4) plays a similar role for gadgets as 
  1614.               WINDOW(7) and WINDOW(8) do for windows.
  1615.  
  1616. 4/12/95            - Changed maximum number of user-defined windows from
  1617.               9 to 16. The latter limit was imposed by the number
  1618.               of user task signals. Without employing a shared IDCMP
  1619.               for user-defined ACE windows, 16 would seem to be a 
  1620.               hard limit, and even this assumes that all 16 user
  1621.               signals are available.
  1622.  
  1623. 11/3/96 - 16/3/96    - Implemented random files after much thought about
  1624.               what was the best approach to take. ACE structures
  1625.               have been made central, such that far fewer commands
  1626.               and functions are necessary. See ace.doc and ref.doc 
  1627.               for details.
  1628.  
  1629. 11/6/96            - Added Common variables which behave identically to
  1630.               external variables except that they are defined 
  1631.               within the enclosing source module and are *exported*
  1632.               to other modules. So, one ACE module can contain a 
  1633.               common variable declaration, while another module can 
  1634.               externally reference this variable.
  1635.  
  1636.             - Tightened up error checking for external variables
  1637.               and functions, ie. the compiler will now issue a warning
  1638.               if there's a duplicate identifer.
  1639.  
  1640. 22/6/96            - Added Global variables which behave identically to
  1641.               external variables except that they are defined 
  1642.               within the enclosing source module. Unlike Common 
  1643.               variables, Globals are *not* exported to other modules.
  1644.               Like Common and External variables, Globals are static
  1645.               BSS objects. Also like Commons, Globals are intended
  1646.               for use in conjunction with SUBmods which require
  1647.               global data where the scope of the data is across 
  1648.               a whole module from the point of declaration. Only
  1649.               simple variables are catered for, not arrays or
  1650.               structures, although Commons and Globals may be 
  1651.               of type Address.
  1652.  
  1653. 23/6/96            - Changed ((STRPTR)-1) to -1& for definition of NM_BARLABEL
  1654.               in libraries/gadtools.h.
  1655.             - Added pad byte to NewMenu structure in libraries/gadtools.h
  1656.               since ACE makes no attempt to word-align structure members,
  1657.               only whole structures, which are longword-aligned.        
  1658.  
  1659. 19/7/96            - Added Menu(2) function to return menu subitem. This was
  1660.               put into place to support GadTools menus.
  1661.  
  1662. 4/9/96 - 9/9/96        - Added BLOCK..END BLOCK for true statement-blocks.
  1663.