# fuzzy a concatenative stack based programming language for [george](https://git.augustkline.com/august/george) <3 ## design principles #### lightweight fuzzy runs on a 65\(c\)02 and nothing else #### antiportable fuzzy is part of george, and shouldn't run anywhere else. #### low-level (most of) fuzzy could be written as assembler macros, but that's no fun #### reliable if fuzzy says it can run, george can run it ## how to work on fuzzy edit `program.asm` and run `./run.sh`. the program gets included in the fuzzy compiler `fuzzy.asm` and is assembled with `vasm6502_oldstyle`, then george runs the program, reading out her system image when she reaches `stp` or `brk` then the program she compiled gets formatted as a standard 32k rom, and she reads it again, and then shows her system image again when the program finishes (hits `stp` or `brk`). since fuzzy works on a zero-page data stack, it's pretty easy to read the results of a program from the hexdump. for now this loop only works on apple silicon, but eventually i'll compile a `george` binary for x86 linux and switch based on the host platform. ## reference help i wrote [syntax](./syntax.md) and [semantics](./semantics.md) docs to keep track of how fuzzy works before starting work on the compiler implementation in assembly. they're the _official_ source of truth for how fuzzy works. assume that the compiler implementation is always in flux :) ## a note on implementation i was writing fuzzy's compiler in rust for a sec, but then i realized that it would be a fun challenge to write it in assembly. it's been wayyy easier! and fun! and so rewarding :) this feels like a flex but i'm genuinely just so happy to see george & fuzzy playing together in this little computer world i've made <3