Skip to content

Releases: dmcoles/EVO

automated dev build {2024-04-25}

13 Sep 13:12
Compare
Choose a tag to compare
Pre-release

automated dev builds from latest source

V3.7.0

09 Mar 16:39
Compare
Choose a tag to compare

(3.7.0)

  • Compiler sometimes produced garbage error message with an error at the very
    end of the file.
  • Reformatted the Amigaguide document to better fit in 80 columns.
  • added Arexx compile scripts
  • allow creating a new object directly into an object member
    eg. self.a:=NEW self.a.method()
  • method table was not correctly initialised for objects declared as
    eg. DEF a:b OR DEF a[5]:ARRAY OF b
  • heap in compiler is allocated with MEMF_CLEAR in compiler to ensure all
    data in the exe is initialised to 0 and not contain random data from
    memory
  • calling a method on an array element of an object did did not calculate
    the correct address for the method.
  • compiler was creating 020 opcodes when accessing an array of objects
  • added NIL pointer checks when calling methods on array of objects
  • self variable was set incorrectly for methods declared with an exception
    handler
  • fix issue with wrong opcode being generated in this code
    DEF a
    DEF b:PTR TO LONG
    a:=[0,b[0]:=5]
    resulting in the value not being stored correctly
  • include textfield module
  • fix bug in reaction_lib with the freeClickTabs, freeChooserLabels and
    freeRadioButtons functions not looping through the list correctly.
  • add support for long branch 020 instruction.
  • fix invalid memory access when casting the result of a procedure call
    to an object
  • fix inconsistencies with SIZEOF command
  • fix error in branching code for the == operator
  • add missing listview module
  • add some extra functions in reaction_lib (openClass, openLibs,
    closeLibs, libDoGadgetMethodA)
  • added PSIZEOF operator
  • added ARRAYSIZE operator
  • added SelectFirst function
  • added debug symbols for methods
  • allow CONT and EXIT within SELECT statement
  • updated Rnd() function to be pure
  • flagged openw, opwns, boolgad, settopaz, sets, gets functions as not pure
  • added WARN TRUE/FALSE to enable/disable warnings
  • added Rol() and Ror() functions
  • the 020 variant of Mod() was not correctly used by the compiler and
    was also taking the parameters the wrong way around
  • added 020 variant of ListItem function
  • track line numbers for warnings
  • NOREGS option was not correctly parsed on methods
  • taking a reference to a method {obj.method} did not return the
    correct address
  • 1.3 startup code now updates stack pointers to allow stack space
    functions to return the correct values.
  • skip NameFromFH call on kick 1.3 meaning the compiler now works
    on that OS again
  • NOT operator was very broken (inconsistently applied and in some cases
    not applied at all)
  • Added EVO_3_7_0 define
  • casting and PTR TO PTR handling is improved and should now work in all
    use cases.

V3.6.1

16 Jun 13:09
Compare
Choose a tag to compare

(3.6.1)

  • add checks for object going over 64k
  • fix 020 optimised address calculation for array of object (or ptr to
    object) indexing
  • added EXENAME and DESTDIR command line arguments to override the output
    file name.
  • EDBG: Setting breakpoint caused crashes on certain versions of graphics.library
  • fix casing for IeeeDPFloor and IeeeDPCeil
  • Extend lists to handle 64k items instead of 32k.
  • Fix #else preprocessor parsing issues

V3.6.0

19 Apr 16:31
Compare
Choose a tag to compare

(3.6.0)

  • EDBG: add support for ECX/EEC compiled executables
  • fix issue with memfill that could cause odd address exception on 68000
  • add TRY..CATCH..ENDTRY allowing more control over exception handling
  • Add UNTILN, WHILEN ELSEWHILEN, IFN, ELSEIFN, EXITN, CONTN which are
    inverse of their counterparts eg. UNTILN x is equal to UNTIL Not(x)
  • Add WORD and BYTE types (unsigned 16 bit and signed 8 bit variable types)
    and Word() Byte() functions as well as PutByte() and PutWord()
  • Allow SIZEOF object and SIZEOF object.member
  • Fix issue where SIZEOF x didnt throw a compile error if x was not defined
  • Added EVO_3_6_0 define
  • Added Compare, Ucompare, Fcompare, StrCompare functions
  • Fixed Int() function to sign extend result
  • Added OPT LEGACYINT to restore old version of Int() command
  • Added command line switch LEGACYINT/S which does the same as the above OPT
  • Allow BYTE and WORD types in modules, increase module version to 13.
  • FindModule: fix error in memory deallocation
  • FindModule: update for BYTE and WORD types (module version 13)
  • ShowModule: update for BYTE and WORD types (module version 13)

V3.5.1

06 Sep 16:42
Compare
Choose a tag to compare

