1
0
mirror of https://github.com/catseye/SixtyPical.git synced 2024-11-24 15:32:27 +00:00

More edits to docs.

This commit is contained in:
Chris Pressey 2019-04-10 12:02:35 +01:00
parent 652ab1dc5c
commit 7854f71706
3 changed files with 24 additions and 9 deletions

View File

@ -17,6 +17,10 @@ History of SixtyPical
* Accessing a `table` through a `pointer` must be done in * Accessing a `table` through a `pointer` must be done in
the context of a `point ... into` block. This allows the the context of a `point ... into` block. This allows the
analyzer to check *which* table is being accessed. analyzer to check *which* table is being accessed.
* Refactored compiler internals so that type information
is stored in a single symbol table shared by all phases.
* Refactored internal data structures that represent
references and types to be immutable `namedtuple`s.
* Added `--dump-exit-contexts` option to `sixtypical`. * Added `--dump-exit-contexts` option to `sixtypical`.
0.18 0.18

View File

@ -5,9 +5,8 @@ _Version 0.19. Work-in-progress, everything is subject to change._
**SixtyPical** is a [very low-level](#very-low-level) programming language **SixtyPical** is a [very low-level](#very-low-level) programming language
supporting a [sophisticated static analysis](#sophisticated-static-analysis). supporting a [sophisticated static analysis](#sophisticated-static-analysis).
Its reference compiler can generate [efficient code](#efficient-code) for Its reference compiler can generate [efficient code](#efficient-code) for
[several 6502-based platforms](#target-platforms) while catching many several 6502-based [target platforms](#target-platforms) while catching many
common mistakes at compile-time, reducing the time spent in debugging. common mistakes at compile-time, reducing the time spent in debugging.
Quick Start Quick Start
@ -15,7 +14,7 @@ Quick Start
Make sure you have Python (2.7 or 3.5+) installed. Then Make sure you have Python (2.7 or 3.5+) installed. Then
clone this repository and put its `bin` directory on your clone this repository and put its `bin` directory on your
executable search path. Then run: executable search path. Then you can run:
sixtypical sixtypical
@ -84,8 +83,8 @@ it conforms to it. It can detect common mistakes such as
Unlike most languages, in SixtyPical the programmer must manage memory very Unlike most languages, in SixtyPical the programmer must manage memory very
explicitly, selecting the registers and memory locations to store all data in. explicitly, selecting the registers and memory locations to store all data in.
So, unlike a C compiler such as [cc65][], a SixtyPical compiler doesn't need So, unlike a C compiler such as [cc65][], a SixtyPical compiler doesn't need
to generate code to handle stack management or register spilling. This results to generate code to handle [call stack management][] or [register allocation][].
in smaller (and thus faster) programs. This results in smaller (and thus faster) programs.
The flagship demo, a minigame for the Commodore 64, compiles to The flagship demo, a minigame for the Commodore 64, compiles to
a **930**-byte `.PRG` file. a **930**-byte `.PRG` file.
@ -95,10 +94,12 @@ a **930**-byte `.PRG` file.
The reference implementation can analyze and compile SixtyPical programs to The reference implementation can analyze and compile SixtyPical programs to
6502 machine code formats which can run on several 6502-based 8-bit architectures: 6502 machine code formats which can run on several 6502-based 8-bit architectures:
* [Commodore 64][] -- examples in [eg/c64/](eg/c64/) * [Commodore 64][]
* [Commodore VIC-20][] -- examples in [eg/vic20/](eg/vic20/) * [Commodore VIC-20][]
* [Atari 2600][] -- examples in [eg/atari2600/](eg/atari2600/) * [Atari 2600][]
* [Apple II series][] -- examples in [eg/apple2/](eg/apple2/) * [Apple II series][]
For example programs for each of these, see [eg/README.md](eg/README.md).
Documentation Documentation
------------- -------------
@ -117,6 +118,10 @@ and a reference implementation written in Python.
* [Output formats supported by `sixtypical`](doc/Output%20Formats.md) * [Output formats supported by `sixtypical`](doc/Output%20Formats.md)
* [TODO](TODO.md) * [TODO](TODO.md)
[effect system]: https://en.wikipedia.org/wiki/Effect_system
[abstractly interprets]: https://en.wikipedia.org/wiki/Abstract_interpretation
[call stack management]: https://en.wikipedia.org/wiki/Call_stack
[register allocation]: https://en.wikipedia.org/wiki/Register_allocation
[VICE]: http://vice-emu.sourceforge.net/ [VICE]: http://vice-emu.sourceforge.net/
[cc65]: https://cc65.github.io/ [cc65]: https://cc65.github.io/
[Commodore 64]: https://en.wikipedia.org/wiki/Commodore_64 [Commodore 64]: https://en.wikipedia.org/wiki/Commodore_64

View File

@ -46,4 +46,10 @@ Atari 2600 (4K cartridge). The directory itself contains a simple
demo, [smiley.60p](atari2600/smiley.60p) which was converted from an demo, [smiley.60p](atari2600/smiley.60p) which was converted from an
older Atari 2600 skeleton program written in [Ophis][]. older Atari 2600 skeleton program written in [Ophis][].
### apple2
In the [apple2](apple2/) directory are programs that run on
Apple II series computers (Apple II+, Apple //e). `sixtypical`'s
support for this architecture could be called embryonic.
[Ophis]: http://michaelcmartin.github.io/Ophis/ [Ophis]: http://michaelcmartin.github.io/Ophis/