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.

Screenshot showing an RPN calculator written in Mu being built into a bootable disk image, and a session of the calculator inside Qemu. The session includes a half-written command and a cursor working as expected.

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

Screenshot showing a diff between the old apps/rpn.mu and the new baremetal/rpn.mu. All the changes are in `main`. The rest of the program is folded away at the bottom because it's identical.

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 😄

simple line drawing of a manhattan skyline, green on black

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.

256 vertical lines, each 4px wide, showing the 256 default colors in VGA mode (without messing with the palette).

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

Screenshot showing Mu computer displaying text within a Qemu window.

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.

Screenshot showing a Qemu window with text rendered out of pixels.

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

Qemu running a trivial bootloader that prints a character to screen and prints '1' when the '1' key is pressed.

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:

  1. These Mu shell experiments, and
  2. An extremely skeletal OS to drop the Linux kernel dependency.

Deprioritized for now:

  1. Other processors: RISCV, ARM, RPi, etc.
  2. 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

* *
archive
projects
writings
videos
subscribe
Mastodon
RSS (?)
twtxt (?)
Station (?)