summaryrefslogtreecommitdiffstats
path: root/border.asm
diff options
context:
space:
mode:
authorChristian Krinitsin <code@krinitsin.xyz>2024-11-20 20:39:32 +0100
committerChristian Krinitsin <code@krinitsin.xyz>2024-11-20 20:39:32 +0100
commit1dc5b526c19f179f6e78db6bfe8d3cc50881b978 (patch)
treeb0c25a96aba3583befa3444bed0100c0e8a7d209 /border.asm
parent4646adf613615a4a24d1683306f3e13f0c628a6a (diff)
downloadx86_64-Snake-1dc5b526c19f179f6e78db6bfe8d3cc50881b978.tar.gz
x86_64-Snake-1dc5b526c19f179f6e78db6bfe8d3cc50881b978.zip
split into multiple files, .o files in build/
Diffstat (limited to 'border.asm')
-rw-r--r--border.asm64
1 files changed, 64 insertions, 0 deletions
diff --git a/border.asm b/border.asm
new file mode 100644
index 0000000..12774b6
--- /dev/null
+++ b/border.asm
@@ -0,0 +1,64 @@
+section .text
+ extern height
+ extern width
+ extern write_byte
+ global draw_border
+
+draw_upper_lower_line:
+ push rbx
+
+ mov rax, '+'
+ call write_byte
+
+ mov bl, byte [width]
+_01:mov rax, '-'
+ call write_byte
+ dec bl
+ cmp bl, 0
+ jnz _01
+
+ mov rax, '+'
+ call write_byte
+
+ mov rax, 10 ;newline
+ call write_byte
+
+ pop rbx
+ ret
+
+draw_left_right_lines:
+ push rbx
+
+ mov rax, '|'
+ call write_byte
+
+ mov bl, byte [width]
+_02:mov rax, 32 ;space
+ call write_byte
+ dec bl
+ cmp bl, 0
+ jnz _02
+
+ mov rax, '|'
+ call write_byte
+
+ mov rax, 10 ;newline
+ call write_byte
+
+ pop rbx
+ ret
+
+draw_border:
+ push rbx
+
+ call draw_upper_lower_line
+ mov bl, byte [height]
+_03:call draw_left_right_lines
+ dec bl
+ cmp bl, 0
+ jnz _03
+
+ call draw_upper_lower_line
+
+ pop rbx
+ ret