1
0
mirror of https://github.com/catseye/SixtyPical.git synced 2024-06-14 23:29:29 +00:00

Add draft of Design Goals document.

This commit is contained in:
Chris Pressey 2017-11-21 11:13:21 +00:00
parent c33e6ef0e9
commit b638671eaf
3 changed files with 35 additions and 2 deletions

View File

@ -1,6 +1,12 @@
History of SixtyPical
=====================
0.8
---
* Explicit word literals prefixed with `word` token.
* Can `copy` literals into user-defined destinations.
0.7
---

View File

@ -29,9 +29,9 @@ The current development version of SixtyPical is 0.8-PRE.
Documentation
-------------
* Design Goals — coming soon.
* [Design Goals](doc/Design%20Goals.md)
* [SixtyPical specification](doc/SixtyPical.md)
* [SixtyPical history](HISTORY.md)
* [SixtyPical revision history](HISTORY.md)
* [Literate test suite for SixtyPical syntax](tests/SixtyPical%20Syntax.md)
* [Literate test suite for SixtyPical execution](tests/SixtyPical%20Execution.md)
* [Literate test suite for SixtyPical analysis](tests/SixtyPical%20Analysis.md)

27
doc/Design Goals.md Normal file
View File

@ -0,0 +1,27 @@
Design Goals for SixtyPical
===========================
(draft)
The intent of SixtyPical is to have a very low-level language that
benefits from abstract interpretation.
"Very low-level" means, on a comparable level of abstraction as
assembly language.
In the original vision for SixtyPical, SixtyPical instructions mapped
nearly 1:1 to 6502 instructions. However, many times when programming
in 6502 you're using idioms (e.g. adding a 16-bit constant to a 16-bit
value stored in 2 bytes) and it's just massively easier to analyze such
actions when they are represented by a single instruction.
So SixtyPical instructions are similar to, inspired by, and have
analogous restrictions as 6502 instructions, but in many ways, they
are more abstract. For example, `copy`.
The intent is that programming in SixtyPical is a lot like programming
in 6052 assembler, but it's harder to make a stupid error that you have
to spend a lot of time debugging.
The intent is not to make it absolutely impossible to make such errors,
just harder.