Sign in

Chris Williams

@diodesign.org
466 followers 236 following 80 posts

Fun: diosix.org & diodesign.org Work: Technical editor at google.com Previously: Editor-in-chief @theregister.com Wear sunscreen.

PostsRepliesMedia
Chris Williams @diodesign.org · 11/09/2026
Previously experimented with a RISC OS-like WIMP (Windows, Icons, Menus, Pointer) desktop environment, but I think a fixed BIOS/UEFI-like GUI is better for managing a virtualization host. Individual guest VMs can provide the desktop apps/environment, routed through the GUI VM, if needed.
Screenshot of a very bare-bones desktop environment with a terminal in the middle of the screen showing the user creating a second VM and then SSH into it.Screenshot of a very bare-bones desktop environment with a terminal in the middle of the screen showing the user running the 'ls -l /' command, listing the root directory's contents: the Buildroot Linux minimum.
000
Chris Williams @diodesign.org · 11/09/2026
Working on a native BIOS/UEFI-like GUI for the Diosix.org RISC-V hypervisor. Beyond an in-guest CLI and Linux kernel driver, I’m experimenting with a graphical console to configure guest VMs, storage, networking, and more directly on screen-attached RV64 hosts. WIP! github.com/diodesign/di...
Screenshot of the Diosix RISC-V Hypervisor interface running inside a QEMU window, displaying the "Storage" datastore management tab.

A dark-themed system menu inside a QEMU window with the "4: STORAGE" tab active. The layout includes:

Virtual Disk Datastore (Left): A list of virtual disks showing debian.img (highlighted; 4096 MB, ext4, attached to debian-vm), second-vm.img (512 MB, ext4, attached to second-vm), and scratch-data.img (1024 MB, ext4, unattached).

Storage Operations (Right): Action buttons to "Create Virtual Disk", "Resize Virtual Disk", and "Delete Virtual Disk".

Datastore Status (Bottom): Status panel stating, "Datastore mounted at /var/lib/diosix/disks. Select an image for disk geometry and usage."Screenshot of the Diosix RISC-V Hypervisor interface running inside a QEMU window, displaying the "Controls & Icons" configuration tab. This is a demonstration, WIP view of the available icons and windows.

A dark-themed graphical interface inside a QEMU desktop window with the navigation bar set to "2: CONTROLS & ICONS". The main view is split into three sections:

Interactive Controls Showcase (Left): Displays interactive UI elements including a live telemetry tick counter, a text input labeled "Diosix RISC-V Hypervisor", sliders for glass opacity (78%), Gaussian blur (100%), and VCPU quota allocation (75%), along with an enabled checkbox for verbose telemetry.

Backdrop Gradient Color Selection (Right): Radio options for top and bottom background gradient colors, with "Sunset Amber (#C86840)" selected for the top and "Pitch Black (#000206)" selected for the bottom.

