summaryrefslogtreecommitdiff
path: root/stage3/framebuffer.asm
diff options
context:
space:
mode:
Diffstat (limited to 'stage3/framebuffer.asm')
-rw-r--r--stage3/framebuffer.asm176
1 files changed, 0 insertions, 176 deletions
diff --git a/stage3/framebuffer.asm b/stage3/framebuffer.asm
deleted file mode 100644
index e55ad04..0000000
--- a/stage3/framebuffer.asm
+++ /dev/null
@@ -1,176 +0,0 @@
-%include "stage3/colors.asm"
-global print_chr, print_str, print_dec, print_hex, clear_screen, newline
-extern memcpy
-
-section .data
-
-pos:
-.row: db 0
-.col: db 0
-
-cursor: dq 0xB8000
-color: db COLOR_WHITE | (COLOR_BLACK << 4)
-
-section .text
-
-set_color:
- shl sil, 4
- add dil, sil
- mov [color], dil
-
-update_cursor:
- mov rbx, [cursor]
- sub rbx, 0xB8000
- shr rbx, 1
-
- mov dx, 0x3D4
- mov al, 14
- out dx, al
-
- mov dx, 0x3D5
- mov al, bh
- out dx, al
-
- mov dx, 0x3D4
- mov al, 15
- out dx, al
-
- mov dx, 0x3D5
- mov al, bl
- out dx, al
-
- ret
-
-set_chr:
- mov rax, [cursor]
- mov byte[rax], dil
- inc rax
- mov dil, [color]
- mov [rax], dil
- inc rax
- mov [cursor], rax
- jmp update_cursor
-
-vertical_tab:
- mov al, [pos.row]
- inc al
- cmp al, 25
- je .scroll
- mov [pos.row], al
- mov rax, [cursor]
- add rax, 160
- mov [cursor], rax
- jmp update_cursor
-.scroll:
- mov rdi, 0xB8000
- mov rsi, 0xB80A0
- mov rdx, 0xF00
- jmp memcpy
-
-carriage_return:
- mov rax, [cursor]
- xor rbx, rbx
- mov bl, [pos.col]
- shl bl, 1
- sub rax, rbx
- mov [cursor], rax
- mov byte[pos.col], 0
- jmp update_cursor
-
-newline:
- call vertical_tab
- jmp carriage_return
-
-print_chr:
- cmp dil, 10
- je newline
- cmp dil, 11
- je vertical_tab
- cmp dil, 13
- je carriage_return
- mov al, [pos.col]
- inc al
- cmp al, 80
- je .newline
- mov [pos.col], al
- jmp set_chr
-.newline:
- push rdi
- call newline
- pop rdi
- jmp set_chr
-
-print_str:
- mov rax, rdi
-.print:
- mov dil, [rax]
- cmp dil, 0
- je .return
- push rax
- call print_chr
- pop rax
- inc rax
- jmp .print
-.return:
- ret
-
-print_hex:
- mov rsi, 0x10
- jmp print_num
-print_dec:
- mov rsi, 10
-print_num:
- mov rax, rdi
- xor rcx, rcx
-.convert:
- inc rcx
- xor rdx, rdx
- div rsi
- cmp dl, 10
- jb .digit
- add dl, 'A'-10
- jmp .next
-.digit:
- add dl, '0'
-.next:
- push rdx
- cmp rax, 0
- jne .convert
-.print:
- cmp rcx, 0
- je .return
- dec rcx
- pop rdi
- push rcx
- call print_chr
- pop rcx
- jmp .print
-.return:
- ret
-
-clear_screen:
- push rbx
- push r12
- push r13
- push r14
- push r15
-
- mov qword[cursor], 0xB8000
-.clr:
- cmp qword[cursor], 0xB8FA0
- je .return
- mov dil, ' '
- call set_chr
- jmp .clr
-.return:
- mov qword[cursor], 0xB8000
- mov byte[pos.row], 0
- mov byte[pos.col], 0
- call update_cursor
-
- pop r15
- pop r14
- pop r13
- pop r12
- pop rbx
- ret