Ayuda para compilar
Hola, mi consulta puede ser un poco tonta pero necesito ayuda para compilar un programa en c++ que me dan en la facultad (me dan el programa y tengo que armar el cable para que 2 maquinas se puedan comunicar por puerto serie) y mi problema es que al compilar el programa con Borland C++ 5.02 me da errores en la compilacion. El problema sera que tengo que usar un compilador mas viejo??? cual puedo usar??
El programa es el siguente:
---Int1.cpp---
#include <iostream.h>
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#define PUERTO 0x3F8 /* Contiene la "Base Address" del puerto
serial */
/* COM1 0x3F8
*/
/* COM2 0x2F8
*/
/* COM3 0x3E8
*/
/* COM4 0x2E8
*/
#define INTVECTOR 0x0C /* Contiene el IRQ del puerto */
/* COM1 - 0x0C
*/
/* COM2 - 0x0B
*/
/* COM3 - 0x0C
*/
/* COM4 - 0x0B
*/
#define PIC 0xEF /* Para el "Programmable Interrupt Controller"
*/
/* COM1 (IRQ4) - 0xEF
*/
/* COM2 (IRQ3) - 0xF7
*/
/* COM3 (IRQ4) - 0xEF
*/
/* COM4 (IRQ3) - 0xF7
*/
#define PicMasc 0x10 /* Enmascara el IRQ usando el PIC */
/* COM1 (IRQ4) - 0x10
*/
/* COM2 (IRQ3) - 0x08
*/
/* COM3 (IRQ4) - 0x10
*/
/* COM4 (IRQ3) - 0x08
*/
int Cuantollega = 0;
int CuantoSale = 0;
char C_llega;
char buffer[1025];
//////////////// Las dos Rutinas de Interrupt
////////////////////////////
void interrupt (*ViejoISRdePUERTO)(...);
void interrupt NuevoISRdePUERTO(...) /* Rutina de servicio del
interrupt (ISR) para PUERTO */
{
int c;
do {
c = inportb(PUERTO + 5);
if (c & 1)
{
buffer[Cuantollega] = inportb(PUERTO);
Cuantollega++;
if (Cuantollega == 1024) {Cuantollega = 0;};
};
}while (c & 1);
outportb(0x20,0x20);
}
/////////////////////////// El MAIN
///////////////////////////////////////
void main(void)
{
int Tecla;
outportb(PUERTO + 1 , 0); /* Apaga los interrupts
de PUERTO */
ViejoISRdePUERTO = getvect(INTVECTOR); /* Resguarda el vector de
interrupt actual
para restitu¡rlo al final
*/
setvect(INTVECTOR, NuevoISRdePUERTO); /* Coloca nuestra nueva
rutina del interrupt */
///////////* Ahora el Seteo del puerto de comunicaciones
*////////////////
outportb(PUERTO + 3 , 0x80); /* Pone DLAB ON */
outportb(PUERTO + 0 , 0x0C); /* Pone el "Baud rate" - (Divisor
Latch Low Byte) */
outportb(PUERTO + 1 , 0x00); /* Pone el "Baud rate" - (Divisor
Latch High Byte) */
outportb(PUERTO + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit
*/
outportb(PUERTO + 2 , 0xC7); /* FIFO Control Register
*/
outportb(PUERTO + 4 , 0x0B); /* Enciende el DTR, RTS y OUT2
*/
outportb(0x21,(inportb(0x21) & PIC )); /* Pone el "Programmable
Interrupt Controller" */
outportb(PUERTO + 1 , 0x01); /* Activa el Interrupt */
printf("nPrograma de chat por puertos seriales. Presione ESC para
finalizar n");
do {
if (Cuantollega != CuantoSale)
{
C_llega = buffer[CuantoSale];
CuantoSale++;
if (CuantoSale == 1024) {CuantoSale = 0;};
printf("%c",C_llega);
};
if (kbhit())
{
Tecla = getch();
outportb(PUERTO, Tecla);
};
} while (Tecla !=27);
outportb(PUERTO + 1 , 0); /* Apaga los
interrupts de PUERTO */
outportb(0x21,(inportb(0x21) | PicMasc )); /* Enmascara el IRQ
usando el PIC */
setvect(INTVECTOR, ViejoISRdePUERTO); /* Restaura el vector
de interrupciones anterior */
clrscr();
exit(0);
} /* Fin del Main */
Y este...
---Poll1.cpp---
#include <iostream.h>
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#define PUERTO 0x3F8 /* COM1 */
void main(void)
{
int c, ch, Tecla;
outportb(PUERTO + 1 , 0); /* Apaga los interrupts de PUERTO */
///////////* Ahora el Seteo del puerto de comunicaciones
*////////////////
outportb(PUERTO + 3 , 0x80); /* Pone DLAB ON */
outportb(PUERTO + 0 , 0x0C); /* Pone el "Baud rate" - (Divisor
Latch Low Byte) */
outportb(PUERTO + 1 , 0x00); /* Pone el "Baud rate" - (Divisor
Latch High Byte) */
outportb(PUERTO + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit
*/
outportb(PUERTO + 2 , 0xC7); /* FIFO Control Register
*/
outportb(PUERTO + 4 , 0x0B); /* Enciende el DTR, RTS y OUT2
*/
printf("nPrograma de chat por puertos seriales. Presione ESC para
finalizar n");
do {
c = inportb(PUERTO + 5); /* Controla si se recibi¢ un caracter
*/
if (c & 1)
{
ch = inportb(PUERTO); /* Si llega, lo toma */
printf("%c",ch); /* Imprime el caracter en la pantalla */
};
if (kbhit())
{
Tecla = getch(); /* Si presiona tecla, obtiene el
caracter */
outportb(PUERTO, Tecla); /* Manda el caracter al puerto
serial */
};
} while (Tecla !=27); /* Fin cuando se presiona ESC (ASC 27) */
clrscr();
exit(0);
}
No se nada de C++ pero a mi lo unico que me interesa es que compile... jeje...
Muchas Gracias...
El programa es el siguente:
---Int1.cpp---
#include <iostream.h>
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#define PUERTO 0x3F8 /* Contiene la "Base Address" del puerto
serial */
/* COM1 0x3F8
*/
/* COM2 0x2F8
*/
/* COM3 0x3E8
*/
/* COM4 0x2E8
*/
#define INTVECTOR 0x0C /* Contiene el IRQ del puerto */
/* COM1 - 0x0C
*/
/* COM2 - 0x0B
*/
/* COM3 - 0x0C
*/
/* COM4 - 0x0B
*/
#define PIC 0xEF /* Para el "Programmable Interrupt Controller"
*/
/* COM1 (IRQ4) - 0xEF
*/
/* COM2 (IRQ3) - 0xF7
*/
/* COM3 (IRQ4) - 0xEF
*/
/* COM4 (IRQ3) - 0xF7
*/
#define PicMasc 0x10 /* Enmascara el IRQ usando el PIC */
/* COM1 (IRQ4) - 0x10
*/
/* COM2 (IRQ3) - 0x08
*/
/* COM3 (IRQ4) - 0x10
*/
/* COM4 (IRQ3) - 0x08
*/
int Cuantollega = 0;
int CuantoSale = 0;
char C_llega;
char buffer[1025];
//////////////// Las dos Rutinas de Interrupt
////////////////////////////
void interrupt (*ViejoISRdePUERTO)(...);
void interrupt NuevoISRdePUERTO(...) /* Rutina de servicio del
interrupt (ISR) para PUERTO */
{
int c;
do {
c = inportb(PUERTO + 5);
if (c & 1)
{
buffer[Cuantollega] = inportb(PUERTO);
Cuantollega++;
if (Cuantollega == 1024) {Cuantollega = 0;};
};
}while (c & 1);
outportb(0x20,0x20);
}
/////////////////////////// El MAIN
///////////////////////////////////////
void main(void)
{
int Tecla;
outportb(PUERTO + 1 , 0); /* Apaga los interrupts
de PUERTO */
ViejoISRdePUERTO = getvect(INTVECTOR); /* Resguarda el vector de
interrupt actual
para restitu¡rlo al final
*/
setvect(INTVECTOR, NuevoISRdePUERTO); /* Coloca nuestra nueva
rutina del interrupt */
///////////* Ahora el Seteo del puerto de comunicaciones
*////////////////
outportb(PUERTO + 3 , 0x80); /* Pone DLAB ON */
outportb(PUERTO + 0 , 0x0C); /* Pone el "Baud rate" - (Divisor
Latch Low Byte) */
outportb(PUERTO + 1 , 0x00); /* Pone el "Baud rate" - (Divisor
Latch High Byte) */
outportb(PUERTO + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit
*/
outportb(PUERTO + 2 , 0xC7); /* FIFO Control Register
*/
outportb(PUERTO + 4 , 0x0B); /* Enciende el DTR, RTS y OUT2
*/
outportb(0x21,(inportb(0x21) & PIC )); /* Pone el "Programmable
Interrupt Controller" */
outportb(PUERTO + 1 , 0x01); /* Activa el Interrupt */
printf("nPrograma de chat por puertos seriales. Presione ESC para
finalizar n");
do {
if (Cuantollega != CuantoSale)
{
C_llega = buffer[CuantoSale];
CuantoSale++;
if (CuantoSale == 1024) {CuantoSale = 0;};
printf("%c",C_llega);
};
if (kbhit())
{
Tecla = getch();
outportb(PUERTO, Tecla);
};
} while (Tecla !=27);
outportb(PUERTO + 1 , 0); /* Apaga los
interrupts de PUERTO */
outportb(0x21,(inportb(0x21) | PicMasc )); /* Enmascara el IRQ
usando el PIC */
setvect(INTVECTOR, ViejoISRdePUERTO); /* Restaura el vector
de interrupciones anterior */
clrscr();
exit(0);
} /* Fin del Main */
Y este...
---Poll1.cpp---
#include <iostream.h>
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#define PUERTO 0x3F8 /* COM1 */
void main(void)
{
int c, ch, Tecla;
outportb(PUERTO + 1 , 0); /* Apaga los interrupts de PUERTO */
///////////* Ahora el Seteo del puerto de comunicaciones
*////////////////
outportb(PUERTO + 3 , 0x80); /* Pone DLAB ON */
outportb(PUERTO + 0 , 0x0C); /* Pone el "Baud rate" - (Divisor
Latch Low Byte) */
outportb(PUERTO + 1 , 0x00); /* Pone el "Baud rate" - (Divisor
Latch High Byte) */
outportb(PUERTO + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit
*/
outportb(PUERTO + 2 , 0xC7); /* FIFO Control Register
*/
outportb(PUERTO + 4 , 0x0B); /* Enciende el DTR, RTS y OUT2
*/
printf("nPrograma de chat por puertos seriales. Presione ESC para
finalizar n");
do {
c = inportb(PUERTO + 5); /* Controla si se recibi¢ un caracter
*/
if (c & 1)
{
ch = inportb(PUERTO); /* Si llega, lo toma */
printf("%c",ch); /* Imprime el caracter en la pantalla */
};
if (kbhit())
{
Tecla = getch(); /* Si presiona tecla, obtiene el
caracter */
outportb(PUERTO, Tecla); /* Manda el caracter al puerto
serial */
};
} while (Tecla !=27); /* Fin cuando se presiona ESC (ASC 27) */
clrscr();
exit(0);
}
No se nada de C++ pero a mi lo unico que me interesa es que compile... jeje...
Muchas Gracias...