Bodge the ancient em monitor library into building as a libsys for the em22
plat. It's completely untested, but it builds and makes e.out executables.
This commit is contained in:
parent
13a7abdd69
commit
7eaa235fd1
|
@ -18,7 +18,7 @@ extern void _close(int);
|
||||||
|
|
||||||
#define FAIL 127
|
#define FAIL 127
|
||||||
|
|
||||||
extern const char **_penvp;
|
extern const char **environ;
|
||||||
static const char *exec_tab[] = {
|
static const char *exec_tab[] = {
|
||||||
"sh", /* argv[0] */
|
"sh", /* argv[0] */
|
||||||
"-c", /* argument to the shell */
|
"-c", /* argument to the shell */
|
||||||
|
@ -39,7 +39,7 @@ system(const char *str)
|
||||||
_close(i);
|
_close(i);
|
||||||
if (!str) str = "cd ."; /* just testing for a shell */
|
if (!str) str = "cd ."; /* just testing for a shell */
|
||||||
exec_tab[2] = str; /* fill in command */
|
exec_tab[2] = str; /* fill in command */
|
||||||
_execve("/bin/sh", exec_tab, _penvp);
|
_execve("/bin/sh", exec_tab, environ);
|
||||||
/* get here if execve fails ... */
|
/* get here if execve fails ... */
|
||||||
_exit(FAIL); /* see manual page */
|
_exit(FAIL); /* see manual page */
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
/* $Id$ */
|
|
||||||
_cleanup(){}
|
|
|
@ -93,6 +93,6 @@ killbss()
|
||||||
extern int catch();
|
extern int catch();
|
||||||
|
|
||||||
int (*handler)() = catch;
|
int (*handler)() = catch;
|
||||||
char **argv = 0, **environ = 0;
|
char **argv = 0;
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
char *MainLB = 0;
|
char *MainLB = 0;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
mes 2,EM_WSIZE,EM_PSIZE
|
mes 2,EM_WSIZE,EM_PSIZE
|
||||||
exp $_execl
|
exp $_execl
|
||||||
pro $_execl,0
|
pro $_execl,0
|
||||||
lae _penvp
|
lae environ
|
||||||
loi EM_PSIZE
|
loi EM_PSIZE
|
||||||
lal EM_PSIZE
|
lal EM_PSIZE
|
||||||
lal 0
|
lal 0
|
|
@ -2,7 +2,7 @@
|
||||||
mes 2,EM_WSIZE,EM_PSIZE
|
mes 2,EM_WSIZE,EM_PSIZE
|
||||||
exp $execl
|
exp $execl
|
||||||
pro $execl,0
|
pro $execl,0
|
||||||
lae _penvp
|
lae environ
|
||||||
loi EM_PSIZE
|
loi EM_PSIZE
|
||||||
lal EM_PSIZE
|
lal EM_PSIZE
|
||||||
lal 0
|
lal 0
|
|
@ -2,7 +2,7 @@
|
||||||
mes 2,EM_WSIZE,EM_PSIZE
|
mes 2,EM_WSIZE,EM_PSIZE
|
||||||
exp $execv
|
exp $execv
|
||||||
pro $execv,0
|
pro $execv,0
|
||||||
lae _penvp
|
lae environ
|
||||||
loi EM_PSIZE
|
loi EM_PSIZE
|
||||||
lal 0
|
lal 0
|
||||||
loi 2*EM_PSIZE
|
loi 2*EM_PSIZE
|
12
plat/em/libsys/isatty.c
Normal file
12
plat/em/libsys/isatty.c
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
/* $Id$ */
|
||||||
|
isatty(f)
|
||||||
|
{
|
||||||
|
char buf[128];
|
||||||
|
/* not a sgttyb struct; it might not be large enough;
|
||||||
|
I know for a fact that it is'nt large enough on PC/IX,
|
||||||
|
where gtty is an ioctl(..., TCGETA, ...)
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (gtty(f, buf) < 0) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
|
@ -12,6 +12,7 @@ installable {
|
||||||
map = {
|
map = {
|
||||||
"+libs",
|
"+libs",
|
||||||
"./include+pkg",
|
"./include+pkg",
|
||||||
|
["$(PLATIND)/em22/libsys.a"] = "./libsys+lib",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,10 @@ local function addheader(h)
|
||||||
end
|
end
|
||||||
|
|
||||||
addheader("ack/config.h")
|
addheader("ack/config.h")
|
||||||
|
addheader("sys/types.h")
|
||||||
|
addheader("sys/timeb.h")
|
||||||
addheader("unistd.h")
|
addheader("unistd.h")
|
||||||
|
addheader("sgtty.h")
|
||||||
|
|
||||||
acklibrary {
|
acklibrary {
|
||||||
name = "headers",
|
name = "headers",
|
||||||
|
|
119
plat/em22/include/sgtty.h
Normal file
119
plat/em22/include/sgtty.h
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
/* $Id$ */
|
||||||
|
/*
|
||||||
|
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
|
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||||
|
*/
|
||||||
|
/* Data structures for ioctl/stty/gtty, sufficient for ACK libraries */
|
||||||
|
|
||||||
|
#ifndef _SGTTY_H
|
||||||
|
#define _SGTTY_H
|
||||||
|
|
||||||
|
struct sgttyb {
|
||||||
|
char sg_ispeed; /* input speed (not used) */
|
||||||
|
char sg_ospeed; /* output speed (not used) */
|
||||||
|
char sg_erase; /* erase character */
|
||||||
|
char sg_kill; /* kill character */
|
||||||
|
#if defined(__USG) && !defined(_XENIX)
|
||||||
|
int sg_flags; /* mode flags */
|
||||||
|
#else
|
||||||
|
short sg_flags; /* mode flags */
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
struct tchars {
|
||||||
|
char t_intrc; /* SIGINT char */
|
||||||
|
char t_quitc; /* SIGQUIT char */
|
||||||
|
char t_startc; /* start output (initially CTRL-Q) */
|
||||||
|
char t_stopc; /* stop output (initially CTRL-S) */
|
||||||
|
char t_eofc; /* EOF (initially CTRL-D) */
|
||||||
|
char t_brkc; /* input delimiter (like nl) */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Fields in t_flags. */
|
||||||
|
#define ALLDELAY 0177400
|
||||||
|
|
||||||
|
#define BSDELAY 0100000
|
||||||
|
# define BS0 0000000
|
||||||
|
# define BS1 0100000
|
||||||
|
|
||||||
|
#define VTDELAY 0040000
|
||||||
|
# define FF0 0000000
|
||||||
|
# define FF1 0040000
|
||||||
|
|
||||||
|
#define CRDELAY 0030000
|
||||||
|
# define CR0 0000000
|
||||||
|
# define CR1 0010000
|
||||||
|
# define CR2 0020000
|
||||||
|
# define CR3 0030000
|
||||||
|
|
||||||
|
#if defined(__USG) && !defined(_XENIX)
|
||||||
|
#define XTABS 0000002 /* do tab expansion */
|
||||||
|
#else
|
||||||
|
#define XTABS 0006000 /* do tab expansion */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TBDELAY 0006000
|
||||||
|
# define TAB0 0000000
|
||||||
|
# define TAB1 0002000
|
||||||
|
# define TAB2 0004000
|
||||||
|
|
||||||
|
#define NLDELAY 0001400
|
||||||
|
# define NL0 0000000
|
||||||
|
# define NL1 0000400
|
||||||
|
# define NL2 0001000
|
||||||
|
# define NL3 0001400
|
||||||
|
|
||||||
|
#define ANYP 0000300
|
||||||
|
#define EVENP 0000200
|
||||||
|
#define ODDP 0000100
|
||||||
|
|
||||||
|
#define RAW 0000040 /* enable raw mode */
|
||||||
|
#define CRMOD 0000020 /* map lf to cr + lf */
|
||||||
|
#define ECHO 0000010 /* echo input */
|
||||||
|
#define LCASE 0000004
|
||||||
|
#define CBREAK 0000002 /* enable cbreak mode */
|
||||||
|
#if defined(__BSD4_2) || defined(_XENIX)
|
||||||
|
#define TANDEM 0000001
|
||||||
|
#else
|
||||||
|
#define HUPCL 0000001 /* unused ??? */
|
||||||
|
#endif
|
||||||
|
/*#define COOKED 0000000 */ /* neither CBREAK nor RAW */
|
||||||
|
|
||||||
|
#ifdef __BDS4_2
|
||||||
|
#define TIOCGETP (('t'<<8) | 8 | (6 << 16) | 0x40000000)
|
||||||
|
#define TIOCSETP (('t'<<8) | 9 | (6 << 16) | 0x80000000)
|
||||||
|
#define TIOCSETN (('t'<<8) | 10 | (6 << 16) | 0x80000000)
|
||||||
|
#define TIOCEXCL (('t'<<8) | 13 | 0x20000000)
|
||||||
|
#define TIOCNXCL (('t'<<8) | 14 | 0x20000000)
|
||||||
|
#define TIOCHPCL (('t'<<8) | 2 | 0x20000000)
|
||||||
|
#define TIOCGETC (('t'<<8) | 18 | (6 << 16) | 0x40000000)
|
||||||
|
#define TIOCSETC (('t'<<8) | 17 | (6 << 16) | 0x80000000)
|
||||||
|
#else
|
||||||
|
#define TIOCGETP (('t'<<8) | 8)
|
||||||
|
#define TIOCSETP (('t'<<8) | 9)
|
||||||
|
#define TIOCSETN (('t'<<8) | 10)
|
||||||
|
#define TIOCEXCL (('t'<<8) | 13)
|
||||||
|
#define TIOCNXCL (('t'<<8) | 14)
|
||||||
|
#define TIOCHPCL (('t'<<8) | 2)
|
||||||
|
#define TIOCGETC (('t'<<8) | 18)
|
||||||
|
#define TIOCSETC (('t'<<8) | 17)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define B0 0
|
||||||
|
#define B50 1
|
||||||
|
#define B75 2
|
||||||
|
#define B110 3
|
||||||
|
#define B134 4
|
||||||
|
#define B150 5
|
||||||
|
#define B200 6
|
||||||
|
#define B300 7
|
||||||
|
#define B600 8
|
||||||
|
#define B1200 9
|
||||||
|
#define B1800 10
|
||||||
|
#define B2400 11
|
||||||
|
#define B4800 12
|
||||||
|
#define B9600 13
|
||||||
|
#define EXTA 14
|
||||||
|
#define EXTB 15
|
||||||
|
|
||||||
|
#endif /* _SGTTY_H */
|
|
@ -1,12 +1,11 @@
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||||
*/
|
*/
|
||||||
|
struct timeb {
|
||||||
exit(code)
|
time_t time;
|
||||||
{
|
unsigned short millitm;
|
||||||
_cleanup() ;
|
short timezone;
|
||||||
_exit(code) ;
|
short dstflag;
|
||||||
}
|
};
|
18
plat/em22/include/sys/types.h
Normal file
18
plat/em22/include/sys/types.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef _SYS_TYPES_H
|
||||||
|
#define _SYS_TYPES_H
|
||||||
|
|
||||||
|
#include <stddef.h> /* for off_t, ptrdiff_t, size_t */
|
||||||
|
|
||||||
|
typedef int blkcnt_t; /* XXX should have 64 bits */
|
||||||
|
typedef int blksize_t;
|
||||||
|
typedef int dev_t;
|
||||||
|
typedef unsigned int gid_t;
|
||||||
|
typedef unsigned int ino_t;
|
||||||
|
typedef unsigned short mode_t;
|
||||||
|
typedef unsigned short nlink_t;
|
||||||
|
typedef int pid_t;
|
||||||
|
typedef ptrdiff_t ssize_t;
|
||||||
|
typedef unsigned int uid_t;
|
||||||
|
typedef unsigned long time_t;
|
||||||
|
|
||||||
|
#endif
|
|
@ -59,11 +59,25 @@ typedef int sig_atomic_t;
|
||||||
#define SIG_DFL ((sighandler_t) 0) /* Default action. */
|
#define SIG_DFL ((sighandler_t) 0) /* Default action. */
|
||||||
#define SIG_IGN ((sighandler_t) 1) /* Ignore signal. */
|
#define SIG_IGN ((sighandler_t) 1) /* Ignore signal. */
|
||||||
|
|
||||||
#define SIGABRT 6 /* Abort (ANSI) */
|
#define _NSIG 16 /* number of signals used */
|
||||||
#define SIGILL 11 /* Illegal instruction */
|
|
||||||
|
#define SIGHUP 1 /* hangup */
|
||||||
|
#define SIGINT 2 /* interrupt (DEL) */
|
||||||
|
#define SIGQUIT 3 /* quit (ASCII FS) */
|
||||||
|
#define SIGILL 4 /* illegal instruction */
|
||||||
|
#define SIGTRAP 5 /* trace trap (not reset when caught) */
|
||||||
|
#define SIGABRT 6 /* IOT instruction */
|
||||||
|
#define SIGIOT 6 /* SIGABRT for people who speak PDP-11 */
|
||||||
|
#define SIGEMT 7 /* EMT instruction */
|
||||||
|
#define SIGFPE 8 /* floating point exception */
|
||||||
|
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
|
||||||
|
#define SIGBUS 10 /* bus error */
|
||||||
|
#define SIGSEGV 11 /* segmentation violation */
|
||||||
|
#define SIGSYS 12 /* bad argument to system call */
|
||||||
|
#define SIGPIPE 13 /* write on a pipe with no one to read it */
|
||||||
|
#define SIGALRM 14 /* alarm clock */
|
||||||
|
#define SIGTERM 15 /* software termination signal from kill */
|
||||||
|
|
||||||
#define _NSIG 32 /* Biggest signal number + 1
|
|
||||||
(not including real-time signals). */
|
|
||||||
typedef void (*sighandler_t)(int);
|
typedef void (*sighandler_t)(int);
|
||||||
extern sighandler_t signal(int signum, sighandler_t handler);
|
extern sighandler_t signal(int signum, sighandler_t handler);
|
||||||
extern int raise(int signum);
|
extern int raise(int signum);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue