2018-01-30 17:43:18 +01:00
|
|
|
|
# Change log
|
2018-01-30 17:38:32 +01:00
|
|
|
|
|
2019-12-15 23:51:34 +01:00
|
|
|
|
## Current version
|
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* Added compile-time evaluation for user-defined functions.
|
2019-12-15 23:51:34 +01:00
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* 6809 improvements (no full support yet).
|
|
|
|
|
|
|
|
|
|
* Various improvements to the C64 libraries (thanks to @bsutherland).
|
2020-02-11 01:11:15 +01:00
|
|
|
|
|
2020-03-31 19:07:35 +02:00
|
|
|
|
* Added detection for various PET variants and implemented `readkey` for PET.
|
|
|
|
|
|
2020-03-15 23:48:27 +01:00
|
|
|
|
* Added `breakpoint` macro (#44).
|
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* **Potentially breaking change!** Added `min`, `max` and `if` compile-time functions.
|
|
|
|
|
|
2020-03-31 19:07:35 +02:00
|
|
|
|
* Added experimental `signed16` and `unsigned16` types. Added `putsigned16` function.
|
|
|
|
|
|
|
|
|
|
* Fixed `scrstr2word` in some rare encoding combinations.
|
2020-03-25 23:53:26 +01:00
|
|
|
|
|
2020-03-16 00:03:01 +01:00
|
|
|
|
* Added warnings for calling from one segment to another overlapping one.
|
|
|
|
|
|
2020-02-11 01:11:15 +01:00
|
|
|
|
* 6502: Fixed undocumented mnemonics.
|
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* Create output directories when needed (#21).
|
|
|
|
|
|
2020-03-31 19:07:35 +02:00
|
|
|
|
* Allow defining different output formats for different segments when outputting one file per segment.
|
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* Fixed multiple optimization bugs (#32, #38, #41, #46 and others) – thanks to @agg23 for detailed bug reports!
|
|
|
|
|
|
|
|
|
|
* 6502: Fix boolean arrays and pointers (#28).
|
2020-02-11 01:11:15 +01:00
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* Improved operator support for word-sized arguments (#24, #25).
|
2020-02-11 01:11:15 +01:00
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* Fixed and improved memset-like loops (#47).
|
2020-02-11 01:11:15 +01:00
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* **Potentially breaking change!** Detect overflowing constants, like `const byte x = 256`.
|
2020-02-11 01:11:15 +01:00
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* **Potentially breaking change!** Various macros improvements, including the requirement of parameter types matching exactly (#23, #39, #40).
|
2020-03-15 01:17:45 +01:00
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* Minor improvements to inline assembly.
|
2020-03-15 01:17:45 +01:00
|
|
|
|
|
2020-03-25 23:50:06 +01:00
|
|
|
|
* Improvements to constant evaluation.
|
|
|
|
|
|
2020-03-19 23:53:49 +01:00
|
|
|
|
* Optimization improvements.
|
2020-02-11 01:11:15 +01:00
|
|
|
|
|
2020-03-25 23:54:23 +01:00
|
|
|
|
* Updated to Scala 2.12.11.
|
|
|
|
|
|
2019-12-03 23:57:41 +01:00
|
|
|
|
## 0.3.14
|
2019-11-12 13:49:16 +01:00
|
|
|
|
|
2019-12-01 03:16:09 +01:00
|
|
|
|
* Full assembly support for HuC6280.
|
|
|
|
|
|
|
|
|
|
* Improvements to subroutine extraction; it's now much faster, less buggy and actually effective.
|
|
|
|
|
|
|
|
|
|
* 8080: function parameters can now be optimized to registers.
|
|
|
|
|
|
|
|
|
|
* Fixed error messages about invalid function flags.
|
|
|
|
|
|
|
|
|
|
* 6502: Fixed compilation of interrupt routines.
|
|
|
|
|
|
|
|
|
|
* 65C02: Fixed fatal bugs related to some 65C02 subtypes.
|
|
|
|
|
|
|
|
|
|
* Other bug fixes.
|
|
|
|
|
|
2019-11-06 14:42:48 +01:00
|
|
|
|
## 0.3.12
|
2019-11-03 23:18:00 +01:00
|
|
|
|
|
2019-11-04 02:38:07 +01:00
|
|
|
|
* **Breaking change!**
|
2019-12-01 23:13:51 +01:00
|
|
|
|
The `petscr`, `petscrjp` and `atasciiscr` encodings now use $E0, $E0 and $DB respectively as their string terminator.
|
2019-11-04 02:38:07 +01:00
|
|
|
|
|
2019-11-06 14:42:48 +01:00
|
|
|
|
* **Potentially breaking change!**
|
|
|
|
|
Changed the identifiers for various subtypes of the 65C02 processors.
|
|
|
|
|
|
2019-11-03 23:18:00 +01:00
|
|
|
|
* Added `nullchar_scr` and `NULLCHAR_SCR`
|
|
|
|
|
|
|
|
|
|
* Added the `scrstring` module
|
|
|
|
|
|
2019-11-04 02:31:57 +01:00
|
|
|
|
* Added `strz_from_screencode`, `strz_to_screencode`, `strzpaste` and `scrstrzpaste` functions
|
|
|
|
|
|
2019-11-03 23:18:00 +01:00
|
|
|
|
* Added the ability to convert from booleans to integers
|
|
|
|
|
|
2019-11-04 02:31:57 +01:00
|
|
|
|
* Fixed the string escape bug
|
|
|
|
|
|
2019-11-03 23:18:00 +01:00
|
|
|
|
* Unary minus and other parser improvements
|
|
|
|
|
|
|
|
|
|
* Better error reporting
|
|
|
|
|
|
|
|
|
|
* Other bugfixes
|
|
|
|
|
|
2019-10-24 15:22:39 +02:00
|
|
|
|
## 0.3.10
|
2019-09-25 01:20:12 +02:00
|
|
|
|
|
2019-10-01 00:52:21 +02:00
|
|
|
|
* Preliminary support for the CPU from ZX Spectrum Next.
|
|
|
|
|
|
2019-09-25 01:20:12 +02:00
|
|
|
|
* Added the ability to define custom segment layouts.
|
|
|
|
|
|
2019-10-22 02:14:14 +02:00
|
|
|
|
* Hardware definitions for Atari 8-bit (thanks to @FreddyOffenga)
|
|
|
|
|
|
|
|
|
|
* Fixed BLL headers for Atari Lynx (#7).
|
|
|
|
|
|
|
|
|
|
* Some improvements for Commander X16 (with help from @Ambez05)
|
|
|
|
|
|
|
|
|
|
* Specified consistent behaviour of `for` loops (#8)
|
|
|
|
|
|
2019-09-25 01:20:12 +02:00
|
|
|
|
* Fixed bugs with constant booleans.
|
|
|
|
|
|
2019-10-22 02:14:14 +02:00
|
|
|
|
* Fixed bugs with arithmetic promotions of signed values.
|
|
|
|
|
|
|
|
|
|
* Fixed a bug with unused global variable elimination (#10).
|
|
|
|
|
|
|
|
|
|
* Fixed a bug with variable overlapping (#11).
|
2019-09-25 01:20:12 +02:00
|
|
|
|
|
2019-10-23 11:52:42 +02:00
|
|
|
|
* 6502: Fixed a bug with flow analysis during optimizations.
|
|
|
|
|
|
|
|
|
|
* 6502: Fixed a bug with certain 16-bit additions.
|
|
|
|
|
|
2019-10-22 13:54:30 +02:00
|
|
|
|
* 8080: Fixed and optimized 16-bit comparisons.
|
|
|
|
|
|
2019-09-25 01:20:12 +02:00
|
|
|
|
* 8080: Optimized some library functions.
|
|
|
|
|
|
2019-10-22 18:22:25 +02:00
|
|
|
|
* Optimized certain byte comparisons and pointer indexing.
|
2019-10-01 00:52:21 +02:00
|
|
|
|
|
2019-10-22 16:35:17 +02:00
|
|
|
|
* 6502: Optimized certain boolean conversions and some small array accesses.
|
2019-10-01 00:52:21 +02:00
|
|
|
|
|
|
|
|
|
* Unused built-in functions are now removed more accurately.
|
|
|
|
|
|
2019-09-25 01:20:12 +02:00
|
|
|
|
* Updated to Scala 2.12.10.
|
2019-09-24 00:10:54 +02:00
|
|
|
|
|
2019-10-01 00:52:21 +02:00
|
|
|
|
* Added another NES example (thanks to @Garydos).
|
|
|
|
|
|
2019-09-21 23:05:13 +02:00
|
|
|
|
## 0.3.8
|
2019-08-16 00:42:11 +02:00
|
|
|
|
|
2019-09-14 03:34:32 +02:00
|
|
|
|
* `sizeof` now supports arrays.
|
|
|
|
|
|
2019-09-14 02:40:03 +02:00
|
|
|
|
* Added `-R` option for specifying extra commandline parameters for emulators.
|
|
|
|
|
|
2019-09-15 19:47:19 +02:00
|
|
|
|
* Added full 16-bit multiplication and unsigned division.
|
2019-09-04 21:17:06 +02:00
|
|
|
|
|
2019-10-01 00:52:21 +02:00
|
|
|
|
* Added preliminary support for Atari Lynx (thanks to @Nullious).
|
2019-09-20 01:44:18 +02:00
|
|
|
|
|
2019-08-16 18:00:04 +02:00
|
|
|
|
* Added preliminary support for EasyFlash.
|
|
|
|
|
|
2019-09-14 03:34:32 +02:00
|
|
|
|
* Added preliminary support for Commander X16.
|
|
|
|
|
|
2019-08-16 18:00:04 +02:00
|
|
|
|
* Allowed defining custom output padding byte value.
|
|
|
|
|
|
|
|
|
|
* Allowed passing non-decimal numbers to the `-D` option.
|
|
|
|
|
|
2019-09-04 01:14:14 +02:00
|
|
|
|
* Added the `encconv` module.
|
|
|
|
|
|
2019-08-16 00:46:11 +02:00
|
|
|
|
* Added `nullchar` constant as the null terminator for strings and `NULLCHAR` feature to define its value.
|
|
|
|
|
|
2019-09-20 19:41:53 +02:00
|
|
|
|
* Added `vectrex`, `msx_br`, `koi7n2`, `iso15`, `zx80` and `zx81` text encodings.
|
2019-08-16 00:46:11 +02:00
|
|
|
|
|
2019-09-21 00:57:16 +02:00
|
|
|
|
* `reset_joy` is now defined to always reset all joypad state variables.
|
|
|
|
|
|
2019-09-20 18:33:41 +02:00
|
|
|
|
* Fixed arithmetic promotion bugs for signed values.
|
2019-09-14 16:01:02 +02:00
|
|
|
|
|
2019-09-18 01:04:31 +02:00
|
|
|
|
* Fixed parsing of `zp_bytes` in platform definitions.
|
|
|
|
|
|
2019-08-16 18:00:04 +02:00
|
|
|
|
* Fixed several serious bugs related to cartridge-based targets.
|
|
|
|
|
|
2019-09-16 21:31:12 +02:00
|
|
|
|
* 6502: Few minor optimization improvements.
|
|
|
|
|
|
2019-09-16 21:32:57 +02:00
|
|
|
|
* 6502: Inlining improvements.
|
|
|
|
|
|
2019-08-05 22:26:27 +02:00
|
|
|
|
## 0.3.6
|
2019-07-01 01:24:55 +02:00
|
|
|
|
|
2019-07-29 02:07:30 +02:00
|
|
|
|
* **Breaking change!**
|
|
|
|
|
The `petscii` encoding now uses the $C0-$DE range for uppercase characters instead of $60-$7E.
|
|
|
|
|
This matches both the CC65 behaviour and the return values from `readkey()`.
|
|
|
|
|
|
2019-07-30 22:51:33 +02:00
|
|
|
|
* Added support for the Japanese version of Commodore 64.
|
|
|
|
|
|
2019-07-17 20:50:27 +02:00
|
|
|
|
* Added `segment` block statement.
|
|
|
|
|
|
2019-07-15 02:06:23 +02:00
|
|
|
|
* Added goto.
|
|
|
|
|
|
2019-07-26 19:02:32 +02:00
|
|
|
|
* Added `bool` type.
|
|
|
|
|
|
2019-07-27 00:58:10 +02:00
|
|
|
|
* Added function pointers – so far quite limited.
|
|
|
|
|
|
2019-07-10 16:51:12 +02:00
|
|
|
|
* Added arrays of elements of size greater than byte.
|
|
|
|
|
|
2019-07-30 22:51:33 +02:00
|
|
|
|
* Added `.length` for large arrays and `.lastindex` for numerically indexed arrays.
|
|
|
|
|
|
2019-07-31 00:20:18 +02:00
|
|
|
|
* New text encodings: `petjp`, `petscrjp`, `msx_intl`, `msx_jp`, `msx_ru`.
|
|
|
|
|
|
2019-07-09 22:40:26 +02:00
|
|
|
|
* Improved passing of register parameters to assembly functions.
|
|
|
|
|
|
2019-07-08 19:24:27 +02:00
|
|
|
|
* Enabled declaring multiple variables in one line.
|
|
|
|
|
|
|
|
|
|
* Fixed detection of duplicate names in declarations.
|
|
|
|
|
|
|
|
|
|
* 6502: Fixed expressions of form `p[i] <<= 1`.
|
|
|
|
|
|
2019-08-03 20:46:43 +02:00
|
|
|
|
* 6502: Fixed variable bit shifting.
|
2019-07-23 23:16:37 +02:00
|
|
|
|
|
2019-08-03 23:58:47 +02:00
|
|
|
|
* 6502: Fixed word division by a divisor larger than 127.
|
|
|
|
|
|
|
|
|
|
* 6502: Fixed byte multiplication.
|
|
|
|
|
|
2019-08-03 20:46:43 +02:00
|
|
|
|
* 8080/Z80: Fixed byte division.
|
|
|
|
|
|
|
|
|
|
* Fixed many optimization bugs:
|
|
|
|
|
|
|
|
|
|
* incorrect removal of unused local variables;
|
2019-08-04 13:40:49 +02:00
|
|
|
|
|
2019-08-04 17:16:01 +02:00
|
|
|
|
* incorrect removal of certain type casts;
|
|
|
|
|
|
2019-08-04 13:40:49 +02:00
|
|
|
|
* broken parameter passing to tail calls;
|
2019-08-03 20:46:43 +02:00
|
|
|
|
|
|
|
|
|
* 6502: miscompilation when using the zeropage pseudoregister;
|
|
|
|
|
|
|
|
|
|
* 6502: stack overflow when inlining local variables into registers;
|
2019-08-04 13:42:00 +02:00
|
|
|
|
|
|
|
|
|
* 6502: not setting the high byte to 0 when optimizing word multiplication by 0
|
2019-08-03 20:46:43 +02:00
|
|
|
|
|
|
|
|
|
* 8080/Z80: compiler crash when compiling conditions;
|
|
|
|
|
|
2019-08-04 12:37:54 +02:00
|
|
|
|
* 8080/Z80: miscompilation of code after `if` statements;
|
|
|
|
|
|
2019-08-03 20:46:43 +02:00
|
|
|
|
* 8080/Z80: miscompilation near multiplication;
|
|
|
|
|
|
|
|
|
|
* Z80: miscompilation when using stack variables.
|
2019-07-26 14:15:35 +02:00
|
|
|
|
|
2019-07-09 22:40:26 +02:00
|
|
|
|
* Other fixes and improvements.
|
|
|
|
|
|
2019-07-01 00:33:28 +02:00
|
|
|
|
## 0.3.4
|
2018-12-28 19:24:56 +01:00
|
|
|
|
|
2019-03-18 23:15:28 +01:00
|
|
|
|
* Preliminary experimental Game Boy support.
|
|
|
|
|
|
2019-06-05 13:31:43 +02:00
|
|
|
|
* Preliminary MSX support.
|
|
|
|
|
|
2019-05-31 17:03:35 +02:00
|
|
|
|
* Super experimental and very incomplete Intel 8086 support via 8080-to-8086 translation.
|
|
|
|
|
|
2019-06-12 12:06:02 +02:00
|
|
|
|
* Support for Intel 8085, together with illegal instructions.
|
2019-05-31 17:27:38 +02:00
|
|
|
|
|
2019-06-14 11:39:11 +02:00
|
|
|
|
* More label file formats.
|
|
|
|
|
|
2018-12-31 13:20:32 +01:00
|
|
|
|
* Added `memory_barrier` macro.
|
|
|
|
|
|
2019-06-26 15:51:09 +02:00
|
|
|
|
* Added `keyboard` module.
|
2019-06-25 18:26:48 +02:00
|
|
|
|
|
2018-12-30 19:01:38 +01:00
|
|
|
|
* Added `random` module.
|
|
|
|
|
|
2019-06-28 16:43:50 +02:00
|
|
|
|
* Added `init_rw_memory` module for cartridge targets.
|
|
|
|
|
|
2019-06-28 17:53:00 +02:00
|
|
|
|
* **Breaking change!** Preinitialized writable arrays on cartridge targets
|
|
|
|
|
can no longer be read before an explicit call to `init_rw_memory`, either add the call or make the arrays const.
|
|
|
|
|
|
2018-12-30 19:01:38 +01:00
|
|
|
|
* Added `ensure_mixedcase` function and `oldpet` and `origpet` text encodings.
|
|
|
|
|
|
2018-12-29 20:16:05 +01:00
|
|
|
|
* Added `MILLFORK_VERSION` preprocessor parameter.
|
|
|
|
|
|
2019-04-15 19:45:26 +02:00
|
|
|
|
* Added structs and unions.
|
2019-04-15 01:58:51 +02:00
|
|
|
|
|
2019-06-06 01:17:34 +02:00
|
|
|
|
* Added unsigned byte division and modulo.
|
2019-06-05 18:36:39 +02:00
|
|
|
|
|
2019-04-15 01:58:51 +02:00
|
|
|
|
* Pointers can now be allocated anywhere.
|
|
|
|
|
|
2019-04-15 19:45:26 +02:00
|
|
|
|
* Pointers can now be typed.
|
|
|
|
|
|
2019-04-16 16:56:23 +02:00
|
|
|
|
* Added `nullptr`.
|
|
|
|
|
|
2019-06-23 22:53:42 +02:00
|
|
|
|
* You can now take a pointer to a stack variable.
|
|
|
|
|
|
2019-04-30 01:30:22 +02:00
|
|
|
|
* Arrays can now have elements of types other than `byte` (still limited in size to 1 byte though) and be built out of struct literals.
|
2019-04-29 22:57:40 +02:00
|
|
|
|
|
|
|
|
|
* Arrays can now be constant.
|
2019-04-15 01:58:51 +02:00
|
|
|
|
|
2019-06-24 22:32:29 +02:00
|
|
|
|
* Arrays can now be local.
|
|
|
|
|
|
2018-12-30 19:01:38 +01:00
|
|
|
|
* Added hint for identifiers with typos.
|
|
|
|
|
|
2019-03-18 23:15:28 +01:00
|
|
|
|
* Aliases now also support subfields.
|
|
|
|
|
|
2019-04-15 19:56:14 +02:00
|
|
|
|
* Short functions can be now defined using expression syntax.
|
|
|
|
|
|
2019-06-26 12:59:55 +02:00
|
|
|
|
* On most Commodore targets printing double quote characters doesn't toggle the quotation mode anymore.
|
2019-06-25 18:26:48 +02:00
|
|
|
|
|
2019-06-26 13:40:33 +02:00
|
|
|
|
* **Potentially breaking change!** Commodore 128 target no longer defines `CBM_64` feature.
|
|
|
|
|
|
2019-06-28 16:43:50 +02:00
|
|
|
|
* Fixed the NES examples and the `nes_joy` module.
|
|
|
|
|
|
2019-06-26 18:33:59 +02:00
|
|
|
|
* 6502 targets can now define free zeropage bytes, not only pointers.
|
|
|
|
|
|
2018-12-29 20:16:05 +01:00
|
|
|
|
* 6502: Fixed optimizations using index registers.
|
|
|
|
|
|
2019-06-05 18:12:57 +02:00
|
|
|
|
* 6502: Fixed optimizations of comparisons.
|
|
|
|
|
|
2019-06-25 18:26:48 +02:00
|
|
|
|
* 6502: Fixed optimizations near `for` loops over in-place lists.
|
|
|
|
|
|
2019-06-14 12:00:45 +02:00
|
|
|
|
* Preprocessor: Added `#use A=B` directive
|
|
|
|
|
|
|
|
|
|
* Preprocessor: Added `if` function
|
|
|
|
|
|
2019-06-26 13:43:15 +02:00
|
|
|
|
* Preprocessor: Added `#define` directive.
|
|
|
|
|
|
2018-12-31 13:18:11 +01:00
|
|
|
|
* Fixed volatile-related bugs.
|
|
|
|
|
|
2018-12-30 19:01:38 +01:00
|
|
|
|
* Fixed optimizations removing jumps to jumps.
|
|
|
|
|
|
2018-12-29 20:16:05 +01:00
|
|
|
|
* Fixed optimizations removing pointless stores to local variables.
|
|
|
|
|
|
2019-06-12 12:06:02 +02:00
|
|
|
|
* Fixed name clashes when passing parameters to functions and macros.
|
2019-05-02 13:24:21 +02:00
|
|
|
|
|
2018-12-29 20:16:05 +01:00
|
|
|
|
* Fixed `#use` not accessing all preprocessor parameters.
|
|
|
|
|
|
2019-04-16 16:56:23 +02:00
|
|
|
|
* Fixed `#pragma` not respecting `#if`.
|
|
|
|
|
|
2019-06-26 18:31:45 +02:00
|
|
|
|
* Fixed nested `#if`s.
|
|
|
|
|
|
2019-04-30 01:30:22 +02:00
|
|
|
|
* Fixed `@long` and `@long_be` array filters.
|
|
|
|
|
|
2019-06-24 23:51:17 +02:00
|
|
|
|
* Fixed for-each loops with non-constant arrays.
|
|
|
|
|
|
2019-06-26 01:45:34 +02:00
|
|
|
|
* 8080 and LR35902: Fixed inlining of byte-sized variables into registers.
|
|
|
|
|
|
2019-04-16 16:56:23 +02:00
|
|
|
|
* 8080 and LR35902: fixed large stack variables.
|
2018-12-29 20:16:05 +01:00
|
|
|
|
|
2019-06-23 22:53:42 +02:00
|
|
|
|
* Other bug fixes.
|
|
|
|
|
|
2018-12-30 00:52:40 +01:00
|
|
|
|
* Optimization improvements.
|
|
|
|
|
|
2018-12-28 19:14:30 +01:00
|
|
|
|
## 0.3.2
|
2018-07-01 19:07:12 +02:00
|
|
|
|
|
2018-07-27 19:15:57 +02:00
|
|
|
|
* Almost complete support for the Zilog Z80, Intel 8080 and Sharp LR35902 microprocessors.
|
2018-07-02 00:31:47 +02:00
|
|
|
|
|
2018-12-19 22:21:51 +01:00
|
|
|
|
* A very incomplete support for NEC PC-88, ZX Spectrum, CP/M and Amstrad CPC.
|
2018-07-07 01:11:53 +02:00
|
|
|
|
|
|
|
|
|
* Unified the syntax of commandline switches.
|
2018-07-02 00:31:47 +02:00
|
|
|
|
|
2018-12-24 02:38:28 +01:00
|
|
|
|
* Automatic detection of the standard include path.
|
|
|
|
|
|
2018-07-12 01:23:38 +02:00
|
|
|
|
* Added aliases.
|
|
|
|
|
|
2018-07-20 22:46:53 +02:00
|
|
|
|
* Added enumeration types.
|
|
|
|
|
|
2018-12-19 19:04:19 +01:00
|
|
|
|
* Added preprocessor.
|
|
|
|
|
|
2018-12-22 01:30:54 +01:00
|
|
|
|
* Added `for` loops over enum types and in-place lists
|
2018-07-12 18:30:35 +02:00
|
|
|
|
|
2018-10-04 21:33:10 +02:00
|
|
|
|
* Added `align` keyword for choosing data and code alignment.
|
|
|
|
|
|
2018-12-14 22:51:09 +01:00
|
|
|
|
* Added original line numbers in assembler output.
|
|
|
|
|
|
2018-12-16 21:07:42 +01:00
|
|
|
|
* Added `sizeof` operator.
|
|
|
|
|
|
|
|
|
|
* Added preliminary support for `volatile` keyword.
|
|
|
|
|
|
2018-12-14 22:51:09 +01:00
|
|
|
|
* Added multiplication of a 16-bit number by an unsigned 8-bit number.
|
|
|
|
|
|
2018-12-16 21:07:42 +01:00
|
|
|
|
* Added more warnings.
|
|
|
|
|
|
2018-07-07 00:58:44 +02:00
|
|
|
|
* Automatic selection of text encoding based on target platform.
|
|
|
|
|
|
2018-07-28 00:58:20 +02:00
|
|
|
|
* Text literals can be now used as expressions of type `pointer`.
|
|
|
|
|
|
|
|
|
|
* Extra `z` at the name of the encoding means that the string is zero-terminated.
|
|
|
|
|
|
2018-12-21 22:35:16 +01:00
|
|
|
|
* **Potentially breaking change!** No longer allowed to define things with names that are keywords or builtins.
|
|
|
|
|
|
2018-07-28 00:58:20 +02:00
|
|
|
|
* **Potentially breaking change!** Curly braces in text literals are now used for escape sequences.
|
|
|
|
|
|
2018-12-19 19:04:19 +01:00
|
|
|
|
* **Potentially breaking change!** Changed the `c64_basic` module.
|
|
|
|
|
|
2018-07-07 01:11:53 +02:00
|
|
|
|
* **Potentially breaking change!** `scr` now refers to the default screencodes as defined for the platform.
|
|
|
|
|
Code that uses both a custom platform definition and the `scr` encoding needs attention
|
|
|
|
|
(either change `scr` to `petscr` or add `screen_encoding=petscr` in the platform definition file).
|
|
|
|
|
|
2018-07-12 18:30:35 +02:00
|
|
|
|
* **Potentially breaking change!** Platform definitions now need appropriate feature definitions.
|
|
|
|
|
Code that uses a custom platform definitions will cause extra warnings until fixed.
|
|
|
|
|
|
2018-12-14 22:51:09 +01:00
|
|
|
|
* Software variable stack for 6502.
|
|
|
|
|
|
|
|
|
|
* Other optimizations and fixes for stack variables.
|
2018-07-07 01:11:53 +02:00
|
|
|
|
|
2018-08-06 19:29:09 +02:00
|
|
|
|
* Various code deduplication optimizations.
|
|
|
|
|
|
2018-07-07 01:11:53 +02:00
|
|
|
|
* Fixed emitting constant decimal expressions.
|
|
|
|
|
|
2018-07-25 00:04:00 +02:00
|
|
|
|
* Fixed decimal subtraction.
|
|
|
|
|
|
2018-08-03 16:21:02 +02:00
|
|
|
|
* Fixed signed comparison.
|
|
|
|
|
|
2018-12-14 22:51:09 +01:00
|
|
|
|
* Fixed `for`...`downto` loops.
|
|
|
|
|
|
|
|
|
|
* Fixed invalid optimization of loads before `BEQ` and similar
|
|
|
|
|
|
|
|
|
|
* Fixed miscompiled `nonet` calls.
|
|
|
|
|
|
2018-07-07 01:11:53 +02:00
|
|
|
|
* Parser performance improvement.
|
|
|
|
|
|
2018-07-12 18:30:35 +02:00
|
|
|
|
* Standard libraries improvements.
|
|
|
|
|
|
2018-07-07 01:11:53 +02:00
|
|
|
|
* Other improvements.
|
|
|
|
|
|
2018-06-25 22:46:52 +02:00
|
|
|
|
## 0.3.0
|
2018-03-25 16:19:37 +02:00
|
|
|
|
|
2018-06-19 00:08:18 +02:00
|
|
|
|
* Finally faster than C.
|
|
|
|
|
|
2018-06-24 00:31:10 +02:00
|
|
|
|
* Licenced the standard library more permissively.
|
|
|
|
|
|
2018-06-09 00:18:21 +02:00
|
|
|
|
* Preliminary Atari 2600, BBC Micro and LUnix support.
|
2018-04-03 00:21:26 +02:00
|
|
|
|
|
2018-06-19 00:00:48 +02:00
|
|
|
|
* Added array initialization syntax with `for`.
|
2018-03-25 22:57:15 +02:00
|
|
|
|
|
2018-04-02 19:47:11 +02:00
|
|
|
|
* Added multiple new text codecs.
|
2018-03-26 00:01:29 +02:00
|
|
|
|
|
2018-04-02 21:06:18 +02:00
|
|
|
|
* Added character literals.
|
|
|
|
|
|
2018-06-04 16:24:18 +02:00
|
|
|
|
* Added 24-bit `farword` type.
|
|
|
|
|
|
2018-06-18 02:52:14 +02:00
|
|
|
|
* Special array layouts, e.g. `@word`.
|
|
|
|
|
|
2018-06-04 16:24:18 +02:00
|
|
|
|
* Fixed invalid offsets for branching instructions.
|
|
|
|
|
|
|
|
|
|
* Fixed incorrectly overlapping local variables.
|
|
|
|
|
|
|
|
|
|
* Fixed broken `downto` loops.
|
|
|
|
|
|
2018-06-19 00:00:48 +02:00
|
|
|
|
* Fixed broken comparisons between variables of different sizes.
|
|
|
|
|
|
2018-06-04 16:24:18 +02:00
|
|
|
|
* Fixed several other bugs.
|
2018-03-25 16:19:37 +02:00
|
|
|
|
|
2018-06-24 00:31:10 +02:00
|
|
|
|
* Tons of optimizer improvements.
|
|
|
|
|
|
2018-03-28 12:32:26 +02:00
|
|
|
|
* Other improvements.
|
|
|
|
|
|
2018-03-19 22:04:14 +01:00
|
|
|
|
## 0.2.2
|
2018-03-18 23:58:42 +01:00
|
|
|
|
|
|
|
|
|
* Allowed adding constant words to variable bytes without the zeropage pseudoregister.
|
|
|
|
|
|
|
|
|
|
* `-fzp-register` is now enabled by default, as the documentation has already been saying.
|
|
|
|
|
|
2018-03-19 21:58:51 +01:00
|
|
|
|
* Allowed more kinds of constants within variable and array initializers.
|
|
|
|
|
|
2018-03-18 23:58:42 +01:00
|
|
|
|
* Fixed several bugs.
|
|
|
|
|
|
|
|
|
|
* Other improvements.
|
|
|
|
|
|
2018-03-17 18:21:50 +01:00
|
|
|
|
## 0.2
|
2018-01-30 17:38:32 +01:00
|
|
|
|
|
2018-02-26 12:22:10 +01:00
|
|
|
|
* **Breaking change!** Renamed `inline` to `macro`.
|
2018-02-01 22:39:38 +01:00
|
|
|
|
|
2018-03-15 23:09:19 +01:00
|
|
|
|
* **Breaking change!** Added support for memory segments. Changed the platform definition file syntax.
|
|
|
|
|
|
2018-03-03 01:21:57 +01:00
|
|
|
|
* Added preliminary support for 65CE02, HuC6280 and 65816 processors.
|
|
|
|
|
|
2018-03-16 22:15:07 +01:00
|
|
|
|
* Added support for Famicom/NES and C64 with SuperCPU.
|
|
|
|
|
|
2018-02-26 17:49:55 +01:00
|
|
|
|
* Added new `-O1` optimization preset; old `-O1` became `-O2`, old `-O2` became `-O3` and so on.
|
|
|
|
|
|
2018-03-16 22:15:07 +01:00
|
|
|
|
* Added command line options for controlling the size-speed trade-offs.
|
|
|
|
|
|
2018-02-26 12:22:10 +01:00
|
|
|
|
* Added support for parameters for macros written in Millfork.
|
2018-02-01 22:39:38 +01:00
|
|
|
|
|
2018-02-26 01:20:50 +01:00
|
|
|
|
* Enabled calling macros with index expression parameters.
|
|
|
|
|
|
2018-03-10 22:05:10 +01:00
|
|
|
|
* Enabled calling macros from assembly.
|
|
|
|
|
|
2018-02-26 12:22:10 +01:00
|
|
|
|
* Added optimizer hints: `inline`, `noinline`, `register`.
|
|
|
|
|
|
|
|
|
|
* Added command line flags `--size`, `--fast`, `--blast-processing`.
|
2018-03-05 12:41:43 +01:00
|
|
|
|
|
|
|
|
|
* Removed command line flag `--detailed-flow`.
|
|
|
|
|
Detailed flow analysis was slow, broken, hard to maintain, and didn't even help that much.
|
2018-02-01 22:39:38 +01:00
|
|
|
|
|
2018-03-16 22:15:07 +01:00
|
|
|
|
* Added `*'=`, `nonet`, `hi` and `lo` operators.
|
2018-02-01 22:39:38 +01:00
|
|
|
|
|
2018-03-06 16:59:18 +01:00
|
|
|
|
* Added support for zeropage pseudoregisters, allowing for some operators work with more types of operands.
|
|
|
|
|
|
2018-01-30 17:38:32 +01:00
|
|
|
|
* Added return dispatch statements.
|
|
|
|
|
|
2018-03-03 21:34:12 +01:00
|
|
|
|
* Added `break` and `continue` statements.
|
|
|
|
|
|
2018-03-06 16:59:18 +01:00
|
|
|
|
* Allowed the `else if` combination (i.e. the `else` branch doesn't have to be in braces if it's just a single `if`-`else` statement).
|
|
|
|
|
|
2018-03-03 01:21:57 +01:00
|
|
|
|
* Added octal and quaternary literals.
|
|
|
|
|
|
2018-03-10 22:05:10 +01:00
|
|
|
|
* Fixed several allocation bugs.
|
|
|
|
|
|
2018-01-30 17:38:32 +01:00
|
|
|
|
* Fixed several optimization bugs.
|
|
|
|
|
|
2018-03-16 22:15:07 +01:00
|
|
|
|
* Fixed several C64 and C16 library bugs.
|
2018-02-01 22:39:38 +01:00
|
|
|
|
|
2018-02-26 01:20:50 +01:00
|
|
|
|
* Fixed several other bugs.
|
|
|
|
|
|
|
|
|
|
* Other improvements.
|
2018-01-30 17:38:32 +01:00
|
|
|
|
|
|
|
|
|
## 0.1
|
|
|
|
|
|
|
|
|
|
* Initial numbered version.
|