1
0
mirror of https://github.com/KarolS/millfork.git synced 2025-01-10 05:29:49 +00:00
millfork/CHANGELOG.md

268 lines
7.0 KiB
Markdown
Raw Normal View History

2018-01-30 17:43:18 +01:00
# Change log
2018-01-30 17:38:32 +01:00
2018-12-28 19:24:56 +01:00
## Current version
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.
* 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.
* **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.
* 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.
* Pointers can now be typed.
2019-04-16 16:56:23 +02:00
* Added `nullptr`.
* You can now take a pointer to a stack variable.
* 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.
* 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.
* 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.
* Preprocessor: Added `#use A=B` directive
* Preprocessor: Added `if` function
2019-06-26 13:43:15 +02:00
* Preprocessor: Added `#define` directive.
* 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.
* Fixed name clashes when passing parameters to functions and macros.
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.
* Fixed `@long` and `@long_be` array filters.
2019-06-24 23:51:17 +02:00
* Fixed for-each loops with non-constant arrays.
* 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
* 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-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-12-24 02:38:28 +01:00
* Automatic detection of the standard include path.
2018-07-12 01:23:38 +02:00
* Added aliases.
* Added enumeration types.
2018-12-19 19:04:19 +01:00
* Added preprocessor.
* Added `for` loops over enum types and in-place lists
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.
* 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.
* **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).
* **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.
* 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-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.
* 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.
* 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
* **Breaking change!** Renamed `inline` to `macro`.
* **Breaking change!** Added support for memory segments. Changed the platform definition file syntax.
* 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.
* Added support for parameters for macros written in Millfork.
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.
* Added optimizer hints: `inline`, `noinline`, `register`.
* Added command line flags `--size`, `--fast`, `--blast-processing`.
* Removed command line flag `--detailed-flow`.
Detailed flow analysis was slow, broken, hard to maintain, and didn't even help that much.
2018-03-16 22:15:07 +01:00
* Added `*'=`, `nonet`, `hi` and `lo` operators.
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).
* 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-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.