git @ Cat's Eye Technologies SixtyPical / 0.6
Prep for release of 0.6. Chris Pressey 5 years ago
4 changed file(s) with 32 addition(s) and 12 deletion(s). Raw diff Collapse all Expand all
00 History of SixtyPical
11 =====================
22
3 0.6-PRE
4 -------
3 0.6
4 ---
55
66 * Added `routine` and `vector` types, and `copy` instruction.
77 * Both routines and vectors can declare `inputs`, `outputs`, and `trashes`,
2323
2424 It is a **work in progress**, currently at the **proof-of-concept** stage.
2525
26 The current released version of SixtyPical is 0.5. The current development
27 version of SixtyPical, unreleased as of this writing, is 0.6-PRE.
26 The current released version of SixtyPical is 0.6. The current development
27 version of SixtyPical, unreleased as of this writing, is 0.7-PRE.
2828
2929 Documentation
3030 -------------
4141 TODO
4242 ----
4343
44 For 0.6:
45
46 * A more involved demo for the C64 — one that sets up an interrupt.
47
4844 For 0.7:
4945
5046 * always analyze before executing or compiling, unless told not to
5147 * `word` type.
5248 * `word table` type.
53 * `trash` instruction.
49
50 For 0.8:
51
5452 * zero-page memory locations.
5553 * indirect addressing.
5654
5755 At some point...
5856
57 * `trash` instruction.
5958 * `interrupt` routines.
6059 * 6502-mnemonic aliases (`sec`, `clc`)
6160 * other handy aliases (`eq` for `z`, etc.)
00 SixtyPical
11 ==========
22
3 This document describes the SixtyPical programming language version 0.6-PRE,
3 This document describes the SixtyPical programming language version 0.6,
44 both its execution aspect and its static analysis aspect (even though
55 these are, technically speaking, separate concepts.)
66
00 byte vic_border @ 53280
11
2 vector cinv @ 788
2 //
3 // The constraints on these 2 vectors are kind-of sort-of big fibs.
4 // They're only written this way so they can be compatible with our
5 // routine. In fact, CINV is an interrupt routine where it doesn't
6 // really matter what you trash anyway, because all registers were
7 /// saved by the caller (the KERNAL) and will be restored by the end
8 // of the code of the saved origin cinv routine that we goto.
9 //
10 // I wonder if this could be arranged somehow to be less fibby, in
11 // a future version of SixtyPical.
12 //
13
14 vector cinv
15 inputs vic_border
16 outputs vic_border
17 trashes z, n
18 @ 788
19
320 vector save_cinv
21 inputs vic_border
22 outputs vic_border
23 trashes z, n
424
525 routine our_cinv
626 inputs vic_border
828 trashes z, n
929 {
1030 inc vic_border
31 goto save_cinv
1132 }
1233
1334 routine main
14 inputs cinv, our_cinv
35 inputs cinv
1536 outputs cinv, save_cinv
1637 trashes a, n, z
1738 {