Tree @adding-routines (Download .tar.gz)
UampirNexol
UampirNexol is a proof-of-concept implementation of Machine State Combinators.
It is a language in which MOS 6502 machine language programs can be expressed as functions which map machine states to machine states. From these functions, 6502 machine code can then be extracted that can be executed on a 6502-based computer.
For a fuller description of the language, see the file doc/Definition-of-UampirNexol.md, which gives a definition of the language as a literate test suite written in Falderal.
Quick start
- Install
ghc
. - Clone this repo.
cd
into the repo directory.- Run
./build.sh
. - The resulting executable will be found in
bin
. If you like, you can putbin
on your executable search path.
TODO
trash
location function (pseudo-instruction)- implement extraction of
call
androutine
- extract
routines
fromlet
- resolve routine map addresses
- dedup extraction of
let
when the binding is asub
- multiple bindings in a
let
extern
with location and type
Commit History
@adding-routines
git clone https://git.catseye.tc/UampirNexol/
- Going to need to make the evaluator work on general values. Chris Pressey 10 days ago
- Add failing tests for evaluator. Chris Pressey 10 days ago
- Split up documentation, and attempt to add some notes. Chris Pressey 10 days ago
- Develop serialize, though this is probably not what we want Chris Pressey 16 days ago
- Implement --output-prg. Slightly awkward, but it will do for now Chris Pressey 16 days ago
- First, rudimentary version of serialize function. Needs work. Chris Pressey 16 days ago
- Add --output-prg command-line option, not yet implemented. Chris Pressey 16 days ago
- Fix expectation in test (branch +3 was not actually far enough.) Chris Pressey 17 days ago
- Fix offset in forward branch resolution. Chris Pressey 17 days ago
- Use backpatching system to generate conditional (not correct yet). Chris Pressey 17 days ago