git @ Cat's Eye Technologies SixtyPical / 7854f71
More edits to docs. Chris Pressey 2 years ago
3 changed file(s) with 24 addition(s) and 9 deletion(s). Raw diff Collapse all Expand all
1616 * Accessing a `table` through a `pointer` must be done in
1717 the context of a `point ... into` block. This allows the
1818 analyzer to check *which* table is being accessed.
19 * Refactored compiler internals so that type information
20 is stored in a single symbol table shared by all phases.
21 * Refactored internal data structures that represent
22 references and types to be immutable `namedtuple`s.
1923 * Added `--dump-exit-contexts` option to `sixtypical`.
2024
2125 0.18
44
55 **SixtyPical** is a [very low-level](#very-low-level) programming language
66 supporting a [sophisticated static analysis](#sophisticated-static-analysis).
7
87 Its reference compiler can generate [efficient code](#efficient-code) for
9 [several 6502-based platforms](#target-platforms) while catching many
8 several 6502-based [target platforms](#target-platforms) while catching many
109 common mistakes at compile-time, reducing the time spent in debugging.
1110
1211 Quick Start
1413
1514 Make sure you have Python (2.7 or 3.5+) installed. Then
1615 clone this repository and put its `bin` directory on your
17 executable search path. Then run:
16 executable search path. Then you can run:
1817
1918 sixtypical
2019
8382 Unlike most languages, in SixtyPical the programmer must manage memory very
8483 explicitly, selecting the registers and memory locations to store all data in.
8584 So, unlike a C compiler such as [cc65][], a SixtyPical compiler doesn't need
86 to generate code to handle stack management or register spilling. This results
87 in smaller (and thus faster) programs.
85 to generate code to handle [call stack management][] or [register allocation][].
86 This results in smaller (and thus faster) programs.
8887
8988 The flagship demo, a minigame for the Commodore 64, compiles to
9089 a **930**-byte `.PRG` file.
9493 The reference implementation can analyze and compile SixtyPical programs to
9594 6502 machine code formats which can run on several 6502-based 8-bit architectures:
9695
97 * [Commodore 64][] -- examples in [eg/c64/](eg/c64/)
98 * [Commodore VIC-20][] -- examples in [eg/vic20/](eg/vic20/)
99 * [Atari 2600][] -- examples in [eg/atari2600/](eg/atari2600/)
100 * [Apple II series][] -- examples in [eg/apple2/](eg/apple2/)
96 * [Commodore 64][]
97 * [Commodore VIC-20][]
98 * [Atari 2600][]
99 * [Apple II series][]
100
101 For example programs for each of these, see [eg/README.md](eg/README.md).
101102
102103 Documentation
103104 -------------
116117 * [Output formats supported by `sixtypical`](doc/Output%20Formats.md)
117118 * [TODO](TODO.md)
118119
120 [effect system]: https://en.wikipedia.org/wiki/Effect_system
121 [abstractly interprets]: https://en.wikipedia.org/wiki/Abstract_interpretation
122 [call stack management]: https://en.wikipedia.org/wiki/Call_stack
123 [register allocation]: https://en.wikipedia.org/wiki/Register_allocation
119124 [VICE]: http://vice-emu.sourceforge.net/
120125 [cc65]: https://cc65.github.io/
121126 [Commodore 64]: https://en.wikipedia.org/wiki/Commodore_64
4545 demo, [smiley.60p](atari2600/smiley.60p) which was converted from an
4646 older Atari 2600 skeleton program written in [Ophis][].
4747
48 ### apple2
49
50 In the [apple2](apple2/) directory are programs that run on
51 Apple II series computers (Apple II+, Apple //e). `sixtypical`'s
52 support for this architecture could be called embryonic.
53
4854 [Ophis]: http://michaelcmartin.github.io/Ophis/