git @ Cat's Eye Technologies SixtyPical / 41414b0
Prep for release of 0.5. Chris Pressey 6 years ago
3 changed file(s) with 19 addition(s) and 12 deletion(s). Raw diff Collapse all Expand all
00 History of SixtyPical
11 =====================
22
3 0.5-PRE
4 -------
3 0.5
4 ---
55
66 * Added `byte table` type locations and indexed addressing (`+ x`, `+ y`).
77 * Integer literals may be given in hexadecimal.
1212
1313 It is a **work in progress**, currently at the **proof-of-concept** stage.
1414
15 The current released version of SixtyPical is 0.4. The current development
16 version of SixtyPical, unreleased as of this writing, is 0.5-PRE.
15 The current released version of SixtyPical is 0.5. The current development
16 version of SixtyPical, unreleased as of this writing, is 0.6-PRE.
1717
1818 Documentation
1919 -------------
3030 TODO
3131 ----
3232
33 For 0.5:
34
3533 For 0.6:
3634
3735 * `interrupt` routines.
3836 * `vector` type.
37 * `with sei` blocks.
38 * `copy` instruction.
39 * A more involved demo for the C64 — one that sets up an interrupt.
3940
4041 For 0.7:
4142
4243 * `word` type.
43 * `copy` instruction.
4444 * `trash` instruction.
45 * indirect addressing.
4546
46 For 0.8:
47 At some point...
4748
4849 * add line number (or at least routine name) to error messages.
4950 * 6502-mnemonic aliases (`sec`, `clc`)
5051 * other handy aliases (`eq` for `z`, etc.)
52 * add absolute addressing in shl/shr, absolute-indexed for add, sub, etc.
00 SixtyPical
11 ==========
22
3 This document describes the SixtyPical programming language version 0.5-PRE,
3 This document describes the SixtyPical programming language version 0.5,
44 both its execution aspect and its static analysis aspect (even though
55 these are, technically speaking, separate concepts.)
66
1313 Types
1414 -----
1515
16 There are two TYPES in SixtyPical:
16 There are three TYPES in SixtyPical:
1717
1818 * bit (2 possible values)
1919 * byte (256 possible values)
20 * byte table (256 entries, each holding a byte)
2021
2122 Memory locations
2223 ----------------
120121
121122 ### ld ###
122123
123 ld <dest-memory-location>, <src-memory-location>
124 ld <dest-memory-location>, <src-memory-location> [+ <index-memory-location>]
124125
125126 Reads from src and writes to dest.
126127
134135 changed by this instruction; they must be named in the WRITES lists, and they
135136 are considered initialized after it has executed.
136137
138 If and only if src is a byte table, the index-memory-location must be given.
139
137140 Some combinations, such as `ld x, y`, are illegal because they do not map to
138141 underlying opcodes.
139142
140143 ### st ###
141144
142 st <src-memory-location>, <dest-memory-location>
145 st <src-memory-location>, <dest-memory-location> [+ <index-memory-location>]
143146
144147 Reads from src and writes to dest.
145148
151154
152155 After execution, dest is considered initialized. No flags are
153156 changed by this instruction (unless of course dest is a flag.)
157
158 If and only if dest is a byte table, the index-memory-location must be given.
154159
155160 ### add dest, src ###
156161