about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--linux/100.txt12
-rw-r--r--linux/200.txt6
-rw-r--r--linux/assort.subx2
-rw-r--r--linux/bootstrap/011run.cc2
-rw-r--r--linux/braces.subx10
-rw-r--r--linux/calls.subx8
-rw-r--r--linux/crenshaw2-1.subx2
-rw-r--r--linux/crenshaw2-1b.subx2
-rw-r--r--linux/dquotes.subx2
-rw-r--r--linux/ex1.subx2
-rw-r--r--linux/ex10.subx2
-rw-r--r--linux/ex11.subx2
-rw-r--r--linux/ex12.subx2
-rw-r--r--linux/ex13.subx2
-rw-r--r--linux/ex14.subx2
-rw-r--r--linux/ex2.subx2
-rw-r--r--linux/ex3.subx2
-rw-r--r--linux/ex4.subx2
-rw-r--r--linux/ex5.subx2
-rw-r--r--linux/ex6.subx2
-rw-r--r--linux/ex7.subx2
-rw-r--r--linux/ex8.subx2
-rw-r--r--linux/ex9.subx2
-rw-r--r--linux/factorial.mu2
-rw-r--r--linux/factorial.subx2
-rw-r--r--linux/factorial2.subx4
-rw-r--r--linux/factorial3.subx4
-rw-r--r--linux/factorial4.subx4
-rw-r--r--linux/hex.subx2
-rw-r--r--linux/mu.subx2
-rw-r--r--linux/pack.subx2
-rw-r--r--linux/random.subx2
-rw-r--r--linux/sigils.subx2
-rw-r--r--linux/stats.txt86
-rw-r--r--linux/survey_baremetal.subx2
-rw-r--r--linux/survey_elf.subx2
-rw-r--r--linux/tests.subx2
-rw-r--r--linux/tile/README.md4
-rw-r--r--subx.md8
-rw-r--r--subx_bare.md7
-rw-r--r--vimrc.vim26
41 files changed, 106 insertions, 131 deletions
diff --git a/linux/100.txt b/linux/100.txt
index 5d309194..2cb43d8d 100644
--- a/linux/100.txt
+++ b/linux/100.txt
@@ -3,9 +3,9 @@ We're now past C++ bootstrap.
 Layers in the 1xx series are in bare SubX, without any syntax sugar. They are
 intended to be used by the phases of the self-hosted translator to replicate
 the functionality of the C++ bootstrap:
-  apps/hex.subx
-  apps/survey_elf.subx
-  apps/pack.subx
-  apps/dquotes.subx
-  apps/assort.subx
-  apps/tests.subx
+  hex.subx
+  survey_elf.subx
+  pack.subx
+  dquotes.subx
+  assort.subx
+  tests.subx
diff --git a/linux/200.txt b/linux/200.txt
index 5dd57840..9bfc1c20 100644
--- a/linux/200.txt
+++ b/linux/200.txt
@@ -1,5 +1,5 @@
 Layers in the 2xx series are in bare SubX, without any syntax sugar. They are
 intended to be used by various syntax-sugar phases:
-  apps/sigils.subx
-  apps/calls.subx
-  apps/braces.subx
+  sigils.subx
+  calls.subx
+  braces.subx
diff --git a/linux/assort.subx b/linux/assort.subx
index 96130ded..d69a3bd9 100644
--- a/linux/assort.subx
+++ b/linux/assort.subx
@@ -7,7 +7,7 @@
 # because we don't know if they refer to the line above or the line below.
 #
 # To run:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/subx-params.subx apps/assort.subx  -o apps/assort
+#   $ bootstrap/bootstrap translate [01]*.subx subx-params.subx assort.subx  -o assort
 #   $ cat x
 #   == code
 #   abc
diff --git a/linux/bootstrap/011run.cc b/linux/bootstrap/011run.cc
index 424e40e9..18ac0903 100644
--- a/linux/bootstrap/011run.cc
+++ b/linux/bootstrap/011run.cc
@@ -27,7 +27,7 @@ put_new(Help, "syntax",
   "after a '/', but they can never contain whitespace. Metadata has no effect\n"
   "at runtime, but can be handy when rewriting macros.\n"
   "\n"
-  "Check out the example programs in the apps/ directory, particularly apps/ex*.\n"
+  "Check out the example programs linux/ex*.\n"
 );
 :(before "End Help Contents")
 cerr << "  syntax\n";
