mirror of
https://git.k-space.ee/arti/vt1200.git
synced 2026-10-30 12:03:54 +02:00
62 lines
1.5 KiB
NASM
62 lines
1.5 KiB
NASM
; 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
|