Commit Graph

48 Commits

Author SHA1 Message Date
Kartik K. Agaram 71e4f38129 7842 - new directory organization
Baremetal is now the default build target and therefore has its sources
at the top-level. Baremetal programs build using the phase-2 Mu toolchain
that requires a Linux kernel. This phase-2 codebase which used to be at
the top-level is now under the linux/ directory. Finally, the phase-2 toolchain,
while self-hosting, has a way to bootstrap from a C implementation, which
is now stored in linux/bootstrap. The bootstrap C implementation uses some
literate programming tools that are now in linux/bootstrap/tools.

So the whole thing has gotten inverted. Each directory should build one
artifact and include the main sources (along with standard library). Tools
used for building it are relegated to sub-directories, even though those
tools are often useful in their own right, and have had lots of interesting
programs written using them.

A couple of things have gotten dropped in this process:
  - I had old ways to run on just a Linux kernel, or with a Soso kernel.
    No more.
  - I had some old tooling for running a single test at the cursor. I haven't
    used that lately. Maybe I'll bring it back one day.

The reorg isn't done yet. Still to do:
  - redo documentation everywhere. All the README files, all other markdown,
    particularly vocabulary.md.
  - clean up how-to-run comments at the start of programs everywhere
  - rethink what to do with the html/ directory. Do we even want to keep
    supporting it?

In spite of these shortcomings, all the scripts at the top-level, linux/
and linux/bootstrap are working. The names of the scripts also feel reasonable.
This is a good milestone to take stock at.
2021-03-03 22:21:03 -08:00
Kartik Agaram 74ed21ab14 7746 2021-02-14 16:48:02 -08:00
Kartik Agaram 8cff1c04e3 7745 2021-02-14 16:29:19 -08:00
Kartik Agaram 9ebe6b3876 7688 2021-02-06 22:05:24 -08:00
Kartik Agaram 762107fdc2 7476 2020-12-30 09:39:50 -08:00
Kartik Agaram 00c4d61221 7472 2020-12-29 21:20:36 -08:00
Kartik Agaram 395f736d1a 7464 2020-12-29 19:28:56 -08:00
Kartik Agaram 490b26d061 7426 2020-12-27 10:57:44 -08:00
Kartik Agaram 761001dadc 7405 2020-12-26 14:29:02 -08:00
Kartik Agaram dd60a1d73c 7252 2020-11-16 20:44:02 -08:00
Kartik Agaram 6ecece2e70 7236 2020-11-14 20:02:01 -08:00
Kartik Agaram 236cf88a3e 7233 - fix some warnings from gcc 9
Make strncpy a little less error-prone.
Just use memcpy where that suffices:
  https://stackoverflow.com/questions/56782248/gcc-specified-bound-depends-on-the-length-of-the-source-argument/56782476#56782476
2020-11-13 20:53:32 -08:00
Kartik Agaram 91a5f3e103 6774 2020-09-11 00:59:56 -07:00
Kartik Agaram de0e57d3ce 6674 2020-07-25 15:35:43 -07:00
Kartik Agaram 1c349ac7c5 6631 2020-07-11 00:02:29 -07:00
Kartik Agaram 3ccb2c8328 6617 2020-07-05 15:48:17 -07:00
Kartik Agaram cf28645f8a 6610 - tweak the Linux boot image generator
So far we hardcoded the translation process and it only supported SubX.
Now we pass in an ELF binary and outsource how it's generated.
2020-07-05 10:38:18 -07:00
Kartik Agaram 02dade7b22 - 2020-05-18 00:44:50 -07:00
Kartik Agaram 1de6f28042 mu.subx: make handles in Primitives easier to read 2020-05-18 00:44:49 -07:00
Kartik Agaram 5170e27ce8 6207 - tweaks while creating a video
https://futureofcoding.org/two-minute-week
2020-04-19 09:32:46 -07:00
Kartik Agaram 28746b3666 6123 - runtime helper for initializing arrays
I built this in 3 phases:
a) create a helper in the bootstrap VM to render the state of the stack.
b) interactively arrive at the right function (tools/stack_array.subx)
c) pull the final solution into the standard library (093stack_allocate.subx)

