summaryrefslogtreecommitdiff
path: root/ROMs/hello_world.dat
diff options
context:
space:
mode:
authorMelodi <62381002+Melodi17@users.noreply.github.com>2025-08-05 21:24:16 +1000
committerMelodi <62381002+Melodi17@users.noreply.github.com>2025-08-05 21:24:16 +1000
commit16f3cb74564cf7c19da6e13666c98aca36094716 (patch)
tree7346a7c12a82bc372ed82dad8e9a5d9ad6b098b7 /ROMs/hello_world.dat
parent72f297a479b6749674ec80e91be53b8c482123d2 (diff)
updates
Diffstat (limited to 'ROMs/hello_world.dat')
-rw-r--r--ROMs/hello_world.dat33
1 files changed, 33 insertions, 0 deletions
diff --git a/ROMs/hello_world.dat b/ROMs/hello_world.dat
new file mode 100644
index 0000000..6cdacff
--- /dev/null
+++ b/ROMs/hello_world.dat
@@ -0,0 +1,33 @@
+.org $1FFF
+JMP program
+
+font:
+ .include "font.bin"
+
+program:
+ MOV 13, V0 ; Load character #12
+ MOV 0, V1 ; X position
+ MOV 0, V2 ; Y position
+ MOV 1, V3 ; Color (1 = white)
+ CALL write_char ; Call function to write character
+ SUS
+
+write_char:
+ ; V0: Character to write
+ ; V1: X position
+ ; V2: Y position
+ ; V3: Color
+ ; Write a character to the screen at (V1, V2) with color V3
+
+ MUL V0, 64 ; V0 = Character * 64 (character size)
+ MOV AX, V0 ; Store result back into character
+
+ MUL V2, 64
+ ADD AX, V1
+ MOV AX, V4 ; V4 = X position + Y position * 64 (screen index)
+
+ MOV [V0 + $1FFF], V5 ; Read character
+ MUL V5, V3 ; V5 = Character * Color (color index)
+ MOV AX, V5 ; Store result into V5
+ MOV V5, [V4 + $3FFF] ; Write character to screen memory
+ RET \ No newline at end of file