/* Home cursor. */
movb $0x02, %ah
xorw %bx, %bx
xorw %dx, %dx
int $0x10
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
popa
ret
/**************************************************************************
PUTC - Print a character
**************************************************************************/
ENTRY(conputc)
pusha
call _C_LABEL(prot_to_real) # enter real mode
.code16
movw $1,%bx
movb $0x0e,%ah
movb %al, %cl
int $0x10
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
popa
ret
/**************************************************************************
GETC - Get a character
**************************************************************************/
ENTRY(congetc)
xorl %eax, %eax
pusha
call _C_LABEL(prot_to_real) # enter real mode
.code16
movb $0x0,%ah
int $0x16
movb %al,%bl
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
movb %bl, 28(%esp)
popa
ret
/**************************************************************************
ISSHIFT - Check for keyboard interrupt; via shift key
**************************************************************************/
ENTRY(conisshift)
xorl %eax, %eax
pusha
call _C_LABEL(prot_to_real) # enter real mode
.code16
xor %bx,%bx
movb $0x2,%ah
int $0x16
testb $3,%al
setnz %bl
calll _C_LABEL(real_to_prot) # back to protected mode
.code32