mirror of
https://github.com/Interlisp/maiko.git
synced 2026-03-16 06:47:22 +00:00
Compare commits
6 Commits
maiko-2112
...
maiko-2112
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e3af3b03b9 | ||
|
|
880747f2dc | ||
|
|
c7fd28a438 | ||
|
|
e1efc860c4 | ||
|
|
26fe840edf | ||
|
|
212a0fa9c6 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -6,6 +6,8 @@
|
||||
.DS_Store
|
||||
# build directories
|
||||
build/**
|
||||
*.m68k-x/**
|
||||
*.m68k/**
|
||||
*.386-x/**
|
||||
*.386/**
|
||||
*.ppc-x/**
|
||||
|
||||
@@ -390,7 +390,7 @@ SET(MAIKO_HDRS
|
||||
)
|
||||
|
||||
ADD_CUSTOM_TARGET(gen-vdate
|
||||
COMMAND mkvdate > vdate.c
|
||||
COMMAND ../bin/mkvdate > vdate.c
|
||||
BYPRODUCTS vdate.c
|
||||
)
|
||||
|
||||
@@ -422,10 +422,6 @@ IF(MAIKO_DISPLAY_X11)
|
||||
TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
ADD_EXECUTABLE(mkvdate src/mkvdate.c)
|
||||
TARGET_COMPILE_DEFINITIONS(mkvdate PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(mkvdate PUBLIC inc)
|
||||
|
||||
ADD_EXECUTABLE(setsout src/setsout.c src/byteswap.c)
|
||||
TARGET_COMPILE_DEFINITIONS(setsout PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(setsout PUBLIC inc)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
os=${LDEARCH:-`./config.guess`}
|
||||
# o/s switch block
|
||||
case "$os" in
|
||||
m68k-*) echo m68k ;;
|
||||
sparc-*) echo sparc ;;
|
||||
alpha-*) echo alpha ;;
|
||||
i*86-*-*) echo 386 ;;
|
||||
|
||||
@@ -160,9 +160,6 @@ $(OSARCHDIR)$(LDENAME): $(LIBFILES) $(EXTFILES) $(OBJECTDIR)vdate.o
|
||||
$(OSARCHDIR)ldeether: $(OBJECTDIR)ldeether.o $(DLPIFILES)
|
||||
$(CC) $(OBJECTDIR)ldeether.o $(DLPIFILES) $(LDEETHERLDFLAGS) -o $(OSARCHDIR)ldeether
|
||||
|
||||
$(OSARCHDIR)mkvdate: $(OBJECTDIR)mkvdate.o $(REQUIRED-INCS)
|
||||
$(CC) $(OBJECTDIR)mkvdate.o $(LDFLAGS) -o $(OSARCHDIR)mkvdate
|
||||
|
||||
$(OSARCHDIR)tstsout: $(OBJECTDIR)tstsout.o $(BYTESWAPFILES) $(REQUIRED-INCS)
|
||||
$(CC) $(OBJECTDIR)tstsout.o $(BYTESWAPFILES) $(LDFLAGS) -lc -lm -o $(OSARCHDIR)tstsout
|
||||
|
||||
@@ -171,9 +168,9 @@ $(OSARCHDIR)setsout: $(OBJECTDIR)setsout.o $(REQUIRED-INCS)
|
||||
|
||||
#### Component files ######################################################
|
||||
|
||||
$(OBJECTDIR)vdate.o: $(LIBFILES) $(EXTFILES) $(OSARCHDIR)mkvdate
|
||||
$(OBJECTDIR)vdate.o: $(LIBFILES) $(EXTFILES) mkvdate
|
||||
$(RM) $(OBJECTDIR)vdate.c
|
||||
$(OSARCHDIR)mkvdate > $(OBJECTDIR)vdate.c
|
||||
$(BINDIR)mkvdate > $(OBJECTDIR)vdate.c
|
||||
$(CC) $(RFLAGS) $(OBJECTDIR)vdate.c -o $(OBJECTDIR)vdate.o
|
||||
|
||||
$(OBJECTDIR)tstsout.o: $(SRCDIR)tstsout.c $(REQUIRED-INCS) \
|
||||
@@ -197,9 +194,6 @@ $(OBJECTDIR)ldeboot.o: $(SRCDIR)ldeboot.c $(REQUIRED-INCS) \
|
||||
$(OBJECTDIR)ldeether.o: $(SRCDIR)ldeether.c $(REQUIRED-INCS)
|
||||
$(CC) $(RFLAGS) $(SRCDIR)ldeether.c -o $(OBJECTDIR)ldeether.o
|
||||
|
||||
$(OBJECTDIR)mkvdate.o: $(SRCDIR)mkvdate.c $(REQUIRED-INCS)
|
||||
$(CC) $(RFLAGS) $(SRCDIR)mkvdate.c -o $(OBJECTDIR)mkvdate.o
|
||||
|
||||
$(OBJECTDIR)main.o: $(SRCDIR)main.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)dbprint.h \
|
||||
$(INCDIR)emlglob.h $(INCDIR)address.h $(INCDIR)adr68k.h $(INCDIR)stack.h \
|
||||
|
||||
5
bin/mkvdate
Executable file
5
bin/mkvdate
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
cat <<EOF
|
||||
#include <time.h>
|
||||
time_t MDate = $(date +%s);
|
||||
EOF
|
||||
@@ -1,6 +1,7 @@
|
||||
#!/bin/sh
|
||||
os=`./config.guess`
|
||||
os=${LDEARCH:-`./config.guess`}
|
||||
case "$os" in
|
||||
m68k-*-amigaos) echo amigaos ;;
|
||||
sparc-sun-sunos*) echo sunos4 ;;
|
||||
sparc-sun-solaris1*) echo sunos4 ;;
|
||||
*-*-solaris2*) echo sunos5 ;;
|
||||
|
||||
@@ -3,6 +3,4 @@
|
||||
void stab(void);
|
||||
void warn(const char *s);
|
||||
int error(const char *s);
|
||||
int stackcheck(void);
|
||||
void stackoverflow(void);
|
||||
#endif
|
||||
|
||||
@@ -59,6 +59,13 @@
|
||||
# define MAIKO_OS_DETECTED 1
|
||||
#endif
|
||||
|
||||
#ifdef amigaos3
|
||||
# define MAIKO_OS_AMIGAOS3 1
|
||||
# define MAIKO_OS_NAME "AmigaOS 3"
|
||||
# define MAIKO_OS_UNIX_LIKE 1
|
||||
# define MAIKO_OS_DETECTED 1
|
||||
#endif
|
||||
|
||||
/* __SVR4: Defined by clang, gcc, and Sun Studio.
|
||||
* __SVR4__ was only defined by Sun Studio. */
|
||||
#if defined(__sun) && defined(__SVR4)
|
||||
@@ -137,6 +144,13 @@
|
||||
# define MAIKO_ARCH_DETECTED 1
|
||||
#endif
|
||||
|
||||
#ifdef __mc68000
|
||||
# define MAIKO_ARCH_M68000 1
|
||||
# define MAIKO_ARCH_NAME "Motorola68K"
|
||||
# define MAIKO_ARCH_WORD_BITS 32
|
||||
# define MAIKO_ARCH_DETECTED 1
|
||||
#endif
|
||||
|
||||
/* Modern GNU C, Clang, Sun Studio provide __BYTE_ORDER__
|
||||
* Older GNU C (ca. 4.0.1) provides __BIG_ENDIAN__/__LITTLE_ENDIAN__
|
||||
*/
|
||||
|
||||
@@ -187,8 +187,8 @@ error Must specify RELEASE to build Medley.
|
||||
|
||||
/* Set up defaults */
|
||||
#define UNALIGNED_FETCH_OK
|
||||
#define UNSIGNED unsigned long
|
||||
#define INT long
|
||||
typedef unsigned long UNSIGNED;
|
||||
typedef long INT;
|
||||
|
||||
|
||||
|
||||
@@ -237,9 +237,9 @@ typedef unsigned char u_char;
|
||||
typedef unsigned long u_int;
|
||||
typedef unsigned short u_short;
|
||||
#undef UNALIGNED_FETCH_OK
|
||||
#define USHORT unsigned
|
||||
typedef unsigned USHORT;
|
||||
#else
|
||||
#define USHORT unsigned short
|
||||
typedef unsigned short USHORT;
|
||||
#endif /* DOS */
|
||||
|
||||
/****************************************************************/
|
||||
|
||||
36
src/common.c
36
src/common.c
@@ -141,39 +141,3 @@ uraidloop:
|
||||
|
||||
void warn(const char *s)
|
||||
{ printf("\nWARN: %s \n", s); }
|
||||
|
||||
/*****************************************************************
|
||||
stackcheck
|
||||
|
||||
common sub-routine.
|
||||
|
||||
Not Implemented.
|
||||
|
||||
1.check Stack overflow.
|
||||
(check CurrentStackPTR)
|
||||
2.if overflow, return T (not 0).
|
||||
Otherwise, return F (0).
|
||||
******************************************************************/
|
||||
int stackcheck() {
|
||||
#ifdef TRACE2
|
||||
printf("TRACE:stackcheck()\n");
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*****************************************************************
|
||||
stackoverflow
|
||||
|
||||
common sub-routine.
|
||||
|
||||
Not Implemented.
|
||||
|
||||
1.error handling of stack overflow.
|
||||
******************************************************************/
|
||||
|
||||
void stackoverflow() {
|
||||
#ifdef TRACE2
|
||||
printf("TRACE:stackoverflow()\n");
|
||||
#endif
|
||||
printf("stackoverflow \n");
|
||||
}
|
||||
|
||||
@@ -89,7 +89,6 @@ enum UJTYPE {
|
||||
/* These are indexed by WRITE socket# */
|
||||
struct unixjob {
|
||||
char *pathname; /* used by Lisp direct socket access subr */
|
||||
int readsock; /* Socket to READ from for this job. */
|
||||
int PID; /* process ID associated with this slot */
|
||||
int status; /* status returned by subprocess (not shell) */
|
||||
enum UJTYPE type;
|
||||
@@ -284,7 +283,6 @@ int FindUnixPipes(void) {
|
||||
cleareduj.status = -1;
|
||||
cleareduj.pathname = NULL;
|
||||
cleareduj.PID = 0;
|
||||
cleareduj.readsock = 0;
|
||||
cleareduj.type = UJUNUSED;
|
||||
for (int i = 0; i < NPROCS; i++) UJ[i] = cleareduj;
|
||||
|
||||
@@ -435,7 +433,6 @@ LispPTR Unix_handlecomm(LispPTR *args) {
|
||||
UJ[PipeFD].type = UJPROCESS;
|
||||
UJ[PipeFD].status = -1;
|
||||
UJ[PipeFD].PID = (d[1] << 8) | d[2] | (d[4] << 16) | (d[5] << 24);
|
||||
UJ[PipeFD].readsock = 0;
|
||||
close(sockFD);
|
||||
unlink(PipeName);
|
||||
return (GetSmallp(PipeFD));
|
||||
@@ -482,17 +479,11 @@ LispPTR Unix_handlecomm(LispPTR *args) {
|
||||
N_GETNUMBER(args[1], slot, bad); /* Get job # */
|
||||
|
||||
if (!valid_slot(slot)) return (NIL); /* No fd open; punt the read */
|
||||
|
||||
if (UJ[slot].readsock)
|
||||
sock = UJ[slot].readsock;
|
||||
else
|
||||
sock = slot;
|
||||
|
||||
switch (UJ[slot].type) {
|
||||
case UJPROCESS:
|
||||
case UJSHELL:
|
||||
case UJSOSTREAM:
|
||||
TIMEOUT(dest = read(sock, buf, 1));
|
||||
TIMEOUT(dest = read(slot, buf, 1));
|
||||
if (dest > 0) return (GetSmallp(buf[0]));
|
||||
/* Something's amiss; check our process status */
|
||||
wait_for_comm_processes();
|
||||
@@ -562,7 +553,6 @@ LispPTR Unix_handlecomm(LispPTR *args) {
|
||||
case UJPROCESS:
|
||||
DBPRINT(("Kill 3 closing process desc %d.\n", slot));
|
||||
close(slot);
|
||||
if (UJ[slot].readsock) close(UJ[slot].readsock);
|
||||
break;
|
||||
|
||||
case UJSOSTREAM:
|
||||
@@ -582,7 +572,7 @@ LispPTR Unix_handlecomm(LispPTR *args) {
|
||||
break;
|
||||
}
|
||||
UJ[slot].type = UJUNUSED;
|
||||
UJ[slot].readsock = UJ[slot].PID = 0;
|
||||
UJ[slot].PID = 0;
|
||||
UJ[slot].pathname = NULL;
|
||||
|
||||
/* If status available, return it, otherwise T */
|
||||
@@ -674,8 +664,6 @@ LispPTR Unix_handlecomm(LispPTR *args) {
|
||||
case UJPROCESS:
|
||||
DBPRINT(("Kill 5 closing process desc %d.\n", dest));
|
||||
close(dest);
|
||||
if (UJ[dest].readsock) close(UJ[dest].readsock);
|
||||
UJ[dest].readsock = 0;
|
||||
break;
|
||||
|
||||
case UJSOCKET:
|
||||
@@ -696,7 +684,7 @@ LispPTR Unix_handlecomm(LispPTR *args) {
|
||||
}
|
||||
|
||||
UJ[dest].type = UJUNUSED;
|
||||
UJ[dest].readsock = UJ[dest].PID = 0;
|
||||
UJ[dest].PID = 0;
|
||||
return (ATOM_T);
|
||||
/* break; */
|
||||
|
||||
@@ -729,18 +717,13 @@ LispPTR Unix_handlecomm(LispPTR *args) {
|
||||
N_GETNUMBER(args[1], slot, bad); /* Get job # */
|
||||
if (!valid_slot(slot)) return (NIL); /* No fd open; punt the read */
|
||||
|
||||
if (UJ[slot].readsock)
|
||||
sock = UJ[slot].readsock;
|
||||
else
|
||||
sock = slot;
|
||||
|
||||
bufp = (Addr68k_from_LADDR(args[2])); /* User buffer */
|
||||
DBPRINT(("Read buffer slot %d, type is %d\n", slot, UJ[slot].type));
|
||||
|
||||
switch (UJ[slot].type) {
|
||||
case UJSHELL:
|
||||
case UJPROCESS:
|
||||
case UJSOSTREAM: dest = read(sock, bufp, 512);
|
||||
case UJSOSTREAM: dest = read(slot, bufp, 512);
|
||||
#ifdef BYTESWAP
|
||||
word_swap_page(bufp, 128);
|
||||
#endif /* BYTESWAP */
|
||||
|
||||
Reference in New Issue
Block a user