Live Callback Inspector (Bottom): A single console event line logging [BACKDROP TOP] Selected 'Sunset Amber (#C86840)' (#0xC86840).
151
Chris Williams @diodesign.org · 02/07/2026
Working on adding a Unicorn-based emulation layer to my 64-bit RISC-V hypervisor so you can run non-native guests (riscv32, aarch64, x86_64) seamlessly. Below, the green text is console output from an x86 Linux guest amid hypervisor debug traces. Still WIP! More: github.com/diodesign/di...
Screenshot of debug output from running an x86_64 guest on a 64-bit RISC-V hypervisor using emulation. The Linux guest's console output is mixed with the hypervisor's trace logs. The output shown includes:

tb_gen_code: translating guest TB at pc = anyopaque@ffffffff8128b283
tb_gen_code: translating guest TB at pc = anyopaque@ffffffff8128b287
[    0.000000] Linux version 7.0.10 (chris@violet) (x86_64-buildroot-linux-gnu-gcc.br_real (Buildroot 2026.02.3) 14.3.0, GNU ld (GNU Binutils) 2.44) #2 SMP PREEMPT_DYNAMIC Tue Jun 30 22:46:55 PDT 2026
tb_gen_code: translating guest TB at pc = anyopaque@ffffffff8128b2e4
tb_gen_code: translating guest TB at pc = anyopaque@ffffffff8128b2ee

[...]

tb_gen_code: translating guest TB at pc = anyopaque@ffffffff818bfc0e
[    0.000000] Command line: console=ttyS0 earlyprintk=serial,ttyS0,115200 root=/dev/ram0 rw
[    0.000000] Disabled fast string operations
[    0.000000] x86/CPU: tb_gen_code: translating guest TB at pc = anyopaque@ffffffff8128b2d9
model not found in latest microcode list
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [gap 0x0000000000000000-0x0000000007fffffff]
[    0.000000] tb_gen_code: translating guest TB at pc = anyopaque@ffffffff818bfe96
[    0.000000] BIOS-e820: [mem 0x0000000080000000-0x000000009fffffff] System RAM
[    0.000000] printk: legacy bootconsole [earlyser0] enabled
tb_gen_code: translating guest TB at pc = anyopaque@ffffffff81325af9
tb_gen_code: translating guest TB at pc = anyopaque@ffffffff8132622d
000
Chris Williams @diodesign.org · 18/06/2026
Looking forward to developing on this 64-bit RISC-V Spacemit K3 Pico-ITX system: * 8 2.4 GHz RVA23 CPU cores with hypervisor and vector extension * 8 AI accelerator cores * Whole load of IO: USB, 1G Ethernet, 10GbE SFP+, Wi-Fi 6, and more www.spacemit.com/community/do...
Photo of a Spacemit K3 Pico-ITX RISC-V development board with a clear plastic covering on the cardboard box it shipped in. The motherboard has multiple IO ports, such as USB and Ethernet, other connectors, and chips.
150
Chris Williams @diodesign.org · 10/06/2026
Super fun logo generator, inspired by the ZX Spectrum's Sinclair branding, by Dave Thomas. Online: dpt.github.io/SinclairLogo/ Info: www.davespace.co.uk/blog/2026060... Code: github.com/dpt/Sinclair... Web plus creative coding times retro computing equals... this
The word 'sinclair' stylized as the 1980s Sinclair Research logo, center, white on black, surrounded by tiled copies of the word in grey on black.
140
Chris Williams @diodesign.org · 09/03/2026
Nice. With apologies to Mike Ginns who wrote this sterling book that taught me Arm assembly language... www.computinghistory.org.uk/det/12421/Ar... ...a future one about RISC-V might look like:
Textbook cover in the style of a Dabs Press publication, which reads:

Mike Ginns
RISC-V
Assembly Language
The Complete Programming Course

New architecture edition covers RV32I & RV64I
Dabs Press

(With a wireframe drawing of someone's arm as an illustration)
010
Chris Williams @diodesign.org · 31/12/2025
RIP Stewart Cheifet. who died December 28. He was 87. I have no doubt his work creating and hosting the Computer Chronicles from 1984 to 2002 inspired many future journalists and engineers. Certainly was for me. obits.goldsteinsfuneral.com/stewart-chei... en.wikipedia.org/wiki/Compute...
A frame from the start of a 1980s Computer Chronicles episode, with host Stewart Cheifet sitting in front of a background featuring the show's logo: the computer chronicles
130
Chris Williams @diodesign.org · 22/09/2025
And on to another week. Grateful for everything, especially these views from the weekend.
View of the Golden Gate Bridge in San Francisco on a clear sunny day, from the Baker Beach trailView of the Pacific Ocean, looking south from the Baker Beach trail in San Francisco on a sunny day as the sun starts to set
040
Chris Williams @diodesign.org · 22/09/2025
If you want to get started writing your own kernel for 32-bit RISC-V from scratch, here's how seiya.me did it in 1,000 lines of cleanly written C. There's documentation to go with it. Pretty cool IMHO! github.com/nuta/operati...
OpenSBI v1.5.1
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name             : riscv-virtio,qemu
Platform Features         : medeleg
Platform HART Count       : 1
Platform IPI Device       : aclint-mswi
Platform Timer Device     : aclint-mtimer @ 10000000Hz
Platform Console Device   : uart8250
Platform HSM Device       : ---
Platform PMU Device       : ---
Platform Reboot Device    : syscon-reboot
Platform Shutdown Device  : syscon-poweroff
Platform Suspend Device   : ---
Platform CPPC Device      : ---
Firmware Base             : 0x80000000
Firmware Size             : 319 KB
Firmware RW Offset        : 0x40000
Firmware RW Size          : 63 KB
Firmware Heap Offset      : 0x47000
Firmware Heap Size        : 35 KB (total), 2 KB (reserved), 10 KB (used), 22 KB (free)
Firmware Scratch Size     : 4096 B (total), 244 B (used), 3852 B (free)
Runtime SBI Version       : 2.0

Boot HART ID              : 0
Boot HART Domain          : root
Boot HART Priv Version    : v1.12
Boot HART Base ISA        : rv32imafdch
Boot HART ISA Extensions  : sstc,zicntr,zihpm,zicboz,zicbom,sdtrig,svadu
Boot HART PMP Count       : 16
Boot HART PMP Granularity : 2 bits
Boot HART PMP Address Bits: 32
Boot HART MHPM Info       : 16 (0x0007fff8)
Boot HART Debug Triggers  : 2 triggers
Boot HART MIDELEG         : 0x00001666
Boot HART MEDELEG         : 0x00f0b509

[ snipped ]

virtio-blk: capacity is 0 bytes
file: hello.txt, size=83
file: meow.txt, size=6
> hello
Hello world from shell!
130
Chris Williams @diodesign.org · 17/08/2025
Wonderfully detailed per-frame performance analysis of NES Metroid, and why it lags at certain points. It's super interesting to see the software engineering decisions taken back in the day. As always, a great video by @displacedgamers.bsky.social IMO www.youtube.com/watch?v=3G6v...
Still from Displaced Gamers' https://www.youtube.com/watch?v=3G6vkRz-_0I video that depicts a frame from the NES game Metroid overlaid with statistics and a list of subroutines called in the game loop. The statistics show the percentage of time per frame spent in each subroutine as well as total frame counts and rendered frame counts.
030
Chris Williams @diodesign.org · 10/08/2025
Also not quite Times Square, but Manchester Piccadilly Station in the UK was hard to miss
A large display in front of Manchester Piccadilly Station, England, shows a Windows blue-screen-of-death. Source: https://www.theregister.com/2016/08/29/bsods_at_scale_we_laugh_at_your_puny_five_storeys_heres_our_six_storey_fail/
040
Chris Williams @diodesign.org · 07/06/2025
FYI: Gerph has been re-implementing RISC OS – which started as Arm's very first OS – in Python, allowing 32 and 64-bit apps and other software to build and run on non-Arm systems. Amazing work More on RISC OS Pyromaniac: pyromaniac.riscos.online Latest here: www.riscosopen.org/forum/forums...
RISC OS 7 post-boot showing its initialization messages and then a list of available OS-level modules. Taken from http://shell.riscos.online/Acorn's Maestro music editing and playback application running on Gerph's Pyromaniac RISC OS in the desktop RISC OS Pyromaniac desktop running full-screen on macOS

Source: https://pyromaniac.riscos.online/examples.html#talk2022
195
Chris Williams @diodesign.org · 29/05/2025
Recently enjoyed seeing and listening to quite a mix of live music in the Bay Area, from Kylie and Underworld in San Francisco to Kraftwerk in Berkeley. All pretty stunning, and all great sounds I grew up with that I finally got to experience in person.
Kylie Minogue on stage at the Chase Center in San Francisco with a disco ball lighting up the whole scene.The band Underworld on stage at the Warfield in San Francisco, with a lot of red lighting and dry ice.Kraftwerk on stage at the Berkeley Greek Theatre, with Computerworld showing on screen.
030
Chris Williams @diodesign.org · 30/12/2024
Watching some old EEng videos, because why not, and find a 50-min 1988 video from Intel about the design and challenges of its 386 CPU And look who shows up, in his late 20s, talking about mixing automation and hand drawing of transistor layout on silicon and more www.youtube.com/watch?v=LQcL...
Still frame from the linked YouTube video of now ex-Intel CEO Pat Gelsinger, in 1988, showing his name and job title: Microprocessor Project Manager
180
Chris Williams @diodesign.org · 24/12/2024
More adventures in #Zig and bare-metal RISC-V! Heap allocator is done, with merging of adjacent free blocks. A little more atomics for multi-CPU/thread support. And lots learned about the language. github.com/diodesign/di... And now onto device tree parsing and generation...
Screenshot showing some of the heap allocation code and diosix running in a terminal showing debug output to the serial port:

qemu-system-riscv64 -nographic -machine virt -smp 4 -m 2G -bios none -kernel zig-out/bin/vmdiosix

Visit https://diosix.org for usage, copyright, and distribution.
Version 0.3.0-zig (95dba5e) Tue Dec 24 11:01:17 AM PST 2024 riscv64

Device tree at 0xbfe00000
CPU core ID 1 waiting for work...
CPU core ID 3 waiting for work...
CPU core ID 2 waiting for work...
CPU core ID 0 waiting for work...
QEMU: Terminated
130
Chris Williams @diodesign.org · 22/12/2024
More adventures in bare-metal RISC-V Zig! Now we've got spinlocking and serial debug output. Heap manager is next, and better exception debug output...
Screenshot showing the following terminal output:

% zig-build
% qemu-system-riscv64 -nographic -machine virt -smp 4 -m 2G -bios none -kernel zig-out/bin/vmdiosix                                                                           
xint: initialized
xint: initialized
xint: initialized
xint: initialized
hypervisor: CPU core ID 0 initialized
hypervisor: CPU core ID 2 initialized
hypervisor: CPU core ID 3 initialized
hypervisor: CPU core ID 1 initialized
000
Chris Williams @diodesign.org · 18/12/2024
All right, after some distractions, we're in business with very basic interrupt and exception handling set up, ability to handle multiple CPU cores, foundations of per-CPU core stacks and heaps... Getting there!
Terminal showing the following text:

% zig build
% qemu-system-riscv64 -nographic -machine virt -smp 4 -m 2G -bios none -kernel zig-out/bin/vmdiosix
Hello world from CPU core 0!!
100
Chris Williams @diodesign.org · 18/12/2024
It's the holiday season, I've got some time off work, and so I'm gonna finally dive into Zig and RISC-V ziglang.org riscv.org/developers/ I've got bare-metal execution in Qemu, writing hello world out to the serial port. Let's bring up more of an environment and then try this on real hardware...
Screenshot of the following zig code in a purple-themed Visual Studio Code window:

export fn main() void {
    const uart: *volatile u8 = @ptrFromInt(0x10000000);
    const hello: []const u8 = "Hello world!!\n\n";

    for (hello) |c| {
        uart.* = c;
    }

    while (true) {}
}

And the execution of that code in a terminal below:

 % qemu-system-riscv64 -nographic -machine virt -smp 1 -m 1G -bios none -kernel zig-out/bin/vmdiosix 
Hello world!!
250
Chris Williams @diodesign.org · 18/11/2024
Been a fan of Orbital since I was a teenager. Never got the chance to see them live in the UK. Super happy to have caught them on tour in San Francisco this weekend. Amazing night of progressive-house-techno-whatever you want to call their unique sound :)
View from the crowd looking toward the stage where Orbital were playing live at the Midway in San Francisco.
040