1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include "x16.h"
TEXT uartinit(SB), $0
MOVL c+8(SP), AX
MOVB $0x00, AH
JMP _uartbios
TEXT uartputc(SB), $0
MOVL c+8(SP), AX
MOVB $0x01, AH
JMP _uartbios
TEXT uartgetc(SB), $0
MOVL p+4(SP), DX
CALL rmode16(SB)
STI
MOVB $0x03, AH
BIOSCALL(0x14)
CALL16(pmode32(SB))
ANDL $0x8100, AX
MOVL $0x0100, BX
CMPL BX, AX
JE _uartread
XORL AX, AX
RET
_uartread:
MOVB $0x02, AH
_uartbios:
MOVL p+4(SP), DX
CALL rmode16(SB)
STI
BIOSCALL(0x14)
CALL16(pmode32(SB))
ANDL $0xFF, AX
RET
|