(3.5.1)
- fix issue with short jump calculations being done incorrect in certain circumstances, causing crashes.
- fix casing of math ieee functions to match original E modules
- disable OPT POOL and OPT UTILLIB in legacy mode
- disable THISTASK, __POOL and UTILITYBASE in legacy mode
- reinstate [] in immediate list to previous E functionality (a blank 0 item list)
- fix optimisation issue where MOVE.B (A0),D0 and MOVE.W (A0),D0 followed by TST.L would be optimised incorrectly.
- fix issue with immediate lists, ListMax() could not be used as the max size was not populated.
- allow 0 length lists to be created eg List(0)
- add showhunk source

V3.5.0

14 Jul 13:27
Compare
Choose a tag to compare

This version brings in many of the features from the creativE E compiler and
also adds many new features unique to E-VO as well.

- Added ac020 object with pad int to allow optimised 32 bit writes on
  020+ courtesy of Samuel D. Crow
- When compiling in debug, disable the optimisation that removes LINK,
  UNLK in procs where not needed (EDBG doesnt step properly when these
  aren't present)
- EDBG: Add case insensitive search
- EDBG: Added search next
- EDBG: Display variable values in both hex and decimal
- Fixed: Clears an extra byte in the String() initialisation causing
  memory corruption in the case of String(0)
- EDBG: Enhanced breakpoints - multiple can now be set and can be
  seen/set in a column next to the code
- EDBG: Support for multiple breakpoints and debugging while code is
  running.
- EDBG: Added support for debugging under OS4.x (eg without using CPU
  exceptions)
- EDBG: Added support for adding watch variables by entering name
- Added support for DEBUG50 mode which allows debugging using JSR
  instructions instead of causing cpu exceptions which allows debugging
  under OS 4.x
- Added support for multi-dimensional arrays
- Added support for PTR TO PTR variables
- Added EVO_3_5_0 define
- Added ? operator (ported from CreativE)
- Added OPT FPEXP (fpu floating point support - ported from CreativE)
- Added :=: swap operator (ported form CreativE)
- Added OPT INLINE (ported from CreativE)
- Added OPT NOSTARTUP (ported form CreativE)
- Added OPT UTILLIB (ported from CreativE)
- Added NOREGS option (ported from CreativE)
- Updated module format (now version 12) to account for multi-dimension
  arrays and PTR TO PTR type in object members
- Ported some optimisation code from CreativE
- Added ENDPROC WITH function (ported from CreativE)
- Added == operator (range check - ported from CreativE)
- Added new system constants TAG_DONE, TAG_END, TAG_INORE, TAG_MORE,
  TAG_SKIP, TAG_USER, OFFSET_BEGINNING, OFFSET_BEGINING, OFFSET_CURRENT,
  OFFSET_END (ported from CreativE)
- Added new utilitybase variable
- Added 020+ optimised MOD function
- Added support for += -= etc operators (ported from CreativE)
- ShowModule: Added support for new module format (version 12)
- Added improved LONG,INT,CHAR routines from CreativE which allow
  expressions
- Added improved SIZEOF command that allows SIZEOF objectvar
- Allow \xNN for hex char in strings
- Add ELSEWHILE and ALWAYS extension to WHILE LOOP (from CreativE)
- Improvements to SELECT x to allow expressions (from CreativE)
- Added LEGACY option to output module format version 10 and disable newer
  features
- Fix: 2 << obj.val was generating corrupt code
- Add SECTION (code and data) support
- Fix: ReadStr return value was not completely compatible with EC (fix
  Pragma2Module bug)
- ShowModule: Add -e parameter which will force output into a form that
  can be directly recompiled
- Added a scanf module in the other folder
- Allow string consts in modules
- Allow float CONST definitions
- Remove some unused startup code when OPT ASM in use.
- ShowModule: Added support for string CONSTs
- Added OFFSETOF to get the offset of a member of an object
- Added MemFill, AstrClone, ListInsItem, ListRemItem, ListSwapItem functions     
- EDBG: Support for sections
- FindModule: Coded new FindModule application from scratch with support
  for latest module format.
- Make second parameter of SetStr optional and if not specified it will
  set the calculate the string length automatically
- Added EndsWith function eg EndsWith(s,'A') returns TRUE if a string1 ends
  with string2
- Fix: CHAR '' or CONST STR='' would cause memory corruption
- Fix "3*SIZEOF LONG" error
- added AstpCopy and UsedStack and StackSize functions

V3.4.1

23 Oct 10:03
Compare
Choose a tag to compare

(3.4.1)
- Fix: Optimisation error where multiple variables set to the same value
were not set correctly.
- Made the select source file window wider in EDBG to account for the
full path being displayed.

v3.4.0

07 Oct 18:11
Compare
Choose a tag to compare

Initial release (v3.4.0)