From 3e72580cd2671d8550b4dbb9acab6fffd5e1e596 Mon Sep 17 00:00:00 2001 From: Chris Pressey Date: Fri, 23 Oct 2015 16:37:18 +0100 Subject: [PATCH] Prep for release of 0.6. --- HISTORY.markdown | 4 ++-- README.markdown | 13 ++++++------- doc/SixtyPical.md | 2 +- eg/intr1.60p | 25 +++++++++++++++++++++++-- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/HISTORY.markdown b/HISTORY.markdown index c12ac35..3876487 100644 --- a/HISTORY.markdown +++ b/HISTORY.markdown @@ -1,8 +1,8 @@ History of SixtyPical ===================== -0.6-PRE -------- +0.6 +--- * Added `routine` and `vector` types, and `copy` instruction. * Both routines and vectors can declare `inputs`, `outputs`, and `trashes`, diff --git a/README.markdown b/README.markdown index a2326b5..a294666 100644 --- a/README.markdown +++ b/README.markdown @@ -24,8 +24,8 @@ programs to 6502 machine code. It is a **work in progress**, currently at the **proof-of-concept** stage. -The current released version of SixtyPical is 0.5. The current development -version of SixtyPical, unreleased as of this writing, is 0.6-PRE. +The current released version of SixtyPical is 0.6. The current development +version of SixtyPical, unreleased as of this writing, is 0.7-PRE. Documentation ------------- @@ -42,21 +42,20 @@ Documentation TODO ---- -For 0.6: - -* A more involved demo for the C64 — one that sets up an interrupt. - For 0.7: * always analyze before executing or compiling, unless told not to * `word` type. * `word table` type. -* `trash` instruction. + +For 0.8: + * zero-page memory locations. * indirect addressing. At some point... +* `trash` instruction. * `interrupt` routines. * 6502-mnemonic aliases (`sec`, `clc`) * other handy aliases (`eq` for `z`, etc.) diff --git a/doc/SixtyPical.md b/doc/SixtyPical.md index 4e65a4b..d0db377 100644 --- a/doc/SixtyPical.md +++ b/doc/SixtyPical.md @@ -1,7 +1,7 @@ SixtyPical ========== -This document describes the SixtyPical programming language version 0.6-PRE, +This document describes the SixtyPical programming language version 0.6, both its execution aspect and its static analysis aspect (even though these are, technically speaking, separate concepts.) diff --git a/eg/intr1.60p b/eg/intr1.60p index 46c8888..b6a1d3d 100644 --- a/eg/intr1.60p +++ b/eg/intr1.60p @@ -1,7 +1,27 @@ byte vic_border @ 53280 -vector cinv @ 788 +// +// The constraints on these 2 vectors are kind-of sort-of big fibs. +// They're only written this way so they can be compatible with our +// routine. In fact, CINV is an interrupt routine where it doesn't +// really matter what you trash anyway, because all registers were +/// saved by the caller (the KERNAL) and will be restored by the end +// of the code of the saved origin cinv routine that we goto. +// +// I wonder if this could be arranged somehow to be less fibby, in +// a future version of SixtyPical. +// + +vector cinv + inputs vic_border + outputs vic_border + trashes z, n + @ 788 + vector save_cinv + inputs vic_border + outputs vic_border + trashes z, n routine our_cinv inputs vic_border @@ -9,10 +29,11 @@ routine our_cinv trashes z, n { inc vic_border + goto save_cinv } routine main - inputs cinv, our_cinv + inputs cinv outputs cinv, save_cinv trashes a, n, z {