#endif
#ifdef __linux__
-#define SERPORT1 "/dev/cua0"
-#define SERPORT2 "/dev/cua1"
+#define SERPORT1 "/dev/ttyS0"
+#define SERPORT2 "/dev/ttyS1"
#define PARPORT1 "/dev/par0"
#define PARPORT2 "/dev/par1"
#endif
-#ifdef _WIN32
+#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (bsdi)
+#define SERPORT1 "/dev/cuaa0"
+#define SERPORT2 "/dev/cuaa1"
+#define PARPORT1 "/dev/lpt0"
+#define PARPORT2 "/dev/lpt1"
+#endif
+
+
+#define SERIAL_PREFIX "/dev/tty"
+#if defined(_WIN32) || defined (__CYGWIN32__)
#define SERPORT1 "com1"
#define SERPORT2 "com2"
#define PARPORT1 "lpt1"
#define PARPORT2 "lpt2"
+#undef SERIAL_PREFIX
+#define SERIAL_PREFIX "com"
#endif
+
+
/*
* Parallel port output pins, used for signalling to target
*/
*/
/* Accept /dev/tty* where * is limited */
- if (strlen(name) == strlen(SERPORT1) && strncmp(name, "/dev/tty", 8) == 0) return name;
+ if (strlen(name) == strlen(SERPORT1)
+ && strncmp(name, SERIAL_PREFIX, strlen (SERIAL_PREFIX)) == 0)
+ {
+ return name;
+ }
/* Accept "1" or "2" or "S" - S is equivalent to "1" */
if (strcmp(name, "1") == 0 ||
extern int Unix_OpenSerial(const char *name)
{
-#if defined(BSD)
+#if defined(BSD) || defined(__CYGWIN32__)
serpfd = open(name, O_RDWR);
#else
serpfd = open(name, O_RDWR | O_NONBLOCK);
struct termios terminfo;
tcgetattr(serpfd, &terminfo);
-#ifdef __CYGWIN32__
- /* Expedient, but it works. */
- terminfo.c_iflag = 0;
- terminfo.c_oflag = 0;
- terminfo.c_cflag = 48;
- terminfo.c_lflag = 0;
- terminfo.c_cc[VMIN] = 0;
- terminfo.c_cc[VTIME] = 1;
-#else
terminfo.c_lflag &= ~(ICANON | ISIG | ECHO | IEXTEN);
terminfo.c_iflag &= ~(IGNCR | INPCK | ISTRIP | ICRNL | BRKINT);
terminfo.c_iflag |= (IXON | IXOFF | IGNBRK);
terminfo.c_cc[VMIN] = 1;
terminfo.c_cc[VTIME] = 0;
terminfo.c_oflag &= ~OPOST;
-#endif
tcsetattr(serpfd, TCSAFLUSH, &terminfo);
}