The fox32 virtual machine consists of 64 MB of RAM and 512 KB of ROM. Contained in the ROM portion of the address space is fox32rom, which handles things like booting fox32os and basic stuff like drawing text to the display. Along with the CPU are various peripherals like a 640x480 video display, disk controller, RTC, keyboard and mouse, and serial port.
Here is a screenshot of fox32os, the main operating system for fox32, completely written in fox32's assembly language:
Current fox32os features include:
- Cooperative multitasking
- Basic window management
- Basic widget system
- Custom relocatable executable format
- Custom filesystem (super basic at the moment)
- Event-loop-based programming paradigm
Here's a quick example of what the fox32 assembly code syntax looks like. This should look familiar for anyone used to x86 or AVR assembly:
Code: Select all
; text drawing demo
mov r0, string ; pointer to string
mov r1, 16 ; X pos
mov r2, 16 ; Y pos
mov r3, 0xFFFFFFFF ; foreground color
mov r4, 0xFF000000 ; background color
call draw_str_to_background
yield_loop:
call yield_task
rjmp yield_loop
string: data.str "hello world!" data.8 0
#include "fox32rom.def"
#include "fox32os.def"
There is also a Discord server for talking about development: https://discord.gg/2Tun7FnUZ2