EasyManua.ls Logo

Intel 386

Intel 386
691 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
7-17
SYSTEM MANAGEMENT MODE
---------------------------------------------------------------------------*/
void SerialWriteStr2()
/* Loops while writing a char out to the serial port */
{
_asm
{
mov ax,0x3900
mov ss,ax
mov sp,0x100
Forever:
mov dx,0xf4fd
TstStatus:
in al,dx
testal,0x20
je TstStatus
// Code below is same as _SetEXRegByte(TransmitPortAddr,’X’)
mov ax,’X’
mov dx,0xf4f8
out dx, al
jmp Forever
}
}
/*********************** Function SerialWriteStr **************************
Parameters:
Unit Unit number of the serial port. 0 for SIO port 0, 1 for SIO
port 1.
*str Character string to be written out the serial port.
Returns:
None
Assumptions:
None
Real/Protected Mode
------------------------------------------------------------------------*/
void SerialWriteStr(int Unit, const char far *str)
{
WORD TransmitPortAddr;
WORD StatusPortAddr;
// Set Port base, based on serial port used
TransmitPortAddr = (Unit ? TBR1 : TBR0);
StatusPortAddr = (Unit ? LSR1 : LSR0);
for( ; *str != ‘\0’; str++)
{
// Wait until buffer is empty
while(!(_GetEXRegByte(StatusPortAddr) & SIO_TX_BUF_EMPTY)) ;
// Write Character
_SetEXRegByte(TransmitPortAddr,*str);
}

Table of Contents

Related product manuals