git @ Cat's Eye Technologies SixtyPical / 0c65954
Updates to README. Fix awkward punctuation in usage message. Chris Pressey 2 years ago
2 changed file(s) with 20 addition(s) and 11 deletion(s). Raw diff Collapse all Expand all
5050
5151 Many of SixtyPical's primitive instructions resemble those of the
5252 [MOS Technology 6502][] — it is in fact intended to be compiled to 6502
53 machine code. However, it also does provide some "higher-level" operations
53 machine code. However, it also provides some "higher-level" operations
5454 based on common 8-bit machine-language programming idioms, including
5555
5656 * copying values from one register to another (via a third register when
6464
6565 ### Static analysis
6666
67 The language defines an [effect system][], and the reference
67 The SixtyPical language defines an [effect system][], and the reference
6868 compiler [abstractly interprets][] the input program to check that
6969 it conforms to it. It can detect common mistakes such as
7070
7676
7777 ### Efficient code
7878
79 Unlike most languages, in SixtyPical the programmer must manage memory very
80 explicitly, selecting the registers and memory locations to store all data in.
81 So, unlike a C compiler such as [cc65][], a SixtyPical compiler doesn't need
82 to generate code to handle [calling conventions][] or [register allocation][].
83 This results in smaller (and thus faster) programs.
79 Unlike most conventional languages, in SixtyPical the programmer must manage
80 memory very explicitly, selecting the registers and memory locations to store
81 each piece of data in. So, unlike a C compiler such as [cc65][], a SixtyPical
82 compiler doesn't need to generate code to handle [calling conventions][] or
83 [register allocation][]. This results in smaller (and thus faster) programs.
8484
8585 The flagship demo, a minigame for the Commodore 64, compiles to
8686 a **930**-byte `.PRG` file.
9797
9898 For example programs for each of these, see [eg/README.md](eg/README.md).
9999
100 Documentation
100 Specification
101101 -------------
102102
103103 SixtyPical is defined by a specification document, a set of test cases,
104104 and a reference implementation written in Python.
105105
106 * [Design Goals](doc/Design%20Goals.md)
106 There are over 400 test cases, written in [Falderal][] format for readability.
107 In order to run the tests for compilation, [dcc6502][] needs to be installed.
108
107109 * [SixtyPical specification](doc/SixtyPical.md)
108 * [SixtyPical revision history](HISTORY.md)
109110 * [Literate test suite for SixtyPical syntax](tests/SixtyPical%20Syntax.md)
110111 * [Literate test suite for SixtyPical analysis](tests/SixtyPical%20Analysis.md)
111112 * [Literate test suite for SixtyPical compilation](tests/SixtyPical%20Compilation.md)
112113 * [Literate test suite for SixtyPical fallthru optimization](tests/SixtyPical%20Fallthru.md)
114
115 Documentation
116 -------------
117
118 * [Design Goals](doc/Design%20Goals.md)
119 * [SixtyPical revision history](HISTORY.md)
113120 * [6502 Opcodes used/not used in SixtyPical](doc/6502%20Opcodes.md)
114121 * [Output formats supported by `sixtypical`](doc/Output%20Formats.md)
115122 * [TODO](TODO.md)
125132 [Commodore VIC-20]: https://en.wikipedia.org/wiki/Commodore_VIC-20
126133 [Atari 2600]: https://en.wikipedia.org/wiki/Atari_2600
127134 [Apple II series]: https://en.wikipedia.org/wiki/Apple_II_series
135 [Falderal]: https://catseye.tc/node/Falderal
136 [dcc6502]: https://github.com/tcarmelveilleux/dcc6502
172172 argparser.add_argument(
173173 "--run-on", type=str, default=None,
174174 help="If given, engage 'load-and-go' operation with the given emulator: write "
175 "the output to a temporary filename, using an appropriate --output-format "
175 "the output to a temporary filename using an appropriate --output-format, "
176176 "and boot the emulator with it. Options are: x64, xvic, stella."
177177 )
178178 argparser.add_argument(