diff --git a/linux/braces.subx b/linux/braces.subx
index d6b8f0f4..57853985 100644
--- a/linux/braces.subx
+++ b/linux/braces.subx
@@ -1,8 +1,8 @@
 # Structured control flow using break/loop rather than jump.
 #
 # To run (on Linux):
-#   $ ./translate_subx init.linux [012]*.subx apps/subx-params.subx apps/braces.subx
-#   $ mv a.elf apps/braces
+#   $ ./translate_subx init.linux [012]*.subx subx-params.subx braces.subx
+#   $ mv a.elf braces
 #
 # Example 1:
 #   $ cat x.subx
@@ -10,7 +10,7 @@
 #     7c/jump-if-< break/disp8
 #     74/jump-if-= loop/disp8
 #   }
-#   $ cat x.subx |apps/braces
+#   $ cat x.subx |braces
 #   _loop1:
 #     7c/jump-if-< _break1/disp8
 #     74/jump-if-= _loop1/disp8
@@ -24,7 +24,7 @@
 #   {
 #     74/jump-if-= loop/disp8
 #   }
-#   $ cat x.subx |apps/braces
+#   $ cat x.subx |braces
 #   _loop1:
 #     7c/jump-if-< _break1/disp8
 #   _break1:
@@ -40,7 +40,7 @@
 #     }
 #     7c/jump-if-< loop/disp8
 #   }
-#   $ cat x.subx |apps/braces
+#   $ cat x.subx |braces
 #   _loop1:
 #     _loop2:
 #       74/jump-if-= _loop2/disp8
diff --git a/linux/calls.subx b/linux/calls.subx
index 903ae0f2..cbe327d3 100644
--- a/linux/calls.subx
+++ b/linux/calls.subx
@@ -1,18 +1,18 @@
 # Function calls in a single line.
 #
 # To run (on Linux):
-#   $ ./translate_subx init.linux [012]*.subx apps/subx-params.subx apps/calls.subx
-#   $ mv a.elf apps/calls
+#   $ ./translate_subx init.linux [012]*.subx subx-params.subx calls.subx
+#   $ mv a.elf calls
 #
 # Example 1:
-#   $ echo '(foo %eax)'                         |  apps/calls
+#   $ echo '(foo %eax)'                         |  calls
 #   # . (foo %eax)                                      # output has comments
 #   ff 6/subop/push %eax                                # push
 #   e8/call foo/disp32                                  # call
 #   81 0/subop/add %esp 4/imm32                         # undo push
 #
 # Example 2:
-#   $ echo '(foo Var1 *(eax + 4) "blah")'       |  apps/calls
+#   $ echo '(foo Var1 *(eax + 4) "blah")'       |  calls
 #   # . (foo Var1 *(eax + 4) "blah")
 #   68/push "blah"/imm32
 #   ff 6/subop/push *(eax + 4)                          # push args in..
diff --git a/linux/crenshaw2-1.subx b/linux/crenshaw2-1.subx
index 41e3ad4e..ade0399a 100644
--- a/linux/crenshaw2-1.subx
+++ b/linux/crenshaw2-1.subx
@@ -3,7 +3,7 @@
 # except that we support hex digits.
 #
 # To run:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/crenshaw2-1.subx -o apps/crenshaw2-1
+#   $ bootstrap/bootstrap translate [01]*.subx crenshaw2-1.subx -o crenshaw2-1
 #   $ echo '3'  |bootstrap/bootstrap run crenshaw2-1
 # Expected output:
 #   # syscall(exit, 3)
diff --git a/linux/crenshaw2-1b.subx b/linux/crenshaw2-1b.subx
index 6915bd01..d5b8194e 100644
--- a/linux/crenshaw2-1b.subx
+++ b/linux/crenshaw2-1b.subx
@@ -3,7 +3,7 @@
 # except that we support hex numbers of multiple digits.
 #
 # To run:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/crenshaw2-1b.subx -o apps/crenshaw2-1b
