home *** CD-ROM | disk | FTP | other *** search
-
- -----------
- ACE history
- -----------
-
- 2/3/92 - Version 1.0 released to testers.
-
- 13/3/92 - Numerous bug fixes:
- - parameters were being corrupted in some
- complex recursive calls (see ackermann.b).
- - array referencing with float index in INPUT
- was corrupting the input value.
- - narrator library was being expunged after
- every SAY command -- now only expunged
- once at the end of the program.
-
- 14/3/92 - Above fixes released to testers.
-
- 22/3/92 - 27/3/92 - Added block comments {...}.
- - Added forward SUB declarations.
- - Made ALL shared variables call-by-reference.
- - Local SUB string duplication bug fixed (same
- BSS object name being given to numerous
- strings in different subprograms).
- - Re-released to testers.
-
- 4/4/92 - Fixed relational string operators >,<,>=,<=
- so that proper lexicographical comparisons are
- made. Even though = and <> worked fine before,
- these have also been modified. All now use a
- more efficient C-style _strcmp function.
-
- 5/4/92 - Update sent to testers.
-
- 7/4/92 - Maximum duration for SOUND (in db.lib) changed
- to 999 from 77 to accomodate large sound samples
- (see play.b for an example).
-
- 21/4/92 - Sequential files simplified: EOF no longer looks
- for EOF character (ASCII 28), it just tries to
- seek past the current position returning a seek
- error if it can't (ie: EOF reached).
-
- 22/4/92 - Made CLS 1.3 and 2.04 compatible (in db.lib).
- - Added logical shift functions [SHL(n,m),SHR(n,m)].
- - Added turtle graphics XCOR and YCOR functions.
- - Fixed long integer SUB bug: when calling a long
- SUB with bsr, A68K spat the dummy when it saw
- a '&' (eg: bsr TEST&). All '&'s replaced by '@'s.
- - Added Ctrl-C trapping to compiler. Partly works.
- - Fixed HEADING so it's always non-negative.
-
- 2/5/92 - 8/5/92 - Added screens, PALETTE, PAINT, SYSTEM, DATE$.
- - Made CIRCLE rendering faster by using DrawEllipse()
- if full 360 degree ellipse is requested.
- - Updated ace.doc and noted that SADD is not required
- for string constants (ie: it's optional).
-
- 12/5/92 - Incorporated command line arguments [argcount,arg$].
-
- 16/5/92 - Added single precision MOD.
- - Fixed OCT$ which was giving incorrect results
- for high values. Now only handles positive LONGs.
- - Added BIN$. Like OCT$, n=abs(n) [n is LONG].
- - Added FRE(n), with extras (see ace.doc).
- - Added POTX(n) and POTY(n), where n=0 or 1.
-
- 17/5/92 - Fixed bug in _deletewindow (db.s): Contents of
- location zero was being moved into window lists
- instead of #0 (!).
-
- 6/6/92 - Fixed RIGHT$ bug: was returning the NULL string
- when requested sub-string length equalled string
- length.
- - Modified MOUSE(1) and MOUSE(2) code to work when
- an ACE screen is active.
-
- 8/6/92 - Added WorkBench startup capability.
- - Added REPEAT...UNTIL loop construct ala Pascal
- - Added CASE...END CASE construct.
- - Added DAY function.
-
- 9/6/92 - Added two compiler options:
-
- (i) Ctrl-C break trapping.
- (ii) Optimisation (peephole).
-
- 11/6/92 - Added definable numeric constants.
- - Incorporated a BORDERLESS window for each
- user-defined screen to facilitate IDCMP
- events.
- - INKEY$ can now be used to read keystrokes
- from a user-defined screen's window.
- - Fixed RAW: window routine bug. The same
- Wdw-id was unwittingly being allowed to be
- used for more than one window creation.
-
- 12/6/92 - Modified CLS to work with user-defined screens.
-
- 13/6/92 - 14/6/92 - Incorporated external variables
- and functions (C, assembler...).
-
- 28/6/92 - Modified LOCATE to work with user-defined screens.
- - Fixed exponentiation so that it always returns
- a float, in case of a negative exponent.
-
- 29/6/92 - Incorporated full 32-bit math. ACE is now Wb 2.0
- *reliant* (due to use of utility.library):
-
- (i) 32-bit division replaced 32-bit \ 16-bit.
- (ii) 32-bit MOD replaced 32-bit MOD 16-bit.
- (iii) Multiplication:
-
- - 16 x 16 bit integer (new).
- - 32 x 32 bit integer (new).
- - float x float.
-
- (iv) Array index calculations now use 32-bit
- unsigned multiplication. This fixes the
- bug that disallowed absolute indexes of
- greater than 65535.
-
- - Fixed yet another bug in INPUT: string array input
- was producing pointers which all lead to one string.
- - Defined numeric constants can now be signed.
-
- 30/6/92 - Added LOF(n) function.
- - Modified WAVE statement so that size of waveform
- table can be up to 131070 bytes (hardware limitation).
- - Fixed CHR$ bug: LONG parameters weren't being
- coerced to SHORT.
-
- 2/7/92 - Added the CSTR function.
-
- 3/7/92 - Added the HANDLE(n) function.
- - split db.s into db.s and turtle.s due to
- link problems: Blink or ACE programs GURU when
- db.lib too big.
-
- 4/7/92 - Added optional variable declarations.
- - Wrote a simple pre-processor for ACE: app,
- to allow include files.
-
- 7/7/92 - Added event trapping: BREAK,MOUSE,TIMER(n).
- - MENU event trapping not yet complete since
- menus themselves have to be implemented.
- - Added CSRLIN and POS for screens only so far.
- - Changed over from SetSignal() to CheckSignal()
- for ctrl-c -b compiler option and BREAK event
- trapping.
-
- 16/7/92 - Added:
- (i) ADDRESS option for DIM.
- (ii) SIZE option for STRING.
- (iii) increment and decrement operators.
- (iv) indirection operators: @,*%,*&,*!.
-
- 17/7/92 - 19/7/92 - Improved efficiency of strings and string arrays.
- The modifications also allow strings and string
- arrays to be passed by reference.
-
- 20/7/92 - Modified LOCATE, POS and CSRLIN so they take
- account of the current font (in ScreenMode).
- - Improved PRINTS so that it behaves in almost the
- same way as PRINT.
-
- 28/7/92 - Added SIZEOF function.
- - Fixed a long-standing bug that caused GURUs
- during parameter passing when a context-switch
- occurred, corrupting the stack. This is a short-term
- fix only, and will be replaced by use of C-style
- parameter passing.
-
- 8/8/92 - 9/8/92 - Added structures.
- - Modified VARPTR to handle structures.
-
- 6/12/92 - Divided main linked library into functional modules
- which are joined to produce db.lib. The code from
- db2.lib and turtle.lib has been incorporated into
- db.lib.
-
- 6/12/92 - 7/12/92 - Further modularised compiler source files. I could
- *really* use a make utility now!
-
- 8/12/92 - Changed SHR and SHL code generation from lsr.l and
- lsl.l to asr.l and asl.l respectively, in order to
- handle shifts of negative numbers correctly! (oops)
-
- 12/12/92 - 13/12/92 - Improved PAINT. Too much RAM was being reserved.
-
- 12/12/92 - 13/12/92 - Added AREA, AREAFILL, PATTERN.
-
- 13/12/92 - Added SCROLL, SPACE$.
- - Fixed bug in PAINT: border color not being reset.
-
- 21/12/92 - Improved LOF by using Seek() rather than
- Examine() to find file length. This removed
- the need to use the 2.04 function DupLockFromFH()
- making LOF 1.3 compatible.
- - Reverted to SetSignal() from CheckSignal() to
- preserve 1.3 compatibility.
-
- 22/12/92 - Replaced 32-bit integer math routines in
- utility.library with lmath.a routines from
- Sozobon's ZC.lib. This obviates the need for the
- 2.04 utility.library making all ACE integer math
- 1.3 compatible. The lmath.a module has been
- incorporated into db.lib, with slight modifications
- (source is called lmath.s).
- - Brought DIM in line with AmigaBASIC. If a dimension
- is specified as N, the resulting subscript range
- is 0..N, rather than 0..N-1 (as it is in C and was
- in ACE up until now).
- - Removed reference to ACElibs: from libfunc.c, so
- this no longer has to be ASSIGNed in the user-startup
- or startup-sequence script.
-
- 26/12/92 - Added support for Workbench arguments in the form of
- an include file (WBarg.h).
-
- 27/12/92 - Modified APP so that an include file is only ever
- included once per program. APP now also handles
- single and multi-line comments ("'" and {..}).
-
- 28/12/92 - 29/12/92 - Fixed some long-standing little bugs in the lexical
- analyser.
- - Moved the code for comments from the parser to the
- lexical analyser.
- - Added the rest of AmigaBASIC's reserved words for
- completeness and because I may get around to
- implementing some things that I didn't originally
- think I would.
- - Changed the lexical analyser's reserved word search
- method from sequential to binary. This has resulted
- in a dramatic improvement in compilation speed
- (around twice as fast as before). I should have done
- this a long time ago.
- - Added code to prevent APP from looking for comments
- inside string literals!
- - Removed ++ and -- operators from factor() because
- they are confusing (IMHO). Pre-increment (++) and
- pre-decrement (--) can now only be applied to
- variables, not as part of an expression.
-
- 30/12/92 - Added STRING$ and INSTR.
-
- 1/1/93 - Added descriptions for ALL functions and commands
- in ref.doc since some people using ACE won't have
- the AmigaBASIC manual.
-
- 5/1/93 - 6/1/93 - Work on sequential files:
-
- - CLOSE can be used to close more than
- one file now, but at least one filenumber
- still has to be specified.
-
- - Added LINE INPUT #filenumber,string-variable.
-
- - Added INPUT$(X,[#]filenumber) and ditched
- INP$.
-
- - Improved performance of all sequential file
- functions in db.lib.
-
- - Made file format produced by WRITE identical
- to AmigaBASIC.
-
- - Added PRINT #filenumber,expression-list.
-
- - Added INPUT#filenumber,variable-list.
-
- - ACE files are now very nearly identical to AmigaBASIC.
-
- 12/1/93 - Fixed a bug in VAL that was causing numbers with
- more than 8 decimal places to give weird results.
- - In considering the use of double-precision math
- in ACE, I have realised that Motorola FFP values
- can handle up to 8 decimal places of accuracy,
- whereas in AmigaBASIC, a number with >= 7 decimal
- places is classed as a double-precision value.
- Given the degradation in accuracy which occurs
- when more than 8 digits (counting both sides of
- the decimal point) are specified in an ACE FFP
- value, AmigaBASIC's double-precision convention
- will probably be followed in ACE.
- - Increased the size of the buffer for INPUT$ from
- MAXSTRINGSIZE to MAXSTRINGSIZE*32 (32K currently)
- to facilitate the reading of longer files.
- - Made all library functions which impose a limit
- upon the number of characters in a string or buffer
- use MAXSTRINGSIZE-1 (changed string.s and file.s).
-
- 13/1/93 - Stopped a large memory leak when ACE quits due to
- an internal list memory allocation error. There
- still seems to be a small leak however.
- - Modified the bas script so that intermediate
- files are deleted after each stage of the compile-
- assemble-link process. This frees up more RAM.
-
- 19/1/93 - Fixed a bug in the lexical analyser which was
- returning a value of 1 for ANY number of the
- form nnE[+|-]mm when mm was 0.
-
- 20/1/93 - AREA was only allowing 19 points, not 20. Fixed this.
-
- 21/1/93 - Fixed a weird AREAFILL and PAINT bug. Both of
- these routines allocate and initialise a temporary
- rastport for area/flood filling. Although the
- memory was being freed, the TmpRas pointer was
- not zero'd. On the next call to PRINTS or Text()
- a GURU 8100 000C resulted (recoverable alert under
- 2.04). It appears that Text() or some lower-level
- graphics primitive tries to use an existing TmpRas
- if one seems to exist. After making Rp->TmpRas=NULL
- the bug disappeared.
-
- 26/1/93 - Modified APP so that lines taken up by block
- comments are represented by line-feeds in the
- destination file so as to prevent line mismatches
- between the latter and the source file. This still
- doesn't get around the problem of line mismatches
- caused by #include directives though.
-
- 31/1/93 - Changed effect of DEFDBL and <ident># so that
- they yield single-precision data types rather
- than double-precision. This avoids any problems
- further down the line (because double-precision
- is not yet supported).
-
- 2/2/93 - Added ctrl-c user break trapping to APP and
- improved the reliability of ACE's ctrl-c trapping.
-
- 4/2/93 - ACE v1.0 released to the public! First started
- work on ACE in October 1991.
-
- *******************************************************************************
-
- 6/2/93 - Work on ACE v1.01 commenced.
-
- - Improved compile-time error handling. Now, the
- whole offending line is displayed and a carat
- marks the place in the line where the error was
- identified. The rest of that line is then ignored
- so as to prevent further spurious errors. More
- work remains to be done for this revision on this.
- - The observation was made that AmigaBASIC does NOT
- evaluate exponentiation operations from right to
- left as previously thought, but from left to right
- as with all other operations. This obviates the
- need to change ACE's exponentiation evaluation
- method.
- - AmigaBASIC does not allow a term of the form:
- n^-m or n^(-m). ACE allows the latter but not
- the former.
-
- 7/2/93 - Fixed INPUT from RAW: windows so that the
- destructive backspace key actually erases text
- as it does in a CON: window. The routine was
- also cleaned up in general and made more
- efficient.
- - Sequential file OPEN modes can now be upper
- or lower case (ie: "I" or "i" etc).
-
- 11/2/93 - Fixed the FOR loop index bug by not allowing
- a shared variable to be used as the index.
- - Trailing characters (other than '&') can now
- be used to coerce one numeric literal to
- another. Note that & and % have the same
- effect as CLNG and CINT in ACE (ie: they
- _always_ round up).
-
- 12/2/93 - String literals now need not have an end quote.
- Such a string will be truncated at the end of
- the line.
- - Fixed bug in LINE INPUT# whereby the variable's
- data type was not correctly established if the
- variable was declared with STRING.
- - LINE INPUT# was also modified to accept a string
- array as well as a simple string variable.
-
- 13/2/93 - BASIC line numbers have been implemented for
- backward compatibility with old BASIC programs
- and for consistency with AmigaBASIC.
-
- 14/2/93 - Fixed a bug in STRUCT..END STRUCT & CASE..END CASE
- where blank lines caused spurious compilation errors.
- - Changed a hard-coded X:Y screen ratio constant in the
- turtle graphics section of db.lib to a data item
- which can be accessed/modified with ACE's EXTERNAL
- directive (EXTERNAL _tg_xy_ratio).
- - Made several compile-time errors "cleaner".
-
- 15/2/93 - Improved error handling for undeclared arrays.
- - Fixed a bug in INPUT#. It was crashing when the
- file wasn't open or the file number was invalid.
- - Rewrote VAL code in C. It now handles fixed-point
- and exponential format single-precision values
- as well as decimal, octal and hexadecimal integers.
-
- 16/2/93 - Rewrote _short_from_string and _long_from_string
- in C. These routines are used by INPUT and INPUT#
- to extract integer values from strings. Decimal,
- octal and hexadecimal values may now be handled
- via INPUT and INPUT#.
-
- 18/2/93 - Rewrote _strsingle which is used by PRINT#, WRITE#,
- PRINTS and STR$ so that it produces fixed-point
- and exponential format single-precision output.
- PRINT also uses this routine now. The new version
- of _strsingle (written in C) is somewhat faster than
- the original which was badly coded in assembler.
- A single-precision number is converted to the form:
- -|+.mmmmmmmmE-|+nn by fpa(). If 7 <= nn < -6 the
- number is displayed in exponential format.
- - Added a FIX command (see ref.doc for details) which
- alters the number of decimal places a FFP value is
- rounded to.
-
- 19/2/93 - Replaced _round routine in db.lib. This is used by
- by CINT and CLNG and wherever a float needs to be
- rounded to an integer. The new version seems to be
- faster than the old one which used fpa() and arnd().
- The former only uses mathffp.library functions.
-
- 20/2/93 - ACE v1.01 released.
-
- *******************************************************************************
-
- 28/2/93 - Work on ACE v1.02 commenced.
-
- - Added a compiler switch (-i) which makes an icon
- for the executable just created by ACE.
- - Added ON <event-specifier> GOTO. This is in addition
- to ON <event-specifier> GOSUB which was already
- implemented.
- - Changed all bsr and bra 68000 instructions to jsr
- and jmp respectively in order to avoid the 32K
- displacement limit. Moreover, some beq instructions
- have been replaced by a combination of bne and jmp
- to avoid this limit. This included changes to the
- code for: IF, CASE, REPEAT..UNTIL, WHILE..WEND.
- - Fixed a bug whereby return code in d0 was being
- overwritten before the program ended, due to calls
- to cleanup routines.
-
- 1/3/93 - Changed all occurrences of bsr in db.lib and
- startup.lib sources to jsr so as to avoid the
- 32K limit mentioned above (28/2/93).
- - Implemented KILL and NAME.
- - ON..GOTO and ON..GOSUB implemented.
-
- 6/3/93 - 10/3/93 - Rewrote SAY command in C and added support
- for mode-array(7) and mode-array(8) such that
- ACE SAY now allows for asynchronous speech.
- - Moreover, a SAY(n) function has been added,
- where SAY(0) returns -1 or 0 to indicate whether
- there is active asynchronous speech, SAY(1) returns
- the mouth width and SAY(2) returns the mouth height
- corresponding to the phoneme being spoken.
-
- 14/3/93 - Added support for SAY mode-array element #6. This
- allows for 12 different audio channel allocation
- combinations as per AmigaBASIC. See ref.doc for more.
- - Improved performance of INSTR function by only
- checking first character of target string against
- each character in the source string until they
- match. At this point a full sub-string comparison
- is carried out.
-
- 12/4/93 - Fixed a bug in shared library function declaration
- code in which a search for a non-existent function
- sometimes caused the compiler to hang. The routine
- responsible was rewritten with a resultant speedup.
-
- 13/4/93 - Fixed a bug which had been lurking for some time,
- related to string variable assignments. A string
- variable not declared with the STRING command was
- not always being associated with a storage area.
- In fact, only the first occurrence of the string
- was being so associated. If this first occurrence
- was in a CASE or IF statement, it might never be
- reached with the consequence that the string
- in question was associated with a random address
- in memory! This is now fixed, so that each time
- the string is assigned a value, it is bound to
- its correct address. Obvious in hindsight.
-
- 15/4/93 - Commodore Australia have given me permission to
- include the .bmap files in the ACE archive. I
- don't have this in writing yet though. ConvertFD
- can not be distributed however, so a completely
- new (functionally equivalent) program will have
- to be written.
-
- 16/4/93 - 17/4/93 - A couple of bugs which were related to the above
- string bug (13/4/93) were fixed because they
- were missed at the time and resulted in complaints
- from A68K (legitimate ones) about unknown symbols.
- - Testing has shown that a plethora of problems
- of previously unknown origin were related to the
- string bugs described above. Also, Michael
- Zielinski has reported that there are no longer
- any Enforcer hits from ACE now after the fixes
- from 13/4/93.
-
- 18/4/93 - ACE v1.02 released.
-
- *******************************************************************************
-
- 9/5/93 - Work on ACE recommenced.
-
- - ARG$(0) added for access to a CLI command's name.
-
- 11/5/93 - CHDIR command implemented.
-
- 18/5/93 - 21/5/93 - Enhanced FILES command implemented.
-
- 30/5/93 - A few string functions (ARG$,SPACE$,STRING$,UCASE$)
- were using a single buffer for each result
- which was being overwritten during evaluation
- of an expression such as: UCASE$(..) = UCASE$(..)
- This was fixed by creating a temporary string
- for each function call as with other string
- functions.
- - * INPUT$ still uses a single 32K buffer however! *
-
- 6/6/93 - Command line argument handling routines completely
- rewritten in C. This fixed an infrequent bug in
- which the last argument wasn't always being parsed
- and enabled the correct parsing of quoted arguments.
- - Added two new compiler switches: -E and -c. The
- first creates a file called ace.err which contains
- all the compile-time errors at the end of an ACE run.
- The second includes each ACE source code line as a
- comment in the assembly source code.
-
- 7/6/93 - A bug in exec.library version checking was
- preventing CLS from correctly changing the
- background colour after a COLOR command on
- machines higher than V37 (ie: Wb 3.0 machines
- like the A1200). This is now fixed.
-
- 10/6/93 - Fixed a bug in which CLOSE was sometimes causing a
- privilege violation processor trap. DOSBase wasn't
- always being moved to a6 prior to calling the
- dos.library Close function (!).
-
- 12/6/93 - Added ptr_term() function between expterm() and
- factor() in expression parser to correct the
- precedence of !%, !& and !* operators.
- - I have decided to leave SUB parameters as they
- are for now. See ace.doc Subprograms section
- for latest details.
- - Added SLEEP command. So far only works when in
- screen mode.
-
- 13/6/93 - Fixed a bug in which insymbol() was being called
- one too many times by the "@" code when the address
- of a structure member was being found.
- - Added code to address_of_object() (used by @ and
- VARPTR) to find the address of an array element.
- This code - and therefore @ and VARPTR - can now
- find the address of:
-
- - simple variables
- - external variables
- - arrays
- - array elements
- - structures
- - structure members
-
- - Added a -l compiler switch which displays each
- ACE program source line before it is compiled.
- - Implemented SWAP command ala AmigaBASIC. It swaps
- simple and external variables, array elements,
- structures or structure members.
-
- 14/6/93 - Modified the handling of string value parameters
- so that association with BSS storage occurs at the
- start of subprogram execution rather than waiting
- for an assignment. This fixes the address for the
- life of the parameter. One consequence of this is
- that VARPTR and @ correctly access the address
- of the formal parameter, not the actual parameter.
- This also ensures the correct handling of such
- parameters by the SWAP command.
-
- 19/6/93 - Modified address_of_object() so that when the
- address of a structure variable is requested
- with @ or VARPTR, the address of the variable
- in the stack frame is returned, rather than the
- start address of the structure. The latter can
- still be obtained by simply referencing the
- variable (eg: x = mystructvar). The modification
- makes variable structure parameters possible
- (see ace.doc "Structures" for an example).
-
- 20/6/93 - Made structures sharable with the SHARED statement.
- - SUB parameters may now be preceded by SHORTINT,
- LONGINT,SINGLE or STRING to indicate data type
- rather than always having to use %,&,! or $.
- - String array elements can now have a specifiable
- size via a new SIZE option in DIM.
- - String variable declarations with STRING command
- will now accept defined constants for the SIZE
- option.
-
- 29/6/93 - A bug in both BIN$ and OCT$ (such that negative
- values were being negated) was fixed.
-
- 30/6/93 - ADDRESS data type added. This is really just an
- alias for LONGINT but it makes a lot more sense
- when viewed in the context of a variable, parameter
- or structure member which holds an address.
- - It is now possible to declare a SUB to be of a
- certain data type by using: LONGINT,SHORTINT etc.
- - Shared structures worked fine when modifying/using
- structure members, but not when modifying the
- address held by the structure variable itself.
- This has been fixed.
-
- 1/7/93 - ALLOC function implemented. This is a hassle-free
- Unix-style memory allocator which makes use of
- the Alloc/FreeRemember functions of Intuition.
-
- 2/7/93 - Added ASSEM..END ASSEM for inline assembly code
- inclusion.
- - OPTION <switch>+|-[,<switch>+|-..] can now be
- used to set compiler directives as well as being
- able to do so from the command line.
-
- 3/7/93 - Fixed a bug in which the type of structure
- members was not being correctly determined by
- the SWAP command such that short integer and
- string structure members were not being handled
- properly.
-
- 4/7/93 - SIZEOF now correctly returns the size of a
- structure variable. Prior to today, only
- the size of a structure definition was
- correctly returned. This was an oversight.
-
- 10/7/93 - ACE version 1.1a released.
-
- *******************************************************************************
-
- 4/9/93 - Work on ACE v2.0 commenced.
-
- 4/9/93 - 12/9/93 - Flexible serial I/O support added to ACE. Up to
- 255 channels are supported.
- - ERR function added (serial errors only so far).
-
- 25/9/93 - Serial I/O routines tidied up.
- - ERROR trapping implemented (serial errors only
- so far).
-
- 26/9/93 - Buffered file I/O error codes added. These are
- returned by ERR and recognised by ON ERROR.
-
- 10/10/93 - TAB function now works for screens.
- - Implemented PTAB function.
- - Made PRINT command screen/window mode transparent.
- - This is all part of a conspiracy to make ACE able
- to handle Intuition and DOS windows completely
- transparently. Next comes INPUT transparency.
-
- 11/10/93 - Made INPUT command screen/window mode transparent!
- - Implemented SPC function.
-
- 24/10/93 - Extended ctrl-c break trapping to screen mode.
-
- 24/10/93 - 25/10/93 - Intuition windows implemented! ACE now allows
- for windows on screens! In fact, all windows
- except the shell/CLI are now Intuition windows
- in ACE. Next comes menus and gadgets...
- - Added WINDOW(12) and WINDOW(13) which return
- font width and height (respectively) for the
- current output window.
- - Screen colours are now adopted from Workbench
- as per AmigaBASIC.
-
- 26/10/93 - Window close event trapping implemented. Since
- ACE doesn't automatically handle the closing of
- windows when the close gadget has been clicked,
- a compiler switch (-w) and user-defined event
- trapping was deemed to be the best way to handle
- this.
- - Fixed yet another bug in CLS which was causing
- the print position to be incorrectly aligned in
- Intuition windows.
-
- 1/11/93 - ACE windows now handle certain control characters
- (ASCII: 7,8,9,10,12,13) in exactly the same way as
- AmigaBASIC, eg: CHR$(7) rings the BELL!
- - Implemented boolean gadgets and gadget WAITing.
- Next comes gadget event trapping, a gadget function,
- string and proportional gadgets, as well as some
- tidying up.
-
- 2/11/93 - Implemented GADGET(n) function and ON GADGET event
- trapping.
-
- 6/11/93 - Implemented String and LongInt gadgets.
-
- 7/11/93 - 8/11/93 - Implemented proportional gadgets (horizontal and
- vertical sliders).
- - Window close gadget events are now passed on for
- ON WINDOW or -w compiler switch trap handling.
-
- 9/11/93 - 10/11/93 - Menus have finally been implemented in ACE!! This
- includes menu command keys (keyboard shortcuts),
- MENU WAIT command, MENU event trapping and MENU(n)
- function.
-
- 5/12/93 - MENU and GADGET trapping/WAITing now fully
- supports WINDOW close-gadget handling.
- - WAIT GADGET 0 implemented: waits for ANY gadget.
- This is in my opinion, the best method of dealing
- with gadgets in ACE since it is very flexible and
- CPU-nice. It is however modal.
- - Fixed two bugs in the completely rewritten INPUT
- code: no space after "?" and no scrolling after
- INPUT at bottom of window.
-
- 15/12/93 - Fixed PRINT/PRINTS/PRINT# inability to accept
- some parameters delimited only by spaces. ACE
- seems to accept just about anything delimited
- by spaces now (or of course by commas/semicolons).
- - Fixed a long-standing bug in which the compiler
- would incorrectly parse IF .. THEN PRINT ELSE ..
- such that ELSE was ignored. This works fine now.
-
- 16/12/93 - 17/12/93 - Fixed BSS structure object alignment so that
- all such structures will be long-word aligned.
- - Reduced the amount of code written to the target
- file when internal compiler errors occur to a
- short skeleton program. This may yet be further
- minimised.
- - I have started the process of improving the
- efficiency of the compiler's memory management
- routines by using code similar to the ALLOC
- function in ACE as well as trying to reduce
- the size of each node in the symbol table.
- - The arbitrary DIM limit of 10 dimensions has
- been removed; 255 are now allowed as per
- AmigaBASIC.
-
- 17/12/93 - 18/12/93 - Memory management and efficiency improvement
- continues.
- - The compilation line number indicator has been
- streamlined to cut down on I/O and improve its
- appearance.
- - Memory leaks now seem to be "capped".
- - The arbitrary SHARED limit of 40 has been lifted.
- - Fixed a problem caused by editors which don't
- automatically append a line-feed (ASCII 10)
- to the end of a file, such that the last line
- of a program wasn't being parsed.
- - SERIAL OPEN randomly generating ERR=300 (OPEN_ERR).
- Probably caused by OpenDevice() result not being
- coerced from BYTE to ULONG (??). Fixed this.
- - Fixed a bug in which insufficient memory was
- being allocated to hold DIM index information.
-
- 24/12/93 - CHR$(13) now only performs a CR (in user-defined
- windows) as per the CON: and RAW: windows.
- In AmigaBASIC, CHR$(13) does the same as CHR$(10),
- ie: LF.
- - Appended ASL library stub (generated by genstubs)
- to ACE's ami.lib so that ASL file requesters can
- be used by FILEBOX$ function (see below).
- - Implemented MSGBOX and FILEBOX$ functions which
- easily allow the ACE programmer to invoke system
- and file requesters respectively. Thus far only
- the ASL file requester has been implemented. The
- next step is to test for the operating system
- version at run-time and call different file
- requester code for Amigas running anything less
- than 2.04.
- - Started writing the code for an IDE so that ACE
- can be run from the Workbench. This will be
- developed over the coming months, but a simple
- version should be working within days.
-
- 25/12/93 - Yes I know it's Xmas. It's also 1 am.
- So I'm a fanatic! :-).
- - I have *finally* found the ZC code which causes
- the conflict with ACE's ctrl-c trapping mechanism.
- Upon examination of the ZC source code, I found
- the culprit to be a function called Chk_Abort().
- This I redefined (in misc.c of ACE's source code)
- to do nothing except return 0. This redefinition
- has also been made in app.c.
- - APP now uses the alloc()/free_alloc() functions
- for handling memory allocations.
-
- 26/12/93 - Modified ACE so that the ".b" extension can be
- used. This is still optional though. The main
- reason for doing this was to accomodate TDS's
- (Twilight Development System, an excellent
- shareware IDE) apparent need to have the
- extension of source files made explicit.
- - Fixed MsgBox so that it works correctly under
- Wb 1.3. The requester wasn't taking on the
- correct proportions.
- - Added support for a Wb 1.3 FILEBOX$. It requires
- the arp.library. I may eventually replace this
- with standalone code (when I get time to write
- a nice, simple file requester or some kind soul
- gives me the source for one).
-
- 27/12/93 - Implemented "SYSTEM command-string" which has the
- same effect as Execute(command-string,0L,stdout).
- - Finally got around to implementing DEF FN, as a
- simple variation on SUB.
-
- 28/12/93 - Optional parameter is now legal in ACE's RND
- function. It is currently only a dummy.
- - FileBox$ modified so that a single string
- parameter is required. This allows a title
- for the requester to be supplied (eg: "Open").
-
- 2/1/94 - As promised above (see 24/12/93) I've written
- a simple IDE for ACE called AIDE. This is 1000
- lines of ACE code and the results are fairly
- pleasing. The source code for this program
- will be included in the archive as an example
- of what can be done with some of ACE's more
- recent features. AIDE currently only runs
- properly under Wb 2.04 (and up).
- - Fixed a bug in which IF..THEN struct->member...
- was causing an Undeclared label error!
- - Changed the return values of MsgBox to -1 and 0
- instead of 1 and 0 so that "OK" (or whatever the
- first gadget is) can be seen as a boolean TRUE.
- - String structure members didn't allow a named
- numeric constant to be given for the optional
- SIZE parameter, but they do now.
- - String array, structure member and variable
- declarations allowed a string of non-positive
- size. This has been fixed.
-
- 3/1/94 - I started out with the simple intention of
- adding a bit more compatibility to ACE's
- shared library function handling and ended
- up with almost total compatibility with
- AmigaBASIC. Only "almost" because shared
- library function declarations are still
- mandatory in ACE. That's now the only
- difference. The previous ACE syntax is
- still supported though.
-
- 4/1/94 - I have written an ACE program (autonum.b)
- which takes the drudgery out of maintaining
- the line number references to the sections
- in ace.doc and also adds page numbers.
-
- 5/1/94 - Implemented a SYSTEM function which returns
- ExecBase->libNode.lib_Version (eg: 34 = Wb 1.3).
-
- 6/1/94 - After some false starts, I've added "EXIT FOR"
- which provides a (read: THE) clean way of exiting
- from a FOR..NEXT loop in ACE.
- - Implemented INPUTBOX and INPUTBOX$! I took the
- syntax from Visual Basic's functions of the same
- names. ACE now has 3 standard requester types.
-
- 7/1/94 - Completed the last bits of improving the
- efficiency of ACE's memory allocation routines.
- I couldn't get it to produce any memory leaks.
-
- 8/1/94 - Well, I thought I was finished with the memory
- allocation stuff from yesterday, but I decided
- to try speeding things up some more. This I have
- done by decreasing the number of allocation
- function calls by half for the code list. I've
- also switched to ZC.lib's malloc() & free() which
- seem to be solid.
- - Tested ACE on an A1200 this morning. It seems fine
- although a "Magic Menus" commodity didn't get along
- too well with ACE's menus.
- - Just finished my standard pre-release testing run
- of ACE which involves compiling and running over
- 50 programs under Wb 2.04. A number of programs
- were also tested under Wb 1.3 with and without
- fast RAM switched on.
-
- 9/1/94 - Fixed a bug which made A68K generate syntax errors
- because some label names conflicted with assembly
- keywords (CPU register names to be specific).
- - In the process I found a couple more bugs:
- variables starting with an underscore but with
- no trailing type character were not being assigned
- a data type; DEF FN return values were not always
- being coerced correctly.
- - Everything from yesterday is now being re-tested.
-
- 10/1/94 - Fixed a bug in which ACE tried to clean up
- asynchronous speech when the narrator.device
- was not present and SAY had aborted. Sigh.
- Another testing run me-thinks.
-
- 12/1/94 - 13/1/94 - Peter Zielinski (Sydney) has been testing ACE the
- last couple of days and found a problem in which
- menus looked weird with some fonts. This has been
- fixed.
- - I realised that there would be a similar problem
- with InputBox$ and fonts other than Topaz 8. This
- function has been modified to handle non-topaz-8
- requester title fonts, but Topaz 8 is used for
- the requester prompt and boolean gadget text.
- - Fixed a bug in which LIBRARY CLOSE (used without
- a specific library name) was producing incorrect
- library base names for libraries not on ACE's
- standard libraries list (ie: those opened at
- the start of a program run and closed at the end)
- resulting in an undefined label error from A68K.
- - Also, a library base (again, for non-ACE-listed
- libraries) now gets zeroed after a call to ACE's
- _close_library routine in case it's closed again
- (_close_library check for NULL).
-
- 14/1/94 - Improved menu text rendering by using the graphics
- library TextLength() function to get more precise
- widths for menu titles and items.
-
- 15/1/94 - Fixed a bug in which INPBOX[$] was growing in
- size (from the bottom) when called multiple times
- with a non-topaz font as the screen font.
- - Tried many things to fix a bug in which INPUTBOX[$]
- gadgetry display gets corrupted by _some_ fonts.
- - Improved INPUTBOX[$] by making the string gadget
- active when the requester is rendered. This means
- that the user doesn't have to select the string
- gadget before entering text into it.
- - Tweaked the width of menu item text highlighting.
- - AIDE has been steadily improved over the last week.
-
- 16/1/94 - Tested all example programs under 2.04 and 1.3
- (and also with NoFastMem under 1.3).
-
- 19/1/94 - ACE version 2.0 released.
-
- *******************************************************************************
-
- 23/1/94 - Work on ACE recommenced.
-
- - Fixed a bug in val.c: val() and long_from_string()
- were not skipping leading whitespace (<= ASCII 32).
- VAL and INPUT use these functions. So does INPUT#
- but it does its own whitespace skipping.
- I am stunned that this bug has been around since
- February 1993! That's when I rewrote the code from
- assembler (the latter DID skip leading whitespace).
- This is a good example of how it is still possible
- to overlook simple bugs no matter how much testing
- you do. I'm just amazed I never caught this one!!
- I found this bug two days after the release of
- version 2.0 :(. Sigh.
-
- - Added a "Run in Shell..." option to AIDE's
- Program menu (see AIDE.doc). This also handles
- command-line arguments. The "Execute..." I/O window
- now has a close gadget rather than prompting for
- the 'C' key to be pressed since the latter may fail
- if the command being executed fails.
-
- 24/1/94 - AIDE: Added code to properly handle
- multiple "Execute..." and "Run in Shell..."
- selections by using unique shell-startup script
- names.
-