|
|
@ -1,24 +1,26 @@ |
|
|
|
[bits 32] |
|
|
|
[bits 32] |
|
|
|
|
|
|
|
|
|
|
|
; VGA base address: 0xb8000 |
|
|
|
; VGA base address: 0xb8000 |
|
|
|
; Charpos = 0xb8000 + 2 * (row * 80 + col) |
|
|
|
; Charpos = 0xb8000 + 2(row*80 + col) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vga_color_buf: db 0x0f ; Buffer to be changed so that we can choose colors! |
|
|
|
|
|
|
|
|
|
|
|
vga_print: |
|
|
|
vga_print: |
|
|
|
pusha |
|
|
|
pusha |
|
|
|
mov edx, VIDEO_MEM |
|
|
|
mov edx, VIDEO_MEM |
|
|
|
|
|
|
|
|
|
|
|
vga_print_loop: |
|
|
|
vga_print_loop: |
|
|
|
mov al, [ebx] |
|
|
|
mov al, [ebx] ; Pointer to char |
|
|
|
mov ah, 0x0f |
|
|
|
mov ah, [vga_color_buf] ; Color code |
|
|
|
|
|
|
|
|
|
|
|
cmp al, ASCII_END |
|
|
|
cmp al, ASCII_END ; Check if end of string |
|
|
|
je vga_print_return |
|
|
|
je vga_print_return ; If end then return |
|
|
|
|
|
|
|
|
|
|
|
mov [edx], ax |
|
|
|
mov [edx], ax ; Move charpos |
|
|
|
inc ebx |
|
|
|
inc ebx ; Increment to next |
|
|
|
add edx, 2 |
|
|
|
add edx, 2 |
|
|
|
|
|
|
|
|
|
|
|
jmp vga_print_loop |
|
|
|
jmp vga_print_loop ; Loop back until end of string |
|
|
|
|
|
|
|
|
|
|
|
vga_print_return: |
|
|
|
vga_print_return: |
|
|
|
popa |
|
|
|
popa |
|
|
|