+#   $ bootstrap/bootstrap translate [01]*.subx crenshaw2-1b.subx -o crenshaw2-1b
 #   $ echo '1a'  |bootstrap/bootstrap run crenshaw2-1b
 # Expected output:
 #   # syscall(exit, 1a)
diff --git a/linux/dquotes.subx b/linux/dquotes.subx
index 6de81cc8..2fb65d42 100644
--- a/linux/dquotes.subx
+++ b/linux/dquotes.subx
@@ -2,7 +2,7 @@
 # Replace them with references to new variables in the data segment.
 #
 # To run:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/subx-params.subx apps/dquotes.subx  -o apps/dquotes
+#   $ bootstrap/bootstrap translate [01]*.subx subx-params.subx dquotes.subx  -o dquotes
 #   $ cat x
 #   == code
 #   ab "cd ef"/imm32
diff --git a/linux/ex1.subx b/linux/ex1.subx
index 2316e17e..183c014a 100644
--- a/linux/ex1.subx
+++ b/linux/ex1.subx
@@ -2,7 +2,7 @@
 # Just return 42.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex1.subx -o apps/ex1
+#   $ bootstrap/bootstrap translate ex1.subx -o ex1
 #   $ bootstrap/bootstrap run ex1
 # Expected result:
 #   $ echo $?
diff --git a/linux/ex10.subx b/linux/ex10.subx
index c62b32e2..2be53012 100644
--- a/linux/ex10.subx
+++ b/linux/ex10.subx
@@ -1,7 +1,7 @@
 # String comparison: return 1 iff the two args passed in at the commandline are equal.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex10.subx -o apps/ex10
+#   $ bootstrap/bootstrap translate ex10.subx -o ex10
 #   $ bootstrap/bootstrap run ex10 abc abd
 # Expected result:
 #   $ echo $?
diff --git a/linux/ex11.subx b/linux/ex11.subx
index 1d6f6fc4..d8596b8e 100644
--- a/linux/ex11.subx
+++ b/linux/ex11.subx
@@ -6,7 +6,7 @@
 # a null-terminated 'kernel string' with a size-prefixed 'SubX string'.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex11.subx -o apps/ex11
+#   $ bootstrap/bootstrap translate ex11.subx -o ex11
 #   $ bootstrap/bootstrap run ex11  # runs a series of tests
 #   ......  # all tests pass
 #
diff --git a/linux/ex12.subx b/linux/ex12.subx
index fa9e2b28..4f1617a7 100644
--- a/linux/ex12.subx
+++ b/linux/ex12.subx
@@ -2,7 +2,7 @@
 # Create a new segment using mmap, save the address, write to it.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex12.subx -o apps/ex12
+#   $ bootstrap/bootstrap translate ex12.subx -o ex12
 #   $ bootstrap/bootstrap run ex12
 # You shouldn't get a segmentation fault.
 
diff --git a/linux/ex13.subx b/linux/ex13.subx
index 295e9d2f..862bf897 100644
--- a/linux/ex13.subx
+++ b/linux/ex13.subx
@@ -1,7 +1,7 @@
 # Compare 3 and 3.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex13.subx -o apps/ex13
+#   $ bootstrap/bootstrap translate ex13.subx -o ex13
 #   $ bootstrap/bootstrap run ex13
 # Expected result:
 #   $ echo $?
diff --git a/linux/ex14.subx b/linux/ex14.subx
index bcf68641..531bae7a 100644
--- a/linux/ex14.subx
+++ b/linux/ex14.subx
@@ -1,7 +1,7 @@
 # Multiply 2 numbers.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex14.subx -o apps/ex14
+#   $ bootstrap/bootstrap translate ex14.subx -o ex14
 #   $ bootstrap/bootstrap run ex14
 # Expected result:
 #   $ echo $?
