
modified: compiler/create_crosscompiler.sh deleted: notes modified: src/.gdb_history deleted: src/amd64_vol2.pdf modified: src/bootloader/bios_functions/bios_disk.asm modified: src/bootloader/bios_functions/print.asm modified: src/bootloader/bootloader.asm modified: src/bootloader/cpu_check.asm modified: src/bootloader/enter_kernel.asm deleted: src/bootloader/enter_kernel_backup modified: src/bootloader/gdt.asm deleted: src/bootloader/multicore.asm deleted: src/bootloader/notes new file: src/debug/gdbinit.gdb deleted: src/indigo_os modified: src/kernel/include/libc.h modified: src/kernel/include/paging.h modified: src/kernel/include/video.h modified: src/kernel/kernel.c modified: src/kernel/libs/acpi.c modified: src/kernel/libs/drivers/serial.c modified: src/kernel/libs/drivers/video.c modified: src/kernel/libs/libc.c modified: src/kernel/libs/page.c modified: src/link.ld modified: src/makefile new file: tools/README.md modified: tools/page/page.py
59 lines
789 B
NASM
59 lines
789 B
NASM
;TODO fix null problem, allow passing value insted of pointer
|
|
bios_print:
|
|
pusha
|
|
mov ah, 0x0e
|
|
|
|
.print_loop:
|
|
mov al, [bx]
|
|
cmp al, 0
|
|
je .fini
|
|
|
|
test cx, cx ; if cx is zero, ascii, otherwise hex string
|
|
jne .print_hex
|
|
int 0x10
|
|
.print_hex_ret:
|
|
inc bx
|
|
jmp .print_loop
|
|
|
|
.fini:
|
|
mov al, 0xd
|
|
int 0x10
|
|
mov al, 0xa
|
|
int 0x10
|
|
popa
|
|
ret
|
|
|
|
|
|
.print_hex:
|
|
mov al, '0'
|
|
int 0x10
|
|
|
|
mov al, 'x'
|
|
int 0x10
|
|
|
|
mov al, [bx]
|
|
shr al, 4
|
|
call .bios_print_nibble
|
|
|
|
mov al, [bx]
|
|
and al, 0x0f
|
|
call .bios_print_nibble
|
|
|
|
mov al, ' '
|
|
int 0x10
|
|
|
|
jmp .print_hex_ret
|
|
|
|
|
|
.bios_print_nibble:
|
|
cmp al, 9
|
|
ja .print_hex_letter
|
|
add al, 0x30
|
|
int 0x10
|
|
ret
|
|
|
|
.print_hex_letter:
|
|
add al, 0x57
|
|
int 0x10
|
|
ret
|