Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
afb70ffab6 | ||
|
|
5a83ea113c |
3
main.c
3
main.c
@@ -83,6 +83,7 @@
|
|||||||
// so that BREAKs are handled correctly via setjmp/longjmp
|
// so that BREAKs are handled correctly via setjmp/longjmp
|
||||||
// Update tu58drive.c to intercept rx byte read routine to
|
// Update tu58drive.c to intercept rx byte read routine to
|
||||||
// detect input line BREAK and process as required.
|
// detect input line BREAK and process as required.
|
||||||
|
// v2.0b - 03 Apr 2018 - donorth - Change iflags from PARMRK|IGNPAR to PARMRK|INPCK
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
@@ -93,7 +94,7 @@
|
|||||||
static char copyright[] = "(C) 2005-2017 Don North <ak6dn" "@" "mindspring.com>, " \
|
static char copyright[] = "(C) 2005-2017 Don North <ak6dn" "@" "mindspring.com>, " \
|
||||||
"(C) 1984 Dan Ts'o <Rockefeller University>";
|
"(C) 1984 Dan Ts'o <Rockefeller University>";
|
||||||
|
|
||||||
static char version[] = "tu58 tape emulator v2.0a";
|
static char version[] = "tu58 tape emulator v2.0b";
|
||||||
|
|
||||||
static char port[32] = "1"; // default port number (COM1, /dev/ttyS0)
|
static char port[32] = "1"; // default port number (COM1, /dev/ttyS0)
|
||||||
static long speed = 9600; // default line speed
|
static long speed = 9600; // default line speed
|
||||||
|
|||||||
7
makefile
7
makefile
@@ -9,25 +9,26 @@ ifeq ($(OPSYS),Darwin)
|
|||||||
# mac: UNIX comms model, but on MACOSX
|
# mac: UNIX comms model, but on MACOSX
|
||||||
OPTIONS = -DMACOSX
|
OPTIONS = -DMACOSX
|
||||||
LFLAGS = -lpthread
|
LFLAGS = -lpthread
|
||||||
|
BINDIR = /usr/local/bin
|
||||||
else ifeq ($(OPSYS:CYGWIN%=CYGWIN),CYGWIN)
|
else ifeq ($(OPSYS:CYGWIN%=CYGWIN),CYGWIN)
|
||||||
# win: WINDOWS comms model under CYGWIN (any version)
|
# win: WINDOWS comms model under CYGWIN (any version)
|
||||||
OPTIONS = -DCYGWIN -DWINCOMM
|
OPTIONS = -DCYGWIN -DWINCOMM
|
||||||
LFLAGS = -lpthread -lrt
|
LFLAGS = -lpthread -lrt
|
||||||
|
BINDIR = /cygdrive/e/DEC/tools/exe
|
||||||
else ifeq ($(OPSYS),Linux)
|
else ifeq ($(OPSYS),Linux)
|
||||||
# unix: UNIX comms model under LINUX, use PARMRK serial mode
|
# unix: UNIX comms model under LINUX, use PARMRK serial mode
|
||||||
OPTIONS = -DLINUX -DUSE_PARMRK
|
OPTIONS = -DLINUX -DUSE_PARMRK
|
||||||
LFLAGS = -lpthread -lrt
|
LFLAGS = -lpthread -lrt
|
||||||
|
BINDIR = /usr/local/bin
|
||||||
else # unknown environment
|
else # unknown environment
|
||||||
OPTIONS =
|
OPTIONS =
|
||||||
LFLAGS = -lpthread -lrt
|
LFLAGS = -lpthread -lrt
|
||||||
|
BINDIR = /usr/local/bin
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# default program name, redefine PROG=xxx on command line if wanted
|
# default program name, redefine PROG=xxx on command line if wanted
|
||||||
PROG = tu58em
|
PROG = tu58em
|
||||||
|
|
||||||
# put your binary installation directory here...
|
|
||||||
BINDIR = /cygdrive/e/DEC/tools/exe
|
|
||||||
|
|
||||||
# compiler flags and libraries
|
# compiler flags and libraries
|
||||||
CC = gcc
|
CC = gcc
|
||||||
CFLAGS = -I. -O3 -Wall -c $(OPTIONS)
|
CFLAGS = -I. -O3 -Wall -c $(OPTIONS)
|
||||||
|
|||||||
6
serial.c
6
serial.c
@@ -586,10 +586,10 @@ void devinit (char *port,
|
|||||||
// open serial port
|
// open serial port
|
||||||
int32_t euid = geteuid();
|
int32_t euid = geteuid();
|
||||||
int32_t uid = getuid();
|
int32_t uid = getuid();
|
||||||
setreuid(euid, -1);
|
if (setreuid(euid, -1)) fatal("setreuid(euid,-1) failed");
|
||||||
if (sscanf(port, "%u", &n) == 1) sprintf(name, "/dev/ttyS%u", n-1); else strcpy(name, port);
|
if (sscanf(port, "%u", &n) == 1) sprintf(name, "/dev/ttyS%u", n-1); else strcpy(name, port);
|
||||||
if ((device = open(name, O_RDWR|O_NDELAY|O_NOCTTY)) < 0) fatal("no serial line [%s]", name);
|
if ((device = open(name, O_RDWR|O_NDELAY|O_NOCTTY)) < 0) fatal("no serial line [%s]", name);
|
||||||
setreuid(uid, euid);
|
if (setreuid(uid, euid)) fatal("setreuid(uid,euid) failed");
|
||||||
|
|
||||||
// get current line params, error if not a serial port
|
// get current line params, error if not a serial port
|
||||||
if (tcgetattr(device, &lineSave)) fatal("not a serial device [%s]", name);
|
if (tcgetattr(device, &lineSave)) fatal("not a serial device [%s]", name);
|
||||||
@@ -602,7 +602,7 @@ void devinit (char *port,
|
|||||||
INLCR | IGNCR | ICRNL | IXON | IXOFF |
|
INLCR | IGNCR | ICRNL | IXON | IXOFF |
|
||||||
IUCLC | IXANY | PARMRK | IGNPAR );
|
IUCLC | IXANY | PARMRK | IGNPAR );
|
||||||
#ifdef USE_PARMRK
|
#ifdef USE_PARMRK
|
||||||
line.c_iflag |= ( PARMRK | IGNPAR );
|
line.c_iflag |= ( PARMRK | INPCK );
|
||||||
#else // !USE_PARMRK
|
#else // !USE_PARMRK
|
||||||
line.c_iflag |= ( 0 );
|
line.c_iflag |= ( 0 );
|
||||||
#endif // !USE_PARMRK
|
#endif // !USE_PARMRK
|
||||||
|
|||||||
Reference in New Issue
Block a user