git @ Cat's Eye Technologies SixtyPical / 4f28f43
The existing analysis is actually sufficient. Document why this is. Chris Pressey 3 years ago
3 changed file(s) with 7 addition(s) and 3 deletion(s). Raw diff Collapse all Expand all
55
66 * `or a, z`, `and a, z`, and `eor a, z` compile to zero-page operations
77 if the address of z < 256.
8 * More thorough tests and justifications written for the case of
9 assigning a routine to a vector with a "wider" type.
810
911 0.15
1012 ----
7676 ### And at some point...
7777
7878 * `low` and `high` address operators - to turn `word` type into `byte`.
79 * Tests, and implementation, ensuring a routine can be assigned to a vector of "wider" type
8079 * Related: can we simply view a (small) part of a buffer as a byte table? If not, why not?
8180 * Related: add constant to buffer to get new buffer. (Or to table, but... well, maybe.)
8281 * Check that the buffer being read or written to through pointer, appears in appropriate inputs or outputs set.
23082308 | }
23092309 ? IncompatibleConstraintsError
23102310
2311 If the vector produces an output that the routine doesn't produce, that's an error.
2311 If the vector produces an output that the routine doesn't produce, that's not an error.
2312 (The interface claims the result of calling the routine is defined, but the implementation
2313 actually preserves it instead of changing it; the caller can still treat it as a defined
2314 output.)
23122315
23132316 | vector routine
23142317 | inputs x, y
23312334 | {
23322335 | copy foo, vec
23332336 | }
2334 ? IncompatibleConstraintsError
2337 = ok
23352338
23362339 If the vector fails to produce an output that the routine produces, that's an error.
23372340