P73 is the follow-through from the P72 I/O bridge: Erlang code running inside AtomVM now renders a framebuffer animation.
The key addition is chip:hline/4. P72 had chip:write16/2, which was
good for proving single-pixel writes but too clumsy for full frames.
P73 keeps the render decisions in Erlang and lets the platform NIF
write each scanline into the RGB565 framebuffer window.
Captured UART:
AtomVM on P73 (framebuffer graphics demo)
Starting AtomVM revision 0.8.0-dev+git.b7503e6
Found startup beam: graphics.beam
P73 AtomVM framebuffer starting
framebuffer base: 15728640
rendered frames: 8
render delta ms: 588
P73 AtomVM framebuffer PASS
Return value: ok
AtomVM exited result=0
Harness:
[harness] frame 0 dumped (24576 bytes)
[harness] frame 1 dumped (24576 bytes)
[harness] frame 2 dumped (24576 bytes)
[harness] frame 3 dumped (24576 bytes)
[harness] frame 4 dumped (24576 bytes)
[harness] frame 5 dumped (24576 bytes)
[harness] frame 6 dumped (24576 bytes)
[harness] frame 7 dumped (24576 bytes)
[harness] === run ended after 24288424 post-load cycles ===
[harness] halted=1, halt_code=0x00000001
The viewer generated:
projects/73_atomvm_framebuffer/test/captured/atomvm-framebuffer.gifprojects/73_atomvm_framebuffer/test/captured/atomvm-framebuffer-final.png
Honest status: RTL simulation PASS. F/D architectural compliance was NOT RUN. LibreLane hardening was NOT RUN.
The next cleanup would be to make the framebuffer map less ad hoc.
Right now 0x00f00000 is a convention chosen because AtomVM’s bundled
lib.avm and main.avm occupy the 8 MiB and 12 MiB slots.