1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-03-16 06:47:22 +00:00

Compare commits

..

6 Commits

Author SHA1 Message Date
Nick Briggs
7fce08f92c More Lisp variables to avoid in INIT mode - turn off X11 input handling (#482) 2023-08-09 14:04:51 -07:00
Nick Briggs
2c55f7923c Add makefile slice for OpenBSD init on x86_64. (#478)
* Add makefile slice for OpenBSD init on x86_64.

* Correct flags for init.
2023-08-03 11:55:22 -07:00
Nick Briggs
b441a28c34 Teach CMake to build ldeinit, update clang-tidy names (#474)
Have CMake build ldeinit when configured for X11 display, and
update the ever-growing list of names under which clang-tidy may
be found (now up to version 16)
2023-08-03 10:20:15 -07:00
Nick Briggs
09e73d4153 Update machinetype and osversion scripts to invoke config.guess from same directory (#479)
If machinetype or osversion are executed from other than the current working directory
they will fail to execute the config.guess script because it was invoked with "./config.guess".
This update attempts to determine the directory where machinetype or osversion
were found and uses the same path to invoke config.guess.
2023-08-03 10:18:02 -07:00
Nick Briggs
8e43a393bd Avoid setting Lisp variables whose locations are unknown when in INIT mode (#481)
* Avoid setting Lisp variables whose locations are unknown when in INIT mode.

* Exit with a success (0) status for normal lisp_finish.
2023-08-01 11:16:42 -07:00
Nick Briggs
4a9f5500c4 struct buf is missing definition for byte-swapped bigvm case (#477)
While there was a definition for the pre-bigvm case, with 24-bit
pointers, for byteswapped (little-endian) systems, there was no
structure definition for the bigvm case, with 28-bit pointers.
2023-07-24 20:43:25 -07:00
11 changed files with 64 additions and 29 deletions

View File

@@ -18,7 +18,7 @@ ENDIF()
find_program(
CLANG_TIDY_EXE
NAMES "clang-tidy" "clang-tidy13" "clang-tidy12" "clang-tidy11" "clang-tidy10"
NAMES "clang-tidy" "clang-tidy16" "clang-tidy15" "clang-tidy14" "clang-tidy13" "clang-tidy12" "clang-tidy11" "clang-tidy10"
DOC "Path to clang-tidy executable"
)
@@ -41,6 +41,10 @@ SET(MAIKO_DEFINITIONS
"-DRELEASE=351"
)
SET(MAIKO_INIT_DEFINITIONS
"-DRELEASE=351" "-DINIT" "-DNOVERSION"
)
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
OPTION(MAIKO_DISPLAY_SDL "Use SDL for display." OFF)
@@ -454,6 +458,18 @@ IF(MAIKO_DISPLAY_X11)
TARGET_COMPILE_DEFINITIONS(ldex PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldex PUBLIC inc)
TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
ADD_EXECUTABLE(ldeinit
src/main.c
vdate.c
${MAIKO_SRCS}
${MAIKO_HDRS}
${MAIKO_DISPLAY_X11_SRCS}
${MAIKO_DISPLAY_X11_HDRS}
)
TARGET_COMPILE_DEFINITIONS(ldeinit PUBLIC ${MAIKO_INIT_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldeinit PUBLIC inc)
TARGET_LINK_LIBRARIES(ldeinit ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
ENDIF()
IF(MAIKO_DISPLAY_SDL)

View File

@@ -9,7 +9,8 @@
# #
#########################################################################
os=${LDEARCH:-`./config.guess`}
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
os=${LDEARCH:-`$SCRIPTPATH/config.guess`}
# o/s switch block
case "$os" in
m68k-*) echo m68k ;;

View File

@@ -16,8 +16,8 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -g -O2
DEBUGFLAGS = -DARRAYCHECK -DDTDDEBUG # -DDEBUG -DOPTRACE
OPTFLAGS = -O2
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O1 -g
DEBUGFLAGS = -DARRAYCHECK -DDTDDEBUG # -DDEBUG -DOPTRACE
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -0,0 +1,27 @@
# Options for OpenBSD, Intel x86_64 and X-Window
CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -I/usr/X11R6/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -1,5 +1,6 @@
#!/bin/sh
os=${LDEARCH:-`./config.guess`}
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
os=${LDEARCH:-`$SCRIPTPATH/config.guess`}
case "$os" in
m68k-*-amigaos) echo amigaos ;;
sparc-sun-sunos*) echo sunos4 ;;

View File

@@ -28,19 +28,11 @@
*/
/**********************************************************************/
#include <execinfo.h>
#include <stddef.h>
#include <stdio.h>
#include "lispemul.h"
#include "lspglob.h"
static inline void dobacktrace()
{
void* callstack[128];
int i, frames = backtrace(callstack, 128);
backtrace_symbols_fd(callstack, frames, 2);
}
static inline LispPTR LAddrFromNative(void *NAddr)
{
if ((uintptr_t)NAddr & 1) {
@@ -56,9 +48,8 @@ static inline DLword *NativeAligned2FromLAddr(LispPTR LAddr)
static inline LispPTR *NativeAligned4FromLAddr(LispPTR LAddr)
{
if (LAddr & 1 || LAddr > 0x0FFFFFFF) {
printf("Misaligned/bad pointer in NativeAligned4FromLAddr 0x%x\n", LAddr);
dobacktrace();
if (LAddr & 1) {
printf("Misaligned pointer in NativeAligned4FromLAddr 0x%x\n", LAddr);
}
return (void *)(Lisp_world + LAddr);
}

View File

@@ -156,10 +156,8 @@ LispPTR findptrsbuffer(LispPTR ptr) {
while (LAddrFromNative(bptr) != NIL) {
if (ptr == bptr->vmempage)
return (LAddrFromNative(bptr));
else {
if (bptr->sysnext & 0xF0000000) printf("findptrsbuffer: would have failed %p 0x%X\n", bptr, bptr->sysnext);
else
bptr = (struct buf *)NativeAligned4FromLAddr(bptr->sysnext);
}
}
return (NIL);
}
@@ -207,6 +205,8 @@ LispPTR checkarrayblock(LispPTR base, LispPTR free, LispPTR onfreelist) {
{
bbase = (struct arrayblock *)NativeAligned4FromLAddr(base);
btrailer = (struct arrayblock *)NativeAligned4FromLAddr(Trailer(base, bbase));
bfwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->fwd);
bbwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->bkwd);
if (bbase->password != ARRAYBLOCKPASSWORD) {
printarrayblock(base);
error("ARRAYBLOCK password wrong\n");
@@ -228,10 +228,7 @@ LispPTR checkarrayblock(LispPTR base, LispPTR free, LispPTR onfreelist) {
} else if (!onfreelist || (bbase->arlen < MINARRAYBLOCKSIZE))
/* Remaining tests only for free list. */
return (NIL);
bfwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->fwd);
bbwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->bkwd);
if ((bbwd->fwd != base) || (bfwd->bkwd != base)) {
else if ((bbwd->fwd != base) || (bfwd->bkwd != base)) {
error("ARRAYBLOCK links fouled\n");
} else {
fbl = FreeBlockChainN(bbase->arlen);

View File

@@ -72,7 +72,7 @@ retry:
if (917505 == *(LispPTR *)ptr) error("N_OP_createcell E0001 error");
/* replace dtd_free with newcell's top DLword (it may keep next chain)*/
dtd68k->dtd_free = (*((LispPTR *)ptr)) & POINTERMASK;
if (dtd68k->dtd_free & 0x8000001) error("bad entry on free chain(1).");
if (dtd68k->dtd_free & 0x8000001) error("bad entry on free chain.");
dtd68k->dtd_oldcnt++;
@@ -84,7 +84,7 @@ retry:
return (tos);
} else {
dtd68k->dtd_free = initmdspage(alloc_mdspage(dtd68k->dtd_typeentry), dtd68k->dtd_size, NIL);
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain(2).");
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain.");
goto retry;
}
@@ -119,7 +119,7 @@ retry:
/* replace dtd_free with newcell's top DLword (it may keep next chain)*/
dtd68k->dtd_free = (*((LispPTR *)ptr)) & POINTERMASK;
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain(3).");
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain.");
#ifdef DTDDEBUG
if ((dtd68k->dtd_free != 0) && (type != GetTypeNumber(dtd68k->dtd_free)))
@@ -144,7 +144,7 @@ retry:
} else {
dtd68k->dtd_free = initmdspage(alloc_mdspage(dtd68k->dtd_typeentry), dtd68k->dtd_size, NIL);
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain(4).");
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain.");
#ifdef DTDDEBUG
check_dtd_chain(type);

View File

@@ -531,5 +531,5 @@ void lisp_finish(void) {
#ifdef DOS
exit_host_filesystem();
#endif /* DOS */
exit(1);
exit(0);
}

View File

@@ -188,6 +188,7 @@ void process_Xevents(DspInterface dsp)
XNextEvent(dsp->display_id, &report);
if (report.xany.window == dsp->DisplayWindow) /* Try the most important window first. */
switch (report.type) {
#ifndef INIT
case MotionNotify:
*CLastUserActionCell68k = MiscStats->secondstmp;
*EmCursorX68K = (*((DLword *)EmMouseX68K)) =
@@ -235,6 +236,7 @@ void process_Xevents(DspInterface dsp)
break;
case EnterNotify: Mouse_Included = TRUE; break;
case LeaveNotify: Mouse_Included = FALSE; break;
#endif
case Expose:
(dsp->bitblt_to_screen)(dsp, 0, report.xexpose.x + dsp->Visible.x,
report.xexpose.y + dsp->Visible.y, report.xexpose.width,