home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / useful / dist / dev / lang / ace / docs / history < prev    next >
Encoding:
Text File  |  1993-07-10  |  25.3 KB  |  648 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 STRUCT
  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.               than the mantissa can hold.
  416.             - Added a FIX command (see ref.doc for details) which
  417.               alters the number of decimal places a FFP value is
  418.               rounded to.
  419.  
  420. 19/2/93            - Replaced _round routine in db.lib. This is used by    
  421.               by CINT and CLNG and wherever a float needs to be
  422.               rounded to an integer. The new version seems to be
  423.               faster than the old one which used fpa() and arnd().
  424.               The former only uses mathffp.library functions.
  425.  
  426. 20/2/93            - ACE v1.01 released.
  427.  
  428. *******************************************************************************
  429.  
  430. 28/2/93            - Work on ACE v1.02 commenced.
  431.  
  432.             - Added a compiler switch (-i) which makes an icon 
  433.               for the executable just created by ACE.
  434.             - Added ON <event-specifier> GOTO. This is in addition
  435.               to ON <event-specifier> GOSUB which was already
  436.               implemented.
  437.             - Changed all bsr and bra 68000 instructions to jsr
  438.               and jmp respectively in order to avoid the 32K
  439.               displacement limit. Moreover, some beq instructions 
  440.               have been replaced by a combination of bne and jmp 
  441.               to avoid this limit. This included changes to the
  442.               code for: IF, CASE, REPEAT..UNTIL, WHILE..WEND.  
  443.             - Fixed a bug whereby return code in d0 was being 
  444.               overwritten before the program ended, due to calls
  445.               to cleanup routines.     
  446.  
  447. 1/3/93            - Changed all occurrences of bsr in db.lib and 
  448.               startup.lib sources to jsr so as to avoid the 
  449.               32K limit mentioned above (28/2/93).
  450.             - Implemented KILL and NAME.
  451.             - ON..GOTO and ON..GOSUB implemented.
  452.  
  453. 6/3/93 - 10/3/93    - Rewrote SAY command in C and added support
  454.               for mode-array(7) and mode-array(8) such that
  455.               ACE SAY now allows for asynchronous speech.
  456.             - Moreover, a SAY(n) function has been added,
  457.               where SAY(0) returns -1 or 0 to indicate whether
  458.               there is active asynchronous speech, SAY(1) returns 
  459.               the mouth width and SAY(2) returns the mouth height 
  460.               corresponding to the phoneme being spoken. 
  461.  
  462. 14/3/93            - Added support for SAY mode-array element #6. This
  463.               allows for 12 different audio channel allocation
  464.               combinations as per AmigaBASIC. See ref.doc for more.
  465.             - Improved performance of INSTR function by only 
  466.               checking first character of target string against
  467.               each character in the source string until they
  468.               match. At this point a full sub-string comparison
  469.               is carried out.
  470.  
  471. 12/4/93            - Fixed a bug in shared library function declaration
  472.               code in which a search for a non-existent function
  473.               sometimes caused the compiler to hang. The routine
  474.               responsible was rewritten with a resultant speedup.
  475.  
  476. 13/4/93            - Fixed a bug which had been lurking for some time,
  477.               related to string variable assignments. A string
  478.               variable not declared with the STRING command was
  479.               not always being associated with a storage area.
  480.               In fact, only the first occurrence of the string
  481.               was being so associated. If this first occurrence
  482.               was in a CASE or IF statement, it might never be
  483.               reached with the consequence that the string
  484.               in question was associated with a random address
  485.               in memory! This is now fixed, so that each time
  486.               the string is assigned a value, it is bound to
  487.               its correct address. Obvious in hindsight.
  488.  
  489. 15/4/93            - Commodore Australia have given me permission to 
  490.               include the .bmap files in the ACE archive. I 
  491.               don't have this in writing yet though. ConvertFD 
  492.               can not be distributed however, so a completely
  493.               new (functionally equivalent) program will have
  494.               to be written. 
  495.  
  496. 16/4/93    - 17/4/93    - A couple of bugs which were related to the above
  497.               string bug (13/4/93) were fixed because they
  498.               were missed at the time and resulted in complaints
  499.               from A68K (legitimate ones) about unknown symbols.
  500.             - Testing has shown that a plethora of problems
  501.               of previously unknown origin were related to the
  502.               string bugs described above. Also, Michael 
  503.               Zielinski has reported that there are no longer 
  504.               any Enforcer hits from ACE now after the fixes
  505.               from 13/4/93.
  506.  
  507.  
  508. 18/4/93            - ACE v1.02 released.
  509.  
  510. *******************************************************************************
  511.  
  512. 9/5/93            - Work on ACE recommenced.
  513.  
  514.             - ARG$(0) added for access to a CLI command's name.
  515.  
  516. 11/5/93            - CHDIR command implemented.
  517.  
  518. 18/5/93 - 21/5/93    - Enhanced FILES command implemented. 
  519.  
  520. 30/5/93            - A few string functions (ARG$,SPACE$,STRING$,UCASE$)
  521.               were using a single buffer for each result
  522.               which was being overwritten during evaluation
  523.               of an expression such as: UCASE$(..) = UCASE$(..)
  524.               This was fixed by creating a temporary string
  525.               for each function call as with other string 
  526.               functions. 
  527.             - * INPUT$ still uses a single 32K buffer however! *
  528.  
  529. 6/6/93            - Command line argument handling routines completely
  530.               rewritten in C. This fixed an infrequent bug in 
  531.               which the last argument wasn't always being parsed
  532.               and enabled the correct parsing of quoted arguments.
  533.             - Added two new compiler switches: -E and -c. The
  534.               first creates a file called ace.err which contains
  535.               all the compile-time errors at the end of an ACE run.
  536.               The second includes each ACE source code line as a
  537.               comment in the assembly source code.
  538.  
  539. 7/6/93            - A bug in exec.library version checking was
  540.               preventing CLS from correctly changing the 
  541.               background colour after a COLOR command on 
  542.               machines higher than V37 (ie: Wb 3.0 machines 
  543.               like the A1200). This is now fixed.
  544.  
  545. 10/6/93            - Fixed a bug in which CLOSE was sometimes causing a
  546.               privilege violation processor trap. DOSBase wasn't
  547.               always being moved to a6 prior to calling the 
  548.               dos.library Close function (!). 
  549.  
  550. 12/6/93            - Added ptr_term() function between expterm() and
  551.               factor() in expression parser to correct the
  552.               precedence of !%, !& and !* operators.
  553.             - I have decided to leave SUB parameters as they
  554.               are for now. See ace.doc Subprograms section
  555.               for latest details.
  556.             - Added SLEEP command. So far only works when in
  557.               screen mode.
  558.  
  559. 13/6/93            - Fixed a bug in which insymbol() was being called
  560.               one too many times by the "@" code when the address
  561.               of a structure member was being found.
  562.             - Added code to address_of_object() (used by @ and
  563.               VARPTR) to find the address of an array element.
  564.               This code - and therefore @ and VARPTR - can now 
  565.               find the address of:
  566.             
  567.                     - simple variables
  568.                     - external variables
  569.                     - arrays
  570.                     - array elements
  571.                     - structures
  572.                     - structure members
  573.         
  574.             - Added a -l compiler switch which displays each
  575.               ACE program source line before it is compiled. 
  576.             - Implemented SWAP command ala AmigaBASIC. It swaps
  577.               simple and external variables, array elements,
  578.               structures or structure members.
  579.  
  580. 14/6/93            - Modified the handling of string value parameters
  581.               so that association with BSS storage occurs at the
  582.               start of subprogram execution rather than waiting
  583.               for an assignment. This fixes the address for the
  584.               life of the parameter. One consequence of this is
  585.               that VARPTR and @ correctly access the address
  586.               of the formal parameter, not the actual parameter.
  587.               This also ensures the correct handling of such
  588.               parameters by the SWAP command.
  589.  
  590. 19/6/93            - Modified address_of_object() so that when the
  591.               address of a structure variable is requested
  592.               with @ or VARPTR, the address of the variable
  593.               in the stack frame is returned, rather than the
  594.               start address of the structure. The latter can
  595.               still be obtained by simply referencing the
  596.               variable (eg: x = mystructvar). The modification
  597.               makes variable structure parameters possible 
  598.               (see ace.doc "Structures" for an example).
  599.  
  600. 20/6/93            - Made structures sharable with the SHARED statement.
  601.             - SUB parameters may now be preceded by SHORTINT,
  602.               LONGINT,SINGLE or STRING to indicate data type
  603.               rather than always having to use %,&,! or $.
  604.             - String array elements can now have a specifiable
  605.               size via a new SIZE option in DIM. 
  606.             - String variable declarations with STRING command
  607.               will now accept defined constants for the SIZE
  608.               option.
  609.  
  610. 29/6/93            - A bug in both BIN$ and OCT$ (such that negative 
  611.               values were being negated) was fixed.
  612.  
  613. 30/6/93            - ADDRESS data type added. This is really just an 
  614.               alias for LONGINT but it makes a lot more sense
  615.               when viewed in the context of a variable, parameter
  616.               or structure member which holds an address.
  617.             - It is now possible to declare a SUB to be of a
  618.               certain data type by using: LONGINT,SHORTINT etc.
  619.             - Shared structures worked fine when modifying/using
  620.               structure members, but not when modifying the
  621.               address held by the structure variable itself. 
  622.               This has been fixed.
  623.  
  624. 1/7/93            - ALLOC function implemented. This is a hassle-free
  625.               Unix-style memory allocator which makes use of
  626.               the Alloc/FreeRemember functions of Intuition.
  627.  
  628. 2/7/93            - Added ASSEM..END ASSEM for inline assembly code
  629.               inclusion.
  630.             - OPTION <switch>+|-[,<switch>+|-..] can now be 
  631.               used to set compiler directives as well as being
  632.               able to do so from the command line.
  633.  
  634. 3/7/93            - Fixed a bug in which the type of structure
  635.               members was not being correctly determined by
  636.               the SWAP command such that short integer and
  637.               string structure members were not being handled
  638.               properly.
  639.  
  640. 4/7/93            - SIZEOF now correctly returns the size of a
  641.               structure variable. Prior to today, only
  642.               the size of a structure definition was 
  643.               correctly returned. This was an oversight.
  644.  
  645. 10/7/93            - ACE version 1.1a released.
  646.  
  647. *******************************************************************************
  648.