1
0
mirror of synced 2026-01-27 04:21:49 +00:00

2 Commits
v2.0a ... v2.0b

3 changed files with 9 additions and 7 deletions

3
main.c
View File

@@ -83,6 +83,7 @@
// so that BREAKs are handled correctly via setjmp/longjmp
// Update tu58drive.c to intercept rx byte read routine to
// 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>, " \
"(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 long speed = 9600; // default line speed

View File

@@ -9,25 +9,26 @@ ifeq ($(OPSYS),Darwin)
# mac: UNIX comms model, but on MACOSX
OPTIONS = -DMACOSX
LFLAGS = -lpthread
BINDIR = /usr/local/bin
else ifeq ($(OPSYS:CYGWIN%=CYGWIN),CYGWIN)
# win: WINDOWS comms model under CYGWIN (any version)
OPTIONS = -DCYGWIN -DWINCOMM
LFLAGS = -lpthread -lrt
BINDIR = /cygdrive/e/DEC/tools/exe
else ifeq ($(OPSYS),Linux)
# unix: UNIX comms model under LINUX, use PARMRK serial mode
OPTIONS = -DLINUX -DUSE_PARMRK
LFLAGS = -lpthread -lrt
BINDIR = /usr/local/bin
else # unknown environment
OPTIONS =
LFLAGS = -lpthread -lrt
BINDIR = /usr/local/bin
endif
# default program name, redefine PROG=xxx on command line if wanted
PROG = tu58em
# put your binary installation directory here...
BINDIR = /cygdrive/e/DEC/tools/exe
# compiler flags and libraries
CC = gcc
CFLAGS = -I. -O3 -Wall -c $(OPTIONS)

View File

@@ -586,10 +586,10 @@ void devinit (char *port,
// open serial port
int32_t euid = geteuid();
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 ((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
if (tcgetattr(device, &lineSave)) fatal("not a serial device [%s]", name);
@@ -602,7 +602,7 @@ void devinit (char *port,
INLCR | IGNCR | ICRNL | IXON | IXOFF |
IUCLC | IXANY | PARMRK | IGNPAR );
#ifdef USE_PARMRK
line.c_iflag |= ( PARMRK | IGNPAR );
line.c_iflag |= ( PARMRK | INPCK );
#else // !USE_PARMRK
line.c_iflag |= ( 0 );
#endif // !USE_PARMRK