uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 48d4289671ba1b97da5efc50fdee795873f1fed5
parent 37f3865e54c8773df9bc5f9323f5c5f5dfd54026
Author: neauoire <aliceffekt@gmail.com>
Date:   Thu, 11 Feb 2021 13:28:13 -0800

FillRect example

Diffstat:
Mbuild.sh | 2+-
Aexamples/draw.usm | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 80 insertions(+), 1 deletion(-)

diff --git a/build.sh b/build.sh @@ -24,5 +24,5 @@ rm -f ./bin/emulator cc -std=c89 -DDEBUG -Wall -Wno-unknown-pragmas -Wpedantic -Wshadow -Wextra -Werror=implicit-int -Werror=incompatible-pointer-types -Werror=int-conversion -Wvla -g -Og -fsanitize=address -fsanitize=undefined uxn.c emulator.c -L/usr/local/lib -lSDL2 -o bin/emulator # run -./bin/assembler examples/pixels.usm bin/boot.rom +./bin/assembler examples/draw.usm bin/boot.rom ./bin/emulator bin/boot.rom diff --git a/examples/draw.usm b/examples/draw.usm @@ -0,0 +1,79 @@ +( draw routines ) + +:dev/r fff8 ( std read port ) +:dev/w fff9 ( std write port ) + +;x_ 2 ;y_ 2 + +;x 2 ;y 2 ;w 2 ;h 2 +;color 1 + +|0100 @RESET + + ( set dev/write to screen ) + ,01 ,dev/w STR + + ( set color 1 ) + ,03 ,color STR + + ,01 ,color STR + ( fill rect x y w h ) + ,0020 ,0020 ,0060 ,0040 ,fillrect JSR + + ,02 ,color STR + ( fill rect x y w h ) + ,0030 ,0030 ,0040 ,0060 ,fillrect JSR + + ,03 ,color STR + ( fill rect x y w h ) + ,0040 ,0040 ,0060 ,0040 ,fillrect JSR + + ,redraw JSR + +BRK + +@redraw + ,0000 IOW^ + ,0000 IOW^ + ,00 IOW + ,01 IOW + RTS + +@putpixel + IOW^ ( y short ) + IOW^ ( x short ) + ,color LDR IOW ( color byte ) + ,00 IOW ( redraw byte ) + RTS + +@fillrect + ( store shape ) + ,h STR^ ,w STR^ ,y STR^ ,x STR^ + ( set head ) + ,x LDR^ ,x_ STR^ ,y LDR^ ,y_ STR^ + ( paint row ) + ,fillrectrow JSR + RTS + +@fillrectcol + ,x_ LDR^ ,y_ LDR^ ,putpixel JSR + ( incr x ) + ,x_ LDR^ ,0001 ADD^ ,x_ STR^ + ( check if greater than w ) + ,x_ LDR^ ,w LDR^ ,x LDR^ ADD^ GTH^ RTS? + ,fillrectcol JMP + RTS + +@fillrectrow + ,x LDR^ ,x_ STR^ + ,fillrectcol JSR + ( incr x ) + ,y_ LDR^ ,0001 ADD^ ,y_ STR^ + ( check if greater than w ) + ,y_ LDR^ ,h LDR^ ,y LDR^ ADD^ GTH^ RTS? + ,fillrectrow JMP + RTS + +|c000 @FRAME BRK +|d000 @ERROR BRK +|FFFA .RESET .FRAME .ERROR