diff options
Diffstat (limited to 'src/kernel/serial.asm')
-rw-r--r-- | src/kernel/serial.asm | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/kernel/serial.asm b/src/kernel/serial.asm index 6318bc5..2213fd8 100644 --- a/src/kernel/serial.asm +++ b/src/kernel/serial.asm @@ -17,7 +17,9 @@ global send_byte global read_byte +global poll_port +section .text send_byte:;void send_byte(uint8_t value, uint8_t port) push ebp mov ebp, esp @@ -77,5 +79,29 @@ read_byte:;uint8_t read_byte(uint8_t port) leave ret +poll_port:;bool poll_port(uint8_t port) + push ebp + mov ebp, esp + + xor eax, eax + + xor ecx, ecx + mov cl, byte [ebp + 8];port + + test cl, 0xfc + jnz .leave + + shl cl, 1 + mov dx, word [ecx + com_ports] + + or dx, 5 + + in al, dx + and al, 0x01 + +.leave: + leave + ret + section .rodata com_ports dw 0x03f8, 0x02f8, 0x03e8, 0x02e8
\ No newline at end of file |