diff --git a/linux/ex2.subx b/linux/ex2.subx
index 55aadbd4..5ca39872 100644
--- a/linux/ex2.subx
+++ b/linux/ex2.subx
@@ -1,7 +1,7 @@
 # Add 3 and 4, and return the result in the exit code.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex2.subx -o apps/ex2
+#   $ bootstrap/bootstrap translate ex2.subx -o ex2
 #   $ bootstrap/bootstrap run ex2
 # Expected result:
 #   $ echo $?
diff --git a/linux/ex3.subx b/linux/ex3.subx
index caf6ef26..5b74d76c 100644
--- a/linux/ex3.subx
+++ b/linux/ex3.subx
@@ -1,7 +1,7 @@
 # Add the first 10 numbers, and return the result in the exit code.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex3.subx -o apps/ex3
+#   $ bootstrap/bootstrap translate ex3.subx -o ex3
 #   $ bootstrap/bootstrap run ex3
 # Expected result:
 #   $ echo $?
diff --git a/linux/ex4.subx b/linux/ex4.subx
index f054b748..ee78ce7d 100644
--- a/linux/ex4.subx
+++ b/linux/ex4.subx
@@ -1,7 +1,7 @@
 # Read a character from stdin, save it to a global, write it to stdout.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex4.subx -o apps/ex4
+#   $ bootstrap/bootstrap translate ex4.subx -o ex4
 #   $ bootstrap/bootstrap run ex4
 
 == data
diff --git a/linux/ex5.subx b/linux/ex5.subx
index a3b1acfb..e8957ea7 100644
--- a/linux/ex5.subx
+++ b/linux/ex5.subx
@@ -1,7 +1,7 @@
 # Read a character from stdin, save it to a local on the stack, write it to stdout.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex5.subx -o apps/ex5
+#   $ bootstrap/bootstrap translate ex5.subx -o ex5
 #   $ bootstrap/bootstrap run ex5
 
 == code
diff --git a/linux/ex6.subx b/linux/ex6.subx
index 2d1625f8..5715e94f 100644
--- a/linux/ex6.subx
+++ b/linux/ex6.subx
@@ -1,7 +1,7 @@
 # Print out a (global variable) string to stdout.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex6.subx -o apps/ex6
+#   $ bootstrap/bootstrap translate ex6.subx -o ex6
 #   $ bootstrap/bootstrap run ex6
 #   Hello, world!
 
diff --git a/linux/ex7.subx b/linux/ex7.subx
index 5962c5f7..ad1a50b6 100644
--- a/linux/ex7.subx
+++ b/linux/ex7.subx
@@ -5,7 +5,7 @@
 # the character read.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex7.subx -o apps/ex7
+#   $ bootstrap/bootstrap translate ex7.subx -o ex7
 #   $ bootstrap/bootstrap run ex7
 # Expected result:
 #   $ echo $?
diff --git a/linux/ex8.subx b/linux/ex8.subx
index 5a08b039..909d1adb 100644
--- a/linux/ex8.subx
+++ b/linux/ex8.subx
@@ -1,7 +1,7 @@
 # Example reading commandline arguments: compute length of first arg.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex8.subx -o apps/ex8
+#   $ bootstrap/bootstrap translate ex8.subx -o ex8
 #   $ bootstrap/bootstrap run ex8 abc de fghi
 # Expected result:
 #   $ echo $?
diff --git a/linux/ex9.subx b/linux/ex9.subx
index 594c9575..cbab3aa9 100644
--- a/linux/ex9.subx
+++ b/linux/ex9.subx
@@ -4,7 +4,7 @@
 # letter of second arg.
 #
 # To run:
-#   $ bootstrap/bootstrap translate apps/ex9.subx -o apps/ex9
+#   $ bootstrap/bootstrap translate ex9.subx -o ex9
 #   $ bootstrap/bootstrap run ex9 z x
 # Expected result:
 #   $ echo $?
diff --git a/linux/factorial.mu b/linux/factorial.mu
index d2088486..7eccc1ec 100644
--- a/linux/factorial.mu
+++ b/linux/factorial.mu
@@ -14,7 +14,7 @@
 # There's only one test in this file, but you'll also see tests running from
 # Mu's standard library.
 #
