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
|
||||
|
||||
extern const char **_penvp;
|
||||
extern const char **environ;
|
||||
static const char *exec_tab[] = {
|
||||
"sh", /* argv[0] */
|
||||
"-c", /* argument to the shell */
|
||||
|
@ -39,7 +39,7 @@ system(const char *str)
|
|||
_close(i);
|
||||
if (!str) str = "cd ."; /* just testing for a shell */
|
||||
exec_tab[2] = str; /* fill in command */
|
||||
_execve("/bin/sh", exec_tab, _penvp);
|
||||
_execve("/bin/sh", exec_tab, environ);
|
||||
/* get here if execve fails ... */
|
||||
_exit(FAIL); /* see manual page */
|
||||
}
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
/* $Id$ */
|
||||
_cleanup(){}
|
|
@ -93,6 +93,6 @@ killbss()
|
|||
extern int catch();
|
||||
|
||||
int (*handler)() = catch;
|
||||
char **argv = 0, **environ = 0;
|
||||
char **argv = 0;
|
||||
int argc = 0;
|
||||
char *MainLB = 0;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
mes 2,EM_WSIZE,EM_PSIZE
|
||||
exp $_execl
|
||||
pro $_execl,0
|
||||
lae _penvp
|
||||
lae environ
|
||||
loi EM_PSIZE
|
||||
lal EM_PSIZE
|
||||
lal 0
|
|
@ -2,7 +2,7 @@
|
|||
mes 2,EM_WSIZE,EM_PSIZE
|
||||
exp $execl
|
||||
pro $execl,0
|
||||
lae _penvp
|
||||
lae environ
|
||||
loi EM_PSIZE
|
||||
lal EM_PSIZE
|
||||
lal 0
|
|
@ -2,7 +2,7 @@
|
|||
mes 2,EM_WSIZE,EM_PSIZE
|
||||
exp $execv
|
||||
pro $execv,0
|
||||
lae _penvp
|
||||
lae environ
|
||||
loi EM_PSIZE
|
||||
lal 0
|
||||
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 = {
|
||||
"+libs",
|
||||
"./include+pkg",
|
||||
["$(PLATIND)/em22/libsys.a"] = "./libsys+lib",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,10 @@ local function addheader(h)
|
|||
end
|
||||
|
||||
addheader("ack/config.h")
|
||||
addheader("sys/types.h")
|
||||
addheader("sys/timeb.h")
|
||||
addheader("unistd.h")
|
||||
addheader("sgtty.h")
|
||||
|
||||
acklibrary {
|
||||
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$ */
|
||||
|
||||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
|
||||
exit(code)
|
||||
{
|
||||
_cleanup() ;
|
||||
_exit(code) ;
|
||||
}
|
||||
struct timeb {
|
||||
time_t time;
|
||||
unsigned short millitm;
|
||||
short timezone;
|
||||
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_IGN ((sighandler_t) 1) /* Ignore signal. */
|
||||
|
||||
#define SIGABRT 6 /* Abort (ANSI) */
|
||||
#define SIGILL 11 /* Illegal instruction */
|
||||
#define _NSIG 16 /* number of signals used */
|
||||
|
||||
#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);
|
||||
extern sighandler_t signal(int signum, sighandler_t handler);
|
||||
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