Bom dia, o problema é o seguinte: o programa compilado funciona perfeitamente rodando no windows xp porém quando roda em MSDos 6.22 não funciona, foi compilado no turboc 3.0,
Gostaria de saber se o dos ou o turboc não tem suporte a essa placa, processador athlon xp 3000+, e qual seria a solução.
segue o programa fonte:
#include<stdio.h>
#include<conio.h>
#include<bios.h>
#define SETTINGS (_COM_9600 | _COM_CHR8 | _COM_EVENPARITY | _COM_STOP1) /* baud rate = 9600, 8 data bits, even parity bit, 1 stop bit */
/////////////////////////////////// protótipos///////////////////////////////////
void display(char *, int);
/////////////////////////////////// inicio do programa ///////////////////////////////////
void main(void)
{
unsigned in, out, status, count_in=0, count_out=0;
int port, i;
char msg_in[75], msg_out[75];
textbackground(BLACK);
clrscr();
gotoxy(3, 1);
textcolor(GREEN);
cprintf("Full-Duplex PC para PC Communicação via RS-232 Serial Port usando 'C':Chatting");
gotoxy(7, 3);
textcolor(LIGHTCYAN);
gotoxy(15, 5);
textcolor(LIGHTGRAY);
cprintf("Selecione a Porta (Digite '0' para COM1 ou '1' para COM2) : ");
scanf("%d",&port);
textcolor(LIGHTGRAY + BLINK);
cprintf("\n Pressione ESC para sair, Pressione Enter para enviar a mensagem de saída");
gotoxy(10, 9);
textcolor(MAGENTA + BLINK);
putch(1);
cprintf("-Mensagem de saída");
gotoxy(53, 9);
textcolor(BLUE + BLINK);
putch(1);
cprintf("-Mensagem recebida");
window(10, 11, 70, 23);
textbackground(YELLOW);
clrscr();
/* Exibição da Comunicação */
window(1, 25, 80, 25);
textbackground(BLUE);
textcolor(YELLOW);
clrscr();
/* Entrada de texto */
window(1, 1, 80, 25);
gotoxy(2, 25);
putch(2);
_bios_serialcom(_COM_INIT, port, SETTINGS);
window(4, 25, 80, 25);
///////////////////////////////////inicio do programa principal ///////////////////////////////////
for(;;)
{
status=_bios_serialcom(_COM_STATUS, port, 0);
if (status & 512)
printf("\n\t\a Overrun Error");
if (status & 1024)
printf("\n\t\a Parity Error");
if (status & 2048)
printf("\n\t\a Framing Error");
if(status & (512|1024|2048)) /* if any error */
break;
if(status & 256) /* if data ready */
{
if((out=_bios_serialcom(_COM_RECEIVE, port, 0) & 255)!=0)
msg_in[count_in++] = out;
if(out=='\r')
{
display(msg_in, BLUE);
count_in=0;
gotoxy(count_out+1, 1);
}
}
if(kbhit()) /* if a keystroke is currently available */
{
gotoxy(count_out+1, 1);
in=getche(); /* get a character by echoing onto the screen */
if(in==27) /* if ESC */
break;
if(in=='\b' && count_out>0)
{
count_out=count_out-2;
cprintf(" \b");
}
else
msg_out[count_out]=in;
if(count_out==74)
{
in='\r';
msg_out[74]='\r';
}
count_out++;
if(in=='\r')
{
display(msg_out, MAGENTA);
for(i=0; i<count_out; i++)
_bios_serialcom(_COM_SEND, port, msg_out);
count_out=0;
clrscr();
}
}
}
}
/////////////////////////////////// funções////////////////////////////////////////////
void display(char arr[75], int COLOR)
{
static int line=1;
int j;
window(10, 11, 70, 23);
gotoxy(1, line);
textcolor(COLOR);
textbackground(YELLOW);
cprintf("\n");
putch(1);
for(j=0; arr[j]!='\r'; j++)
putch(arr[j]);
line=wherey();
window(4, 25, 80, 25);
textcolor(YELLOW);
textbackground(BLUE);
}
///////////////////////////////////