2017-01-12 02:02:23 +00:00
|
|
|
|
2017-04-29 13:23:50 +00:00
|
|
|
C COMPILERS
|
|
|
|
|
2017-01-12 02:02:23 +00:00
|
|
|
cc65 - A fairly mature C compiler + toolchain for the 6502 family with lots of target
|
|
|
|
platforms and an extensive library. The code generation is
|
|
|
|
not great, using the AX register pair and a parameter stack for local variables that has to be
|
|
|
|
indirect-indexed (you can make locals static with an option, but I found
|
|
|
|
this introduced compiler bugs.)
|
|
|
|
|
|
|
|
LCC - A small retargetable C compiler released in 1994, most notoriously
|
|
|
|
used to compile bytecode for the QuakeC language. It doesn't generate 6502
|
|
|
|
code, but it probably could -- although optimizations are weak.
|
|
|
|
There's an older port to the 65C816.
|
|
|
|
|
|
|
|
ACK - This ancient compiler used for Minix has a lot of frontends and backends, and is designed
|
|
|
|
for small-register CISC CPUs. There's a 6500 backend but I couldn't get it
|
|
|
|
working. Looks like it could be resurrected though. There's an intermediate
|
|
|
|
file for each step of the pipeline.
|
|
|
|
|
|
|
|
PCC - An early C compiler from the days of UNIX, now updated to C99.
|
|
|
|
There's a 16-bit target (x86) and the backends looks pretty simple.
|
|
|
|
http://pcc.ludd.ltu.se/internals/pass2/
|
|
|
|
|
|
|
|
SDCC - A mature compiler that supports lots of microcontrollers including
|
|
|
|
the Z80. This is probably the best candidate for porting to 6502,
|
|
|
|
but the backends are bespoke works of evil genius and there's precious little documentation.
|
|
|
|
(I wonder if you could post-process the HC08 output to 6502, since they're similar in some ways.)
|
|
|
|
|
|
|
|
LLVM-6502 - Someone uploaded this to Github. I got it to build, but the code
|
|
|
|
generated wasn't comprehensible.
|
|
|
|
|
|
|
|
osXdk - A fork of the Oric SDK. The C compiler has a weird design which
|
|
|
|
emits bytecode and then uses a C preprocessor to expand the macros
|
|
|
|
into 6502 assembler.
|
|
|
|
|
|
|
|
PLASMA - Language + VM, sort of like SWEET16 meets
|
|
|
|
Java. Simple, concise code base. Pretty fast too, in the same ballpark as
|
|
|
|
CC65. Focused on the Apple I/II/III family.
|
|
|
|
|
|
|
|
Atalan - Rule-based language/assembler with support for multiple 8-bit
|
|
|
|
platforms. Looks promising, but I had problems with it crashing, and it
|
|
|
|
lacks documentation/test cases. Atari-focused.
|
|
|
|
|
|
|
|
Macross/Slinky - A macro cross-assembler developed by Chip Morningstar at
|
|
|
|
Lucasfilm Ltd. for use in the game Habitat. Billed as "An assembler for
|
|
|
|
people who hate assembly language."
|
|
|
|
|
|
|
|
NESHLA - A high-level assembler in the same spirit as Macross, but with
|
|
|
|
NES-specific features.
|
|
|
|
|
|
|
|
WLA-DX - Some other weird cross-assembler with lots of CPU targets.
|
|
|
|
|
|
|
|
z88dk - A Small C-derived cross-compiler for the Z80, supporting 20 target
|
|
|
|
machines.
|
|
|
|
|
2017-04-19 01:18:53 +00:00
|
|
|
https://github.com/EtchedPixels/FUZIX/wiki
|
|
|
|
|
|
|
|
gcc6809 - need to check this out
|
|
|
|
|
|
|
|
|
2017-04-29 13:23:50 +00:00
|
|
|
OTHER COMPILERS
|
|
|
|
|
|
|
|
Java Grinder - Compile Java bytecode to microcontroller assembly. Currently
|
|
|
|
supporting MSP430, dsPIC, 6502/6510, 68000, MIPS, TMS9900, and Z80 with
|
|
|
|
platforms that include Commodore 64, Sega Genesis, Atari 2600, Apple IIgs,
|
|
|
|
ChipKit (PIC32), TI99, TI84 and more.
|
|
|
|
|
|
|
|
ZX Basic - This cross-compiler is focused on ZX-Spectrum, but with some
|
|
|
|
patchworking it can be used to compile to whatever machine running on z80
|
|
|
|
architecture. (Python)
|
|
|
|
|
|
|
|
IntyBASIC: a BASIC compiler for Intellivision. IntyBASIC is a cross
|
|
|
|
compiler that takes BASIC source code and translates it to CP1610 assembler
|
|
|
|
code. http://nanochess.org/intybasic.html
|
|
|
|
|
|
|
|
SWEET16 - Woz's tiny bytecode interpreter on the Apple ][ integer BASIC ROM.
|
|
|
|
Still emcumbered by Apple's copyright for the foreseeable future.
|
|
|
|
http://6502.org/source/interpreters/sweet16.htm
|
|
|
|
|