[Back to COMM SWAG index] [Back to Main SWAG index] [Original]
{
Hi MR. Davis!
This is just a little modem unit i have built , i hope its good enough
so you can include it in SWAG.
MODIFYING PROHIBITED!
}
unit modem;
INTERFACE
VAR
MDM:ShortInt;
{
INITIALIZES THE MODEM. MUST BE IN THE BEGINNING OF THE CODE.
}
PROCEDURE InitModem(port:word);
{
SEND A CHAR TO A MODEM ON A SPECIFIED PORT.
}
PROCEDURE SendChar(port:word;ch:char);
{
SEND ASCI CODE TO A MODEM ON A SPECIFIED PORT.
}
PROCEDURE SendAsci(port:word;asc:ShortInt);
{
READ AN ASCI CHARACTER FROM A SPECIFIED PORT , AND PUTS IT IN <MDM>.
}
PROCEDURE ReadAsci(port:word);
{
FLUSH A SPECIFIED PORT'S BUFFER.
}
PROCEDURE FlushPort(port:byte);
{
IMPORTANT NOTICE : WHEN SPECIFYING A PORT ADRESS , IT GOES LIKE THIS :
'0' : COM PORT 1.
'1' : COM PORT 2.
'2' : COM PORT 3.
'3' : COM PORT 4.
}
IMPLEMENTATION
PROCEDURE InitModem(port:word); ASSEMBLER;
ASM
mov ah,00 { INIT THE MODEM }
mov al,11100011b { MAXIMUM OPTIMIZATION }
mov dx,port { SET COM PORT }
int 14h { DIRECT PORT ACCESS INTERRUPT }
end;
PROCEDURE SendChar(port:word;ch:char);
var
asc:shortint;
begin
asc:=ord(ch);
ASM
mov ah,01h { WRITE TO THE PORT }
mov dx,port { SET COM PORT }
mov al,asc { THE CHAR TO SEND }
int 14h { DIRECT PORT ACCESS INTERRUPT }
end;
end;
PROCEDURE SendAsci(port:word;asc:ShortInt); ASSEMBLER;
ASM
mov ah,01h { WRITE TO THE PORT }
mov dx,port { SET COM PORT }
mov al,asc { THE ASCI TO SEND }
int 14h { DIRECT PORT ACCESS INTERRUPT }
end;
PROCEDURE ReadAsci(port:word);
begin
asm
mov ah,02h { READ FROM THE PORT }
mov dx,port { SET COM PORT }
mov al,00h { READ FROM THE PORT }
int 14h { DIRECT PORT ACCESS INTERRUPT }
mov MDM,al
end;
end;
PROCEDURE FlushPort(port:byte); ASSEMBLER;
ASM
mov ah,04h { FLUSH THE PORT BUFFER }
mov dl,port { SET COM PORT }
mov dh,00000011b { MAXIMUM PROTOCOL OPTIMIZATION }
int 14h { DIRECT PORT ACCESS INTERRUPT }
end;
BEGIN
END.
[Back to COMM SWAG index] [Back to Main SWAG index] [Original]