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
|
||||
// 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
|
||||
|
||||
7
makefile
7
makefile
@@ -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)
|
||||
|
||||
6
serial.c
6
serial.c
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user