Jan 23, 2021
It took a while, but I've finally ported a pre-existing Mu program to baremetal (not atop Linux): an RPN calculator.
This was hard, purely because of cursor management. I have a greater appreciation for everything that display hardware and terminal emulators provide for text mode. Mu so far puts the onus on the programmer.
http://akkartik.github.io/mu/html/baremetal/rpn.mu.html
In the end it's interesting to visualize the changes I had to make:
vim -d apps/rpn.mu baremetal/rpn.mu
They're entirely in main
; the rest is unchanged.
permalink
* *
Jan 13, 2021
I built a game of "snakes", but it came out more like an etch-a-sketch 😄
http://akkartik.github.io/mu/html/baremetal/ex7.mu.html
Play it on any non-windows:
git clone https://github.com/akkartik/mu
cd mu
./translate_mu_baremetal_emulated baremetal/ex7.mu
qemu-system-i386 disk.img
h/j/k/l to draw.
I made an art! On a computer without an OS.
permalink
* *
Jan 12, 2021
I've been trying to visualize the default 256-color palette I get on baremetal.
http://akkartik.github.io/mu/html/baremetal/vga_palette.html
To my eyes it looks like I can/should just live in the first 128 colors.
permalink
* *
Jan 12, 2021
A more international interface for rendering text
New 2-minute video:
https://archive.org/details/akkartik-2min-2021-01-12
You get just one fixed screen resolution: 1024x768, 256 colors. Widely available on modern machines, no drivers needed.
You get just one fixed-width bitmap font. No bold/italics, no anti-aliasing.
BUT it won't make assumptions about English and left-to-right order. I eventually want anybody to be able to customize it to their language.
Main project page: https://github.com/akkartik/mu
permalink
* *
Jan 9, 2021
Rendering text atop baremetal
Mu can now render text atop baremetal x86.
Try clicking around from http://akkartik.github.io/mu/html/apps/ex5.mu.html
The boot-up machine code reads a few sectors from disk, configures a keyboard handler, and loads a bitmap font (2KB for ASCII, with the option for more).
I use GNU Unifont. I believe that means Mu is now GPL v2. So stated. IANAL and I try not to think about software IP. But a font? Copyright seems reasonable there.
Next up: a text editor!
https://github.com/akkartik/mu
permalink
* *
Dec 24, 2020
Towards running Mu without Linux
All Mu really needs so far is to print to screen and read from the keyboard. Here's a 2-minute video about achieving that:
https://archive.org/details/akkartik-2min-2020-12-24
It seems such a small thing. But I needed lots of help, as you can see from the additions to my credits.
Merry Christmas to all! What a beautiful world.
Project page: https://github.com/akkartik/mu
More context: https://mastodon.social/@akkartik/104896128141863951
permalink
* *
Dec 7, 2020
Editing functions in the Mu shell
https://archive.org/details/akkartik-2min-2020-12-06
Long delay since my last video. Printing floating-point numbers is really hard. I'm still half-assing it.
As a follow-up to my previous post, I'm tightening focus to two threads:
- These Mu shell experiments, and
- An extremely skeletal OS to drop the Linux kernel dependency.
Deprioritized for now:
- Other processors: RISCV, ARM, RPi, etc.
- Graphics, mouse, etc. Device priorities for the OS are disk then ethernet.
permalink
* *
Dec 5, 2020
Feeling low today.
Damn hands are acting up again. RSI. Perhaps I should give up on Advent.
Mu's compromises:
- Just one instruction set. New processors need reworking. And I have RSI.
- Text mode. Hopefully a graphics stack can slot in underneath without needing rework.
- No pointer device. Apps are starting to make this assumption. Adding a mouse will require rework. And I have RSI.
:/ Constraints I consider "temporary" are perhaps not.
Want less. — The Buddha
permalink
* *
Dec 5, 2020
#adventofcode in Mu
I seem to be settling into a pattern of solving these on alternate days. Late for one round, early for the next.
Day 4 solutions (spoiler alert):
http://akkartik.github.io/mu/html/apps/advent2020/4a.mu.html
http://akkartik.github.io/mu/html/apps/advent2020/4b.mu.html (utterly ghastly)
2.5 hours. 2 machine-code bugs found, 1 new (terribly named) library primitive added: https://github.com/akkartik/mu/commit/18d5bab2b66
Day 5 solutions:
http://akkartik.github.io/mu/html/apps/advent2020/5a.mu.html
http://akkartik.github.io/mu/html/apps/advent2020/5b.mu.html
30 minutes. No new Mu bugs found.
Project page: https://github.com/akkartik/mu
permalink
* *
Dec 2, 2020
Advent of code in Mu
Day 2 solutions (spoiler alert):
2a
2b.
40 minutes. No new Mu bugs found, no machine-code hacking was needed.
Day 3 solution
60 minutes. Lost 11 minutes debugging a silly mistake (see commit log)
No new Mu bugs found, no machine-code hacking was needed.
Project page: https://github.com/akkartik/mu
permalink
* *