As the final layer says, this may not be the fastest approach for most
(or indeed any) Mu programs. Perhaps it's better on balance for the compiler
to just emit n/4 `push` instructions.

(I'm sure this solution can be optimized further.)
2020-03-11 17:21:59 -07:00
Kartik Agaram 6a28260f19 6003 2020-02-09 21:12:41 -08:00
Kartik Agaram 8fa733606c 6002 2020-02-09 21:03:04 -08:00
Kartik Agaram 75bb5e4ab1 5910
Trace browser: Don't let the background color get too light, and cycle
back to darker shades so I'm not squinting at low depths.
2020-01-20 02:58:31 -08:00
Kartik Agaram b89ce8e455 5900 2020-01-19 17:53:06 -08:00
Kartik Agaram ab837e8f6c 5899 2020-01-19 17:52:25 -08:00
Kartik Agaram 6070c23e5e 5897 - rename comparison instructions
Signed and unsigned don't quite capture the essence of what the different
combinations of x86 flags are doing for SubX. The crucial distinction is
that one set of comparison operators is for integers and the second is
for addresses.
2020-01-16 18:31:12 -08:00
Kartik Agaram 564ced70fd 5891 2020-01-14 01:52:54 -08:00
Kartik Agaram fa786ea791 5884 2020-01-12 14:52:07 -08:00
Kartik Agaram 194d100792 5881 2020-01-10 10:35:17 -08:00
Kartik Agaram c9bda4d13e 5875 2020-01-02 15:23:01 -08:00
Kartik Agaram ffb1bab667 5870 2020-01-02 12:46:57 -08:00
Kartik Agaram 7fd4a87066 5868
Follow stupid GNU convention, because why not:
  https://www.gnu.org/prep/standards/html_node/Releases.html
2020-01-02 12:27:35 -08:00
Kartik Agaram f4bef91bd9 5859
Move script to create a Linux-based boot image into a sub-directory.
2020-01-01 19:40:28 -08:00
Kartik Agaram 65409d2312 5858
Move script to create a Soso boot image into a sub-directory.

I'm trying to streamline newcomer attention to just a couple of use cases.
2020-01-01 18:42:48 -08:00
Kartik Agaram 535755316b 5837 - better colors for trace browser 2019-12-28 14:06:25 -08:00
Kartik Agaram c69f33143c 5819
Minor tweaks to stop wasting horizontal space in the trace.
2019-12-22 07:48:53 -08:00
Kartik Agaram 80612d80d2 5816 - browse_trace bug fixed 2019-12-21 22:53:23 -08:00
Kartik Agaram f97e9d9be8 5815 2019-12-21 22:42:08 -08:00
Kartik Agaram 657bff9847 5814 2019-12-21 22:42:08 -08:00
Kartik Agaram 7d02b3a73c 5813 2019-12-21 22:42:08 -08:00
Kartik Agaram c9c6ab35a6 5812 - debugging an ancient niggle in browse_trace
The problem: when I hit 'G' to go to the bottom of the trace, if the bottom
is visible on screen, the screen scrolls so the bottom of the trace
is the bottom-most line on screen. But the cursor moves to where the trace
used to end rather than the new location of the bottom of the trace (the
bottom of the screen).
2019-12-21 22:40:24 -08:00
Kartik Agaram 2249e605c1 5805 2019-12-08 23:31:05 -08:00
Kartik Agaram bfadbd4bbf 5801 - move `tangle` to `tools/` dir 2019-12-07 18:15:49 -08:00
Kartik Agaram f821c0e28b 5800 - move `browse_trace` to `tools/` dir 2019-12-07 18:15:49 -08:00
Kartik Agaram 9e45cae061 5799 - move html-generation to `tools/` directory 2019-12-07 18:06:17 -08:00
Kartik Agaram 72f278ae6b 5797 - move `enumerate/` to `tools/` directory 2019-12-07 18:06:16 -08:00
Kartik Agaram c1d596f56a 5796 - move treeshake to a new tools/ directory 2019-12-07 18:05:06 -08:00