-# Compare apps/factorial4.subx
+# Compare factorial4.subx
 
 fn factorial n: int -> _/eax: int {
   compare n, 1
diff --git a/linux/factorial.subx b/linux/factorial.subx
index 8dddbd4d..1bcc0a9d 100644
--- a/linux/factorial.subx
+++ b/linux/factorial.subx
@@ -1,7 +1,7 @@
 ## compute the factorial of 5, and print the result
 #
 # To run:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/factorial.subx -o apps/factorial
+#   $ bootstrap/bootstrap translate [01]*.subx factorial.subx -o factorial
 #   $ bootstrap/bootstrap run factorial
 # Expected result:
 #   $ echo $?
diff --git a/linux/factorial2.subx b/linux/factorial2.subx
index 3ef160e1..16af9008 100644
--- a/linux/factorial2.subx
+++ b/linux/factorial2.subx
@@ -4,7 +4,7 @@
 #   rm32 operands
 #
 # To run:
-#   $ ./translate_subx init.linux [01]*.subx apps/factorial.subx -o apps/factorial
+#   $ ./translate_subx init.linux [01]*.subx factorial.subx -o factorial
 #   $ bootstrap/bootstrap run factorial
 # Expected result:
 #   $ echo $?
@@ -16,7 +16,7 @@
 #   ........
 # Every '.' indicates a passing test. Failing tests get a 'F'.
 #
-# Compare apps/factorial.subx
+# Compare factorial.subx
 
 == code
 
diff --git a/linux/factorial3.subx b/linux/factorial3.subx
index 5f96477d..72b76963 100644
--- a/linux/factorial3.subx
+++ b/linux/factorial3.subx
@@ -5,7 +5,7 @@
 #   function calls
 #
 # To run:
-#   $ ./translate_subx init.linux [01]*.subx apps/factorial.subx -o apps/factorial
+#   $ ./translate_subx init.linux [01]*.subx factorial.subx -o factorial
 #   $ bootstrap/bootstrap run factorial
 # Expected result:
 #   $ echo $?
@@ -17,7 +17,7 @@
 #   ........
 # Every '.' indicates a passing test. Failing tests get a 'F'.
 #
-# Compare apps/factorial2.subx
+# Compare factorial2.subx
 
 == code
 
diff --git a/linux/factorial4.subx b/linux/factorial4.subx
index 41de8736..219fce41 100644
--- a/linux/factorial4.subx
+++ b/linux/factorial4.subx
@@ -6,7 +6,7 @@
 #   control flow
 #
 # To run:
-#   $ ./translate_subx init.linux [01]*.subx apps/factorial.subx -o apps/factorial
+#   $ ./translate_subx init.linux [01]*.subx factorial.subx -o factorial
 #   $ bootstrap/bootstrap run factorial
 # Expected result:
 #   $ echo $?
@@ -18,7 +18,7 @@
 #   ........
 # Every '.' indicates a passing test. Failing tests get a 'F'.
 #
-# Compare apps/factorial3.subx
+# Compare factorial3.subx
 
 == code
 
diff --git a/linux/hex.subx b/linux/hex.subx
index 6024eb25..242dc5d4 100644
--- a/linux/hex.subx
+++ b/linux/hex.subx
@@ -3,7 +3,7 @@
 # comments between '#' and newline.
 #
 # To run:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/subx-params.subx apps/hex.subx  -o apps/hex
+#   $ bootstrap/bootstrap translate [01]*.subx subx-params.subx hex.subx  -o hex
 #   $ echo '80 81 82  # comment'  |bootstrap/bootstrap run hex  |xxd -
 # Expected output:
 #   00000000: 8081 82
diff --git a/linux/mu.subx b/linux/mu.subx
index e65fa9cc..120d0cce 100644
--- a/linux/mu.subx
+++ b/linux/mu.subx
@@ -2,7 +2,7 @@
 # http://akkartik.name/post/mu-2019-2
 #
 # To run:
-#   $ ./translate_subx init.linux [0-9]*.subx apps/mu.subx
+#   $ ./translate_subx init.linux [0-9]*.subx mu.subx
 #   $ ./a.elf < prog.mu > prog.elf
 
 # == Goals
diff --git a/linux/pack.subx b/linux/pack.subx
index 32785c35..7ed01c5e 100644
--- a/linux/pack.subx
+++ b/linux/pack.subx
@@ -3,7 +3,7 @@
 # uses are left untouched.
 #
 # To run:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/subx-params.subx apps/pack.subx  -o apps/pack
+#   $ bootstrap/bootstrap translate [01]*.subx subx-params.subx pack.subx  -o pack
 #   $ echo '05/add-to-eax 0x20/imm32'  |bootstrap/bootstrap run pack
 # Expected output:
 #   05 20 00 00 00  # 05/add-to-eax 0x20/imm32
diff --git a/linux/random.subx b/linux/random.subx
index 7e9c0f0e..639638cc 100644
--- a/linux/random.subx
+++ b/linux/random.subx
@@ -1,7 +1,7 @@
 # Repeatedly read 32-bit numbers from /dev/random, print them to stdout.
 #
 # To run:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/random.subx -o apps/random
+#   $ bootstrap/bootstrap translate [01]*.subx random.subx -o random
 #   $ bootstrap/bootstrap run random
 
 == code 0x09000000
diff --git a/linux/sigils.subx b/linux/sigils.subx
index f6c1c458..87d188a7 100644
--- a/linux/sigils.subx
+++ b/linux/sigils.subx
@@ -2,7 +2,7 @@
 # arguments.
 #
 # To run:
-#   $ bootstrap/bootstrap translate [012]*.subx apps/subx-params.subx apps/sigils.subx  -o apps/sigils
+#   $ bootstrap/bootstrap translate [012]*.subx subx-params.subx sigils.subx  -o sigils
 #
 # We currently support the following notations:
 #
diff --git a/linux/stats.txt b/linux/stats.txt
index 4d229e3a..1efae374 100644
--- a/linux/stats.txt
+++ b/linux/stats.txt
@@ -1,52 +1,52 @@
 ## Lines in source files
-                          Initial   -whitespace/comments/tests
-apps/factorial.subx         120       44
-apps/crenshaw2-1.subx       561      180
-apps/crenshaw2-1b.subx      757      186
-apps/hex.subx              1442      149
-apps/survey_elf.subx       4733      905
-apps/pack.subx             5881      840
-apps/dquotes.subx          1925      383
-apps/assort.subx            905      183
-apps/tests.subx             284      137
-apps/sigils.subx           4641      896
-apps/calls.subx            1785      448
-apps/braces.subx            360      121
-apps/mu.subx              36692    12858
+                     Initial   -whitespace/comments/tests
+factorial.subx         120       44
+crenshaw2-1.subx       561      180
+crenshaw2-1b.subx      757      186
+hex.subx              1442      149
+survey_elf.subx       4733      905
+pack.subx             5881      840
+dquotes.subx          1925      383
+assort.subx            905      183
+tests.subx             284      137
+sigils.subx           4641      896
+calls.subx            1785      448
+braces.subx            360      121
+mu.subx              36692    12858
 
 ## Total source lines needed including libraries
-                          Initial   -whitespace/comments/tests/dead code
-apps/factorial.subx        8436     1700
-apps/crenshaw2-1.subx      8644     1925
-apps/crenshaw2-1b.subx     8736     1931
-apps/hex.subx              9065     1908
-apps/survey_elf.subx      10217     3248
-apps/pack.subx            10589     2727
-apps/dquotes.subx          9262     2468
-apps/assort.subx           8686     2425
-apps/tests.subx            8519     2214
-apps/sigils.subx          10578     3043
-apps/calls.subx            9242     2388
-apps/braces.subx           8545     2111
-apps/mu.subx              35438    15820
+                     Initial   -whitespace/comments/tests/dead code
+factorial.subx        8436     1700
+crenshaw2-1.subx      8644     1925
+crenshaw2-1b.subx     8736     1931
+hex.subx              9065     1908
+survey_elf.subx      10217     3248
+pack.subx            10589     2727
+dquotes.subx          9262     2468
+assort.subx           8686     2425
+tests.subx            8519     2214
+sigils.subx          10578     3043
+calls.subx            9242     2388
+braces.subx           8545     2111
+mu.subx              35438    15820
 
 ## executable size in KB
-                          Initial   -tests/dead code
-apps/crenshaw2-1            41        4.3
-apps/crenshaw2-1b           42        5.2
-apps/factorial              42        5.2
-apps/hex                    45        5.0
-apps/survey_elf             51        9.6
-apps/pack                   54        7.6
-apps/dquotes                46        6.5
-apps/assort                 42        6.4
-apps/tests                  41        5.8
-apps/sigils                 54        9.1
-apps/calls                  47        7.1
-apps/braces                 42        5.9
-apps/mu                    563      131.0
+                     Initial   -tests/dead code
+crenshaw2-1            41        4.3
+crenshaw2-1b           42        5.2
+factorial              42        5.2
+hex                    45        5.0
+survey_elf             51        9.6
+pack                   54        7.6
+dquotes                46        6.5
+assort                 42        6.4
+tests                  41        5.8
+sigils                 54        9.1
+calls                  47        7.1
+braces                 42        5.9
+mu                    563      131.0
 
-## history of apps/mu.subx
+## history of mu.subx
                                                         date    commit  mu.subx   -tests/cmts  binary (KB excl. dead code)
 parsing function headers                           2019 Oct 30  5725      621         277         6.9
 function calls                                          Nov 10  5739     1202         346         7.2
diff --git a/linux/survey_baremetal.subx b/linux/survey_baremetal.subx
index 41314e53..9d31466e 100644
--- a/linux/survey_baremetal.subx
+++ b/linux/survey_baremetal.subx
@@ -3,7 +3,7 @@
 # Use the addresses assigned to replace labels.
 #
 # To build:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/subx-params.subx apps/survey_baremetal.subx  -o apps/survey_baremetal
+#   $ bootstrap/bootstrap translate [01]*.subx subx-params.subx survey_baremetal.subx  -o survey_baremetal
 #
 # The expected input is a stream of bytes and some interspersed labels.
 # Comments and '==' segment headers are allowed, but names are ignored. The
diff --git a/linux/survey_elf.subx b/linux/survey_elf.subx
index f1d1bc96..211408cc 100644
--- a/linux/survey_elf.subx
+++ b/linux/survey_elf.subx
@@ -5,7 +5,7 @@
 #   b) add an ELF header and segment headers with addresses and offsets correctly filled in
 #
 # To build:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/subx-params.subx apps/survey_elf.subx  -o apps/survey_elf
+#   $ bootstrap/bootstrap translate [01]*.subx subx-params.subx survey_elf.subx  -o survey_elf
 #
 # The expected input is a stream of bytes with '==' segment headers, comments
 # and some interspersed labels.
diff --git a/linux/tests.subx b/linux/tests.subx
index 63d64194..1075b113 100644
--- a/linux/tests.subx
+++ b/linux/tests.subx
@@ -2,7 +2,7 @@
 # all functions starting with 'test-'.
 #
 # To build:
-#   $ bootstrap/bootstrap translate [01]*.subx apps/subx-params.subx apps/tests.subx  -o apps/tests
+#   $ bootstrap/bootstrap translate [01]*.subx subx-params.subx tests.subx  -o tests
 
 == code
 #   instruction                     effective address                                                   register    displacement    immediate
diff --git a/linux/tile/README.md b/linux/tile/README.md
index e8b96d09..f82c838a 100644
--- a/linux/tile/README.md
+++ b/linux/tile/README.md
@@ -27,7 +27,7 @@ $ ./a.elf type
 This is just a prototype. There are no tests.
 
 To add a new primitive you'll need to hard-code it into the `evaluate`
-function (apps/tile/rpn.mu).
+function (linux/tile/rpn.mu).
 
 There's also a second place you'll want to teach about predefined primitives:
-`bound-function?` (apps/tile/environment.mu)
+`bound-function?` (linux/tile/environment.mu)
diff --git a/subx.md b/subx.md
index 26f2c4f3..4e28a49c 100644
--- a/subx.md
+++ b/subx.md
@@ -1,6 +1,6 @@
 ## SubX
 
-SubX is a notation for a subset of x86 machine code. [The Mu translator](http://akkartik.github.io/mu/html/apps/mu.subx.html)
+SubX is a notation for a subset of x86 machine code. [The Mu translator](http://akkartik.github.io/mu/html/linux/mu.subx.html)
 is implemented in SubX and also emits SubX code.
 
 Here's an example program in SubX that adds 1 and 1 and returns the result to
@@ -158,8 +158,8 @@ string literal surrounded by quotes (`"`) in an `imm32` argument. SubX will
 transparently copy it to the `data` segment and replace it with its address.
 Strings are the only place where a SubX word is allowed to contain spaces.
 
-That should be enough information for writing SubX programs. The `apps/`
-directory provides some fodder for practice in the `apps/ex*.subx` files,
+That should be enough information for writing SubX programs. The `linux/`
+directory provides some fodder for practice in the `linux/ex*.subx` files,
 giving a more gradual introduction to SubX features. In particular, you should
-work through `apps/factorial4.subx`, which demonstrates all the above ideas in
+work through `linux/factorial4.subx`, which demonstrates all the above ideas in
 concert.
diff --git a/subx_bare.md b/subx_bare.md
index ab909e72..f4e6a03e 100644
--- a/subx_bare.md
+++ b/subx_bare.md
@@ -79,7 +79,7 @@ and digest it:
 
 Here's an example showing these arguments at work:
 
-<img alt='apps/ex3.subx' src='html/ex3.png'>
+<img alt='linux/ex3.subx' src='html/ex3.png'>
 
 This program sums the first 10 natural numbers. By convention I use horizontal
 tabstops to help read instructions, dots to help follow the long lines,
@@ -151,7 +151,8 @@ $ echo $?
 42
 
 # or, automating the above steps
-$ ./translate_subx init.linux apps/ex1.subx
+$ cd linux
+$ ./translate_subx 000init.linux ex1.subx
 $ ./a.elf
 $ echo $?
 42
@@ -160,7 +161,7 @@ $ echo $?
 Or, running in a VM on other platforms (much slower):
 
 ```sh
-$ ./translate_subx_emulated init.linux apps/ex1.subx  # generates identical a.elf to above
+$ ./translate_subx_emulated init.linux linux/ex1.subx  # generates identical a.elf to above
 $ bootstrap/bootstrap run a.elf
 $ echo $?
 42
diff --git a/vimrc.vim b/vimrc.vim
index 53a60e0d..8f902777 100644
--- a/vimrc.vim
+++ b/vimrc.vim
@@ -27,32 +27,6 @@ augroup LocalVimrc
   autocmd BufRead,BufNewFile *.subx set ft=subx
 augroup END
 
-" Scenarios considered:
-"   opening or starting vim with a new or existing file without an extension (should interpret as C++)
-"   opening or starting vim with a new or existing file with a .mu extension
-"   starting vim or opening a buffer without a file name (ok to do nothing)
-"   opening a second file in a new or existing window (shouldn't mess up existing highlighting)
-"   reloading an existing file (shouldn't mess up existing highlighting)
-
-command! -nargs=1 E call EditMuFile("edit", <f-args>)
-if exists("&splitvertical")
-  command! -nargs=1 S call EditMuFile("vert split", <f-args>)
-  command! -nargs=1 H call EditMuFile("hor split", <f-args>)
-else
-  command! -nargs=1 S call EditMuFile("vert split", <f-args>)
-  command! -nargs=1 H call EditMuFile("split", <f-args>)
-endif
-
-function! EditMuFile(cmd, arg)
-  let l:full_path = "apps/" . a:arg
-  if filereadable(l:full_path . ".mu")
-    let l:full_path = l:full_path . ".mu"
-  else
-    let l:full_path = l:full_path . ".subx"
-  endif
-  exec "silent! " . a:cmd . " " . l:full_path
-endfunction
-
 " we often want to crib lines of machine code from other files
 function! GrepSubX(regex)
   " https://github.com/mtth/scratch.vim