NOTE: Some of these links will be file-local for me, and won't work on the web rendered version of this document. Sorry. I'll try and get a hosted version working at some point.
- Fill out or stub out each of the BIOS API functions.
api_version_get- Should be easy
bios_version_get- Also easy
serial_get_info- Not sure. Could return
Nonefor all calls, might not be useful though. I could probably fake a UART via defmt for output, but might need something for input. I could probably get a USB or TTL UART going from the HAL examples.
serial_configure- I could probably force it to only accept a single configuration, based on whatever serial device I set up. Or it could lie and accept whatever config and just ignore it.
serial_write- Output is easy, on defmt or a serial port.
time_get- We can lie. Or use some clock or something. The 60Hz thing might be weird to handle. 1 frame is 546.133333 LFCLK ticks. 546 ticks would be an error of 0.024%, which is probably fine for now, or 60.015 FPS.
video_memory_info_get- Setting up a framebuffer is probably easy, but the question is what to do with it?
configuration_get- Probably okay to stub? Failing to store it is probably fine.
configuration_set- Storing it in volatile memory to start with is probably fine.
- Determine memory layout for BIOS, OS, and apps
- Probably just chunks of RAM for the OS/apps for now
- Write some kind of RAM loader for the OS from the BIOS
- Maybe just a UART thing? Basic IHEX loader or something?
- Figure out how Neotron actually reads from a keyboard, uses audio, sdcard, etc.
- Video is actually done here: https://github.com/thejpster/vga-framebuffer-rs
"How I Teach Embedded Systems"