3844651e49
This was tedious for three reasons beyond the usual one of having to track and update offsets several time while I debug: - The Bochs troubles of the previous commit kept polluting my brain even though they were irrelevant. - I had to keep some changes locally to allow myself to use Bochs, which polluted my working directory. - I had to travel the long way to the realization that I'm not actually initializing the stack anywhere. BIOS was starting my stack off at 0x10000, which was promptly clobbered by my second read from disk. The good news: while I'm here I grow the interrupt descriptor table. So I don't have to go through this exercise when I get back to supporting the mouse. |
||
---|---|---|
.. | ||
advent2020 | ||
browse | ||
raytracing | ||
tile | ||
README.md | ||
arith.mu | ||
assort | ||
assort.subx | ||
braces | ||
braces.subx | ||
calls | ||
calls.subx | ||
crenshaw2-1 | ||
crenshaw2-1.subx | ||
crenshaw2-1b | ||
crenshaw2-1b.subx | ||
dquotes | ||
dquotes.subx | ||
ex1 | ||
ex1.mu | ||
ex1.subx | ||
ex2 | ||
ex2.mu | ||
ex2.subx | ||
ex3 | ||
ex3.2.mu | ||
ex3.mu | ||
ex3.subx | ||
ex4 | ||
ex4.subx | ||
ex5 | ||
ex5.subx | ||
ex6 | ||
ex6.subx | ||
ex7 | ||
ex7.subx | ||
ex8 | ||
ex8.subx | ||
ex9 | ||
ex9.subx | ||
ex10 | ||
ex10.subx | ||
ex11 | ||
ex11.subx | ||
ex12 | ||
ex12.subx | ||
ex13 | ||
ex13.subx | ||
ex14 | ||
ex14.subx | ||
factorial | ||
factorial.mu | ||
factorial.subx | ||
factorial2.subx | ||
factorial3.subx | ||
factorial4.subx | ||
hello.mu | ||
hex | ||
hex.subx | ||
mu | ||
mu.subx | ||
pack | ||
pack.subx | ||
parse-int.mu | ||
print-file.mu | ||
random | ||
random.subx | ||
rpn.mu | ||
sigils | ||
sigils.subx | ||
subx-params.subx | ||
survey_baremetal | ||
survey_baremetal.subx | ||
survey_elf | ||
survey_elf.subx | ||
tests | ||
tests.subx | ||
texture.mu | ||
tui.mu | ||
vimrc.vim |
README.md
Some apps written in SubX and Mu. Check out:
-
tile
: An experimental live-updating postfix shell environment that updates as you type. Prototype. Look at this to see what is currently possible, not how I recommend building software. -
ex*
: small stand-alone examples that don't need any of the shared code at the top-level. They each have a simple pedagogical goal. Read these first. -
factorial*
: A simple program to compute factorials in 5 versions, showing all the different syntax sugars and what they expand to. -
Code unique to phases of our build toolchain:
- Core SubX:
hex
,survey_elf
,pack
,dquotes
,assort
,tests
- Syntax sugar for SubX:
sigils
,calls
,braces
- More ambitious translator for a memory-safe language (in progress):
mu
- Core SubX:
-
Miscellaneous test programs.
All SubX apps include binaries. At any commit, an example's binary should be
identical bit for bit with the result of translating the corresponding .subx
file. The binary should also be natively runnable on a Linux system running on
Intel x86 processors, either 32- or 64-bit. If either of these invariants is
violated, it's a bug.