; draw_box.asm -- one-shot static VRAM injection, then return. ; ; Draws three 32x32 solid-white boxes at framebuffer (x,y): ; A (50,50) -- root weave, outside every window ; B (250,400) -- inside the Terminal Manager window body (white area) ; C (930,750) -- root weave, lower right ; Writes marker words and returns with `rets`, so the rdebug session survives. ; ; Framebuffer model (harness/mame/RENDER_REPORT.md): base bit 04000000h, ; 1024 bits per row, bit 0 = leftmost pixel, LSB-first in each 16-bit word. ; ; Linked at bit 01840000h by dwt/visual/build.sh. .text _start: setf 16, 0, 0 setf 32, 0, 1 movi 0FFFFh, a0, L ; pattern ; ---- box A: (50,50), 32 rows x 2 words = 32x32 px ------------- movi 0400C832h, a2, L ; 04000000h + 50*1024 + 50 movi 32, a3, L movi 2, a4, L rowA: move a4, a5 wordA: move a0, *a2+, 0 dsjs a5, wordA addi 03E0h, a2 ; 1024 - 32 bits dsjs a3, rowA ; ---- box B: (250,400) ---------------------------------------- movi 040640FAh, a2, L ; 04000000h + 400*1024 + 250 movi 32, a3, L movi 2, a4, L rowB: move a4, a5 wordB: move a0, *a2+, 0 dsjs a5, wordB addi 03E0h, a2 dsjs a3, rowB ; ---- box C: (930,750) ---------------------------------------- movi 040BBBA2h, a2, L ; 04000000h + 750*1024 + 930 movi 32, a3, L movi 2, a4, L rowC: move a4, a5 wordC: move a0, *a2+, 0 dsjs a5, wordC addi 03E0h, a2 dsjs a3, rowC movi 0D2A0h, a0, L move a0, @01850020h, 0 ; DRAW_MARK = D2A0 movi 0B0C0h, a0, L move a0, @01850030h, 0 ; DRAW_MARK2 = B0C0 rets .end