– long assignments – word and long comparisons – byte multiplication – correct sign extension – fixed flow analysis for LD A,(IX,0) and similar – unused variable store elimination – unused code elimination – unused label elimination – poinless stack stashing elimination – function inlining – other flow analysis improvements – other bugfixes – other stuff – more tests |
||
---|---|---|
docs | ||
examples | ||
include | ||
project | ||
src | ||
.gitignore | ||
3rd-party-licenses.md | ||
build.sbt | ||
CHANGELOG.md | ||
LICENSE | ||
logo_transparent.png | ||
logo_white.png | ||
millfork-udl.xml | ||
README.md |
Millfork
A middle-level programming language targeting 6502-based microcomputers.
For binary releases, see: https://github.com/KarolS/millfork/releases (latest: 0.3.0)
Features
-
multiple targets:
-
Commodore 64 (the primary target)
-
Commodore 64 with SuperCPU (experimental, incomplete and very buggy)
-
Commodore 16 and Plus/4
-
Commodore 128
-
Commodore 64/128 running LUnix/LNG 0.21 (experimental)
-
Commodore PET
-
Commodore Vic-20 (stock or with RAM extensions)
-
Famicom/NES (the second most important target)
-
Atari 2600 (experimental)
-
Atari 8-bit computers
-
BBC Micro
-
Apple II+/IIe/Enhanced IIe
-
-
inline assembly
-
simple macros
-
pay only for what you use: not a single byte of memory is used unless for code or explicitly declared variables
-
simple memory model that avoids using the stack
-
multi-pass optimizer (that will even optimize your hand-written assembly if you ask it to)
Licensing
The compiler is distributed under GPLv3 (see LICENSE).
The standard include files (located in the include
directory) are distributed under a more permissive Zlib license (see include/LICENSE).
Therefore, no attribution is needed if you are developing and distributing Millfork programs.
More info
Planned features
-
Z80 support, targetting PC-88, ZX Spectrum, later also maybe Armstrad CPC, MSX, TI-83 (this is already work-in-progress)
-
more 6502 targets: Oric computers, PC-Engine/Turbografx-16, Atari Lynx
-
support for 65816, SuperFamicom/SNES and Apple IIgs