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

Compare commits

..

4 Commits

Author SHA1 Message Date
Nick Briggs
fd90bbf9b9 Ignore mouse motion events when the window does not have keyboard focus 2024-08-15 20:36:26 -07:00
Nick Briggs
cec93e6ae5 Set up makeright etc. to allow for easier compilation of alternate versions
The makeright script and the makefile-* slices it depends are modified
to allow easily specifying the RELEASE version number of the Maiko emulator
to be built.  The default version remains 351, but can be changed with e.g.

RELEASE=201 ./makeright x

The object directories and executables are NOT named with the version.
2024-08-05 17:13:01 -07:00
Nick Briggs
72e26ca033 Fix compilation for maiko version 201
Version 201 did not have NEWCDRCODING, so the implementation of
N_OP_rplcons requires definitions from gcdata.h and address.h
2024-08-05 16:23:54 -07:00
Nick Briggs
f6f833c612 Fix compilation for maiko version 201
Version 201 does not have BIGVM, so SWA_FNHEAD requires swapx
which is defined in byteswapdefs.h
2024-08-05 16:20:09 -07:00
101 changed files with 2173 additions and 3208 deletions

View File

@@ -8,7 +8,7 @@
#
# ******************************************************************************
FROM ubuntu:22.04
FROM ubuntu:latest
SHELL ["/bin/bash", "-c"]
USER root:root
# Install build tools

View File

@@ -18,17 +18,8 @@ COPY . ${INSTALL_LOCATION}
# Build maiko
RUN cd ${INSTALL_LOCATION}/bin \
&& ./makeright x cleanup \
&& ./makeright x \
&& ./makeright x
RUN cd ${INSTALL_LOCATION}/bin \
&& if [ "$(./machinetype)" = "x86_64" ]; then \
./makeright init; \
fi
# Build specially for WSL1 by "fooling" a linux build
RUN cd ${INSTALL_LOCATION}/bin \
&& arch="$(./machinetype)" \
&& if [ "$arch" = "x86_64" ] || [ "$arch" = "aarch64" ]; then \
export LDEARCH="${arch}-microsoft-wsl1" \
&& ./makeright x cleanup \
&& ./makeright x \
&& ./makeright init \
; \
fi

View File

@@ -152,7 +152,7 @@ jobs:
|| needs.inputs.outputs.force == 'true'
)
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
# Checkout the actions for this repo owner
@@ -224,13 +224,7 @@ jobs:
RELEASE_TAG: ${{ steps.tag.outputs.release_tag }}
run: |
mkdir -p /tmp/release_tars
for OSARCH in \
"linux.x86_64:linux_amd64" \
"linux.aarch64:linux_arm64" \
"linux.armv7l:linux_arm_v7" \
"wsl1.x86_64:linux_amd64" \
"wsl1.aarch64:linux_arm64" \
; \
for OSARCH in "linux.x86_64:linux_amd64" "linux.aarch64:linux_arm64" "linux.armv7l:linux_arm_v7" ; \
do \
pushd /tmp/docker_images/${OSARCH##*:}/usr/local/interlisp >/dev/null ; \
/usr/bin/tar -c -z \
@@ -252,8 +246,6 @@ jobs:
artifacts:
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.x86_64.tgz,
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.aarch64.tgz,
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-wsl1.x86_64.tgz,
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-wsl1.aarch64.tgz,
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.armv7l.tgz
tag: ${{ steps.tag.outputs.release_tag }}
draft: ${{ needs.inputs.outputs.draft }}
@@ -318,8 +310,8 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release download release-2.30.11 --repo libsdl-org/SDL --pattern SDL2-2.30.11.dmg
hdiutil attach SDL2-2.30.11.dmg
gh release download release-2.26.5 --repo libsdl-org/SDL --pattern SDL2-2.26.5.dmg
hdiutil attach SDL2-2.26.5.dmg
sudo ditto /Volumes/SDL2/SDL2.framework /Library/Frameworks/SDL2.framework
hdiutil detach /Volumes/SDL2/
@@ -345,7 +337,7 @@ jobs:
# -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12
cmake .. \
-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \
-DMAIKO_DISPLAY_SDL=2 \
-DMAIKO_DISPLAY_SDL=ON \
-DMAIKO_DISPLAY_X11=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
@@ -511,7 +503,6 @@ jobs:
- name: Install SDL2
run: |
export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get update
sudo -E apt-get install -y libsdl2-dev libsdl2-2.0-0
# Install Emscripten SDK

View File

@@ -37,16 +37,12 @@ IF(NEED_LIB_M)
SET(MAIKO_LIBRARIES m)
ENDIF()
SET (MAIKO_RELEASE 351 CACHE STRING "Release version to build. Release: 115, 200, 201, 210, 300, 350, 351")
SET_PROPERTY(CACHE MAIKO_RELEASE PROPERTY STRINGS 115 200 201 210 300 350 351)
MESSAGE("-- Configured for release ${MAIKO_RELEASE}")
SET(MAIKO_DEFINITIONS
"-DRELEASE=${MAIKO_RELEASE}"
"-DRELEASE=351"
)
SET(MAIKO_INIT_DEFINITIONS
"-DRELEASE=${MAIKO_RELEASE}" "-DINIT" "-DNOVERSION"
"-DRELEASE=351" "-DINIT" "-DNOVERSION"
)
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
@@ -80,17 +76,18 @@ IF(MAIKO_DISPLAY_X11)
inc/xmkicondefs.h
inc/xrdoptdefs.h
inc/xscrolldefs.h
inc/xscroll.h
inc/xwinmandefs.h
)
MESSAGE("-- Configured for X11 display")
ENDIF()
IF(MAIKO_DISPLAY_SDL STREQUAL "2")
FIND_PACKAGE(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)
FIND_PACKAGE(SDL2 REQUIRED)
SET(MAIKO_DISPLAY_SDL_DEFINITIONS
"-DSDL=2"
)
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS SDL2::Headers)
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS "${SDL2_INCLUDE_DIRS}")
SET(MAIKO_DISPLAY_SDL_LIBRARIES SDL2::SDL2)
SET(MAIKO_DISPLAY_SDL_SRCS
src/sdl.c
@@ -100,11 +97,11 @@ IF(MAIKO_DISPLAY_SDL STREQUAL "2")
)
MESSAGE("-- Configured for SDL2 display")
ELSEIF(MAIKO_DISPLAY_SDL STREQUAL "3")
FIND_PACKAGE(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
FIND_PACKAGE(SDL3 REQUIRED)
SET(MAIKO_DISPLAY_SDL_DEFINITIONS
"-DSDL=3"
)
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS SDL3::Headers)
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS "${SDL3_INCLUDE_DIRS}")
SET(MAIKO_DISPLAY_SDL_LIBRARIES SDL3::SDL3)
SET(MAIKO_DISPLAY_SDL_SRCS
src/sdl.c
@@ -141,9 +138,6 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
LIST(APPEND MAIKO_DEFINITIONS
"-DOS5"
)
LIST(APPEND MAIKO_INIT_DEFINITIONS
"-DOS5"
)
ENDIF()
IF(APPLE)
@@ -294,7 +288,7 @@ SET(MAIKO_HDRS
inc/bindefs.h
inc/bindsdefs.h
inc/bitbltdefs.h
inc/bbtmacro.h
inc/bitblt.h
inc/bltdefs.h
inc/byteswapdefs.h
inc/car-cdrdefs.h
@@ -319,6 +313,7 @@ SET(MAIKO_HDRS
inc/emlglob.h
inc/eqfdefs.h
inc/etherdefs.h
inc/ether.h
inc/fast_dsp.h
inc/findkeydefs.h
inc/foreigndefs.h
@@ -364,6 +359,7 @@ SET(MAIKO_HDRS
inc/lispemul.h
inc/lispmap.h
inc/lispver1.h
inc/lispver2.h
inc/llcolordefs.h
inc/lldsp.h
inc/llstkdefs.h
@@ -396,14 +392,14 @@ SET(MAIKO_HDRS
inc/opcodes.h
inc/os.h
inc/osmsgdefs.h
inc/osmsgprint.h
inc/osmsg.h
inc/perrnodefs.h
inc/picture.h
inc/pilotbbt.h
inc/print.h
inc/rawrs232c.h
inc/retmacro.h
inc/returndefs.h
inc/return.h
inc/rpcdefs.h
inc/rplconsdefs.h
inc/rs232c.h
@@ -421,6 +417,7 @@ SET(MAIKO_HDRS
inc/tos1defs.h
inc/tosfns.h
inc/tosret.h
inc/tty.h
inc/typeofdefs.h
inc/ubf1defs.h
inc/ubf2defs.h
@@ -436,13 +433,14 @@ SET(MAIKO_HDRS
inc/vars3defs.h
inc/version.h
inc/vmemsavedefs.h
inc/vmemsave.h
inc/xcdefs.h
inc/z2defs.h
)
ADD_CUSTOM_COMMAND(OUTPUT vdate.c
ADD_CUSTOM_TARGET(gen-vdate
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bin/mkvdate > vdate.c
DEPENDS ${MAIKO_SRCS} ${MAIKO_HDRS} ${MAIKO_DISPLAY_X11_SRCS} ${MAIKO_DISPLAY_X11_HDRS} ${MAIKO_DISPLAY_SDL_SRCS} ${MAIKO_DISPLAY_SDL_HDRS}
BYPRODUCTS vdate.c
)
ADD_EXECUTABLE(lde src/ldeboot.c src/unixfork.c)

View File

@@ -1,9 +1,8 @@
# Maiko
Maiko is the implementation of the Medley Interlisp virtual machine for a
byte-coded Lisp instruction set, and some low-level functions for
connecting Lisp to a display (via X11 or SDL), the local filesystem,
and a network subsystem.
Maiko is the implementation of the Medley Interlisp virtual machine, for a
byte-coded Lisp instruction set and some low-level functions for
connecting with Lisp for access to display (via X11) and disk etc.
For an overview, see [Medley Interlisp Introduction](https://interlisp.org/medley/using/docs/medley/).
@@ -16,14 +15,13 @@ Bug reports, feature requests, fixes and improvements, support for additional pl
## Development Platforms
Development has been primarily on macOS, FreeBSD, and Linux, with testing on Solaris and Windows.
Processor architectures i386, x86\_64, arm64, arm7l, and SPARC.
We are developing on FreeBSD, Linux, macOS, and Solaris currently
on arm7l, arm64, PowerPC, SPARC, i386, and x86_64 hardware.
## Building Maiko
### Building with make
Building requires a C compiler (`clang` preferred), either `make` or `CMake`, and X11 client libraries (`libx11-dev`), or SDL2. For example, using `make` and X11:
Building requires `clang`, `make`, X11 client libraries (`libx11-dev`). For example,
``` sh
$ sudo apt update
@@ -35,22 +33,17 @@ $ cd maiko/bin
$ ./makeright x
```
* The build will (attempt to) detect the OS-type and cpu-type. It will build binaries `lde` and `ldex` in `../`_`ostype.cputype`_ (with .o files in `../`_`ostype.cputype-x`_. For example, Linux on a 64-bit x86 will use `linux.x86_64`, while macOS 11 on a (new M1) Mac will use `darwin.aarch64`.
* If you prefer `gcc` over `clang`, you will need to edit the makefile fragment for your configuration (`makefile-ostype.cputype-x`) and comment out the line (with a #) that defines `CC` as `clang` and uncomment the line (delete the #) for the line that defines `CC` as `gcc`.
* If you want to do your own loadups to construct sysout files (see [the Medley repository](https://github.com/Interlisp/medley) for details), you also need the `ldeinit` binary, which you can build using `./makeright init`.
### Building with CMake
We provide a `CMakeLists.txt` which provides mostly matching build capabilities to the `make` setup.
CMake options are provided to control the configuration of the Maiko executables:
* MAIKO\_DISPLAY\_SDL: [OFF], 2, 3 - selects display subsystem SDL of version specified
* MAIKO\_DISPLAY\_X11: [ON], OFF - selects X11 display subsystem
* MAIKO\_NETWORK\_TYPE: [NONE], SUN\_DLPI, SUN\_NIT, NETHUB - network subsystem access
* MAIKO_RELEASE: [351], various - see `maiko/inc/version.h`
While SDL3 is selectable, the Maiko code has not yet been updated to work with the SDL3 API.
* The build will (attempt to) detect the OS-type and cpu-type. It will build binaries `lde` and `ldex` in `../ostype.cputype` (with .o files in `..ostype.cputype-x`. For example, Linux on a 64-bit x86 will use `linux.x86_64`, while macOS 11 on a (new M1) Mac will use `darwin.aarch64`.
* If you prefer using `gcc` over `clang`, you will need to edit the makefile fragment for your configuration (`makefile-ostype.cputype-x`) and comment out the line (with a #) that defines `CC` for `clang` and uncomment the line (delete the #) for the line that defines `CC` for `gcc`.
* There is a cmake configuration (TBD To Be Described here).
### Building For macOS
* Building/running on macOS requires either an X server and X client libraries or the SDL2 library.
* Running on macOS requires an X server, and building on a Mac requires X client libraries.
An X-server for macOS (and X11 client libraries) can be freely obtained at https://www.xquartz.org/releases
The SDL library is freely available from https://libsdl.org
### Building for Windows 10
Windows 10 currently requires "Docker for Desktop" or WSL2 and a (Windows X-server).
See [Medley's README](https://github.com/Interlisp/medley/blob/master/README.md) for more.

View File

@@ -18,7 +18,7 @@ SRCFILES = conspage.c gcoflow.c shift.c dbgtool.c gcr.c gcrcell.c llstk.
OFILES = conspage.obj gcoflow.obj shift.obj dbgtool.obj gcr.obj gcrcell.obj llstk.obj gcscan.obj loopsops.obj storage.obj allocmds.obj dir.obj gvar2.obj lowlev1.obj subr.obj arithops.obj lowlev2.obj subr0374.obj doscomm.obj hardrtn.obj lsthandl.obj sxhash.obj draw.obj main.obj testtool.obj array.obj dsk.obj inet.obj misc7.obj timer.obj array2.obj dspif.obj initdsp.obj miscn.obj typeof.obj array3.obj initkbd.obj ubf1.obj array4.obj dspsubrs.obj initsout.obj mkatom.obj ubf2.obj array5.obj eqf.obj intcall.obj mkcell.obj ubf3.obj array6.obj ether.obj ufn.obj atom.obj findkey.obj kbdsubrs.obj mouseif.obj ufs.obj bbtsub.obj foreign.obj keyevent.obj unixcomm.obj bin.obj fp.obj binds.obj fvar.obj mvs.obj unwind.obj bitblt.obj gc.obj uraid.obj blt.obj gc2.obj kprint.obj osmsg.obj usrsubr.obj byteswap.obj gcarray.obj perrno.obj uutils.obj carcdr.obj asmbbt.obj gccode.obj vars3.obj gcfinal.obj ldsout.obj return.obj vmemsave.obj chardev.obj gchtfind.obj lineblt8.obj rpc.obj xc.obj common.obj gcmain3.obj lisp2c.obj rplcons.obj z2.obj vdate.obj $(COLORFILES) $(ARCHFILES) $(LPFILES)
HFILES = address.h adr68k.h arithopsdefs.h arith.h cell.h dbprint.h display.h dspif.h ifpage.h iopage.h lispemul.h lispmap.h lsptypes.h miscstat.h lspglob.h array.h bb.h bbtmacro.h debug.h devconf.h dspdata.h fast_dsp.h gcdata.h initatms.h inlinec.h keyboard.h lispver1.h lldsp.h locfile.h medleyfp.h mouseif.h my.h opcodes.h osmsgprint.h pilotbbt.h print.h retmacro.h stack.h stream.h subrs.h timeout.h tos1defs.h tosfns.h tosret.h xdefs.h xbitmaps.h xkeymap.h
HFILES = address.h adr68k.h arithopsdefs.h arith.h cell.h dbprint.h display.h dspif.h ifpage.h iopage.h lispemul.h lispmap.h lsptypes.h miscstat.h lspglob.h array.h bb.h bitblt.h debug.h devconf.h dspdata.h ether.h fast_dsp.h gcdata.h initatms.h inlinec.h keyboard.h lispver1.h lispver2.h lldsp.h locfile.h medleyfp.h mouseif.h my.h opcodes.h osmsg.h pilotbbt.h print.h return.h stack.h stream.h subrs.h timeout.h tos1defs.h tosfns.h tosret.h vmemsave.h xdefs.h xbitmaps.h xkeymap.h
@@ -35,7 +35,7 @@ emul.exe : $(OFILES)
del copts
@ echo "Executable is now named '$@'"
main.o : lispemul.h address.h lsptypes.h adr68k.h stack.h lspglob.h lispmap.h ifpage.h iopage.h retmacro.h debug.h
main.o : lispemul.h address.h lsptypes.h adr68k.h stack.h lspglob.h lispmap.h ifpage.h iopage.h return.h debug.h

View File

@@ -1,29 +0,0 @@
# Options for Windows System for Linux v1, aarch64 processor, X windows, for INIT processing
CC = gcc $(GCC_CFLAGS)
#CC = clang $(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 = -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g
DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT -D__wsl1__
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -1,29 +0,0 @@
# Options for Windows System for Linux v1, Intel x86_64 processor, X windows, for INIT processing
CC = gcc $(GCC_CFLAGS)
#CC = clang $(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 = -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g
DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT -D__wsl1__
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -192,7 +192,7 @@ $(OBJECTDIR)ldeether.o: $(SRCDIR)ldeether.c $(REQUIRED-INCS)
$(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 \
$(INCDIR)retmacro.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h \
$(INCDIR)return.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h \
$(INCDIR)miscstat.h $(INCDIR)lsptypes.h $(INCDIR)lispmap.h $(INCDIR)debug.h \
$(INCDIR)timeout.h $(INCDIR)maindefs.h $(INCDIR)commondefs.h \
$(INCDIR)dirdefs.h $(INCDIR)dspifdefs.h $(INCDIR)devif.h \
@@ -292,7 +292,7 @@ $(OBJECTDIR)bitblt.o: $(SRCDIR)bitblt.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)lispmap.h \
$(INCDIR)adr68k.h $(INCDIR)address.h $(INCDIR)pilotbbt.h $(INCDIR)display.h \
$(INCDIR)bbtmacro.h $(INCDIR)bb.h $(INCDIR)bitbltdefs.h $(INCDIR)initdspdefs.h
$(INCDIR)bitblt.h $(INCDIR)bb.h $(INCDIR)bitbltdefs.h $(INCDIR)initdspdefs.h
$(CC) $(RFLAGS) $(SRCDIR)bitblt.c -o $(OBJECTDIR)bitblt.o
$(OBJECTDIR)bbt68k.o: $(OBJECTDIR)bbt68k.i $(SRCDIR)bbt68k.s
@@ -308,10 +308,10 @@ $(OBJECTDIR)bbtsub.o: $(SRCDIR)bbtsub.c $(REQUIRED-INCS) \
$(INCDIR)xdefs.h $(INCDIR)lispemul.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h \
$(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)lispmap.h $(INCDIR)lsptypes.h \
$(INCDIR)emlglob.h $(INCDIR)adr68k.h $(INCDIR)address.h $(INCDIR)arith.h \
$(INCDIR)stack.h $(INCDIR)retmacro.h $(INCDIR)cell.h $(INCDIR)gcdata.h \
$(INCDIR)stack.h $(INCDIR)return.h $(INCDIR)cell.h $(INCDIR)gcdata.h \
$(INCDIR)bbtsubdefs.h $(INCDIR)car-cdrdefs.h $(INCDIR)commondefs.h \
$(INCDIR)gcarraydefs.h $(INCDIR)initdspdefs.h $(INCDIR)kprintdefs.h \
$(INCDIR)llstkdefs.h $(INCDIR)returndefs.h $(INCDIR)bb.h $(INCDIR)bbtmacro.h \
$(INCDIR)llstkdefs.h $(INCDIR)returndefs.h $(INCDIR)bb.h $(INCDIR)bitblt.h \
$(INCDIR)pilotbbt.h $(INCDIR)dspdata.h $(INCDIR)display.h $(INCDIR)dbprint.h \
$(INCDIR)devif.h
$(CC) $(RFLAGS) $(SRCDIR)bbtsub.c -o $(OBJECTDIR)bbtsub.o
@@ -340,7 +340,7 @@ $(OBJECTDIR)car-cdr.o: $(SRCDIR)car-cdr.c $(REQUIRED-INCS) \
$(OBJECTDIR)chardev.o: $(SRCDIR)chardev.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)arith.h $(INCDIR)timeout.h \
$(INCDIR)locfile.h $(INCDIR)dbprint.h \
$(INCDIR)locfile.h $(INCDIR)lispver2.h $(INCDIR)osmsg.h $(INCDIR)dbprint.h \
$(INCDIR)chardevdefs.h $(INCDIR)byteswapdefs.h $(INCDIR)commondefs.h \
$(INCDIR)perrnodefs.h
$(CC) $(RFLAGS) $(SRCDIR)chardev.c -o $(OBJECTDIR)chardev.o
@@ -348,7 +348,7 @@ $(OBJECTDIR)chardev.o: $(SRCDIR)chardev.c $(REQUIRED-INCS) \
$(OBJECTDIR)rawcolor.o: $(SRCDIR)rawcolor.c $(REQUIRED-INCS) $(INCDIR)lispemul.h \
$(INCDIR)lspglob.h $(INCDIR)lispmap.h $(INCDIR)lsptypes.h \
$(INCDIR)emlglob.h $(INCDIR)adr68k.h $(INCDIR)address.h \
$(INCDIR)pilotbbt.h $(INCDIR)display.h $(INCDIR)bbtmacro.h \
$(INCDIR)pilotbbt.h $(INCDIR)display.h $(INCDIR)bitblt.h \
$(INCDIR)arith.h $(INCDIR)cell.h $(INCDIR)dspdata.h $(INCDIR)debug.h \
$(INCDIR)stream.h $(INCDIR)bbtsubdefs.h
$(CC) $(RFLAGS) $(SRCDIR)rawcolor.c -o $(OBJECTDIR)rawcolor.o
@@ -357,7 +357,7 @@ $(OBJECTDIR)llcolor.o: $(SRCDIR)llcolor.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)lsptypes.h $(INCDIR)address.h $(INCDIR)adr68k.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)emlglob.h \
$(INCDIR)display.h $(INCDIR)devconf.h $(INCDIR)bb.h $(INCDIR)bbtmacro.h \
$(INCDIR)display.h $(INCDIR)devconf.h $(INCDIR)bb.h $(INCDIR)bitblt.h \
$(INCDIR)pilotbbt.h $(INCDIR)dbprint.h $(INCDIR)llcolordefs.h
$(CC) $(RFLAGS) $(SRCDIR)llcolor.c -o $(OBJECTDIR)llcolor.o
@@ -391,7 +391,7 @@ $(OBJECTDIR)mkcell.o: $(SRCDIR)mkcell.c $(REQUIRED-INCS) \
$(OBJECTDIR)draw.o: $(SRCDIR)draw.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)lispmap.h \
$(INCDIR)lsptypes.h $(INCDIR)emlglob.h $(INCDIR)adr68k.h $(INCDIR)bbtmacro.h \
$(INCDIR)lsptypes.h $(INCDIR)emlglob.h $(INCDIR)adr68k.h $(INCDIR)bitblt.h \
$(INCDIR)display.h $(INCDIR)drawdefs.h $(INCDIR)bbtsubdefs.h \
$(INCDIR)initdspdefs.h
$(CC) $(RFLAGS) $(SRCDIR)draw.c -o $(OBJECTDIR)draw.o
@@ -423,7 +423,7 @@ $(OBJECTDIR)fp.o: $(SRCDIR)fp.c $(REQUIRED-INCS) \
$(OBJECTDIR)intcall.o: $(SRCDIR)intcall.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)address.h \
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)lispmap.h $(INCDIR)stack.h \
$(INCDIR)retmacro.h $(INCDIR)emlglob.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h \
$(INCDIR)return.h $(INCDIR)emlglob.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h \
$(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)initatms.h $(INCDIR)cell.h \
$(INCDIR)tosfns.h $(INCDIR)intcalldefs.h $(INCDIR)commondefs.h \
$(INCDIR)llstkdefs.h $(INCDIR)returndefs.h
@@ -450,7 +450,7 @@ $(OBJECTDIR)ubf3.o: $(SRCDIR)ubf3.c $(REQUIRED-INCS) \
$(OBJECTDIR)uutils.o: $(SRCDIR)uutils.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)adr68k.h \
$(INCDIR)lsptypes.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h \
$(INCDIR)miscstat.h $(INCDIR)osmsgprint.h $(INCDIR)keyboard.h $(INCDIR)uutilsdefs.h \
$(INCDIR)miscstat.h $(INCDIR)osmsg.h $(INCDIR)keyboard.h $(INCDIR)uutilsdefs.h \
$(INCDIR)osmsgdefs.h $(INCDIR)uraiddefs.h
$(CC) $(RFLAGS) $(SRCDIR)uutils.c -o $(OBJECTDIR)uutils.o
@@ -478,21 +478,21 @@ $(OBJECTDIR)ether_common.o: $(SRCDIR)ether_common.c $(REQUIRED-INCS) \
$(INCDIR)commondefs.h $(INCDIR)lispemul.h \
$(INCDIR)lispmap.h $(INCDIR)emlglob.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
$(INCDIR)dbprint.h $(INCDIR)etherdefs.h
$(INCDIR)ether.h $(INCDIR)dbprint.h $(INCDIR)etherdefs.h
$(CC) $(RFLAGS) $(SRCDIR)ether_common.c -o $(OBJECTDIR)ether_common.o
$(OBJECTDIR)ether_sunos.o: $(SRCDIR)ether_sunos.c $(REQUIRED-INCS) \
$(INCDIR)commondefs.h $(INCDIR)lispemul.h \
$(INCDIR)lispmap.h $(INCDIR)emlglob.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
$(INCDIR)dbprint.h $(INCDIR)etherdefs.h
$(INCDIR)ether.h $(INCDIR)dbprint.h $(INCDIR)etherdefs.h
$(CC) $(RFLAGS) $(SRCDIR)ether_sunos.c -o $(OBJECTDIR)ether_sunos.o
$(OBJECTDIR)ether_nethub.o: $(SRCDIR)ether_nethub.c $(REQUIRED-INCS) \
$(INCDIR)commondefs.h $(INCDIR)lispemul.h \
$(INCDIR)lispmap.h $(INCDIR)emlglob.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
$(INCDIR)dbprint.h $(INCDIR)etherdefs.h
$(INCDIR)ether.h $(INCDIR)dbprint.h $(INCDIR)etherdefs.h
$(CC) $(RFLAGS) $(SRCDIR)ether_nethub.c -o $(OBJECTDIR)ether_nethub.o
$(OBJECTDIR)findkey.o: $(SRCDIR)findkey.c $(REQUIRED-INCS) \
@@ -505,7 +505,7 @@ $(OBJECTDIR)dsk.o: $(SRCDIR)dsk.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h \
$(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)arith.h $(INCDIR)stream.h \
$(INCDIR)timeout.h $(INCDIR)locfile.h \
$(INCDIR)timeout.h $(INCDIR)locfile.h $(INCDIR)lispver2.h $(INCDIR)osmsg.h \
$(INCDIR)dbprint.h $(INCDIR)dskdefs.h $(INCDIR)byteswapdefs.h \
$(INCDIR)car-cdrdefs.h $(INCDIR)cell.h $(INCDIR)commondefs.h \
$(INCDIR)ufsdefs.h
@@ -515,7 +515,7 @@ $(OBJECTDIR)ufs.o: $(SRCDIR)ufs.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h \
$(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)arith.h $(INCDIR)stream.h \
$(INCDIR)timeout.h $(INCDIR)locfile.h $(INCDIR)dbprint.h \
$(INCDIR)timeout.h $(INCDIR)locfile.h $(INCDIR)lispver2.h $(INCDIR)dbprint.h \
$(INCDIR)ufsdefs.h $(INCDIR)commondefs.h $(INCDIR)dskdefs.h
$(CC) $(RFLAGS) $(SRCDIR)ufs.c -o $(OBJECTDIR)ufs.o
@@ -523,7 +523,7 @@ $(OBJECTDIR)dir.o: $(SRCDIR)dir.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)arith.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)timeout.h \
$(INCDIR)locfile.h $(INCDIR)dirdefs.h \
$(INCDIR)locfile.h $(INCDIR)lispver2.h $(INCDIR)dirdefs.h \
$(INCDIR)commondefs.h $(INCDIR)dskdefs.h $(INCDIR)ufsdefs.h
$(CC) $(RFLAGS) $(SRCDIR)dir.c -o $(OBJECTDIR)dir.o
@@ -632,7 +632,7 @@ $(OBJECTDIR)hardrtn.o: $(SRCDIR)hardrtn.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)lsptypes.h $(INCDIR)adr68k.h $(INCDIR)address.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)emlglob.h \
$(INCDIR)cell.h $(INCDIR)stack.h $(INCDIR)retmacro.h $(INCDIR)hardrtndefs.h \
$(INCDIR)cell.h $(INCDIR)stack.h $(INCDIR)return.h $(INCDIR)hardrtndefs.h \
$(INCDIR)commondefs.h $(INCDIR)llstkdefs.h
$(CC) $(RFLAGS) $(SRCDIR)hardrtn.c -o $(OBJECTDIR)hardrtn.o
@@ -640,7 +640,7 @@ $(OBJECTDIR)inet.o: $(SRCDIR)inet.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)lsptypes.h $(INCDIR)arith.h $(INCDIR)emlglob.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
$(INCDIR)dbprint.h $(INCDIR)locfile.h \
$(INCDIR)ether.h $(INCDIR)dbprint.h $(INCDIR)locfile.h $(INCDIR)lispver2.h \
$(INCDIR)inetdefs.h $(INCDIR)byteswapdefs.h $(INCDIR)commondefs.h \
$(INCDIR)mkcelldefs.h
$(CC) $(RFLAGS) $(SRCDIR)inet.c -o $(OBJECTDIR)inet.o
@@ -649,7 +649,7 @@ $(OBJECTDIR)initdsp.o: $(SRCDIR)initdsp.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)lsptypes.h $(INCDIR)address.h $(INCDIR)adr68k.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)emlglob.h \
$(INCDIR)display.h $(INCDIR)devconf.h $(INCDIR)bb.h $(INCDIR)bbtmacro.h \
$(INCDIR)display.h $(INCDIR)devconf.h $(INCDIR)bb.h $(INCDIR)bitblt.h \
$(INCDIR)pilotbbt.h $(INCDIR)dbprint.h $(INCDIR)initdspdefs.h \
$(INCDIR)byteswapdefs.h $(INCDIR)xcursordefs.h $(INCDIR)devif.h
$(CC) $(RFLAGS) $(SRCDIR)initdsp.c -o $(OBJECTDIR)initdsp.o
@@ -674,7 +674,7 @@ $(OBJECTDIR)initsout.o: $(SRCDIR)initsout.c $(REQUIRED-INCS) \
$(OBJECTDIR)kbdsubrs.o: $(SRCDIR)kbdsubrs.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)kbdsubrsdefs.h \
$(INCDIR)commondefs.h $(INCDIR)xwinmandefs.h \
$(INCDIR)commondefs.h $(INCDIR)lisp2cdefs.h $(INCDIR)xwinmandefs.h \
$(INCDIR)devif.h
$(CC) $(RFLAGS) $(SRCDIR)kbdsubrs.c -o $(OBJECTDIR)kbdsubrs.o
@@ -682,7 +682,7 @@ $(OBJECTDIR)keyevent.o: $(SRCDIR)keyevent.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
$(INCDIR)address.h $(INCDIR)stack.h $(INCDIR)keyboard.h $(INCDIR)display.h \
$(INCDIR)lsptypes.h $(INCDIR)bb.h $(INCDIR)bbtmacro.h $(INCDIR)pilotbbt.h \
$(INCDIR)lsptypes.h $(INCDIR)bb.h $(INCDIR)bitblt.h $(INCDIR)pilotbbt.h \
$(INCDIR)keyeventdefs.h $(INCDIR)osmsgdefs.h $(INCDIR)xwinmandefs.h \
$(INCDIR)devif.h $(INCDIR)dbprint.h
$(CC) $(RFLAGS) $(SRCDIR)keyevent.c -o $(OBJECTDIR)keyevent.o
@@ -698,7 +698,7 @@ $(OBJECTDIR)llstk.o: $(SRCDIR)llstk.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)adr68k.h $(INCDIR)address.h $(INCDIR)lsptypes.h $(INCDIR)initatms.h \
$(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h \
$(INCDIR)emlglob.h $(INCDIR)cell.h $(INCDIR)stack.h $(INCDIR)retmacro.h \
$(INCDIR)emlglob.h $(INCDIR)cell.h $(INCDIR)stack.h $(INCDIR)return.h \
$(INCDIR)llstkdefs.h $(INCDIR)commondefs.h $(INCDIR)dbgtooldefs.h \
$(INCDIR)testtooldefs.h $(INCDIR)kprintdefs.h $(INCDIR)storagedefs.h
$(CC) $(RFLAGS) $(SRCDIR)llstk.c -o $(OBJECTDIR)llstk.o
@@ -758,7 +758,7 @@ $(OBJECTDIR)osmsg.o: $(SRCDIR)osmsg.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)arith.h $(INCDIR)stream.h \
$(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h \
$(INCDIR)timeout.h $(INCDIR)locfile.h $(INCDIR)osmsgprint.h \
$(INCDIR)timeout.h $(INCDIR)locfile.h $(INCDIR)lispver2.h $(INCDIR)osmsg.h \
$(INCDIR)dbprint.h $(INCDIR)commondefs.h $(INCDIR)osmsgdefs.h
$(CC) $(RFLAGS) $(SRCDIR)osmsg.c -o $(OBJECTDIR)osmsg.o
@@ -766,7 +766,7 @@ $(OBJECTDIR)return.o: $(SRCDIR)return.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)address.h \
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)lispmap.h $(INCDIR)stack.h \
$(INCDIR)emlglob.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h \
$(INCDIR)miscstat.h $(INCDIR)initatms.h $(INCDIR)cell.h $(INCDIR)retmacro.h \
$(INCDIR)miscstat.h $(INCDIR)initatms.h $(INCDIR)cell.h $(INCDIR)return.h \
$(INCDIR)returndefs.h $(INCDIR)commondefs.h
$(CC) $(RFLAGS) $(SRCDIR)return.c -o $(OBJECTDIR)return.o
@@ -828,7 +828,7 @@ $(OBJECTDIR)subr0374.o: $(SRCDIR)subr0374.c $(REQUIRED-INCS) \
$(CC) $(RFLAGS) $(SRCDIR)subr0374.c -o $(OBJECTDIR)subr0374.o
$(OBJECTDIR)perrno.o: $(SRCDIR)perrno.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)osmsgprint.h \
$(INCDIR)lispemul.h $(INCDIR)osmsg.h \
$(INCDIR)perrnodefs.h $(INCDIR)osmsgdefs.h
$(CC) $(RFLAGS) $(SRCDIR)perrno.c -o $(OBJECTDIR)perrno.o
@@ -843,7 +843,7 @@ $(OBJECTDIR)timer.o: $(SRCDIR)timer.c $(REQUIRED-INCS) \
$(OBJECTDIR)tty.o: $(SRCDIR)tty.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h \
$(INCDIR)commondefs.h $(INCDIR)ttydefs.h
$(INCDIR)commondefs.h $(INCDIR)tty.h $(INCDIR)ttydefs.h
$(CC) $(RFLAGS) $(SRCDIR)tty.c -o $(OBJECTDIR)tty.o
$(OBJECTDIR)typeof.o: $(SRCDIR)typeof.c $(REQUIRED-INCS) \
@@ -865,7 +865,7 @@ $(OBJECTDIR)unixcomm.o: $(SRCDIR)unixcomm.c $(REQUIRED-INCS) \
$(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h \
$(INCDIR)cell.h $(INCDIR)stack.h $(INCDIR)arith.h $(INCDIR)dbprint.h \
$(INCDIR)timeout.h $(INCDIR)unixcommdefs.h $(INCDIR)byteswapdefs.h \
$(INCDIR)commondefs.h $(INCDIR)locfile.h
$(INCDIR)commondefs.h $(INCDIR)locfile.h $(INCDIR)lispver2.h
$(CC) $(RFLAGS) $(SRCDIR)unixcomm.c -o $(OBJECTDIR)unixcomm.o
$(OBJECTDIR)unixfork.o: $(SRCDIR)unixfork.c $(REQUIRED-INCS) \
@@ -876,7 +876,7 @@ $(OBJECTDIR)uraid.o: $(SRCDIR)uraid.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h \
$(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)emlglob.h $(INCDIR)cell.h \
$(INCDIR)debug.h $(INCDIR)devconf.h $(INCDIR)display.h $(INCDIR)bbtmacro.h \
$(INCDIR)debug.h $(INCDIR)devconf.h $(INCDIR)display.h $(INCDIR)bitblt.h \
$(INCDIR)uraiddefs.h $(INCDIR)dbgtooldefs.h $(INCDIR)stack.h \
$(INCDIR)gcarraydefs.h $(INCDIR)initdspdefs.h $(INCDIR)initkbddefs.h \
$(INCDIR)kprintdefs.h $(INCDIR)llstkdefs.h $(INCDIR)mkatomdefs.h \
@@ -888,7 +888,7 @@ $(OBJECTDIR)rpc.o: $(SRCDIR)rpc.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
$(INCDIR)lsptypes.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h \
$(INCDIR)miscstat.h $(INCDIR)emlglob.h $(INCDIR)adr68k.h $(INCDIR)arith.h \
$(INCDIR)locfile.h $(INCDIR)rpcdefs.h \
$(INCDIR)locfile.h $(INCDIR)lispver2.h $(INCDIR)rpcdefs.h \
$(INCDIR)commondefs.h
$(CC) $(RFLAGS) $(SRCDIR)rpc.c -o $(OBJECTDIR)rpc.o
@@ -908,8 +908,8 @@ $(OBJECTDIR)vars3.o: $(SRCDIR)vars3.c $(REQUIRED-INCS) \
$(OBJECTDIR)vmemsave.o: $(SRCDIR)vmemsave.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h \
$(INCDIR)lispmap.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h \
$(INCDIR)miscstat.h $(INCDIR)timeout.h $(INCDIR)adr68k.h \
$(INCDIR)lsptypes.h $(INCDIR)locfile.h $(INCDIR)dbprint.h \
$(INCDIR)miscstat.h $(INCDIR)vmemsave.h $(INCDIR)timeout.h $(INCDIR)adr68k.h \
$(INCDIR)lsptypes.h $(INCDIR)locfile.h $(INCDIR)lispver2.h $(INCDIR)dbprint.h \
$(INCDIR)devif.h $(INCDIR)vmemsavedefs.h $(INCDIR)byteswapdefs.h $(INCDIR)commondefs.h \
$(INCDIR)dskdefs.h $(INCDIR)initkbddefs.h $(INCDIR)perrnodefs.h \
$(INCDIR)ufsdefs.h
@@ -929,7 +929,7 @@ $(OBJECTDIR)usrsubr.o: $(SRCDIR)usrsubr.c $(REQUIRED-INCS) \
$(OBJECTDIR)xc.o: $(SRCDIR)xc.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)emlglob.h \
$(INCDIR)address.h $(INCDIR)adr68k.h $(INCDIR)stack.h $(INCDIR)retmacro.h \
$(INCDIR)address.h $(INCDIR)adr68k.h $(INCDIR)stack.h $(INCDIR)return.h \
$(INCDIR)dbprint.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h \
$(INCDIR)miscstat.h $(INCDIR)lsptypes.h $(INCDIR)lispmap.h $(INCDIR)cell.h \
$(INCDIR)initatms.h $(INCDIR)gcdata.h $(INCDIR)arith.h $(INCDIR)stream.h \
@@ -992,7 +992,7 @@ $(OBJECTDIR)xcursor.o: $(SRCDIR)xcursor.c $(REQUIRED-INCS) \
$(OBJECTDIR)xwinman.o: $(SRCDIR)xwinman.c $(REQUIRED-INCS) \
$(INCDIR)lispemul.h $(INCDIR)miscstat.h $(INCDIR)devif.h $(INCDIR)xdefs.h \
$(INCDIR)xwinmandefs.h $(INCDIR)keyeventdefs.h \
$(INCDIR)xscroll.h $(INCDIR)xwinmandefs.h $(INCDIR)keyeventdefs.h \
$(INCDIR)xlspwindefs.h $(INCDIR)xscrolldefs.h
$(CC) $(RFLAGS) $(SRCDIR)xwinman.c -o $(OBJECTDIR)xwinman.o

View File

@@ -1,25 +0,0 @@
# Options for Windows System for Linux v1, ARM64 and SDL
CC = gcc $(GCC_CFLAGS)
#CC = clang $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
#
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
#
SDLFLAGS = -DSDL=2
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__
LDFLAGS = -lSDL2 -lm
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl

View File

@@ -1,27 +0,0 @@
# Options for Windows System for Linux v1, aarch64 and X-Window
CC = gcc $(GCC_CFLAGS)
#CC = clang $(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 = -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -1,25 +0,0 @@
# Options for Windows System for Linux v1, Intel x86_64 and SDL
CC = gcc -m64 $(GCC_CFLAGS)
# CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
#
# For SDL version 2
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
#
XFLAGS = -DSDL=2
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__
LDFLAGS = -lm -lSDL2
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl

View File

@@ -1,28 +0,0 @@
# Options for Windows System for Linux v1, Intel x86_64 and X-Window
CC = gcc -m64 $(GCC_CFLAGS)
# 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 = -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -1,22 +1,6 @@
#!/bin/sh
if command -v "git" >/dev/null 2>&1; then
MAIKO_REV="$(git status --porcelain)"
if [ $? -eq 0 ]; then
if [ ! -z "$(git status --porcelain)" ]; then
MAIKO_REV="$(git rev-parse --short HEAD)-dirty"
else
MAIKO_REV="$(git rev-parse --short HEAD)"
fi
else
MAIKO_REV="none"
fi
else
MAIKO_REV = "none"
fi
cat <<EOF
#include <time.h>
extern const time_t MDate;
const time_t MDate = $(date +%s);
extern const char *MaikoGitVersion;
const char *MaikoGitVersion = "maiko git version: $MAIKO_REV";
EOF

View File

@@ -8,14 +8,11 @@ case "$os" in
*-*-solaris2*) echo sunos5 ;;
alpha-dec-osf1) echo osf1 ;;
*-apple-darwin*) echo darwin ;;
*-*-linux*)
if [ -n "${WSL_DISTRO_NAME}" ] && [ -z "${WSL_INTEROP}" ];
then echo wsl1; else echo linux; fi ;;
*-*-linux*) echo linux ;;
*-*-openbsd*) echo openbsd ;;
*-*-freebsd*) echo freebsd ;;
*-*-cygwin*) echo cygwin ;;
*-*-haiku*) echo haiku ;;
*-microsoft-wsl1) echo wsl1 ;;
esac
### Don't leave the variable set.
unset os

View File

@@ -221,17 +221,17 @@ static const int generic_X_keymap[] = {
/* keypad digit assignments above, try assigning */
/* the new arrow-key key#s assigned for RS/6000 */
/* Failing that, try assigning the keypad #s. */
1, 84, XK_Left,
0, 129, XK_Left,
0, 84, XK_Left,
1, 82, XK_Up,
0, 130, XK_Up,
0, 82, XK_Up,
1, 69, XK_Down,
0, 131, XK_Down,
0, 69, XK_Down,
1, 87, XK_Right,
0, 132, XK_Right,
0, 87, XK_Right,
0, 93, XK_Multi_key, /* Expand, Sun type-4 */
0, 93, XK_Alt_R, /* Expand, RH Alt key */

View File

@@ -1,10 +1,10 @@
#ifndef BBTMACRO_H
#define BBTMACRO_H 1
#ifndef BITBLT_H
#define BITBLT_H 1
/* $Id: bitblt.h,v 1.2 1999/01/03 02:05:54 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/*
* Copyright (C) 1988 by Fuji Xerox Co., Ltd. All rights reserved.
*
* File : bbtmacro.h (was bitblt.h)
* File : bitblt.h
*
* Author : Osamu Nakamura
*
@@ -85,4 +85,4 @@ extern DLword *EmCursorX68K,*EmCursorY68K;
#define UNLOCKSCREEN ScreenLocked = NIL
#endif /* DOS */
#endif /* BBTMACRO_H */
#endif /* BITBLT_H */

View File

@@ -58,7 +58,7 @@ typedef struct dfinfo {
} DFINFO;
#ifdef DOS
int make_old_version(char *old, size_t oldsize, char *file);
int make_old_version(char *old, char *file);
#endif
#ifdef FSDEBUG
void print_finfo(FINFO *fp);

View File

@@ -19,9 +19,7 @@ LispPTR COM_writepage(LispPTR *args);
LispPTR COM_truncatefile(LispPTR *args);
LispPTR COM_changedir(LispPTR *args);
LispPTR COM_getfreeblock(LispPTR *args);
void conc_dir_and_name(char *dir, char *name, char *fname, size_t fname_size);
void conc_name_and_version(char *name, char *ver, char *rname, size_t rname_size);
void separate_version(char *name, size_t namesize, char *ver, size_t versize, int checkp);
void separate_version(char *name, char *ver, int checkp);
int unpack_filename(char *file, char *dir, char *name, char *ver, int checkp);
int true_name(char *path, size_t pathsize);
int true_name(char *path);
#endif

120
inc/ether.h Normal file
View File

@@ -0,0 +1,120 @@
#ifndef ETHER_H
#define ETHER_H 1
/* $Id: ether.h,v 1.2 1999/01/03 02:05:59 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-92 Venue. All Rights Reserved. */
/* Manufactured in the United States of America. */
/* */
/************************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */
#ifndef BYTESWAP
typedef struct {
DLword DLLOCALHOST0;
DLword DLLOCALHOST1;
DLword DLLOCALHOST2;
DLword DLFIRSTICB;
DLword DLINPUTMASK;
DLword DLFIRSTOCB;
DLword DLOUTPUTMASK;
DLword DLMISSEDPACKETS;
DLword DLLASTICB;
DLword DLLASTOCB;
} DLETHERCSB;
typedef struct{
DLword DLIOCBLENGTH;
DLword DLIOCBBUFFERLO;
DLword DLIOCBBUFFERHI;
DLword DLRETRANSMISSIONMASK;
DLword DLIOCBBYTESUSED;
DLword DLIOCBSTATUS;
DLword DLNEXTIOCB;
DLword DLFOROUTPUTUSE;
} DLETHERIOCB;
typedef struct {
unsigned int NETTYPE : 8;
unsigned int NDBNEXT : 24;
unsigned int NDBPUPNET : 8;
unsigned int NDBNSNET : 24;
unsigned int NDBTASK : 8;
unsigned int NDBBROADCASTP : 24;
unsigned int NDBPUPHOST : 8;
unsigned int NDBTRANSMITTER : 24;
unsigned int nil1: 8;
unsigned int NDBENCAPSULATOR : 24;
unsigned int NDBIQLENGTH : 8; /* DATATYPE */
unsigned int NDBCSB : 24; /* DATATYPE */
LispPTR NDBIQ;
LispPTR NDBTQ;
LispPTR NDBTRANSLATIONS;
LispPTR NDBETHERFLUSHER;
LispPTR NDBWATCHER;
LispPTR NDBCANHEARSELF;
LispPTR NDBIPNET;
LispPTR NDBIPHOST;
DLword NDBPUPTYPE;
DLword nil2;
LispPTR nil3;
} NDB;
#else
/***********************************************/
/* Byte-swapped definitions, for e.g., 80386's */
/***********************************************/
typedef struct {
DLword DLLOCALHOST1;
DLword DLLOCALHOST0;
DLword DLFIRSTICB;
DLword DLLOCALHOST2;
DLword DLFIRSTOCB;
DLword DLINPUTMASK;
DLword DLMISSEDPACKETS;
DLword DLOUTPUTMASK;
DLword DLLASTOCB;
DLword DLLASTICB;
} DLETHERCSB;
typedef struct{
DLword DLIOCBBUFFERLO;
DLword DLIOCBLENGTH;
DLword DLRETRANSMISSIONMASK;
DLword DLIOCBBUFFERHI;
DLword DLIOCBSTATUS;
DLword DLIOCBBYTESUSED;
DLword DLFOROUTPUTUSE;
DLword DLNEXTIOCB;
} DLETHERIOCB;
typedef struct {
unsigned int NDBNEXT : 24;
unsigned int NETTYPE : 8;
unsigned int NDBNSNET : 24;
unsigned int NDBPUPNET : 8;
unsigned int NDBBROADCASTP : 24;
unsigned int NDBTASK : 8;
unsigned int NDBTRANSMITTER : 24;
unsigned int NDBPUPHOST : 8;
unsigned int NDBENCAPSULATOR : 24;
unsigned int nil1: 8;
unsigned int NDBCSB : 24; /* DATATYPE */
unsigned int NDBIQLENGTH : 8; /* DATATYPE */
LispPTR NDBIQ;
LispPTR NDBTQ;
LispPTR NDBTRANSLATIONS;
LispPTR NDBETHERFLUSHER;
LispPTR NDBWATCHER;
LispPTR NDBCANHEARSELF;
LispPTR NDBIPNET;
LispPTR NDBIPHOST;
DLword nil2;
DLword NDBPUPTYPE;
LispPTR nil3;
} NDB;
#endif /* BYTESWAP */
#endif /* ETHER_H */

View File

@@ -18,7 +18,8 @@
*/
/**********************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */
#include "version.h" /* for BIGVM */
#include "version.h" /* for USHORT */
#include "gchtfinddefs.h"
#define ADDREF 0 /* for gclookup routine. */
#define DELREF 1 /* for gclookup routine. */
@@ -131,10 +132,10 @@
#ifdef BIGVM
struct hashentry
{ /* GC hashtable entry */
DLword count :15;
DLword stackref :1;
DLword segnum :15;
DLword collision :1;
unsigned short count :15;
unsigned short stackref :1;
unsigned short segnum :15;
unsigned short collision :1;
};
struct htlinkptr
@@ -162,10 +163,10 @@ struct htoverflow
#else
struct hashentry
{ /* GC hashtable entry */
DLword count :6;
DLword stackref :1;
DLword segnum :8;
DLword collision :1;
USHORT count :6;
USHORT stackref :1;
USHORT segnum :8;
USHORT collision :1;
};
struct htlinkptr
@@ -200,10 +201,10 @@ struct htoverflow
#ifdef BIGVM
struct hashentry
{ /* GC hashtable entry */
DLword collision :1;
DLword segnum :15;
DLword stackref :1;
DLword count :15;
USHORT collision :1;
USHORT segnum :15;
USHORT stackref :1;
USHORT count :15;
};
struct htlinkptr
@@ -231,10 +232,10 @@ struct htoverflow
#else
struct hashentry
{ /* GC hashtable entry */
DLword collision :1;
DLword segnum :8;
DLword stackref :1;
DLword count :6;
USHORT collision :1;
USHORT segnum :8;
USHORT stackref :1;
USHORT count :6;
};
struct htlinkptr

View File

@@ -2,10 +2,14 @@
#define GCFINALDEFS_H 1
#include "lispemul.h" /* for LispPTR, DLword */
void printarrayblock(LispPTR base);
void printfreeblockchainn(int arlen);
int integerlength(unsigned int n);
LispPTR findptrsbuffer(LispPTR ptr);
LispPTR releasingvmempage(LispPTR ptr);
LispPTR checkarrayblock(LispPTR base, LispPTR free, LispPTR onfreelist);
LispPTR deleteblock(LispPTR base);
LispPTR linkblock(LispPTR base);
LispPTR makefreearrayblock(LispPTR block, DLword length);
LispPTR arrayblockmerger(LispPTR base, LispPTR nbase);
LispPTR mergebackward(LispPTR base);
LispPTR mergeforward(LispPTR base);
LispPTR reclaimarrayblock(LispPTR ptr);

View File

@@ -1,9 +1,8 @@
#ifndef GCHTFINDDEFS_H
#define GCHTFINDDEFS_H 1
#include "lispemul.h" /* for LispPTR, DLword */
#include "gcdata.h" /* for GCENTRY */
void enter_big_reference_count(LispPTR ptr);
void modify_big_reference_count(GCENTRY *entry, DLword casep, LispPTR ptr);
void modify_big_reference_count(LispPTR *entry, DLword casep, LispPTR ptr);
LispPTR htfind(LispPTR ptr, int casep);
LispPTR rec_htfind(LispPTR ptr, int casep);
#endif

View File

@@ -217,7 +217,7 @@
#define FJUMPMACRO(x) \
do { \
if (TOPOFSTACK != 0) { POP; nextop1; } \
if (TOPOFSTACK != 0) { goto PopNextop1; } \
{ \
CHECK_INTERRUPT; \
POP; \
@@ -227,7 +227,7 @@
} while (0)
#define TJUMPMACRO(x) \
do { \
if (TOPOFSTACK == 0) { POP; nextop1; } \
if (TOPOFSTACK == 0) { goto PopNextop1; } \
{ \
CHECK_INTERRUPT; \
POP; \

View File

@@ -267,22 +267,22 @@ struct state {
/* For bit test */
typedef struct wbits {
DLword LSB : 1;
DLword B14 : 1;
DLword B13 : 1;
DLword B12 : 1;
DLword B11 : 1;
DLword B10 : 1;
DLword B9 : 1;
DLword B8 : 1;
DLword B7 : 1;
DLword B6 : 1;
DLword B5 : 1;
DLword B4 : 1;
DLword B3 : 1;
DLword B2 : 1;
DLword B1 : 1;
DLword xMSB : 1;
USHORT LSB : 1;
USHORT B14 : 1;
USHORT B13 : 1;
USHORT B12 : 1;
USHORT B11 : 1;
USHORT B10 : 1;
USHORT B9 : 1;
USHORT B8 : 1;
USHORT B7 : 1;
USHORT B6 : 1;
USHORT B5 : 1;
USHORT B4 : 1;
USHORT B3 : 1;
USHORT B2 : 1;
USHORT B1 : 1;
USHORT xMSB : 1;
} WBITS;
#define PUTBASEBIT68K(base68k, offset, bitvalue) \

74
inc/lispver2.h Normal file
View File

@@ -0,0 +1,74 @@
#ifndef LISPVER2_H
#define LISPVER2_H 1
/* $Id: lispver2.h,v 1.2 1999/01/03 02:06:09 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/* non-DOS version of LispVersionToUnixVersion */
#define LispVersionToUnixVersion(pathname) do { \
\
char *lv_cp; \
char *lv_vp; \
unsigned lv_ver; \
char lv_ver_buf[VERSIONLEN]; \
\
lv_cp = pathname; \
lv_vp = NULL; \
while (*lv_cp) { \
switch (*lv_cp) { \
\
case ';': \
lv_vp = lv_cp; \
lv_cp++; \
break; \
\
case '\'': \
if (*(lv_cp + 1) != 0) lv_cp += 2; \
else lv_cp++; \
break; \
\
default: \
lv_cp++; \
break; \
} \
} \
\
if (lv_vp != NULL) { \
/* \
* A semicolon which is not quoted has been found. \
*/ \
if (*(lv_vp + 1) == 0) { \
/* \
* The empty version field. \
* This is regarded as a versionless file. \
*/ \
*lv_vp = 0; \
} else { \
NumericStringP((lv_vp + 1), YES, NO); \
YES: \
/* \
* Convert the remaining field to digit. \
*/ \
lv_ver = strtoul(lv_vp + 1, (char **)NULL, 10); \
if (lv_ver == 0) { \
/* versionless */ \
*lv_vp = 0; \
} else { \
sprintf(lv_ver_buf, ".~%u~", lv_ver); \
*lv_vp = 0; \
strcat(pathname, lv_ver_buf); \
} \
goto CONT; \
\
NO: \
strcpy(lv_ver_buf, lv_vp + 1); \
strcat(lv_ver_buf, "~"); \
*lv_vp++ = '.'; \
*lv_vp++ = '~'; \
*lv_vp = 0; \
strcat(pathname, lv_ver_buf); \
CONT: \
lv_vp--; /* Just for label */ \
} \
} \
} while (0)
#endif /* LISPVER2_H */

View File

@@ -12,7 +12,6 @@
#include <limits.h> /* for NAME_MAX */
#include <dirent.h> /* for MAXNAMLEN */
#include "lispemul.h" /* for DLword */
#include "commondefs.h" /* for error */
#define FDEV_PAGE_SIZE 512 /* 1 page == 512 byte */
@@ -35,8 +34,6 @@
#define PROTECTION (S_POSITIVE | 6)
#define EOL (S_POSITIVE | 7)
#define ALL (S_POSITIVE | 8)
#define INODE_LO (S_POSITIVE | 9)
#define INODE_HI (S_POSITIVE | 10)
#define ToLispTime(x) ((int)(x) + 29969152)
/* For getfileinfo. For WDATE&RDATE */
@@ -47,17 +44,18 @@
/* For getfileinfo. For WDATE&RDATE */
/* 29969152 == (timer.c)LISP_UNIX_TIME_DIFF */
/*
* Copy memory between native memory locations accounting for potential
* byte-swapping necessary when then destination is within Lisp memory space
* though the provided destination pointer is a native address within the
* Lisp space.
*/
#define MemCpyToLispFromNative(lispbuf, cbuf, len) \
do { \
char *lf_sptr = (cbuf); \
char *lf_dptr = (lispbuf); \
for (size_t lf_i = 0; lf_i < (len); lf_i++) *BYTEPTR(lf_dptr++) = *lf_sptr++; \
#define StrNCpyFromCToLisp(lispbuf, cbuf ,len) do { \
char *lf_sptr = (cbuf); \
char *lf_dptr = (lispbuf); \
for(size_t lf_i=0;lf_i<(len);lf_i++)\
GETBYTE(lf_dptr++) = *lf_sptr++; \
} while (0)
#define StrNCpyFromLispToC(cbuf , lispbuf, len) do { \
char *lf_sptr = (lispbuf); \
char *lf_dptr = (cbuf); \
for(size_t lf_i=0;lf_i<(len);lf_i++)\
*lf_dptr++ = GETBYTE(lf_sptr++); \
} while (0)
#define FGetNum(ptr, place) do { \
@@ -66,10 +64,6 @@
else {return(NIL);}} while (0)
#ifndef min
#define min(a, b) (((a) <= (b))?(a):(b))
#endif /* min */
/************************************************************************/
/* */
/* L i s p S t r i n g T o C S t r i n g */
@@ -85,52 +79,65 @@
/* */
/************************************************************************/
#ifndef BYTESWAP
static void LispStringToCString(LispPTR Lisp, char *C, size_t MaxLen) {
OneDArray *lf_arrayp;
char *lf_base, *lf_dp;
short *lf_sbase;
size_t lf_length;
lf_arrayp = (OneDArray *)NativeAligned4FromLAddr(Lisp);
lf_length = min(MaxLen - 1, lf_arrayp->fillpointer);
lf_dp = (C);
switch (lf_arrayp->typenumber) {
case THIN_CHAR_TYPENUMBER:
lf_base = ((char *)(NativeAligned2FromLAddr(lf_arrayp->base))) + ((int)(lf_arrayp->offset));
strncpy(lf_dp, lf_base, lf_length);
lf_dp[lf_length] = '\0';
break;
case FAT_CHAR_TYPENUMBER:
lf_sbase = ((short *)(NativeAligned2FromLAddr(lf_arrayp->base))) + ((int)(lf_arrayp->offset));
for (size_t lf_i = 0; lf_i < (lf_length); lf_i++) *lf_dp++ = (char)(*lf_sbase++);
*lf_dp = '\0';
break;
default: error("LispStringToCString: Not a character array.\n");
}
}
#define LispStringToCString(Lisp, C, MaxLen) \
do { \
OneDArray *lf_arrayp; \
char *lf_base, *lf_dp; \
short *lf_sbase; \
size_t lf_length; \
lf_arrayp = (OneDArray *)NativeAligned4FromLAddr(Lisp); \
lf_length = min(MaxLen, lf_arrayp->fillpointer); \
switch(lf_arrayp->typenumber) \
{ \
case THIN_CHAR_TYPENUMBER: \
lf_base = ((char *)(NativeAligned2FromLAddr(lf_arrayp->base))) \
+ ((int)(lf_arrayp->offset)); \
strncpy(C, lf_base, lf_length); \
(C)[lf_length] = '\0'; \
break; \
\
case FAT_CHAR_TYPENUMBER: \
lf_sbase = ((short *)(NativeAligned2FromLAddr(lf_arrayp->base))) \
+ ((int)(lf_arrayp->offset)); \
lf_dp = C; \
for(size_t lf_i=0;lf_i<(lf_length);lf_i++) \
*lf_dp++ = (char)(*lf_sbase++); \
*lf_dp = '\0'; \
break; \
default: \
error("LispStringToCString: Not a character array.\n"); \
} \
} while (0)
#else /* BYTESWAP == T CHANGED-BY-TAKE */
static void LispStringToCString(LispPTR Lisp, char *C, size_t MaxLen) {
OneDArray *lf_arrayp;
char *lf_base, *lf_dp;
short *lf_sbase;
size_t lf_length;
lf_arrayp = (OneDArray *)(NativeAligned4FromLAddr(Lisp));
lf_length = min(MaxLen - 1, lf_arrayp->fillpointer);
lf_dp = (C);
switch (lf_arrayp->typenumber) {
case THIN_CHAR_TYPENUMBER:
lf_base = ((char *)(NativeAligned2FromLAddr(lf_arrayp->base))) + ((int)(lf_arrayp->offset));
for (size_t lf_i = 0; lf_i < lf_length; lf_i++) *lf_dp++ = GETBYTE(lf_base++);
break;
case FAT_CHAR_TYPENUMBER:
lf_sbase = ((short *)(NativeAligned2FromLAddr(lf_arrayp->base))) + ((int)(lf_arrayp->offset));
for (size_t lf_ii = 0; lf_ii < lf_length; lf_ii++) *lf_dp++ = (char)(GETWORD(lf_sbase++));
break;
default: error("LispStringToCString: Not a character array.\n");
}
*lf_dp = '\0';
}
#define LispStringToCString(Lisp, C, MaxLen) \
do { \
OneDArray *lf_arrayp; \
char *lf_base, *lf_dp; \
short *lf_sbase; \
size_t lf_length; \
lf_arrayp = (OneDArray *)(NativeAligned4FromLAddr(Lisp)); \
lf_length = min(MaxLen, lf_arrayp->fillpointer); \
switch(lf_arrayp->typenumber) \
{ \
case THIN_CHAR_TYPENUMBER: \
lf_base = ((char *)(NativeAligned2FromLAddr(lf_arrayp->base))) \
+ ((int)(lf_arrayp->offset)); \
StrNCpyFromLispToC(C , lf_base , lf_length ); \
(C)[lf_length] = '\0'; \
break; \
\
case FAT_CHAR_TYPENUMBER: \
lf_sbase = ((short *)(NativeAligned2FromLAddr(lf_arrayp->base))) \
+ ((int)(lf_arrayp->offset)); \
lf_dp = C; \
for(size_t lf_ii=0;lf_ii<(lf_length);lf_ii++,lf_sbase++) \
*lf_dp++ = (char)(GETWORD(lf_sbase)); \
*lf_dp = '\0'; \
break; \
default: \
error("LispStringToCString: Not a character array.\n"); \
} \
} while (0)
#endif /* BYTESWAP */
@@ -182,6 +189,10 @@ do { \
(cstringp) = (char *)(NativeAligned2FromLAddr(((OneDArray *)lf_naddress)->base)); \
} while (0)
#ifndef min
#define min(a, b) (((a) <= (b))?(a):(b))
#endif /* min */
#define LispNumToCInt(Lisp) \
( (((Lisp) & SEGMASK) == S_POSITIVE) ? ((Lisp) & 0xFFFF) : \
(((Lisp) & SEGMASK) == S_NEGATIVE) ? ((Lisp) | 0xFFFF0000) : \
@@ -288,7 +299,7 @@ do { \
* Argument: char *pathname
* Xerox Lisp syntax pathname.
*
* Value: On success returns 1, otherwise 0.
* Value: If succeed, returns 1, otherwise 0.
*
* Side Effect: The version part of pathname is destructively modified.
*
@@ -301,7 +312,7 @@ do { \
* code.
* This macro should be called at the top of the routines which accept the
* file name from lisp before converting it into UNIX file name, because
* locating the version part, the information about quoted characters are needed.
* locating the version part, the informations about quoted characters are needed.
* They might be lost in the course of the conversion.
*
*/
@@ -312,15 +323,183 @@ do { \
/* * * * * it gave "Too many characters in a character constant" errors! */
#include "lispver1.h"
#else /* DOS */
/* NON-DOS version is inline in ufs.c */
/* NON-DOS version of the macro LispVersionToUnixVersion */
#include "lispver2.h"
#endif /* DOS */
#define VERSIONLEN 24
/*
* Name: UnixVersionToLispVersion
*
* Argument: char *pathname
* UNIX syntax pathname.
* int vlessp
* If 0, versionless file is converted to version 1.
* Otherwise, remains as versionless.
*
* Value: If succeed, returns 1, otherwise 0.
*
* Side Effect: The version part of pathname is destructively modified.
*
* Description:
*
* Destructively modify the version part of pathname which is following the
* UNIX file naming convention to Xerox Lisp one.
* This macro should be called, in the routines which convert the UNIX pathname
* to Lisp one, just before it returns the result to Lisp, because converting
* version field will append a semicolon and it might make the routine be
* confused.
* The file which has not a valid version field, that is ".~##~" form, is
* dealt with as version 1.
*/
#define UnixVersionToLispVersion(pathname, vlessp) do { \
\
char *start; \
char *end; \
char *lf_cp; \
int ver_no; \
size_t len; \
char ver_buf[VERSIONLEN]; \
\
if ((start = strchr(pathname, '~')) != NULL) { \
/* First of all, find the version field in pathname. */ \
end = start; \
lf_cp = start + 1; \
while (*lf_cp) { \
if (*lf_cp == '~') { \
start = end; \
end = lf_cp; \
lf_cp++; \
} else { \
lf_cp++; \
} \
} \
\
if (start != end && *(start - 1) == '.' && end == (lf_cp - 1)) { \
/* \
* pathname ends in the form ".~###~". But we \
* check ### is a valid number or not. \
*/ \
len = (end - start) - 1; \
strncpy(ver_buf, start + 1, len); \
ver_buf[len] = '\0'; \
NumericStringP(ver_buf, YES, NO); \
YES: \
*(start - 1) = ';'; \
*start = '\0'; \
*end = '\0'; \
/* call strtoul() to eliminate leading 0s. */ \
ver_no = strtoul(start + 1, (char **)NULL, 10); \
sprintf(ver_buf, "%u", ver_no); \
strcat(pathname, ver_buf); \
goto CONT; \
\
NO: \
/* Dealt with as version 1 unless vlessp */ \
if (!(vlessp)) strcat(pathname, ";1"); \
CONT: \
lf_cp--; /* Just for label */ \
} else { \
/* Dealt with as version 1 unless vlessp. */ \
if (!(vlessp)) strcat(pathname, ";1"); \
} \
} else { \
/* Dealt with as version 1 unless vlessp. */ \
if (!(vlessp)) strcat(pathname, ";1"); \
} \
} while (0)
/*
* Name: ConcDirAndName
*
* Argument: char *dir The name of the directory.
* char *name The name of a file.
* char *fname The place where the full file name should be
* stored.
* Value: N/A
*
* Side Effect: fname is replaced with the full file name.
*
* Description:
*
* Concatenate the directory name and root file name. Checks if dir contains
* the trail directory delimiter or not.
*
*/
#define ConcDirAndName(dir, name, fname) do { \
\
char *lf_cp1, *lf_cp2; \
\
lf_cp1 = dir; \
lf_cp2 = dir; \
\
while (*lf_cp2 != '\0') { \
switch (*lf_cp2) { \
\
case '/': \
lf_cp1 = lf_cp2; \
lf_cp2++; \
break; \
\
default: \
lf_cp2++; \
break; \
} \
} \
if (lf_cp1 == (lf_cp2 - 1)) { \
if (lf_cp1 == (dir)) { \
/* dir is a root directory. */ \
strcpy(fname, "/"); \
strcat(fname, name); \
} else { \
/* The trail directory is included. */ \
strcpy(fname, dir); \
strcat(fname, name); \
} \
} else { \
/* The trail directory is not included */ \
strcpy(fname, dir); \
strcat(fname, "/"); \
strcat(fname, name); \
} \
} while (0)
/*
* Name: ConcNameAndVersion
*
* Argument: char *name The root file name.
* char *ver The file version.
* char *rname The place where the concatenated file name will be
* stored.
* Value: N/A
*
* Side Effect: rname is replaced with the concatenated file name.
*
* Description:
*
* Concatenate the root file name and its version in UNIX format.
*
*/
#define ConcNameAndVersion(name, ver, rname) do { \
if (*(ver) != '\0') { \
strcpy(rname, name); \
strcat(rname, ".~"); \
strcat(rname, ver); \
strcat(rname, "~"); \
} else { \
strcpy(rname, name); \
} \
} while (0)
#define VERSIONLEN 16
#define MAXVERSION 999999999
#define LASTVERSIONARRAY ((unsigned) -1)
#define VERSIONARRAYCHUNKLENGTH 200
#define VERSIONARRAYMAXLENGTH 2000
#define VERSIONARRAYLENGTH 200
#define NoFileP(varray) \
(((varray)->version_no == LASTVERSIONARRAY)? 1 : 0)

View File

@@ -699,111 +699,4 @@ typedef
/* low-order 12 bits first. */
} BIGNUM;
/* Ethernet records */
#ifndef BYTESWAP
typedef struct {
DLword DLLOCALHOST0;
DLword DLLOCALHOST1;
DLword DLLOCALHOST2;
DLword DLFIRSTICB;
DLword DLINPUTMASK;
DLword DLFIRSTOCB;
DLword DLOUTPUTMASK;
DLword DLMISSEDPACKETS;
DLword DLLASTICB;
DLword DLLASTOCB;
} DLETHERCSB;
typedef struct{
DLword DLIOCBLENGTH;
DLword DLIOCBBUFFERLO;
DLword DLIOCBBUFFERHI;
DLword DLRETRANSMISSIONMASK;
DLword DLIOCBBYTESUSED;
DLword DLIOCBSTATUS;
DLword DLNEXTIOCB;
DLword DLFOROUTPUTUSE;
} DLETHERIOCB;
typedef struct {
unsigned int NETTYPE : 8;
unsigned int NDBNEXT : 24;
unsigned int NDBPUPNET : 8;
unsigned int NDBNSNET : 24;
unsigned int NDBTASK : 8;
unsigned int NDBBROADCASTP : 24;
unsigned int NDBPUPHOST : 8;
unsigned int NDBTRANSMITTER : 24;
unsigned int nil1: 8;
unsigned int NDBENCAPSULATOR : 24;
unsigned int NDBIQLENGTH : 8; /* DATATYPE */
unsigned int NDBCSB : 24; /* DATATYPE */
LispPTR NDBIQ;
LispPTR NDBTQ;
LispPTR NDBTRANSLATIONS;
LispPTR NDBETHERFLUSHER;
LispPTR NDBWATCHER;
LispPTR NDBCANHEARSELF;
LispPTR NDBIPNET;
LispPTR NDBIPHOST;
DLword NDBPUPTYPE;
DLword nil2;
LispPTR nil3;
} NDB;
#else
/***********************************************/
/* Byte-swapped definitions, for e.g., 80386's */
/***********************************************/
typedef struct {
DLword DLLOCALHOST1;
DLword DLLOCALHOST0;
DLword DLFIRSTICB;
DLword DLLOCALHOST2;
DLword DLFIRSTOCB;
DLword DLINPUTMASK;
DLword DLMISSEDPACKETS;
DLword DLOUTPUTMASK;
DLword DLLASTOCB;
DLword DLLASTICB;
} DLETHERCSB;
typedef struct{
DLword DLIOCBBUFFERLO;
DLword DLIOCBLENGTH;
DLword DLRETRANSMISSIONMASK;
DLword DLIOCBBUFFERHI;
DLword DLIOCBSTATUS;
DLword DLIOCBBYTESUSED;
DLword DLFOROUTPUTUSE;
DLword DLNEXTIOCB;
} DLETHERIOCB;
typedef struct {
unsigned int NDBNEXT : 24;
unsigned int NETTYPE : 8;
unsigned int NDBNSNET : 24;
unsigned int NDBPUPNET : 8;
unsigned int NDBBROADCASTP : 24;
unsigned int NDBTASK : 8;
unsigned int NDBTRANSMITTER : 24;
unsigned int NDBPUPHOST : 8;
unsigned int NDBENCAPSULATOR : 24;
unsigned int nil1: 8;
unsigned int NDBCSB : 24; /* DATATYPE */
unsigned int NDBIQLENGTH : 8; /* DATATYPE */
LispPTR NDBIQ;
LispPTR NDBTQ;
LispPTR NDBTRANSLATIONS;
LispPTR NDBETHERFLUSHER;
LispPTR NDBWATCHER;
LispPTR NDBCANHEARSELF;
LispPTR NDBIPNET;
LispPTR NDBIPHOST;
DLword nil2;
DLword NDBPUPTYPE;
LispPTR nil3;
} NDB;
#endif /* BYTESWAP */
#endif /* LSPTYPES_H */

View File

@@ -38,23 +38,13 @@
# define MAIKO_OS_DETECTED 1
#endif
#if defined(__linux__) && !defined(__wsl1__)
#ifdef __linux__
# define MAIKO_OS_LINUX 1
# define MAIKO_OS_NAME "Linux"
# define MAIKO_OS_UNIX_LIKE 1
# define MAIKO_OS_DETECTED 1
#endif
#if defined(__linux__) && defined(__wsl1__)
# define MAIKO_OS_LINUX 1
# define MAIKO_OS_WSL1 1
# define MAIKO_OS_NAME "Windows System for Linux v1"
# define MAIKO_OS_UNIX_LIKE 1
# define MAIKO_EMULATE_TIMER_INTERRUPTS 1
# define MAIKO_EMULATE_ASYNC_INTERRUPTS 1
# define MAIKO_OS_DETECTED 1
#endif
#ifdef __NetBSD__
# define MAIKO_OS_NETBSD 1
# define MAIKO_OS_NAME "NetBSD"

View File

@@ -20,7 +20,6 @@
#include "version.h" // for BIGVM
#include "adr68k.h" // for NativeAligned2FromLAddr, NativeAligned4FromLAddr, LAddrFromNative
#include "arith.h" // for N_ARITH_SWITCH, N_GETNUMBER
#include "gchtfinddefs.h"// for htfind, rec_htfind, from gcdata.h macros
#include "gcdata.h" // for ADDREF, DELREF
#include "lispemul.h" // for ERROR_EXIT, LispPTR, DLword, SEGMASK, state
#include "lispmap.h" // for S_POSITIVE, S_CHARACTER, S_NEGATIVE

View File

@@ -1,5 +1,5 @@
#ifndef OSMSGPRINT_H
#define OSMSGPRINT_H 1
#ifndef OSMSG_H
#define OSMSG_H 1
/* $Id: osmsg.h,v 1.2 1999/01/03 02:06:20 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
@@ -23,4 +23,4 @@
print_exp; \
} while (0)
#endif /* OSMSGPRINT_H */
#endif /* OSMSG_H */

View File

@@ -1,8 +0,0 @@
#ifndef RAWCOLORDEFS_H
#define RAWCOLORDEFS_H 1
#include "lispemul.h" /* for LispPTR */
void C_slowbltchar(LispPTR *args);
LispPTR Colorize_Bitmap(LispPTR args[]);
void Draw_8BppColorLine(LispPTR *args);
void Uncolorize_Bitmap(LispPTR args[]);
#endif

View File

@@ -1,12 +1,12 @@
#ifndef RETMACRO_H
#define RETMACRO_H 1
#ifndef RETURN_H
#define RETURN_H 1
/* $Id: return.h,v 1.2 1999/01/03 02:06:22 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/**************************************************************/
/*
File Name : retmacro.h (was return.h)
File Name : return.h
Desc. : Macros for return,contextsw
Written by : Takeshi Shimizu
@@ -111,4 +111,4 @@
S_CHECK( EndSTKP > CurrentStackPTR, \
"End of stack isn't beyond current stk pointer."); \
} while (0)
#endif /* RETMACRO_H */
#endif /* RETURN_H */

View File

@@ -79,22 +79,22 @@ typedef struct fnhead {
} FNHEAD;
typedef struct frameex1 {
DLword flags : 3;
DLword fast : 1;
DLword nil2 : 1; /* not used, prev: This frame treats N-func */
DLword incall : 1;
DLword validnametable : 1;
unsigned short flags : 3;
unsigned short fast : 1;
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned short incall : 1;
unsigned short validnametable : 1;
/* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */
DLword nopush : 1;
DLword usecount : 8;
unsigned short nopush : 1;
unsigned short usecount : 8;
DLword alink; /* alink pointer (Low addr) */
#ifdef BIGVM
LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */
#else
DLword lofnheader; /* pointer to FunctionHeader (Low addr) */
DLword hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
DLword hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
unsigned short hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
unsigned short hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
#endif /* BIGVM */
DLword nextblock; /* pointer to FreeStackBlock */
DLword pc; /* Program counter */
@@ -102,23 +102,23 @@ typedef struct frameex1 {
LispPTR nametable; /* ptr to NameTable of this FrameEx (Hi2 addr) */
#else
DLword lonametable; /* ptr to NameTable of this FrameEx (Low addr) */
DLword hi1nametable : 8; /* ptr to NameTable of this FrameEx (Hi1 addr) */
DLword hi2nametable : 8; /* ptr to NameTable of this FrameEx (Hi2 addr) */
unsigned short hi1nametable : 8; /* ptr to NameTable of this FrameEx (Hi1 addr) */
unsigned short hi2nametable : 8; /* ptr to NameTable of this FrameEx (Hi2 addr) */
#endif /* BIGVM */
DLword blink; /* blink pointer (Low addr) */
DLword clink; /* clink pointer (Low addr) */
} FX;
typedef struct frameex2 {
DLword flags : 3;
DLword fast : 1;
DLword nil2 : 1; /* not used, prev: This frame treats N-func */
DLword incall : 1;
DLword validnametable : 1;
unsigned short flags : 3;
unsigned short fast : 1;
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned short incall : 1;
unsigned short validnametable : 1;
/* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */
DLword nopush : 1;
DLword usecount : 8;
unsigned short nopush : 1;
unsigned short usecount : 8;
DLword alink; /* alink pointer (Low addr) */
LispPTR fnheader; /* pointer to FunctionHeader */
DLword nextblock; /* pointer to FreeStackBlock */
@@ -135,19 +135,19 @@ typedef struct fxblock {
} FXBLOCK;
typedef struct basic_frame {
DLword flags : 3;
DLword nil : 3;
DLword residual : 1;
DLword padding : 1;
DLword usecnt : 8;
unsigned short flags : 3;
unsigned short nil : 3;
unsigned short residual : 1;
unsigned short padding : 1;
unsigned short usecnt : 8;
DLword ivar; /* stk offset of IVARs for this frame ?? */
} Bframe;
typedef struct stkword {
DLword flags : 3;
DLword nil : 5;
DLword usecount : 8;
unsigned short flags : 3;
unsigned short nil : 5;
unsigned short usecount : 8;
} StackWord;
typedef struct stack_block {
@@ -185,33 +185,33 @@ typedef struct fnhead {
unsigned nil3 : 2; /* not used */
unsigned nil2 : 2; /* not used */
#endif /* BIGVM */
DLword argtype : 2; /* ?? */
DLword byteswapped : 1; /* code was reswapped. */
DLword nil4 : 1; /* not used, prev: native translated? */
DLword fvaroffset : 8;
unsigned short argtype : 2; /* ?? */
unsigned short byteswapped : 1; /* code was reswapped. */
unsigned short nil4 : 1; /* not used, prev: native translated? */
unsigned short fvaroffset : 8;
/* DLword offset from head of NameTable */
DLword nlocals : 8; /* ?? */
unsigned short nlocals : 8; /* ?? */
DLword ntsize; /* size of NameTable */
/* NameTable of variable length is following with this structure. */
} FNHEAD;
typedef struct frameex1 {
DLword alink; /* alink pointer (Low addr) */
DLword usecount : 8;
DLword nopush : 1;
DLword validnametable : 1;
unsigned short usecount : 8;
unsigned short nopush : 1;
unsigned short validnametable : 1;
/* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */
DLword incall : 1;
DLword nil2 : 1; /* not used, prev: This frame treats N-func */
DLword fast : 1;
DLword flags : 3; /* hi word */
unsigned short incall : 1;
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned short fast : 1;
unsigned short flags : 3; /* hi word */
#ifdef BIGVM
LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */
#else
DLword hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
DLword hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
unsigned short hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
unsigned short hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
DLword lofnheader; /* pointer to FunctionHeader (Low addr) */
#endif /* BIGVM */
@@ -221,8 +221,8 @@ typedef struct frameex1 {
#ifdef BIGVM
LispPTR nametable; /* pointer to NameTable of this FX (Hi2 addr) */
#else
DLword hi2nametable : 8; /* pointer to NameTable of this FX (Hi2 addr) */
DLword hi1nametable : 8; /* pointer to NameTable of this FX (Hi1 addr) */
unsigned short hi2nametable : 8; /* pointer to NameTable of this FX (Hi2 addr) */
unsigned short hi1nametable : 8; /* pointer to NameTable of this FX (Hi1 addr) */
DLword lonametable; /* pointer to NameTable of this FX (Low addr) */
#endif /* BIGVM */
@@ -232,15 +232,15 @@ typedef struct frameex1 {
typedef struct frameex2 {
DLword alink; /* alink pointer (Low addr) */
DLword usecount : 8;
DLword nopush : 1;
DLword validnametable : 1;
unsigned short usecount : 8;
unsigned short nopush : 1;
unsigned short validnametable : 1;
/* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */
DLword incall : 1;
DLword nil2 : 1; /* not used, prev: This frame treats N-func */
DLword fast : 1;
DLword flags : 3;
unsigned short incall : 1;
unsigned short nil2 : 1; /* not used, prev: This frame treats N-func */
unsigned short fast : 1;
unsigned short flags : 3;
LispPTR fnheader; /* pointer to FunctionHeader (swapped) */
@@ -261,18 +261,18 @@ typedef struct fxblock {
typedef struct basic_frame {
DLword ivar;
DLword usecnt : 8;
DLword padding : 1;
DLword residual : 1;
DLword nil : 3;
DLword flags : 3;
unsigned short usecnt : 8;
unsigned short padding : 1;
unsigned short residual : 1;
unsigned short nil : 3;
unsigned short flags : 3;
} Bframe;
typedef struct stkword {
DLword usecount : 8;
DLword nil : 5;
DLword flags : 3;
USHORT usecount : 8;
USHORT nil : 5;
USHORT flags : 3;
} StackWord;
typedef struct stack_block {

View File

@@ -37,13 +37,10 @@ extern unsigned int TIMEOUT_TIME;
alarm(0); \
} while (0)
/* After any use of S_TOUT one should call alarm(0) to cancel
* the last pending alarm.
*/
#define S_TOUT(exp) \
alarm(TIMEOUT_TIME), \
(exp)
alarm(TIMEOUT_TIME), \
(exp), \
alarm(0)
#define ERRSETJMP(rval) \
do { \

67
inc/tty.h Normal file
View File

@@ -0,0 +1,67 @@
#ifndef TTY_H
#define TTY_H 1
/* $Id: tty.h,v 1.2 1999/01/03 02:06:29 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-96 Venue. All Rights Reserved. */
/* Manufactured in the United States of America. */
/* */
/************************************************************************/
#include "lispemul.h" /* for DLword */
/*
TTY Command
*/
#define TTY_GET_STATUS 33280>>8
#define TTY_ON 33536>>8
#define TTY_OFF 33792>>8
#define TTY_BREAK_ON 34304>>8
#define TTY_BREAK_OFF 34560>>8
#define PUT_CHAR 128
#define ABORT_PUT 133
#define SET_PARAM 129
#define SET_DSR 33025
#define SET_CTS 33026
#define SET_CHAR_LENGTH 33028
#define SET_PARITY 33032
#define SET_STOP_BITS 33040
#define SET_BAUD_RATE 33056
#define SET_ALL_PARAMETERS 33087
typedef struct {
unsigned command : 8;
unsigned outdata : 8;
} DLTTY_OUT_COMMAND;
typedef struct {
unsigned on_off : 4;
unsigned line_speed : 4;
unsigned stop_bits : 2;
unsigned parity : 2;
unsigned char_length : 2;
unsigned clear_to_send : 1;
unsigned data_set_ready : 1;
DLword notify_mask;
} DLTTY_OUT_CSB;
typedef struct {
unsigned state : 1;
unsigned nil1 : 7;
unsigned success : 1;
unsigned break_detected : 1;
unsigned framing_error : 1;
unsigned data_lost : 1;
unsigned parity_error : 1;
unsigned nil2 : 2;
unsigned not_ready : 1;
char in_data;
unsigned data_terminal_ready : 1;
unsigned nil3 : 4;
unsigned request_to_send : 1;
unsigned rx_ready : 1;
unsigned tx_ready : 1;
} DLTTY_IN_CSB;
#endif /* TTY_H */

View File

@@ -5,14 +5,15 @@ LispPTR UFS_getfilename(LispPTR *args);
LispPTR UFS_deletefile(LispPTR *args);
LispPTR UFS_renamefile(LispPTR *args);
LispPTR UFS_directorynamep(LispPTR *args);
void UnixVersionToLispVersion(char *pathname, size_t pathsize, int vlessp);
void LispVersionToUnixVersion(char *pathname, size_t pathsize);
#ifdef DOS
int unixpathname(char *src, char *dst, int dstlen, int versionp, int genp, char *drive, int *extlenptr, char *rawname);
int unixpathname(char *src, char *dst, int versionp, int genp, char *drive, int *extlenptr, char *rawname);
#else
int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp);
int unixpathname(char *src, char *dst, int versionp, int genp);
#endif
int lisppathname(char *fullname, char *lispname, size_t lispnamesize, int dirp, int versionp);
int lisppathname(char *fullname, char *lispname, int dirp, int versionp);
int quote_fname(char *file);
int quote_fname_ufs(char *file);
int quote_dname(char *dir);
#ifdef DOS
init_host_filesystem(void);
exit_host_filesystem(void);

View File

@@ -4,7 +4,7 @@
#include "stack.h" /* for FX */
#include "lispemul.h" /* for LispPTR */
#define URMAXFXNUM 4096
#define URMAXFXNUM 2000
#define URMAXCOMM 512
#define URSCAN_ALINK 0
#define URSCAN_CLINK 1

View File

@@ -6,5 +6,5 @@ LispPTR unix_username(LispPTR *args);
LispPTR unix_getparm(LispPTR *args);
LispPTR unix_getenv(LispPTR *args);
LispPTR unix_fullname(LispPTR *args);
LispPTR suspend_lisp(void);
LispPTR suspend_lisp(LispPTR *args);
#endif

View File

@@ -227,6 +227,9 @@ typedef unsigned char u_char;
typedef unsigned long u_int;
typedef unsigned short u_short;
#undef UNALIGNED_FETCH_OK
typedef unsigned USHORT;
#else
typedef unsigned short USHORT;
#endif /* DOS */
/****************************************************************/
@@ -234,14 +237,6 @@ typedef unsigned short u_short;
/* --Start of system-specific flags */
/* */
/****************************************************************/
#ifdef MAIKO_OS_MACOS
/* macOS does not follow the POSIX standard for the names of the stat
fields that allow access to the nanosecond resolution times
*/
#define st_atim st_atimespec
#define st_mtim st_mtimespec
#define st_ctim st_ctimespec
#endif
/****************************************************************/
/* End of system-specific flag settings */

25
inc/vmemsave.h Normal file
View File

@@ -0,0 +1,25 @@
#ifndef VMEMSAVE_H
#define VMEMSAVE_H 1
/* $Id: vmemsave.h,v 1.2 1999/01/03 02:06:29 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-96 Venue. All Rights Reserved. */
/* Manufactured in the United States of America. */
/* */
/************************************************************************/
/*
File Name : vmemsave.h
DEfinition for vmemsave
*/
#define FP_IFPAGE 512 /* IFPAGE address in sysoutfile by Byte */
#define DOMINOPAGES 301 /* skip dominopages in fptovp */
#define SKIPPAGES 301 /* save first filepage */
#define SKIP_DOMINOPAGES 153600 /* Byte size in sysoutfile for dominocode */
#define SAVE_IFPAGE 223 /* Virtual address for IFPAGES's buffer page. This value is \EMUSWAPBUFFERS in lisp. */
#endif /* VMEMSAVE_H */

View File

@@ -1,7 +1,8 @@
#ifndef VMEMSAVEDEFS_H
#define VMEMSAVEDEFS_H 1
#include "lispemul.h" /* for LispPTR */
#include "lispemul.h" /* for LispPTR, DLword */
int lispstringP(LispPTR Lisp);
LispPTR vmem_save(char *sysout_file_name);
LispPTR vmem_save0(LispPTR *args);
void lisp_finish(int exit_status);
void lisp_finish(void);
#endif

18
inc/xscroll.h Normal file
View File

@@ -0,0 +1,18 @@
#ifndef XSCROLL_H
#define XSCROLL_H 1
/************************************************************************/
/* */
/* xscroll.h */
/* */
/* Scrolling functions implemented in xscroll.c */
/* */
/************************************************************************/
#include "devif.h" /* for DspInterface */
void Scroll(DspInterface dsp, int newX, int newY);
void JumpScrollVer(DspInterface dsp, int y);
void JumpScrollHor(DspInterface dsp, int x);
void ScrollLeft(DspInterface dsp);
void ScrollRight(DspInterface dsp);
void ScrollUp(DspInterface dsp);
void ScrollDown(DspInterface dsp);
#endif /* XSCROLL_H */

View File

@@ -47,8 +47,9 @@
#include "address.h"
#include "arith.h"
#include "stack.h"
#include "retmacro.h"
#include "return.h"
#include "cell.h"
#include "gcdata.h"
#include "bbtsubdefs.h"
#include "car-cdrdefs.h"
@@ -60,7 +61,7 @@
#include "returndefs.h"
#include "bb.h"
#include "bbtmacro.h"
#include "bitblt.h"
#include "pilotbbt.h"
#include "dspdata.h"
#include "display.h"

View File

@@ -25,7 +25,7 @@
#include "pilotbbt.h"
#include "display.h"
#include "bbtmacro.h"
#include "bitblt.h"
#include "bb.h"
#include "bitbltdefs.h"
@@ -126,7 +126,7 @@ LispPTR N_OP_pilotbitblt(LispPTR pilot_bt_tbl, LispPTR tos)
if (displayflg) (currentdsp->mouse_visible)(IOPage->dlmousex, IOPage->dlmousey);
#endif /* SUNDISPLAY / DOS */
#if defined(XWINDOW) || defined(SDL)
#ifdef XWINDOW
flush_display_lineregion(dx, dstbase, w, h);
#endif /* XWINDOW */

View File

@@ -38,7 +38,6 @@
#include "conspagedefs.h" // for next_conspage
#include "emlglob.h"
#include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for ConsCell, LispPTR, DLword, NIL_PTR, state
#include "lspglob.h" // for ListpDTD
#include "lsptypes.h" // for Listp, dtd

View File

@@ -43,6 +43,7 @@
#include "arith.h"
#include "timeout.h"
#include "locfile.h"
#include "osmsg.h"
#include "dbprint.h"
#include "chardevdefs.h"

View File

@@ -23,7 +23,6 @@
#include "commondefs.h" // for error
#include "conspagedefs.h" // for N_OP_cons, cons, next_conspage
#include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for ConsCell, DLword, LispPTR, NIL_PTR, DLWORD...
#include "lspglob.h"
#include "lsptypes.h" // for dtd, Listp, TYPE_LISTP

View File

@@ -589,8 +589,8 @@ void bt1(FX *startFX) {
BT_morep;
while ((fnobj->framename != ATOM_T) && (fx->alink != 11)) {
if (fnum > URMAXFXNUM - 1) {
/* Internal buf overflow, too many stack frames */
printf("***There are more than %d stack frames.\n", URMAXFXNUM);
/* Internal buf overflow,more than 100 stacks */
printf("***There are more than 100 stack frames.\n");
printf(
"If you want to continue, Uraid will smash its internal table for FX pointer. Do you "
"accept?(Y or N)\n");

654
src/dir.c

File diff suppressed because it is too large Load Diff

View File

@@ -20,7 +20,7 @@
#include <stddef.h> // for ptrdiff_t
#include <stdlib.h> // for abs
#include "adr68k.h" // for NativeAligned2FromLAddr
#include "bbtmacro.h" // for MOUSEXR, MOUSEYH
#include "bitblt.h" // for MOUSEXR, MOUSEYH
#include "display.h" // for DISPLAYBUFFER, DisplayRegion68k, in_display...
#include "drawdefs.h" // for N_OP_drawline
#include "emlglob.h"

1130
src/dsk.c

File diff suppressed because it is too large Load Diff

View File

@@ -40,12 +40,7 @@ extern int Mouse_Included;
****************************************************/
void DSP_dspbout(LispPTR *args) /* args[0] : charcode */
{
int charcode = (args[0] & 0x7F);
/* Interlisp-D uses CR as EOL which isn't useful here */
putc((charcode == '\r') ? '\n' : charcode, BCPLDISPLAY);
fflush(BCPLDISPLAY);
}
{ putc((args[0] & 0xFFFF) & 0x7f, BCPLDISPLAY); }
/****************************************************
*
@@ -57,16 +52,7 @@ void DSP_dspbout(LispPTR *args) /* args[0] : charcode */
extern int DisplayInitialized;
void DSP_showdisplay(LispPTR *args)
{
LispPTR base = args[0]; /* pointer to the display bitmap */
LispPTR rasterwidth = args[1]; /* should be a smallp */
if (base == NIL) {
DisplayInitialized = 0;
} else {
DisplayInitialized = 1;
}
}
{ DisplayInitialized = 1; }
/****************************************************
*

View File

@@ -31,6 +31,7 @@
#include "lsptypes.h"
#include "lspglob.h"
#include "adr68k.h"
#include "ether.h"
#include "dbprint.h"
#include "etherdefs.h"
#include "ifpage.h"
@@ -468,7 +469,7 @@ LispPTR ether_get(LispPTR args[])
log_debug(("ether_get() - begin\n"));
target = (u_char *)NativeAligned2FromLAddr(args[1]);
maxByteCount = BYTESPER_DLWORD * LispIntToCInt(args[0]); /* words to bytes */
maxByteCount = 2 * LispIntToCInt(args[0]); /* words to bytes */
log_debug((" target = %p maxBytecount: %d bytes\n", (void *)target, maxByteCount));
ether_buf = target;
@@ -501,7 +502,7 @@ LispPTR ether_send(LispPTR args[])
log_debug(("ether_send() - begin\n"));
u_char *source = (u_char *)NativeAligned2FromLAddr(args[1]);
int byteCount = BYTESPER_DLWORD * LispIntToCInt(args[0]); /* words to bytes */
int byteCount = 2 * LispIntToCInt(args[0]); /* words to bytes */
log_debug((" source = %p , bytecount: %d bytes\n", (void *)source, byteCount));

View File

@@ -71,6 +71,7 @@
#include "lsptypes.h"
#include "lspglob.h"
#include "adr68k.h"
#include "ether.h"
#include "dbprint.h"
#include "etherdefs.h"
#include "ifpage.h"
@@ -366,7 +367,7 @@ LispPTR ether_get(LispPTR args[])
LispPTR MaxByteCount;
sigset_t signals;
MaxByteCount = BYTERSPER_DLWORD * (0xFFFF & args[0]); /* words to bytes */
MaxByteCount = 2 * (0xFFFF & args[0]); /* words to bytes */
DBPRINT(("Ether Get. "));
@@ -408,7 +409,7 @@ LispPTR ether_send(LispPTR args[])
LispPTR MaxByteCount;
u_char *BufferAddr; /* buffer address pointer(in native address) */
MaxByteCount = BYTESPER_DLWORD * (0xFFFF & args[0]); /* words to bytes */
MaxByteCount = 2 * (0xFFFF & args[0]); /* words to bytes */
BufferAddr = (u_char *)NativeAligned2FromLAddr(args[1]);
if (ether_fd > 0) {

View File

@@ -15,7 +15,6 @@
#include "emlglob.h"
#include "fvardefs.h" // for N_OP_fvar_, N_OP_fvarn, N_OP_stkscan, nati...
#include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispmap.h" // for ATOMS_HI, STK_HI
#include "lspglob.h" // for Stackspace
#include "lsptypes.h" // for DLword, LispPTR, GETBASEWORD, state, FRAME...

View File

@@ -12,7 +12,6 @@
#include <stdio.h> // for printf
#include "emlglob.h"
#include "gcdata.h" // for GCLOOKUPV
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcdefs.h" // for OP_gcref
#include "lspglob.h"
#include "lsptypes.h" // for state, ByteCode, PC, TopOfStack, Get_code_...

View File

@@ -99,35 +99,35 @@ struct hashtable {
LispPTR aref1(LispPTR array, int index) {
LispPTR retval = 0;
LispPTR base;
struct arrayheader *array_np;
short typenumber;
struct arrayheader *actarray;
array_np = (struct arrayheader *)NativeAligned4FromLAddr(array);
if (index >= array_np->totalsize) {
actarray = (struct arrayheader *)NativeAligned4FromLAddr(array);
if (index >= actarray->totalsize) {
printf("Invalid index in GC's AREF1: 0x%x\n", index);
printf(" Array size limit: 0x%x\n", array_np->totalsize);
printf(" Array size limit: 0x%x\n", actarray->totalsize);
printf(" Array ptr: 0x%x\n", array);
printf(" Array native ptr: %p\n", (void *)array_np);
printf("base: 0x%x\n", array_np->base);
printf("offset: 0x%x\n", array_np->offset);
printf("type #: 0x%x\n", array_np->typenumber);
printf("fill ptr: 0x%x\n", array_np->fillpointer);
printf(" Array 68K ptr: %p\n", (void *)actarray);
printf("base: 0x%x\n", actarray->base);
printf("offset: 0x%x\n", actarray->offset);
printf("type #: 0x%x\n", actarray->typenumber);
printf("fill ptr: 0x%x\n", actarray->fillpointer);
error("index out of range in GC's AREF1.");
}
index += array_np->offset;
base = array_np->base;
switch (array_np->typenumber) {
case 3: /* unsigned 8 bits */
retval = (GETBYTE(((char *)NativeAligned2FromLAddr(base)) + index)) & 0x0ff;
retval |= S_POSITIVE;
break;
case 4: /* unsigned 16 bits */
retval = (GETWORD(((DLword *)NativeAligned2FromLAddr(base)) + index)) & 0x0ffff;
retval |= S_POSITIVE;
break;
case 38: /* pointer 32 bits */
retval = (*(((LispPTR *)NativeAligned4FromLAddr(base)) + index));
break;
default: error("Not Implemented in gc's aref1 (other types)");
index += actarray->offset;
typenumber = actarray->typenumber;
base = actarray->base;
switch (typenumber) {
case 3: /* unsigned 8bits */
retval = (GETBYTE(((char *)NativeAligned2FromLAddr(base)) + index)) & 0x0ff;
retval |= S_POSITIVE;
break;
case 4: /* unsigned 16bits */
retval = (GETWORD(((DLword *)NativeAligned2FromLAddr(base)) + index)) & 0x0ffff;
retval |= S_POSITIVE;
break;
case 38: retval = (*(((LispPTR *)NativeAligned4FromLAddr(base)) + index)); break;
default: error("Not Implemented in gc's aref1 (other types)");
}
return (retval);
}

View File

@@ -35,7 +35,6 @@
#include "commondefs.h" // for error
#include "gccodedefs.h" // for code_block_size, reclaimcodeblock
#include "gcdata.h" // for REC_GCLOOKUP, DELREF, ADDREF
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lspglob.h" // for Deleted_Implicit_Hash_Slot_word, UFNTable
#include "lsptypes.h" // for LispPTR, NIL, UFN, Get_code_BYTE, POINTERMASK
#include "stack.h" // for fnhead

View File

@@ -49,8 +49,7 @@
#include "commondefs.h" // for error
#include "gccodedefs.h" // for reclaimcodeblock
#include "gcdata.h" // for DELREF, REC_GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcfinaldefs.h" // for checkarrayblock
#include "gcfinaldefs.h" // for arrayblockmerger, checkarrayblock, deleteblock
#include "lispemul.h" // for LispPTR, NIL, T, POINTERMASK, DLword, ATOM_T
#include "llstkdefs.h" // for decusecount68k
#include "lspglob.h" // for FreeBlockBuckets_word, ArrayMerging_word
@@ -69,16 +68,13 @@
#endif /* NEVER */
#define min(a, b) (((a) > (b)) ? (b) : (a))
#define Trailer(ldatum, datum68) ((ldatum) + DLWORDSPER_CELL * ((datum68)->arlen - ARRAYBLOCKTRAILERCELLS))
#define Trailer(ldatum, datum68) ((ldatum) + 2 * ((datum68)->arlen - ARRAYBLOCKTRAILERCELLS))
#define BucketIndex(n) min(integerlength(n), MAXBUCKETINDEX)
#define FreeBlockChainN(n) ((POINTERMASK & *FreeBlockBuckets_word) + 2 * BucketIndex(n))
/*
* Declaration of buffer must be identical layout to Lisp BUFFER datatype in PMAP.
*/
#ifndef BYTESWAP
#ifdef BIGVM
struct buffer {
struct buf {
LispPTR filepage;
LispPTR vmempage;
LispPTR buffernext;
@@ -89,7 +85,7 @@ struct buffer {
unsigned sysnext : 28;
};
#else
struct buffer {
struct buf {
LispPTR filepage;
LispPTR vmempage;
LispPTR buffernext;
@@ -102,7 +98,7 @@ struct buffer {
#endif /* BIGVM */
#else
#ifdef BIGVM
struct buffer {
struct buf {
LispPTR filepage;
LispPTR vmempage;
LispPTR buffernext;
@@ -113,7 +109,7 @@ struct buffer {
unsigned noreference : 1;
};
#else
struct buffer {
struct buf {
LispPTR filepage;
LispPTR vmempage;
LispPTR buffernext;
@@ -126,32 +122,24 @@ struct buffer {
#endif /* BIGVM */
#endif /* BYTESWAP */
static int integerlength(unsigned int n) {
int p = 0;
/************* The following procedure is common !! **************************/
if (n <= 2) return (n); /* easy case */
if (n >= 65536) {
n >>= 16;
p += 16;
int integerlength(unsigned int n) {
int cnt;
if (n <= 2)
return (n);
else {
cnt = 1;
do {
cnt++;
n = (n >> 1);
} while (n != 1);
return (cnt);
}
if (n >= 256) {
n >>= 8;
p += 8;
}
if (n >= 16) {
n >>= 4;
p += 4;
}
if (n >= 4) {
n >>= 2;
p += 2;
}
if (n >= 2) {
p += 1;
}
return (p + 1);
}
/************* The above procedure is common !! **************************/
/************************************************************************/
/* */
/* f i n d p t r s b u f f e r */
@@ -162,16 +150,14 @@ static int integerlength(unsigned int n) {
/* */
/************************************************************************/
static LispPTR findptrsbuffer(LispPTR ptr) {
LispPTR buf;
struct buffer *buf_np;
buf = *System_Buffer_List_word;
while (buf != NIL) {
buf_np = (struct buffer *)NativeAligned4FromLAddr(buf);
if (ptr == buf_np->vmempage) {
return (buf);
}
buf = buf_np->sysnext;
LispPTR findptrsbuffer(LispPTR ptr) {
struct buf *bptr;
bptr = (struct buf *)NativeAligned4FromLAddr(*System_Buffer_List_word);
while (LAddrFromNative(bptr) != NIL) {
if (ptr == bptr->vmempage)
return (LAddrFromNative(bptr));
else
bptr = (struct buf *)NativeAligned4FromLAddr(bptr->sysnext);
}
return (NIL);
}
@@ -188,13 +174,13 @@ static LispPTR findptrsbuffer(LispPTR ptr) {
/************************************************************************/
LispPTR releasingvmempage(LispPTR ptr) {
LispPTR buffer = findptrsbuffer(ptr);
struct buffer *buffer_np;
struct buf *bptr;
LispPTR bufferptr = findptrsbuffer(ptr);
if (buffer == NIL) return (NIL); /* Not in use, OK to reclaim it */
if (bufferptr == NIL) return (NIL); /* Not in use, OK to reclaim it */
buffer_np = (struct buffer *)NativeAligned4FromLAddr(buffer);
buffer_np->noreference = T; /* Mark the buffer free to use ?? */
bptr = (struct buf *)NativeAligned4FromLAddr(bufferptr);
bptr->noreference = T; /* Mark the buffer free to use ?? */
return (ATOM_T);
}
@@ -205,9 +191,10 @@ LispPTR releasingvmempage(LispPTR ptr) {
/* Given an array block, do consistency checks on it. */
/* */
/************************************************************************/
LispPTR checkarrayblock(LispPTR base, LispPTR free, LispPTR onfreelist) {
struct arrayblock *base_np, *trailer_np;
struct arrayblock *fwd_np, *bkwd_np, *rbase;
struct arrayblock *bbase, *btrailer;
struct arrayblock *bfwd, *bbwd, *rbase;
LispPTR fbl;
LispPTR *rover, *tmprover;
#ifdef ARRAYCHECK
@@ -216,51 +203,38 @@ LispPTR checkarrayblock(LispPTR base, LispPTR free, LispPTR onfreelist) {
if (*Array_Block_Checking_word != NIL)
#endif
{
base_np = (struct arrayblock *)NativeAligned4FromLAddr(base);
trailer_np = (struct arrayblock *)NativeAligned4FromLAddr(Trailer(base, base_np));
#if 0
printf("cblock: 0x%x free: %x onfreelist: %x pw: %x arlen %d\n",
base, free, onfreelist, base_np->password, base_np->arlen);
#endif
if (base_np->password != ARRAYBLOCKPASSWORD) {
bbase = (struct arrayblock *)NativeAligned4FromLAddr(base);
btrailer = (struct arrayblock *)NativeAligned4FromLAddr(Trailer(base, bbase));
if (bbase->password != ARRAYBLOCKPASSWORD) {
printarrayblock(base);
error("ARRAYBLOCK password wrong\n");
return(T);
} else if (base_np->inuse == free) {
} else if (bbase->inuse == free) {
printarrayblock(base);
error("ARRAYBLOCK INUSE bit set wrong\n");
return(T);
} else if (trailer_np->password != ARRAYBLOCKPASSWORD) {
} else if (btrailer->password != ARRAYBLOCKPASSWORD) {
printarrayblock(base);
error("ARRAYBLOCK trailer password wrong\n");
return(T);
} else if (base_np->arlen != trailer_np->arlen) {
} else if (bbase->arlen != btrailer->arlen) {
printarrayblock(base);
error("ARRAYBLOCK Header and Trailer length don't match\n");
return(T);
} else if (trailer_np->inuse == free)
} else if (btrailer->inuse == free)
/* This is not original source.(in original,
trailer_np -> base_np) maybe, this is correction. */
btrailer -> bbase) maybe, this is correction. */
{
printarrayblock(base);
error("ARRAYBLOCK Trailer INUSE bit set wrong\n");
return(T);
} else if (!onfreelist || (base_np->arlen < MINARRAYBLOCKSIZE))
} else if (!onfreelist || (bbase->arlen < MINARRAYBLOCKSIZE))
return (NIL);
/* Remaining tests only for free list. */
fwd_np = (struct arrayblock *)NativeAligned4FromLAddr(base_np->fwd);
bkwd_np = (struct arrayblock *)NativeAligned4FromLAddr(base_np->bkwd);
if ((bkwd_np->fwd != base) || (fwd_np->bkwd != base)) {
bfwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->fwd);
bbwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->bkwd);
if ((bbwd->fwd != base) || (bfwd->bkwd != base)) {
error("ARRAYBLOCK links fouled\n");
return(T);
} else {
fbl = FreeBlockChainN(base_np->arlen);
fbl = FreeBlockChainN(bbase->arlen);
rover = tmprover = (LispPTR *)NativeAligned4FromLAddr(fbl);
/* GETBASEPTR */
if ((*rover & POINTERMASK) == NIL) {
error("Free Block's bucket empty\n");
return(T);
}
if ((*rover & POINTERMASK) == NIL) error("Free Block's bucket empty\n");
do {
if ((*rover & POINTERMASK) == base) return (NIL);
checkarrayblock((*rover & POINTERMASK), T, NIL);
@@ -279,38 +253,32 @@ LispPTR checkarrayblock(LispPTR base, LispPTR free, LispPTR onfreelist) {
/* */
/* */
/************************************************************************/
/*
* Removes "base", a block from the free list and
* adjusts the forward and backward pointers of the blocks behind and
* ahead of the deleted block.
* The forward and backward pointers of this deleted block are left
* dangling - as in the Lisp implementation. Also does not affect the
* inuse bit in header and trailer.
*/
static void deleteblock(LispPTR base) {
struct arrayblock *base_np, *f_np, *b_np;
LispPTR f, b, fbl, freeblock;
LispPTR *fbl_np;
base_np = (struct arrayblock *)NativeAligned4FromLAddr(base);
if ((base_np->arlen >= MINARRAYBLOCKSIZE) && (base_np->fwd != NIL)) {
f = base_np->fwd;
f_np = (struct arrayblock *)NativeAligned4FromLAddr(f);
b = base_np->bkwd;
b_np = (struct arrayblock *)NativeAligned4FromLAddr(b);
fbl = FreeBlockChainN(base_np->arlen);
fbl_np = (LispPTR *)NativeAligned4FromLAddr(fbl);
freeblock = POINTERMASK & *fbl_np;
if (base == f) {
if (base == freeblock)
*fbl_np = NIL;
LispPTR deleteblock(LispPTR base) {
struct arrayblock *bbase, *fbbase, *bbbase;
LispPTR fwd, bkwd, fbl, freeblocklsp;
LispPTR *freeblock;
bbase = (struct arrayblock *)NativeAligned4FromLAddr(base);
if ((bbase->arlen >= MINARRAYBLOCKSIZE) && (bbase->fwd != NIL)) {
fwd = bbase->fwd;
fbbase = (struct arrayblock *)NativeAligned4FromLAddr(fwd);
bkwd = bbase->bkwd;
bbbase = (struct arrayblock *)NativeAligned4FromLAddr(bkwd);
fbl = FreeBlockChainN(bbase->arlen);
freeblock = (LispPTR *)NativeAligned4FromLAddr(fbl);
freeblocklsp = POINTERMASK & *freeblock;
if (base == fwd) {
if (base == freeblocklsp)
*freeblock = NIL;
else
error("GC error:deleting last list # FREEBLOCKLIST\n");
return;
} else if (base == freeblock)
*fbl_np = f;
f_np->bkwd = b;
b_np->fwd = f;
return (NIL);
} else if (base == freeblocklsp)
*freeblock = fwd;
fbbase->bkwd = bkwd;
bbbase->fwd = fwd;
}
return (NIL);
}
/************************************************************************/
@@ -320,53 +288,34 @@ static void deleteblock(LispPTR base) {
/* */
/* */
/************************************************************************/
/*
* Links a block onto the free list for a particular size range.
* The free list is maintained as a doubly linked circular list accessed
* from the block pointed to by the free list bucket for the size.
* If there are no blocks in the free list bucket then the forward and
* backward pointers of the newly added block point to the block itself.
*/
static LispPTR linkblock(LispPTR base) {
struct arrayblock *base_np, *freeblock_np, *tail_np;
LispPTR fbl, freeblock;
LispPTR *fbl_np;
if (*FreeBlockBuckets_word == NIL)
return (base);
base_np = (struct arrayblock *)NativeAligned4FromLAddr(base);
if (base_np->arlen < MINARRAYBLOCKSIZE) {
checkarrayblock(base, T, NIL);
return (base);
LispPTR linkblock(LispPTR base) {
struct arrayblock *bbase, *fbbase, *tmpbase;
LispPTR fbl, freeblocklsp;
LispPTR *freeblock;
if (*FreeBlockBuckets_word != NIL) {
bbase = (struct arrayblock *)NativeAligned4FromLAddr(base);
if (bbase->arlen < MINARRAYBLOCKSIZE)
checkarrayblock(base, T, NIL);
else {
fbl = FreeBlockChainN(bbase->arlen);
freeblock = (LispPTR *)NativeAligned4FromLAddr(POINTERMASK & fbl);
freeblocklsp = POINTERMASK & (*freeblock);
if (freeblocklsp == NIL) {
bbase->fwd = base;
bbase->bkwd = base;
} else {
fbbase = (struct arrayblock *)NativeAligned4FromLAddr(freeblocklsp);
bbase->fwd = freeblocklsp;
bbase->bkwd = fbbase->bkwd;
tmpbase = (struct arrayblock *)NativeAligned4FromLAddr(fbbase->bkwd);
tmpbase->fwd = base;
fbbase->bkwd = base;
}
*freeblock = base;
checkarrayblock(base, T, T);
}
}
/* lisp pointer to bucket for size */
fbl = FreeBlockChainN(base_np->arlen);
/* native pointer to bucket */
fbl_np = (LispPTR *)NativeAligned4FromLAddr(POINTERMASK & fbl);
/* lisp pointer to first free block on chain */
freeblock = POINTERMASK & (*fbl_np);
if (freeblock == NIL) { /* no blocks already in chain */
base_np->fwd = base;
base_np->bkwd = base;
} else {
/* set up new block to be first free block on the chain */
freeblock_np = (struct arrayblock *)NativeAligned4FromLAddr(freeblock);
/* link new block forward to free block */
base_np->fwd = freeblock;
/* new block's backward link becomes free block's backward link */
base_np->bkwd = freeblock_np->bkwd;
/* get the tail location (backward pointer of freelist head) */
tail_np = (struct arrayblock *)NativeAligned4FromLAddr(freeblock_np->bkwd);
/* set its forward pointer to new block */
tail_np->fwd = base;
/* and the update the free block's backward link to new block */
freeblock_np->bkwd = base;
}
/* new block becomes the head of the free list */
*fbl_np = base;
checkarrayblock(base, T, T); /* free, and on free list */
return (base);
}
@@ -380,26 +329,17 @@ static LispPTR linkblock(LispPTR base) {
LispPTR makefreearrayblock(LispPTR block, DLword length) {
LispPTR trailer;
struct arrayblock *block_np, *trailer_np;
struct abdum *flags_np;
block_np = (struct arrayblock *)NativeAligned4FromLAddr(block);
/* this is an appropriate place to test whether the block that
is about to be freed contains words that look like valid
array header/trailer pairs as data. This may result in
false positives, but could help if there's a real smash happening.
*/
/* struct abdum's abflags is a DLword and does not account for
the BYTESWAP setup (as arrayblock does), so use WORDPTR to
pick the correct word of the cell
*/
flags_np = (struct abdum *)WORDPTR(block_np);
flags_np->abflags = FREEARRAYFLAGWORD;
block_np->arlen = length;
trailer = Trailer(block, block_np);
trailer_np = (struct arrayblock *)NativeAligned4FromLAddr(trailer);
flags_np = (struct abdum *)WORDPTR(trailer_np);
flags_np->abflags = FREEARRAYFLAGWORD;
trailer_np->arlen = length;
struct arrayblock *bbase;
struct abdum *dbase;
bbase = (struct arrayblock *)NativeAligned4FromLAddr(block);
dbase = (struct abdum *)WORDPTR(bbase);
dbase->abflags = FREEARRAYFLAGWORD;
bbase->arlen = length;
trailer = Trailer(block, bbase);
bbase = (struct arrayblock *)NativeAligned4FromLAddr(trailer);
dbase = (struct abdum *)WORDPTR(bbase);
dbase->abflags = FREEARRAYFLAGWORD;
bbase->arlen = length;
return (block);
}
@@ -410,13 +350,13 @@ LispPTR makefreearrayblock(LispPTR block, DLword length) {
/* */
/* */
/************************************************************************/
static LispPTR arrayblockmerger(LispPTR base, LispPTR nbase) {
LispPTR arrayblockmerger(LispPTR base, LispPTR nbase) {
DLword arlens, narlens, secondbite, minblocksize, shaveback;
struct arrayblock *base_np, *nbase_np;
base_np = (struct arrayblock *)NativeAligned4FromLAddr(base);
nbase_np = (struct arrayblock *)NativeAligned4FromLAddr(nbase);
arlens = base_np->arlen;
narlens = nbase_np->arlen;
struct arrayblock *bbase, *bnbase;
bbase = (struct arrayblock *)NativeAligned4FromLAddr(base);
bnbase = (struct arrayblock *)NativeAligned4FromLAddr(nbase);
arlens = bbase->arlen;
narlens = bnbase->arlen;
secondbite = MAXARRAYBLOCKSIZE - arlens;
/* There are three cases for merging the blocks
* (1) the total size of the two blocks is less than max:
@@ -426,7 +366,7 @@ static LispPTR arrayblockmerger(LispPTR base, LispPTR nbase) {
* (3) creating a max size block leaves a non-viable leftover block
* move the boundary to make a big block and a minimum size leftover block
*/
if (base + (DLWORDSPER_CELL * arlens) != nbase) {
if (base + (2 * arlens) != nbase) {
error("Attempt to merge non-adjacent blocks in array space\n");
}
if (narlens > secondbite) { /* (2) or (3) */
@@ -440,7 +380,7 @@ static LispPTR arrayblockmerger(LispPTR base, LispPTR nbase) {
arlens += shaveback;
secondbite += shaveback;
}
linkblock(makefreearrayblock(nbase + DLWORDSPER_CELL * secondbite, narlens));
linkblock(makefreearrayblock(nbase + 2 * secondbite, narlens));
narlens = 0;
}
return (linkblock(makefreearrayblock(base, arlens + narlens)));
@@ -454,34 +394,18 @@ static LispPTR arrayblockmerger(LispPTR base, LispPTR nbase) {
/* */
/************************************************************************/
/*
* merges this block into the block behind it, unless there are
* disqualifying conditions:
* merging is turned off or
* this is the first block in array space or
* this is the first block in the 2nd array space or
* the block behind it is in use
* in which case it is linked onto the freelist (fwd and backward pointers)
* and added to the free block chain by size.
* If it can be merged,
*/
LispPTR mergebackward(LispPTR base) {
LispPTR pbase;
struct arrayblock *ptrailer_np;
struct arrayblock *ptrailer;
if (base == NIL)
return (NIL);
/* back up to get the trailer of the previous block */
ptrailer_np = (struct arrayblock *)NativeAligned4FromLAddr(base - ARRAYBLOCKTRAILERWORDS);
/* check that there are no disqualifying conditions for merging with previous block */
ptrailer = (struct arrayblock *)NativeAligned4FromLAddr(base - ARRAYBLOCKTRAILERWORDS);
if ((*ArrayMerging_word == NIL) ||
((base == *ArraySpace_word) || ((base == *ArraySpace2_word) || (ptrailer_np->inuse == T))))
((base == *ArraySpace_word) || ((base == *ArraySpace2_word) || (ptrailer->inuse == T))))
return (linkblock(base));
/* back up to the header of the previous block */
pbase = base - DLWORDSPER_CELL * ptrailer_np->arlen;
/* check that it is free, but skip free list checks */
pbase = base - 2 * ptrailer->arlen;
checkarrayblock(pbase, T, NIL);
/* remove it from the free list */
deleteblock(pbase);
return (arrayblockmerger(pbase, base));
}
@@ -496,17 +420,17 @@ LispPTR mergebackward(LispPTR base) {
LispPTR mergeforward(LispPTR base) {
LispPTR nbase, nbinuse;
struct arrayblock *base_np, *nbase_np;
struct arrayblock *bbase, *bnbase;
if (*ArrayMerging_word == NIL) return NIL;
if (base == NIL) return NIL;
if (checkarrayblock(base, T, T)) return NIL;
base_np = (struct arrayblock *)NativeAligned4FromLAddr(base);
nbase = base + DLWORDSPER_CELL * (base_np->arlen);
bbase = (struct arrayblock *)NativeAligned4FromLAddr(base);
nbase = base + 2 * (bbase->arlen);
if (nbase == *ArrayFrLst_word || nbase == *ArrayFrLst2_word) return NIL;
nbase_np = (struct arrayblock *)NativeAligned4FromLAddr(nbase);
nbinuse = nbase_np->inuse;
bnbase = (struct arrayblock *)NativeAligned4FromLAddr(nbase);
nbinuse = bnbase->inuse;
if (checkarrayblock(nbase, !nbinuse, NIL)) return NIL;
if (nbinuse) return (NIL);
deleteblock(nbase);
@@ -521,13 +445,10 @@ LispPTR mergeforward(LispPTR base) {
/* Reclaim a block of storage in the array-space heap. */
/* */
/************************************************************************/
/*
* The pointer passed is to the data of the block, not the array block
* header.
*/
LispPTR reclaimarrayblock(LispPTR ptr) {
LispPTR tmpptr, btrailer;
struct arrayblock *base_np;
struct arrayblock *base;
LispPTR *tmpp;
int reclaim_p;
@@ -536,7 +457,7 @@ LispPTR reclaimarrayblock(LispPTR ptr) {
checkarrayblock(ptr - ARRAYBLOCKHEADERWORDS, NIL, NIL);
#endif /* ARRAYCHECK */
base_np = (struct arrayblock *)NativeAligned4FromLAddr(ptr - ARRAYBLOCKHEADERWORDS);
base = (struct arrayblock *)NativeAligned4FromLAddr(ptr - ARRAYBLOCKHEADERWORDS);
#ifdef ARRAYCHECK
if (HILOC(ptr) < FIRSTARRAYSEGMENT) {
printarrayblock(ptr - ARRAYBLOCKHEADERWORDS);
@@ -544,11 +465,11 @@ LispPTR reclaimarrayblock(LispPTR ptr) {
"Bad array block reclaimed [not in array space].\nContinue with 'q' but save state ASAP. "
"\n");
return (T);
} else if (ARRAYBLOCKPASSWORD != base_np->password) {
} else if (ARRAYBLOCKPASSWORD != base->password) {
printarrayblock(ptr - ARRAYBLOCKHEADERWORDS);
error("Bad array block reclaimed [password wrong].\nContinue with 'q' but save state ASAP. \n");
return (T);
} else if (base_np->inuse == NIL) {
} else if (base->inuse == NIL) {
printarrayblock(ptr - ARRAYBLOCKHEADERWORDS);
error(
"Bad array block reclaimed [block not in use].\nContinue with 'q' but save state ASAP. \n");
@@ -557,15 +478,15 @@ LispPTR reclaimarrayblock(LispPTR ptr) {
#else
/* Normal case, just tell the guy something's wrong: */
if ((HILOC(ptr) < FIRSTARRAYSEGMENT) ||
((ARRAYBLOCKPASSWORD != base_np->password) || (base_np->inuse == NIL))) {
((ARRAYBLOCKPASSWORD != base->password) || (base->inuse == NIL))) {
error("Bad array block reclaimed--continue with 'q' but save state ASAP. \n");
return (T);
}
#endif /* ARRAYCHECK */
switch (base_np->gctype) {
switch (base->gctype) {
case PTRBLOCK_GCT: {
btrailer = (ptr - 2) + DLWORDSPER_CELL * (base_np->arlen - ARRAYBLOCKTRAILERCELLS);
btrailer = (ptr - 2) + 2 * (base->arlen - ARRAYBLOCKTRAILERCELLS);
tmpptr = ptr;
do {
tmpp = (LispPTR *)NativeAligned4FromLAddr(tmpptr);
@@ -582,7 +503,7 @@ LispPTR reclaimarrayblock(LispPTR ptr) {
/* default: No Action */
}
if (reclaim_p == T)
mergeforward(mergebackward(makefreearrayblock(ptr - ARRAYBLOCKHEADERWORDS, base_np->arlen)));
mergeforward(mergebackward(makefreearrayblock(ptr - ARRAYBLOCKHEADERWORDS, base->arlen)));
return (T);
}
@@ -614,62 +535,31 @@ LispPTR reclaimstackp(LispPTR ptr) /* This is the entry function */
/************************************************************************/
void printarrayblock(LispPTR base) {
struct arrayblock *base_np, *trailer_np, *ptrailer_np;
struct arrayblock *bbase, *btrailer, *ptrailer;
LispPTR *addr;
LispPTR pbase, nbase;
base_np = (struct arrayblock *)NativeAligned4FromLAddr(base);
trailer_np = (struct arrayblock *)NativeAligned4FromLAddr(Trailer(base, base_np));
ptrailer_np = (struct arrayblock *)NativeAligned4FromLAddr(base - ARRAYBLOCKTRAILERWORDS);
bbase = (struct arrayblock *)NativeAligned4FromLAddr(base);
btrailer = (struct arrayblock *)NativeAligned4FromLAddr(Trailer(base, bbase));
ptrailer = (struct arrayblock *)NativeAligned4FromLAddr(base - ARRAYBLOCKTRAILERWORDS);
nbase = base + DLWORDSPER_CELL * base_np->arlen;
pbase = base - DLWORDSPER_CELL * ptrailer_np->arlen;
nbase = base + 2 * bbase->arlen;
pbase = base - 2 * ptrailer->arlen;
printf("This array block: 0x%x. Previous: 0x%x. Next: 0x%x.\n", base, pbase, nbase);
printf(" password: 0x%x gctype: 0x%x in use: %d\n", base_np->password,
base_np->gctype, base_np->inuse);
if (!base_np->inuse)
printf(" Free list: fwd 0x%x bkwd 0x%x\n", base_np->fwd, base_np->bkwd);
printf(" Header Length: %d cells.\n\n", base_np->arlen);
printf(" Trailer Length: %d cells.\n\n", trailer_np->arlen);
printf(" Length: %d cells.\n\n", bbase->arlen);
addr = ((LispPTR *)base_np) - 20;
for (; addr < (LispPTR *)base_np; addr++) printf("%16p (0x%8x) %8x\n", (void *)addr, LAddrFromNative(addr), *addr);
printf("%16p (0x%8x) %8x <- array header\n", (void *)addr, LAddrFromNative(addr), *addr);
addr = ((LispPTR *)bbase) - 20;
for (; addr < (LispPTR *)bbase; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf("%p %8x <- array header\n", (void *)addr, *addr);
addr++;
for (; addr < (LispPTR *)base_np + 20; addr++) printf("%16p (0x%8x) %8x\n", (void *)addr, LAddrFromNative(addr), *addr);
for (; addr < (LispPTR *)bbase + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf(". . .\n");
addr = ((LispPTR *)trailer_np) - 20;
for (; addr < (LispPTR *)trailer_np; addr++) printf("%16p (0x%8x) %8x\n", (void *)addr, LAddrFromNative(addr), *addr);
printf("%16p (0x%8x) %8x <- array trailer\n", (void *)addr, LAddrFromNative(addr), *addr);
addr = ((LispPTR *)btrailer) - 20;
for (; addr < (LispPTR *)btrailer; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf("%p %8x <- array trailer\n", (void *)addr, *addr);
addr++;
for (; addr < (LispPTR *)trailer_np + 20; addr++) printf("%16p (0x%8x) %8x\n", (void *)addr, LAddrFromNative(addr), *addr);
}
static void printfreeblockchainhead(int index)
{
LispPTR fbl, freeblock;
LispPTR *fbl_np;
fbl = POINTERMASK & ((*FreeBlockBuckets_word) + (DLWORDSPER_CELL * index));
fbl_np = (LispPTR *)NativeAligned4FromLAddr(fbl);
/* lisp pointer to free block on chain */
freeblock = POINTERMASK & (*fbl_np);
if (freeblock == NIL) { /* no blocks in chain */
printf("Free block chain (bucket %d): NIL\n", index);
} else {
printf("Free block chain(bucket %d): 0x%x\n", index, freeblock);
}
}
void printfreeblockchainn(int arlen)
{
if (arlen >= 0) {
printfreeblockchainhead(BucketIndex(arlen));
return;
} else
for (int i = 0; i <= MAXBUCKETINDEX; i++) {
printfreeblockchainhead(i);
}
for (; addr < (LispPTR *)btrailer + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
}

View File

@@ -253,7 +253,7 @@ void enter_big_reference_count(LispPTR ptr) {
/* */
/************************************************************************/
void modify_big_reference_count(GCENTRY *entry, DLword casep, LispPTR ptr) {
void modify_big_reference_count(LispPTR *entry, DLword casep, LispPTR ptr) {
struct gc_ovfl *oventry;
LispPTR tmp;

View File

@@ -39,7 +39,6 @@
#include "commondefs.h" // for error
#include "emlglob.h"
#include "gcdata.h" // for GCENTRY, REC_GCLOOKUP, STKREF, hashentry
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcmain3defs.h" // for gcmapscan, gcmapunscan, gcscanstack
#include "gcrcelldefs.h" // for gcreccell
#include "gcscandefs.h" // for gcscan1, gcscan2

View File

@@ -31,7 +31,6 @@
#include "arith.h" // for GetSmalldata
#include "gcdata.h" // for htoverflow, REC_GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcoflowdefs.h" // for gc_handleoverflow, gcmaptable
#include "gcrdefs.h" // for doreclaim
#include "lispemul.h" // for NIL, DLword, LispPTR

View File

@@ -71,7 +71,6 @@
#include "commondefs.h" // for error
#include "gccodedefs.h" // for reclaimcodeblock
#include "gcdata.h" // for DELREF, REC_GCLOOKUPV, ADDREF, REC_GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcfinaldefs.h" // for reclaimarrayblock, reclaimstackp, releasing...
#include "gcrcelldefs.h" // for freelistcell, gcreccell
#include "lispemul.h" // for LispPTR, ConsCell, NIL, POINTERMASK, DLword

View File

@@ -15,7 +15,6 @@
#include "dbprint.h" // for DEBUGGER
#include "emlglob.h"
#include "gcdata.h" // for FRPLPTR
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gvar2defs.h" // for N_OP_gvar_, N_OP_rplptr
#include "lispemul.h" // for LispPTR, DLword, NEWATOM_VALUE_OFFSET, NEWAT...
#include "lspglob.h" // for AtomSpace

View File

@@ -32,7 +32,7 @@
#include "llstkdefs.h" // for decusecount68k, freestackblock, blt, stack_...
#include "lspglob.h"
#include "lsptypes.h" // for GETWORD
#include "retmacro.h" // for AFTER_CONTEXTSW, BEFORE_CONTEXTSW, FastRetCALL
#include "return.h" // for AFTER_CONTEXTSW, BEFORE_CONTEXTSW, FastRetCALL
#include "stack.h" // for FX, frameex1, Bframe, CHECK_FX, StackWord
#define MAKE_FXCOPY(fx68k) \

View File

@@ -41,6 +41,7 @@
#include "emlglob.h"
#include "lspglob.h"
#include "adr68k.h"
#include "ether.h"
#include "dbprint.h"
#include "locfile.h"

View File

@@ -98,11 +98,6 @@ extern int *Xdisplay; /* DAANGER -jarl nilsson 27-apr-92 */
/************************************************************************/
void init_cursor(void) {
/* init_cursor sets up any OS/hardware that is necessary
* for the rest of the display system to get a cursor displayed.
* For display subsystems like X11 or SDL there's nothing to do
* Originally this did work for memory mapped Sun display boards
*/
}
/************************************************************************/

View File

@@ -34,7 +34,6 @@
#include "etherdefs.h" // for init_ifpage_ether
#include "gcarraydefs.h" // for get_package_atom
#include "gcdata.h" // for ADDREF, GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO
#include "initsoutdefs.h" // for build_lisp_map, fixp_value, init_for_bitblt
#include "iopage.h" // for IOPAGE

View File

@@ -28,6 +28,7 @@
#include "kbdsubrsdefs.h"
#include "commondefs.h"
#ifdef XWINDOW
#include "lisp2cdefs.h"
#include "xwinmandefs.h"
#endif

View File

@@ -51,7 +51,7 @@ void Mouse_hndlr(void); /* Fields mouse events from driver */
#include "lsptypes.h"
#include "bb.h"
#include "bbtmacro.h"
#include "bitblt.h"
#include "pilotbbt.h"
#include "keyeventdefs.h"

View File

@@ -98,12 +98,10 @@ void prindatum(LispPTR x) {
break;
case TYPE_ONED_ARRAY:
case TYPE_GENERAL_ARRAY:
/* this should probably use array.h's arrayheader */
newstring = (NEWSTRINGP *)NativeAligned4FromLAddr(x);
if (newstring->stringp) {
print_NEWstring(x);
}
/* it would be useful to print non-string arrays, too */
break;
default: dtd_base = (struct dtd *)GetDTD(typen); printf("{");
#ifdef BIGVM
@@ -175,20 +173,14 @@ void print_string(LispPTR x) {
void print_NEWstring(LispPTR x) {
NEWSTRINGP *string_point;
DLword st_length;
DLword st_offset;
DLbyte *string_base;
int i;
string_point = (NEWSTRINGP *)NativeAligned4FromLAddr(x);
st_length = string_point->fillpointer;
st_offset = string_point->offset;
if (string_point->indirectp) {
/* base points to another array header not the raw storage */
string_point = (NEWSTRINGP *)NativeAligned4FromLAddr(string_point->base);
}
string_base = (DLbyte *)NativeAligned2FromLAddr(string_point->base);
string_base += st_offset;
string_base += string_point->offset;
printf("%c", DOUBLEQUOTE); /* print %" */

View File

@@ -200,7 +200,7 @@ int main(int argc, char *argv[]) {
goto I_Give_Up;
}
bcopy(if_data.ifc_req[0].ifr_addr.sa_data, ether_host, 6);
strlcpy(Ename, if_data.ifc_req[0].ifr_name, sizeof(Ename));
strcpy(Ename, if_data.ifc_req[0].ifr_name);
fcntl(ether_fd, F_SETFL, fcntl(ether_fd, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);

View File

@@ -216,8 +216,8 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
}
if ((stat_buf.st_size & (BYTESPER_PAGE - 1)) != 0)
printf("CAUTION::not an integral number of pages. sysout & 0x%x = 0x%x\n",
BYTESPER_PAGE - 1, (int)(stat_buf.st_size & (BYTESPER_PAGE - 1)));
printf("CAUTION::not an integral number of pages. sysout & 0x1ff = 0x%x\n",
(int)(stat_buf.st_size & (BYTESPER_PAGE - 1)));
if (ifpage.nactivepages != (sysout_size / 2)) {
printf("sysout_loader:IFPAGE says sysout size is %d\n", ifpage.nactivepages);

View File

@@ -38,8 +38,6 @@ int LispStringSimpleLength(LispPTR lispstring) {
return (arrayp->fillpointer);
}
/* XXX: this string conversion is NOT useable on byte-swapped (little-endian) machines
*/
void LispStringToCStr(LispPTR lispstring, char *cstring) {
OneDArray *arrayp;
char *base;

View File

@@ -28,7 +28,7 @@
#include "devconf.h"
#include "bb.h"
#include "bbtmacro.h"
#include "bitblt.h"
#include "pilotbbt.h"
#include "dbprint.h"

View File

@@ -33,7 +33,7 @@
#include "llstkdefs.h" // for blt, check_BF, check_FX, check_stack_rooms
#include "lspglob.h" // for InterfacePage, Stackspace, STACKOVERFLOW_word
#include "lsptypes.h" // for GETWORD
#include "retmacro.h" // for AFTER_CONTEXTSW, BEFORE_CONTEXTSW
#include "return.h" // for AFTER_CONTEXTSW, BEFORE_CONTEXTSW
#include "stack.h" // for StackWord, Bframe, FX, frameex1, STKWORD
#include "storagedefs.h" // for newpage
// #include "testtooldefs.h" // for print_atomname

View File

@@ -25,7 +25,6 @@
#include "commondefs.h" // for error
#include "gcarraydefs.h" // for get_package_atom
#include "gcdata.h" // for FRPLPTR
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for LispPTR, state, CurrentStackPTR, NIL_PTR, NIL
#include "lispmap.h" // for S_POSITIVE
#include "loopsopsdefs.h" // for lcfuncall, LCFetchMethod, LCFetchMethodOrHelp

View File

@@ -40,7 +40,7 @@
#include "emlglob.h"
#include "adr68k.h"
#include "stack.h"
#include "retmacro.h"
#include "return.h"
#include "lispemul.h"
#include "lspglob.h"
@@ -243,10 +243,9 @@ int flushing = FALSE; /* see dbprint.h if set, all debug/trace printing will cal
extern DspInterface currentdsp;
#endif /* DOS || XWINDOW */
#ifdef SDL
#include "sdldefs.h" /* for init_SDL */
extern int init_SDL(char*, int, int, int);
#endif
extern const time_t MDate;
extern const char *MaikoGitVersion;
extern int nokbdflag;
extern int nomouseflag;
#ifdef DOS
@@ -289,8 +288,6 @@ const char *helpstring =
-info Print general info about the system\n\
-help Print this message\n\
-pixelscale <n> The amount of pixels to show for one Medley screen pixel.\n\
-fg/-foreground <color> Screen foreground color, default Black. X color name or #RRBBGG hex\n\
-bg/-background <color> Screen background color, default White. X color name or #RRBBGG hex\n\
-sc[reen] <w>x<h>] The Medley screen geometry\n\
-t <title> The window title\n\
-title <title> The window title\n";
@@ -319,21 +316,6 @@ const char *nethubHelpstring = "";
extern int insnsCountdownForTimerAsyncEmulation;
#endif
#if defined(XWINDOW) || defined(SDL)
char foregroundColorName[64] = {0};
extern char foregroundColorName[64];
char backgroundColorName[64] = {0};
extern char backgroundColorName[64];
#endif
char windowTitle[255] = "Medley";
extern char windowTitle[255];
unsigned LispDisplayRequestedWidth = 1024, LispDisplayRequestedHeight = 768;
extern unsigned LispDisplayRequestedWidth, LispDisplayRequestedHeight;
int LispDisplayRequestedX = 0, LispDisplayRequestedY = 0;
extern int LispDisplayRequestedX, LispDisplayRequestedY;
int pixelScale = 1;
extern int pixelScale;
/************************************************************************/
/* */
/* M A I N E N T R Y P O I N T */
@@ -348,6 +330,9 @@ int main(int argc, char *argv[])
extern int TIMER_INTERVAL;
extern fd_set LispReadFds;
long tmpint;
int width = 1024, height = 768;
int pixelscale = 1;
char *windowtitle = "Medley";
#ifdef MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE
if (dld_find_executable(argv[0]) == 0) {
@@ -372,6 +357,7 @@ int main(int argc, char *argv[])
// arg processing changes argc/argv
if (argc > 1 && argv[1][0] != '-') {
strncpy(sysout_name_first_arg, argv[1], MAXPATHLEN);
i++;
}
@@ -408,20 +394,20 @@ int main(int argc, char *argv[])
}
}
/* -timer and -m are undocumented and somewhat dangerous... */
/* -t and -m are undocumented and somewhat dangerous... */
else if (!strcmp(argv[i], "-timer")) { /**** timer interval ****/
else if (!strcmp(argv[i], "-t")) { /**** timer interval ****/
if (argc > ++i) {
errno = 0;
tmpint = strtol(argv[i], (char **)NULL, 10);
if (errno == 0 && tmpint > 0) {
TIMER_INTERVAL = tmpint;
} else {
(void)fprintf(stderr, "Bad value for -timer (integer > 0)\n");
(void)fprintf(stderr, "Bad value for -t (integer > 0)\n");
exit(1);
}
} else {
(void)fprintf(stderr, "Missing argument after -timer\n");
(void)fprintf(stderr, "Missing argument after -t\n");
exit(1);
}
}
@@ -474,7 +460,7 @@ int main(int argc, char *argv[])
#ifdef SDL
else if ((strcmp(argv[i], "-sc") == 0) || (strcmp(argv[i], "-SC") == 0)) {
if (argc > ++i) {
int read = sscanf(argv[i], "%dx%d", &LispDisplayRequestedWidth, &LispDisplayRequestedHeight);
int read = sscanf(argv[i], "%dx%d", &width, &height);
if(read != 2) {
(void)fprintf(stderr, "Could not parse -sc argument %s\n", argv[i]);
exit(1);
@@ -485,7 +471,7 @@ int main(int argc, char *argv[])
}
} else if ((strcmp(argv[i], "-pixelscale") == 0) || (strcmp(argv[i], "-PIXELSCALE") == 0)) {
if (argc > ++i) {
int read = sscanf(argv[i], "%d", &pixelScale);
int read = sscanf(argv[i], "%d", &pixelscale);
if(read != 1) {
(void)fprintf(stderr, "Could not parse -pixelscale argument %s\n", argv[i]);
exit(1);
@@ -497,26 +483,13 @@ int main(int argc, char *argv[])
} else if ((strcmp(argv[i], "-t") == 0) || (strcmp(argv[i], "-T") == 0)
|| (strcmp(argv[i], "-title") == 0) || (strcmp(argv[i], "-TITLE") == 0)) {
if (argc > ++i) {
strncpy(windowTitle, argv[i], sizeof(windowTitle) - 1);
windowtitle = argv[i];
} else {
(void)fprintf(stderr, "Missing argument after -title\n");
exit(1);
}
} else if (strcmp(argv[i], "-fg") == 0 || strcmp(argv[i], "-foreground") == 0) {
if (argc > ++i) {
strncpy(foregroundColorName, argv[i], sizeof(foregroundColorName) - 1);
} else {
(void)fprintf(stderr, "Missing argument after -fg/-foreground\n");
exit(1);
}
} else if (strcmp(argv[i], "-bg") == 0 || strcmp(argv[i], "-background") == 0) {
if (argc > ++i) {
strncpy(backgroundColorName, argv[i], sizeof(backgroundColorName) - 1);
} else {
(void)fprintf(stderr, "Missing argument after -bg/-background\n");
exit(1);
}
}
#endif /* SDL */
/* Can only do this under SUNOs, for now */
else if (!strcmp(argv[i], "-E")) { /**** ethernet info ****/
@@ -717,12 +690,13 @@ int main(int argc, char *argv[])
make_dsp_instance(currentdsp, 0, 0, 0, 1); /* All defaults the first time */
#endif /* DOS || XWINDOW */
#if defined(SDL)
init_SDL(windowTitle, LispDisplayRequestedWidth, LispDisplayRequestedHeight, pixelScale);
init_SDL(windowtitle, width, height, pixelscale);
#endif /* SDL */
/* Load sysout to VM space and returns real sysout_size(not 0) */
sysout_size = sysout_loader(sysout_name, sysout_size);
build_lisp_map(); /* build up map */
build_lisp_map(); /* built up map */
init_ifpage(sysout_size); /* init interface page */
init_iopage();
init_miscstats();
@@ -832,7 +806,6 @@ void print_info_lines(void) {
#endif /* RELEASE */
printf("Compiled for %s (%s) (%d bit).\n", MAIKO_OS_NAME, MAIKO_ARCH_NAME, MAIKO_ARCH_WORD_BITS);
printf("Creation date: %s", ctime(&MDate));
printf("%s\n", MaikoGitVersion);
#ifdef LPSOLVE
printf("Contains lp_solve LP solver.\n");
#endif /* LPSOLVE */

View File

@@ -43,9 +43,7 @@ LispPTR N_OP_misc7(LispPTR arg1, LispPTR arg2, LispPTR arg3, LispPTR arg4, LispP
int offset;
DLword bmdata;
DLword bmmask;
#ifdef REALCURSOR
int displayflg;
#endif
DBPRINT(("MISC7 op with alpha byte %d.\n", alpha));
@@ -60,11 +58,7 @@ LispPTR N_OP_misc7(LispPTR arg1, LispPTR arg2, LispPTR arg3, LispPTR arg4, LispP
DBPRINT(("MISC7 args OK.\n"));
#ifdef REALCURSOR
displayflg = n_new_cursorin(base, x, (heightminus1 - y), 1, 1);
if (displayflg)
HideCursor();
#endif
/* Bitmaps use a positive integer coordinate system with the lower left
corner pixel at coordinate (0, 0). Storage is allocated in 16-bit words
@@ -85,12 +79,12 @@ LispPTR N_OP_misc7(LispPTR arg1, LispPTR arg2, LispPTR arg3, LispPTR arg4, LispP
}
#if defined(XWINDOW) || defined(SDL)
#ifdef XWINDOW
if (in_display_segment(base)) {
/* NB: base + offset doesn't need WORDPTR() wrapper */
flush_display_ptrregion(base + offset, 0, 16, 1);
}
#endif /* XWINDOW || SDL */
#endif /* XWINDOW */
ScreenLocked = NIL;
DBPRINT(("FBITMAPBIT old bit = 0x%x.\n", oldbit));

View File

@@ -32,7 +32,6 @@
#include "commondefs.h" // for error
#include "emlglob.h"
#include "gcdata.h" // for DELREF, GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for LispPTR, DLword, NIL, POINTERMASK, state
#include "lispmap.h" // for S_POSITIVE
#include "lspglob.h"

View File

@@ -44,7 +44,7 @@
#include "lspglob.h"
#include "timeout.h"
#include "locfile.h"
#include "osmsgprint.h"
#include "osmsg.h"
#include "dbprint.h"
#include "commondefs.h"
@@ -233,13 +233,15 @@ LispPTR mess_read(LispPTR *args)
struct stat sbuf;
int size, save_size;
char *base;
LispPTR *naddress;
int i;
static char temp_buf[MESSAGE_BUFFER_SIZE];
SETJMP(NIL);
/* Get buff address from LISP */
STRING_BASE(args[0], base);
naddress = (LispPTR *)(NativeAligned4FromLAddr(args[0]));
base = (char *)(NativeAligned2FromLAddr(((OneDArray *)naddress)->base));
close(log_id);
TIMEOUT(log_id = open(logfile, O_RDONLY));
@@ -281,7 +283,7 @@ LispPTR mess_read(LispPTR *args)
if (temp_buf[i] == '\n') temp_buf[i] = '\000';
}
/* COPY actual Lisp Buffer(for BYTESWAP magic) */
MemCpyToLispFromNative(base, temp_buf, size);
StrNCpyFromCToLisp(base, temp_buf, size);
return (GetSmallp(size));
#else

View File

@@ -13,7 +13,7 @@
#include <errno.h> // for errno
#include <stdio.h> // for fprintf, perror, stderr, NULL
#include <string.h> // for strerror
#include "osmsgprint.h" // for OSMESSAGE_PRINT
#include "osmsg.h" // for OSMESSAGE_PRINT
#include "perrnodefs.h" // for err_mess, perrorn
/************************************************************************/

View File

@@ -31,7 +31,7 @@
#include "pilotbbt.h"
#include "debug.h"
#include "arith.h"
#include "bbtmacro.h"
#include "bitblt.h"
#include "lldsp.h"
#include "bbtsubdefs.h"
@@ -419,7 +419,7 @@ loop:
/* */
/************************************************************************/
static void newColorizeFont8(PILOTBBT *pbt, u_char backcolor, u_char forecolor, LispPTR srctype, LispPTR ope)
void newColorizeFont8(PILOTBBT *pbt, u_char backcolor, u_char forecolor, LispPTR srctype, LispPTR ope)
{
DLword *nbase;
u_char *dbase;

View File

@@ -38,7 +38,7 @@
#include "lspglob.h"
#include "initatms.h"
#include "cell.h"
#include "retmacro.h"
#include "return.h"
#include "testtooldefs.h"
#include "returndefs.h"
#include "commondefs.h"

View File

@@ -31,7 +31,6 @@
#include "rplconsdefs.h" // for N_OP_rplcons
#ifndef NEWCDRCODING
#include "gcdata.h"
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "address.h"
#endif

848
src/sdl.c
View File

@@ -40,8 +40,8 @@ static SDL_Surface *sdl_buffersurface = NULL;
static int buffer_size = 0;
static void *buffer = NULL;
#endif
static Uint32 sdl_foreground_color;
static Uint32 sdl_background_color;
static Uint32 sdl_white;
static Uint32 sdl_black;
static Uint32 sdl_foreground;
static Uint32 sdl_background;
static int sdl_bytesperpixel;
@@ -167,764 +167,6 @@ int keymap[] = {
// 111, /* (K5F SUN-OPEN) */
-1, -1
};
const struct ColorNameToRGB {
char * name; uint8_t red; uint8_t green; uint8_t blue;
} colornames[] = {
{"alice blue", 240, 248, 255},
{"AliceBlue", 240, 248, 255},
{"antique white", 250, 235, 215},
{"AntiqueWhite", 250, 235, 215},
{"AntiqueWhite1", 255, 239, 219},
{"AntiqueWhite2", 238, 223, 204},
{"AntiqueWhite3", 205, 192, 176},
{"AntiqueWhite4", 139, 131, 120},
{"aquamarine", 127, 255, 212},
{"aquamarine1", 127, 255, 212},
{"aquamarine2", 118, 238, 198},
{"aquamarine3", 102, 205, 170},
{"aquamarine4", 69, 139, 116},
{"azure", 240, 255, 255},
{"azure1", 240, 255, 255},
{"azure2", 224, 238, 238},
{"azure3", 193, 205, 205},
{"azure4", 131, 139, 139},
{"beige", 245, 245, 220},
{"bisque", 255, 228, 196},
{"bisque1", 255, 228, 196},
{"bisque2", 238, 213, 183},
{"bisque3", 205, 183, 158},
{"bisque4", 139, 125, 107},
{"black", 0, 0, 0},
{"blanched almond", 255, 235, 205},
{"BlanchedAlmond", 255, 235, 205},
{"blue", 0, 0, 255},
{"blue violet", 138, 43, 226},
{"blue1", 0, 0, 255},
{"blue2", 0, 0, 238},
{"blue3", 0, 0, 205},
{"blue4", 0, 0, 139},
{"BlueViolet", 138, 43, 226},
{"brown", 165, 42, 42},
{"brown1", 255, 64, 64},
{"brown2", 238, 59, 59},
{"brown3", 205, 51, 51},
{"brown4", 139, 35, 35},
{"burlywood", 222, 184, 135},
{"burlywood1", 255, 211, 155},
{"burlywood2", 238, 197, 145},
{"burlywood3", 205, 170, 125},
{"burlywood4", 139, 115, 85},
{"cadet blue", 95, 158, 160},
{"CadetBlue", 95, 158, 160},
{"CadetBlue1", 152, 245, 255},
{"CadetBlue2", 142, 229, 238},
{"CadetBlue3", 122, 197, 205},
{"CadetBlue4", 83, 134, 139},
{"chartreuse", 127, 255, 0},
{"chartreuse1", 127, 255, 0},
{"chartreuse2", 118, 238, 0},
{"chartreuse3", 102, 205, 0},
{"chartreuse4", 69, 139, 0},
{"chocolate", 210, 105, 30},
{"chocolate1", 255, 127, 36},
{"chocolate2", 238, 118, 33},
{"chocolate3", 205, 102, 29},
{"chocolate4", 139, 69, 19},
{"coral", 255, 127, 80},
{"coral1", 255, 114, 86},
{"coral2", 238, 106, 80},
{"coral3", 205, 91, 69},
{"coral4", 139, 62, 47},
{"cornflower blue", 100, 149, 237},
{"CornflowerBlue", 100, 149, 237},
{"cornsilk", 255, 248, 220},
{"cornsilk1", 255, 248, 220},
{"cornsilk2", 238, 232, 205},
{"cornsilk3", 205, 200, 177},
{"cornsilk4", 139, 136, 120},
{"cyan", 0, 255, 255},
{"cyan1", 0, 255, 255},
{"cyan2", 0, 238, 238},
{"cyan3", 0, 205, 205},
{"cyan4", 0, 139, 139},
{"dark blue", 0, 0, 139},
{"dark cyan", 0, 139, 139},
{"dark goldenrod", 184, 134, 11},
{"dark gray", 169, 169, 169},
{"dark green", 0, 100, 0},
{"dark grey", 169, 169, 169},
{"dark khaki", 189, 183, 107},
{"dark magenta", 139, 0, 139},
{"dark olive green", 85, 107, 47},
{"dark orange", 255, 140, 0},
{"dark orchid", 153, 50, 204},
{"dark red", 139, 0, 0},
{"dark salmon", 233, 150, 122},
{"dark sea green", 143, 188, 143},
{"dark slate blue", 72, 61, 139},
{"dark slate gray", 47, 79, 79},
{"dark slate grey", 47, 79, 79},
{"dark turquoise", 0, 206, 209},
{"dark violet", 148, 0, 211},
{"DarkBlue", 0, 0, 139},
{"DarkCyan", 0, 139, 139},
{"DarkGoldenrod", 184, 134, 11},
{"DarkGoldenrod1", 255, 185, 15},
{"DarkGoldenrod2", 238, 173, 14},
{"DarkGoldenrod3", 205, 149, 12},
{"DarkGoldenrod4", 139, 101, 8},
{"DarkGray", 169, 169, 169},
{"DarkGreen", 0, 100, 0},
{"DarkGrey", 169, 169, 169},
{"DarkKhaki", 189, 183, 107},
{"DarkMagenta", 139, 0, 139},
{"DarkOliveGreen", 85, 107, 47},
{"DarkOliveGreen1", 202, 255, 112},
{"DarkOliveGreen2", 188, 238, 104},
{"DarkOliveGreen3", 162, 205, 90},
{"DarkOliveGreen4", 110, 139, 61},
{"DarkOrange", 255, 140, 0},
{"DarkOrange1", 255, 127, 0},
{"DarkOrange2", 238, 118, 0},
{"DarkOrange3", 205, 102, 0},
{"DarkOrange4", 139, 69, 0},
{"DarkOrchid", 153, 50, 204},
{"DarkOrchid1", 191, 62, 255},
{"DarkOrchid2", 178, 58, 238},
{"DarkOrchid3", 154, 50, 205},
{"DarkOrchid4", 104, 34, 139},
{"DarkRed", 139, 0, 0},
{"DarkSalmon", 233, 150, 122},
{"DarkSeaGreen", 143, 188, 143},
{"DarkSeaGreen1", 193, 255, 193},
{"DarkSeaGreen2", 180, 238, 180},
{"DarkSeaGreen3", 155, 205, 155},
{"DarkSeaGreen4", 105, 139, 105},
{"DarkSlateBlue", 72, 61, 139},
{"DarkSlateGray", 47, 79, 79},
{"DarkSlateGray1", 151, 255, 255},
{"DarkSlateGray2", 141, 238, 238},
{"DarkSlateGray3", 121, 205, 205},
{"DarkSlateGray4", 82, 139, 139},
{"DarkSlateGrey", 47, 79, 79},
{"DarkTurquoise", 0, 206, 209},
{"DarkViolet", 148, 0, 211},
{"deep pink", 255, 20, 147},
{"deep sky blue", 0, 191, 255},
{"DeepPink", 255, 20, 147},
{"DeepPink1", 255, 20, 147},
{"DeepPink2", 238, 18, 137},
{"DeepPink3", 205, 16, 118},
{"DeepPink4", 139, 10, 80},
{"DeepSkyBlue", 0, 191, 255},
{"DeepSkyBlue1", 0, 191, 255},
{"DeepSkyBlue2", 0, 178, 238},
{"DeepSkyBlue3", 0, 154, 205},
{"DeepSkyBlue4", 0, 104, 139},
{"dim gray", 105, 105, 105},
{"dim grey", 105, 105, 105},
{"DimGray", 105, 105, 105},
{"DimGrey", 105, 105, 105},
{"dodger blue", 30, 144, 255},
{"DodgerBlue", 30, 144, 255},
{"DodgerBlue1", 30, 144, 255},
{"DodgerBlue2", 28, 134, 238},
{"DodgerBlue3", 24, 116, 205},
{"DodgerBlue4", 16, 78, 139},
{"firebrick", 178, 34, 34},
{"firebrick1", 255, 48, 48},
{"firebrick2", 238, 44, 44},
{"firebrick3", 205, 38, 38},
{"firebrick4", 139, 26, 26},
{"floral white", 255, 250, 240},
{"FloralWhite", 255, 250, 240},
{"forest green", 34, 139, 34},
{"ForestGreen", 34, 139, 34},
{"gainsboro", 220, 220, 220},
{"ghost white", 248, 248, 255},
{"GhostWhite", 248, 248, 255},
{"gold", 255, 215, 0},
{"gold1", 255, 215, 0},
{"gold2", 238, 201, 0},
{"gold3", 205, 173, 0},
{"gold4", 139, 117, 0},
{"goldenrod", 218, 165, 32},
{"goldenrod1", 255, 193, 37},
{"goldenrod2", 238, 180, 34},
{"goldenrod3", 205, 155, 29},
{"goldenrod4", 139, 105, 20},
{"gray", 190, 190, 190},
{"gray0", 0, 0, 0},
{"gray1", 3, 3, 3},
{"gray10", 26, 26, 26},
{"gray100", 255, 255, 255},
{"gray11", 28, 28, 28},
{"gray12", 31, 31, 31},
{"gray13", 33, 33, 33},
{"gray14", 36, 36, 36},
{"gray15", 38, 38, 38},
{"gray16", 41, 41, 41},
{"gray17", 43, 43, 43},
{"gray18", 46, 46, 46},
{"gray19", 48, 48, 48},
{"gray2", 5, 5, 5},
{"gray20", 51, 51, 51},
{"gray21", 54, 54, 54},
{"gray22", 56, 56, 56},
{"gray23", 59, 59, 59},
{"gray24", 61, 61, 61},
{"gray25", 64, 64, 64},
{"gray26", 66, 66, 66},
{"gray27", 69, 69, 69},
{"gray28", 71, 71, 71},
{"gray29", 74, 74, 74},
{"gray3", 8, 8, 8},
{"gray30", 77, 77, 77},
{"gray31", 79, 79, 79},
{"gray32", 82, 82, 82},
{"gray33", 84, 84, 84},
{"gray34", 87, 87, 87},
{"gray35", 89, 89, 89},
{"gray36", 92, 92, 92},
{"gray37", 94, 94, 94},
{"gray38", 97, 97, 97},
{"gray39", 99, 99, 99},
{"gray4", 10, 10, 10},
{"gray40", 102, 102, 102},
{"gray41", 105, 105, 105},
{"gray42", 107, 107, 107},
{"gray43", 110, 110, 110},
{"gray44", 112, 112, 112},
{"gray45", 115, 115, 115},
{"gray46", 117, 117, 117},
{"gray47", 120, 120, 120},
{"gray48", 122, 122, 122},
{"gray49", 125, 125, 125},
{"gray5", 13, 13, 13},
{"gray50", 127, 127, 127},
{"gray51", 130, 130, 130},
{"gray52", 133, 133, 133},
{"gray53", 135, 135, 135},
{"gray54", 138, 138, 138},
{"gray55", 140, 140, 140},
{"gray56", 143, 143, 143},
{"gray57", 145, 145, 145},
{"gray58", 148, 148, 148},
{"gray59", 150, 150, 150},
{"gray6", 15, 15, 15},
{"gray60", 153, 153, 153},
{"gray61", 156, 156, 156},
{"gray62", 158, 158, 158},
{"gray63", 161, 161, 161},
{"gray64", 163, 163, 163},
{"gray65", 166, 166, 166},
{"gray66", 168, 168, 168},
{"gray67", 171, 171, 171},
{"gray68", 173, 173, 173},
{"gray69", 176, 176, 176},
{"gray7", 18, 18, 18},
{"gray70", 179, 179, 179},
{"gray71", 181, 181, 181},
{"gray72", 184, 184, 184},
{"gray73", 186, 186, 186},
{"gray74", 189, 189, 189},
{"gray75", 191, 191, 191},
{"gray76", 194, 194, 194},
{"gray77", 196, 196, 196},
{"gray78", 199, 199, 199},
{"gray79", 201, 201, 201},
{"gray8", 20, 20, 20},
{"gray80", 204, 204, 204},
{"gray81", 207, 207, 207},
{"gray82", 209, 209, 209},
{"gray83", 212, 212, 212},
{"gray84", 214, 214, 214},
{"gray85", 217, 217, 217},
{"gray86", 219, 219, 219},
{"gray87", 222, 222, 222},
{"gray88", 224, 224, 224},
{"gray89", 227, 227, 227},
{"gray9", 23, 23, 23},
{"gray90", 229, 229, 229},
{"gray91", 232, 232, 232},
{"gray92", 235, 235, 235},
{"gray93", 237, 237, 237},
{"gray94", 240, 240, 240},
{"gray95", 242, 242, 242},
{"gray96", 245, 245, 245},
{"gray97", 247, 247, 247},
{"gray98", 250, 250, 250},
{"gray99", 252, 252, 252},
{"green", 0, 255, 0},
{"green yellow", 173, 255, 47},
{"green1", 0, 255, 0},
{"green2", 0, 238, 0},
{"green3", 0, 205, 0},
{"green4", 0, 139, 0},
{"GreenYellow", 173, 255, 47},
{"grey", 190, 190, 190},
{"grey0", 0, 0, 0},
{"grey1", 3, 3, 3},
{"grey10", 26, 26, 26},
{"grey100", 255, 255, 255},
{"grey11", 28, 28, 28},
{"grey12", 31, 31, 31},
{"grey13", 33, 33, 33},
{"grey14", 36, 36, 36},
{"grey15", 38, 38, 38},
{"grey16", 41, 41, 41},
{"grey17", 43, 43, 43},
{"grey18", 46, 46, 46},
{"grey19", 48, 48, 48},
{"grey2", 5, 5, 5},
{"grey20", 51, 51, 51},
{"grey21", 54, 54, 54},
{"grey22", 56, 56, 56},
{"grey23", 59, 59, 59},
{"grey24", 61, 61, 61},
{"grey25", 64, 64, 64},
{"grey26", 66, 66, 66},
{"grey27", 69, 69, 69},
{"grey28", 71, 71, 71},
{"grey29", 74, 74, 74},
{"grey3", 8, 8, 8},
{"grey30", 77, 77, 77},
{"grey31", 79, 79, 79},
{"grey32", 82, 82, 82},
{"grey33", 84, 84, 84},
{"grey34", 87, 87, 87},
{"grey35", 89, 89, 89},
{"grey36", 92, 92, 92},
{"grey37", 94, 94, 94},
{"grey38", 97, 97, 97},
{"grey39", 99, 99, 99},
{"grey4", 10, 10, 10},
{"grey40", 102, 102, 102},
{"grey41", 105, 105, 105},
{"grey42", 107, 107, 107},
{"grey43", 110, 110, 110},
{"grey44", 112, 112, 112},
{"grey45", 115, 115, 115},
{"grey46", 117, 117, 117},
{"grey47", 120, 120, 120},
{"grey48", 122, 122, 122},
{"grey49", 125, 125, 125},
{"grey5", 13, 13, 13},
{"grey50", 127, 127, 127},
{"grey51", 130, 130, 130},
{"grey52", 133, 133, 133},
{"grey53", 135, 135, 135},
{"grey54", 138, 138, 138},
{"grey55", 140, 140, 140},
{"grey56", 143, 143, 143},
{"grey57", 145, 145, 145},
{"grey58", 148, 148, 148},
{"grey59", 150, 150, 150},
{"grey6", 15, 15, 15},
{"grey60", 153, 153, 153},
{"grey61", 156, 156, 156},
{"grey62", 158, 158, 158},
{"grey63", 161, 161, 161},
{"grey64", 163, 163, 163},
{"grey65", 166, 166, 166},
{"grey66", 168, 168, 168},
{"grey67", 171, 171, 171},
{"grey68", 173, 173, 173},
{"grey69", 176, 176, 176},
{"grey7", 18, 18, 18},
{"grey70", 179, 179, 179},
{"grey71", 181, 181, 181},
{"grey72", 184, 184, 184},
{"grey73", 186, 186, 186},
{"grey74", 189, 189, 189},
{"grey75", 191, 191, 191},
{"grey76", 194, 194, 194},
{"grey77", 196, 196, 196},
{"grey78", 199, 199, 199},
{"grey79", 201, 201, 201},
{"grey8", 20, 20, 20},
{"grey80", 204, 204, 204},
{"grey81", 207, 207, 207},
{"grey82", 209, 209, 209},
{"grey83", 212, 212, 212},
{"grey84", 214, 214, 214},
{"grey85", 217, 217, 217},
{"grey86", 219, 219, 219},
{"grey87", 222, 222, 222},
{"grey88", 224, 224, 224},
{"grey89", 227, 227, 227},
{"grey9", 23, 23, 23},
{"grey90", 229, 229, 229},
{"grey91", 232, 232, 232},
{"grey92", 235, 235, 235},
{"grey93", 237, 237, 237},
{"grey94", 240, 240, 240},
{"grey95", 242, 242, 242},
{"grey96", 245, 245, 245},
{"grey97", 247, 247, 247},
{"grey98", 250, 250, 250},
{"grey99", 252, 252, 252},
{"honeydew", 240, 255, 240},
{"honeydew1", 240, 255, 240},
{"honeydew2", 224, 238, 224},
{"honeydew3", 193, 205, 193},
{"honeydew4", 131, 139, 131},
{"hot pink", 255, 105, 180},
{"HotPink", 255, 105, 180},
{"HotPink1", 255, 110, 180},
{"HotPink2", 238, 106, 167},
{"HotPink3", 205, 96, 144},
{"HotPink4", 139, 58, 98},
{"indian red", 205, 92, 92},
{"IndianRed", 205, 92, 92},
{"IndianRed1", 255, 106, 106},
{"IndianRed2", 238, 99, 99},
{"IndianRed3", 205, 85, 85},
{"IndianRed4", 139, 58, 58},
{"ivory", 255, 255, 240},
{"ivory1", 255, 255, 240},
{"ivory2", 238, 238, 224},
{"ivory3", 205, 205, 193},
{"ivory4", 139, 139, 131},
{"khaki", 240, 230, 140},
{"khaki1", 255, 246, 143},
{"khaki2", 238, 230, 133},
{"khaki3", 205, 198, 115},
{"khaki4", 139, 134, 78},
{"lavender", 230, 230, 250},
{"lavender blush", 255, 240, 245},
{"LavenderBlush", 255, 240, 245},
{"LavenderBlush1", 255, 240, 245},
{"LavenderBlush2", 238, 224, 229},
{"LavenderBlush3", 205, 193, 197},
{"LavenderBlush4", 139, 131, 134},
{"lawn green", 124, 252, 0},
{"LawnGreen", 124, 252, 0},
{"lemon chiffon", 255, 250, 205},
{"LemonChiffon", 255, 250, 205},
{"LemonChiffon1", 255, 250, 205},
{"LemonChiffon2", 238, 233, 191},
{"LemonChiffon3", 205, 201, 165},
{"LemonChiffon4", 139, 137, 112},
{"light blue", 173, 216, 230},
{"light coral", 240, 128, 128},
{"light cyan", 224, 255, 255},
{"light goldenrod", 238, 221, 130},
{"light goldenrod yellow", 250, 250, 210},
{"light gray", 211, 211, 211},
{"light green", 144, 238, 144},
{"light grey", 211, 211, 211},
{"light pink", 255, 182, 193},
{"light salmon", 255, 160, 122},
{"light sea green", 32, 178, 170},
{"light sky blue", 135, 206, 250},
{"light slate blue", 132, 112, 255},
{"light slate gray", 119, 136, 153},
{"light slate grey", 119, 136, 153},
{"light steel blue", 176, 196, 222},
{"light yellow", 255, 255, 224},
{"LightBlue", 173, 216, 230},
{"LightBlue1", 191, 239, 255},
{"LightBlue2", 178, 223, 238},
{"LightBlue3", 154, 192, 205},
{"LightBlue4", 104, 131, 139},
{"LightCoral", 240, 128, 128},
{"LightCyan", 224, 255, 255},
{"LightCyan1", 224, 255, 255},
{"LightCyan2", 209, 238, 238},
{"LightCyan3", 180, 205, 205},
{"LightCyan4", 122, 139, 139},
{"LightGoldenrod", 238, 221, 130},
{"LightGoldenrod1", 255, 236, 139},
{"LightGoldenrod2", 238, 220, 130},
{"LightGoldenrod3", 205, 190, 112},
{"LightGoldenrod4", 139, 129, 76},
{"LightGoldenrodYellow", 250, 250, 210},
{"LightGray", 211, 211, 211},
{"LightGreen", 144, 238, 144},
{"LightGrey", 211, 211, 211},
{"LightPink", 255, 182, 193},
{"LightPink1", 255, 174, 185},
{"LightPink2", 238, 162, 173},
{"LightPink3", 205, 140, 149},
{"LightPink4", 139, 95, 101},
{"LightSalmon", 255, 160, 122},
{"LightSalmon1", 255, 160, 122},
{"LightSalmon2", 238, 149, 114},
{"LightSalmon3", 205, 129, 98},
{"LightSalmon4", 139, 87, 66},
{"LightSeaGreen", 32, 178, 170},
{"LightSkyBlue", 135, 206, 250},
{"LightSkyBlue1", 176, 226, 255},
{"LightSkyBlue2", 164, 211, 238},
{"LightSkyBlue3", 141, 182, 205},
{"LightSkyBlue4", 96, 123, 139},
{"LightSlateBlue", 132, 112, 255},
{"LightSlateGray", 119, 136, 153},
{"LightSlateGrey", 119, 136, 153},
{"LightSteelBlue", 176, 196, 222},
{"LightSteelBlue1", 202, 225, 255},
{"LightSteelBlue2", 188, 210, 238},
{"LightSteelBlue3", 162, 181, 205},
{"LightSteelBlue4", 110, 123, 139},
{"LightYellow", 255, 255, 224},
{"LightYellow1", 255, 255, 224},
{"LightYellow2", 238, 238, 209},
{"LightYellow3", 205, 205, 180},
{"LightYellow4", 139, 139, 122},
{"lime green", 50, 205, 50},
{"LimeGreen", 50, 205, 50},
{"linen", 250, 240, 230},
{"magenta", 255, 0, 255},
{"magenta1", 255, 0, 255},
{"magenta2", 238, 0, 238},
{"magenta3", 205, 0, 205},
{"magenta4", 139, 0, 139},
{"maroon", 176, 48, 96},
{"maroon1", 255, 52, 179},
{"maroon2", 238, 48, 167},
{"maroon3", 205, 41, 144},
{"maroon4", 139, 28, 98},
{"medium aquamarine", 102, 205, 170},
{"medium blue", 0, 0, 205},
{"medium orchid", 186, 85, 211},
{"medium purple", 147, 112, 219},
{"medium sea green", 60, 179, 113},
{"medium slate blue", 123, 104, 238},
{"medium spring green", 0, 250, 154},
{"medium turquoise", 72, 209, 204},
{"medium violet red", 199, 21, 133},
{"MediumAquamarine", 102, 205, 170},
{"MediumBlue", 0, 0, 205},
{"MediumOrchid", 186, 85, 211},
{"MediumOrchid1", 224, 102, 255},
{"MediumOrchid2", 209, 95, 238},
{"MediumOrchid3", 180, 82, 205},
{"MediumOrchid4", 122, 55, 139},
{"MediumPurple", 147, 112, 219},
{"MediumPurple1", 171, 130, 255},
{"MediumPurple2", 159, 121, 238},
{"MediumPurple3", 137, 104, 205},
{"MediumPurple4", 93, 71, 139},
{"MediumSeaGreen", 60, 179, 113},
{"MediumSlateBlue", 123, 104, 238},
{"MediumSpringGreen", 0, 250, 154},
{"MediumTurquoise", 72, 209, 204},
{"MediumVioletRed", 199, 21, 133},
{"midnight blue", 25, 25, 112},
{"MidnightBlue", 25, 25, 112},
{"mint cream", 245, 255, 250},
{"MintCream", 245, 255, 250},
{"misty rose", 255, 228, 225},
{"MistyRose", 255, 228, 225},
{"MistyRose1", 255, 228, 225},
{"MistyRose2", 238, 213, 210},
{"MistyRose3", 205, 183, 181},
{"MistyRose4", 139, 125, 123},
{"moccasin", 255, 228, 181},
{"navajo white", 255, 222, 173},
{"NavajoWhite", 255, 222, 173},
{"NavajoWhite1", 255, 222, 173},
{"NavajoWhite2", 238, 207, 161},
{"NavajoWhite3", 205, 179, 139},
{"NavajoWhite4", 139, 121, 94},
{"navy", 0, 0, 128},
{"navy blue", 0, 0, 128},
{"NavyBlue", 0, 0, 128},
{"old lace", 253, 245, 230},
{"OldLace", 253, 245, 230},
{"olive drab", 107, 142, 35},
{"OliveDrab", 107, 142, 35},
{"OliveDrab1", 192, 255, 62},
{"OliveDrab2", 179, 238, 58},
{"OliveDrab3", 154, 205, 50},
{"OliveDrab4", 105, 139, 34},
{"orange", 255, 165, 0},
{"orange red", 255, 69, 0},
{"orange1", 255, 165, 0},
{"orange2", 238, 154, 0},
{"orange3", 205, 133, 0},
{"orange4", 139, 90, 0},
{"OrangeRed", 255, 69, 0},
{"OrangeRed1", 255, 69, 0},
{"OrangeRed2", 238, 64, 0},
{"OrangeRed3", 205, 55, 0},
{"OrangeRed4", 139, 37, 0},
{"orchid", 218, 112, 214},
{"orchid1", 255, 131, 250},
{"orchid2", 238, 122, 233},
{"orchid3", 205, 105, 201},
{"orchid4", 139, 71, 137},
{"pale goldenrod", 238, 232, 170},
{"pale green", 152, 251, 152},
{"pale turquoise", 175, 238, 238},
{"pale violet red", 219, 112, 147},
{"PaleGoldenrod", 238, 232, 170},
{"PaleGreen", 152, 251, 152},
{"PaleGreen1", 154, 255, 154},
{"PaleGreen2", 144, 238, 144},
{"PaleGreen3", 124, 205, 124},
{"PaleGreen4", 84, 139, 84},
{"PaleTurquoise", 175, 238, 238},
{"PaleTurquoise1", 187, 255, 255},
{"PaleTurquoise2", 174, 238, 238},
{"PaleTurquoise3", 150, 205, 205},
{"PaleTurquoise4", 102, 139, 139},
{"PaleVioletRed", 219, 112, 147},
{"PaleVioletRed1", 255, 130, 171},
{"PaleVioletRed2", 238, 121, 159},
{"PaleVioletRed3", 205, 104, 137},
{"PaleVioletRed4", 139, 71, 93},
{"papaya whip", 255, 239, 213},
{"PapayaWhip", 255, 239, 213},
{"peach puff", 255, 218, 185},
{"PeachPuff", 255, 218, 185},
{"PeachPuff1", 255, 218, 185},
{"PeachPuff2", 238, 203, 173},
{"PeachPuff3", 205, 175, 149},
{"PeachPuff4", 139, 119, 101},
{"peru", 205, 133, 63},
{"pink", 255, 192, 203},
{"pink1", 255, 181, 197},
{"pink2", 238, 169, 184},
{"pink3", 205, 145, 158},
{"pink4", 139, 99, 108},
{"plum", 221, 160, 221},
{"plum1", 255, 187, 255},
{"plum2", 238, 174, 238},
{"plum3", 205, 150, 205},
{"plum4", 139, 102, 139},
{"powder blue", 176, 224, 230},
{"PowderBlue", 176, 224, 230},
{"purple", 160, 32, 240},
{"purple1", 155, 48, 255},
{"purple2", 145, 44, 238},
{"purple3", 125, 38, 205},
{"purple4", 85, 26, 139},
{"red", 255, 0, 0},
{"red1", 255, 0, 0},
{"red2", 238, 0, 0},
{"red3", 205, 0, 0},
{"red4", 139, 0, 0},
{"rosy brown", 188, 143, 143},
{"RosyBrown", 188, 143, 143},
{"RosyBrown1", 255, 193, 193},
{"RosyBrown2", 238, 180, 180},
{"RosyBrown3", 205, 155, 155},
{"RosyBrown4", 139, 105, 105},
{"royal blue", 65, 105, 225},
{"RoyalBlue", 65, 105, 225},
{"RoyalBlue1", 72, 118, 255},
{"RoyalBlue2", 67, 110, 238},
{"RoyalBlue3", 58, 95, 205},
{"RoyalBlue4", 39, 64, 139},
{"saddle brown", 139, 69, 19},
{"SaddleBrown", 139, 69, 19},
{"salmon", 250, 128, 114},
{"salmon1", 255, 140, 105},
{"salmon2", 238, 130, 98},
{"salmon3", 205, 112, 84},
{"salmon4", 139, 76, 57},
{"sandy brown", 244, 164, 96},
{"SandyBrown", 244, 164, 96},
{"sea green", 46, 139, 87},
{"SeaGreen", 46, 139, 87},
{"SeaGreen1", 84, 255, 159},
{"SeaGreen2", 78, 238, 148},
{"SeaGreen3", 67, 205, 128},
{"SeaGreen4", 46, 139, 87},
{"seashell", 255, 245, 238},
{"seashell1", 255, 245, 238},
{"seashell2", 238, 229, 222},
{"seashell3", 205, 197, 191},
{"seashell4", 139, 134, 130},
{"sienna", 160, 82, 45},
{"sienna1", 255, 130, 71},
{"sienna2", 238, 121, 66},
{"sienna3", 205, 104, 57},
{"sienna4", 139, 71, 38},
{"sky blue", 135, 206, 235},
{"SkyBlue", 135, 206, 235},
{"SkyBlue1", 135, 206, 255},
{"SkyBlue2", 126, 192, 238},
{"SkyBlue3", 108, 166, 205},
{"SkyBlue4", 74, 112, 139},
{"slate blue", 106, 90, 205},
{"slate gray", 112, 128, 144},
{"slate grey", 112, 128, 144},
{"SlateBlue", 106, 90, 205},
{"SlateBlue1", 131, 111, 255},
{"SlateBlue2", 122, 103, 238},
{"SlateBlue3", 105, 89, 205},
{"SlateBlue4", 71, 60, 139},
{"SlateGray", 112, 128, 144},
{"SlateGray1", 198, 226, 255},
{"SlateGray2", 185, 211, 238},
{"SlateGray3", 159, 182, 205},
{"SlateGray4", 108, 123, 139},
{"SlateGrey", 112, 128, 144},
{"snow", 255, 250, 250},
{"snow1", 255, 250, 250},
{"snow2", 238, 233, 233},
{"snow3", 205, 201, 201},
{"snow4", 139, 137, 137},
{"spring green", 0, 255, 127},
{"SpringGreen", 0, 255, 127},
{"SpringGreen1", 0, 255, 127},
{"SpringGreen2", 0, 238, 118},
{"SpringGreen3", 0, 205, 102},
{"SpringGreen4", 0, 139, 69},
{"steel blue", 70, 130, 180},
{"SteelBlue", 70, 130, 180},
{"SteelBlue1", 99, 184, 255},
{"SteelBlue2", 92, 172, 238},
{"SteelBlue3", 79, 148, 205},
{"SteelBlue4", 54, 100, 139},
{"tan", 210, 180, 140},
{"tan1", 255, 165, 79},
{"tan2", 238, 154, 73},
{"tan3", 205, 133, 63},
{"tan4", 139, 90, 43},
{"thistle", 216, 191, 216},
{"thistle1", 255, 225, 255},
{"thistle2", 238, 210, 238},
{"thistle3", 205, 181, 205},
{"thistle4", 139, 123, 139},
{"tomato", 255, 99, 71},
{"tomato1", 255, 99, 71},
{"tomato2", 238, 92, 66},
{"tomato3", 205, 79, 57},
{"tomato4", 139, 54, 38},
{"turquoise", 64, 224, 208},
{"turquoise1", 0, 245, 255},
{"turquoise2", 0, 229, 238},
{"turquoise3", 0, 197, 205},
{"turquoise4", 0, 134, 139},
{"violet", 238, 130, 238},
{"violet red", 208, 32, 144},
{"VioletRed", 208, 32, 144},
{"VioletRed1", 255, 62, 150},
{"VioletRed2", 238, 58, 140},
{"VioletRed3", 205, 50, 120},
{"VioletRed4", 139, 34, 82},
{"wheat", 245, 222, 179},
{"wheat1", 255, 231, 186},
{"wheat2", 238, 216, 174},
{"wheat3", 205, 186, 150},
{"wheat4", 139, 126, 102},
{"white", 255, 255, 255},
{"white smoke", 245, 245, 245},
{"WhiteSmoke", 245, 245, 245},
{"yellow", 255, 255, 0},
{"yellow green", 154, 205, 50},
{"yellow1", 255, 255, 0},
{"yellow2", 238, 238, 0},
{"yellow3", 205, 205, 0},
{"yellow4", 139, 139, 0},
{"YellowGreen", 154, 205, 50},
};
/* clang-format on */
static const DLword bitmask[16] = {1 << 15, 1 << 14, 1 << 13, 1 << 12, 1 << 11, 1 << 10,
1 << 9, 1 << 8, 1 << 7, 1 << 6, 1 << 5, 1 << 4,
@@ -944,38 +186,7 @@ extern DLword *EmCursorBitMap68K;
extern DLword *CTopKeyevent;
extern int URaid_req;
extern LispPTR *KEYBUFFERING68k;
extern char foregroundColorName[64];
extern char backgroundColorName[64];
/*
* sdl_MapColorName approximates the X11 color parsing,
* taking either a #RRGGBB hex value, or a name that is mapped
* through the X11 color names table, returning an SDL pixel
* according to the given pixel format
*/
static Uint32 sdl_MapColorName(const SDL_PixelFormat * format, char *name) {
/* check for #RRBBGG format */
if (name[0]=='#' && strlen(name) == 7 && strspn(&name[1], "0123456789abcdefABCDEF") == 6) {
unsigned long pixval = strtoul(&name[1], NULL, 16);
#if SDL_MAJOR_VERSION == 2
return SDL_MapRGB(format, (pixval >> 16) & 0xFF, (pixval >> 8) & 0xFF, pixval & 0xFF);
#else
return SDL_MapRGB(format, NULL, (pixval >> 16) & 0xFF, (pixval >> 8) & 0xFF, pixval & 0xFF);
#endif
}
/* then try for a named color */
for (int i = 0; i < sizeof(colornames)/sizeof(colornames[0]); i++) {
if (0 == strcasecmp(name, colornames[i].name)) {
#if SDL_MAJOR_VERSION == 2
return SDL_MapRGB(format, colornames[i].red, colornames[i].green, colornames[i].blue);
#else
return SDL_MapRGB(format, NULL, colornames[i].red, colornames[i].green, colornames[i].blue);
#endif
}
}
/* fail */
return(0);
}
void DoRing() {
DLword w, r;
KBEVENT *kbevent;
@@ -1345,11 +556,11 @@ static void sdl_update_viewport(int width, int height) {
static int last_keystate[512] = {0};
void sdl_set_invert(int flag) {
if (flag) {
sdl_foreground = sdl_background_color;
sdl_background = sdl_foreground_color;
sdl_foreground = sdl_white;
sdl_background = sdl_black;
} else {
sdl_foreground = sdl_foreground_color;
sdl_background = sdl_background_color;
sdl_foreground = sdl_black;
sdl_background = sdl_white;
}
sdl_notify_damage(0, 0, sdl_displaywidth, sdl_displayheight);
}
@@ -1414,14 +625,22 @@ void process_SDLevents() {
sdl_windowheight = event.window.data2;
sdl_update_viewport(sdl_windowwidth, sdl_windowheight);
break;
case SDL_WINDOWEVENT_ENTER:
break;
case SDL_WINDOWEVENT_LEAVE:
break;
case SDL_WINDOWEVENT_SHOWN:
break;
case SDL_WINDOWEVENT_HIDDEN:
break;
case SDL_WINDOWEVENT_EXPOSED:
break;
case SDL_WINDOWEVENT_FOCUS_GAINED:
sdl_window_focusp = 1;
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
sdl_window_focusp = 0;
break;
default:
break;
}
break;
#else
@@ -1431,12 +650,6 @@ void process_SDLevents() {
sdl_windowheight = event.window.data2;
sdl_update_viewport(sdl_windowwidth, sdl_windowheight);
break;
case SDL_EVENT_WINDOW_FOCUS_GAINED:
sdl_window_focusp = 1;
break;
case SDL_EVENT_WINDOW_FOCUS_LOST:
sdl_window_focusp = 0;
break;
#endif
#if SDL_MAJOR_VERSION == 2
case SDL_KEYDOWN:
@@ -1531,6 +744,8 @@ void process_SDLevents() {
printf("mousewheel mouse %d x %d y %d direction %s\n", event.wheel.which, event.wheel.x,
event.wheel.y,
event.wheel.direction == SDL_MOUSEWHEEL_NORMAL ? "normal" : "flipped");
*/
/*
these are the 4 key bits for mouse wheel/trackpad scrolling - which unlike X11 are
*not* presented as mouse button down/up events for each scroll action
@@ -1565,7 +780,9 @@ int init_SDL(char *windowtitle, int w, int h, int s) {
sdl_displayheight = h;
sdl_windowwidth = w * s;
sdl_windowheight = h * s;
printf("requested width: %d, height: %d\n", sdl_displaywidth, sdl_displayheight);
int width = sdl_displaywidth;
int height = sdl_displayheight;
printf("requested width: %d, height: %d\n", width, height);
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
printf("SDL could not be initialized. SDL_Error: %s\n", SDL_GetError());
return 1;
@@ -1606,14 +823,11 @@ int init_SDL(char *windowtitle, int w, int h, int s) {
#endif
printf("Creating texture...\n");
sdl_texture = SDL_CreateTexture(sdl_renderer, sdl_pixelformat->format,
SDL_TEXTUREACCESS_STREAMING,
sdl_displaywidth, sdl_displayheight);
sdl_foreground_color = sdl_MapColorName(sdl_pixelformat,
foregroundColorName[0] ? foregroundColorName : "black");
sdl_background_color = sdl_MapColorName(sdl_pixelformat,
backgroundColorName[0] ? backgroundColorName : "white");
sdl_foreground = sdl_foreground_color;
sdl_background = sdl_background_color;
SDL_TEXTUREACCESS_STREAMING, width, height);
sdl_black = SDL_MapRGB(sdl_pixelformat, 0, 0, 0);
sdl_white = SDL_MapRGB(sdl_pixelformat, 255, 255, 255);
sdl_foreground = sdl_black;
sdl_background = sdl_white;
#if SDL_MAJOR_VERSION == 2
sdl_bytesperpixel = sdl_pixelformat->BytesPerPixel;
#else
@@ -1623,12 +837,10 @@ int init_SDL(char *windowtitle, int w, int h, int s) {
printf("Creating window surface and buffer surface\n");
sdl_windowsurface = SDL_GetWindowSurface(sdl_window);
sdl_pixelformat = sdl_windowsurface->format;
sdl_foreground_color = sdl_MapColorName(sdl_pixelformat,
foregroundColorName[0] ? foregroundColorName : "black");
sdl_background_color = sdl_MapColorName(sdl_pixelformat,
backgroundColorName[0] ? backgroundColorName : "white");
sdl_foreground = sdl_foreground_color;
sdl_background = sdl_background_color;
sdl_black = SDL_MapRGB(sdl_pixelformat, 0, 0, 0);
sdl_white = SDL_MapRGB(sdl_pixelformat, 255, 255, 255);
sdl_foreground = sdl_black;
sdl_background = sdl_white;
#if SDL_MAJOR_VERSION == 2
sdl_bytesperpixel = sdl_pixelformat->BytesPerPixel;
#else

View File

@@ -23,7 +23,6 @@
#include "commondefs.h" // for error
#include "conspagedefs.h" // for cons
#include "gcdata.h" // for ADDREF, GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcfinaldefs.h" // for makefreearrayblock, mergebackward
#include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO
#include "lispemul.h" // for LispPTR, NIL, GETFPTOVP, INTSTAT, ATOM_T

View File

@@ -29,7 +29,6 @@
/***********************************************************/
#include <stdio.h> // for printf, sprintf, NULL
#include <stdlib.h> // for EXIT_FAILURE, EXIT_SUCCESS
#include <time.h> // for nanosleep, timespec
#include "adr68k.h" // for NativeAligned2FromLAddr, NativeAligned4FromLAddr
#include "arith.h" // for N_GETNUMBER, ARITH_SWITCH
@@ -65,11 +64,6 @@
#include "uutilsdefs.h" // for suspend_lisp, check_unix_password, unix_fu...
#include "vmemsavedefs.h" // for lisp_finish, vmem_save0
#ifdef COLOR
#include "rawcolordefs.h"
#include "llcolordefs.h"
#endif
extern LispPTR *PENDINGINTERRUPT68k;
/***********************************************************/
@@ -413,17 +407,16 @@ void OP_subrcall(int subr_no, int argnum) {
break;
case sb_LISPFINISH:
case sb_LISP_FINISH: {
int status;
case sb_LISP_FINISH:
POP_SUBR_ARGS;
if (argnum == 0 || argnum == 1 || (argnum == 2 && args[1] == NIL)) lisp_finish(EXIT_SUCCESS);
if (argnum > 2) lisp_finish(EXIT_FAILURE);
N_GETNUMBER(args[1], status, exit_fail);
lisp_finish(status);
exit_fail:
lisp_finish(EXIT_FAILURE);
if ((argnum > 0) && (args[0] == S_POSITIVE))
/* 8/03/88 This branch impossible to take, subr has no args */
{
TopOfStack = suspend_lisp(args);
} else
lisp_finish();
break;
}
case sb_NEWPAGE:
POP_SUBR_ARGS;
TopOfStack = newpage(args[0]);
@@ -591,7 +584,7 @@ void OP_subrcall(int subr_no, int argnum) {
case sb_SUSPEND_LISP:
POP_SUBR_ARGS;
/* Suspend Maiko */
TopOfStack = suspend_lisp();
TopOfStack = suspend_lisp(args);
break;
case sb_MONITOR_CONTROL:

View File

@@ -683,10 +683,9 @@ int print_opcode(int pc, DLbyte *addr, struct fnhead *fnobj) {
extern unsigned int oplength[256];
int len = oplength[op] + 1;
printf(" 0%04o (0x%04x) ", pc, pc);
for (i = 0; i < len; i++) printf("%4o", 0xFF & GETBYTE(addr + i));
for (; i < 9; i++) printf(" ");
printf("%s", opcode_table[op]);
printf(" 0%o (0x%x) ", pc, pc);
for (i = 0; i < len; i++) printf("%o ", 0xFF & GETBYTE(addr + i));
printf(" %s", opcode_table[op]);
switch (op) {
case 0:

View File

@@ -22,60 +22,9 @@
#include "lsptypes.h"
#include "lspglob.h"
#include "commondefs.h"
#include "tty.h"
#include "ttydefs.h"
/* TTY Commands and structures for communicating with Lisp */
#define TTY_GET_STATUS 33280>>8
#define TTY_ON 33536>>8
#define TTY_OFF 33792>>8
#define TTY_BREAK_ON 34304>>8
#define TTY_BREAK_OFF 34560>>8
#define PUT_CHAR 128
#define ABORT_PUT 133
#define SET_PARAM 129
#define SET_DSR 33025
#define SET_CTS 33026
#define SET_CHAR_LENGTH 33028
#define SET_PARITY 33032
#define SET_STOP_BITS 33040
#define SET_BAUD_RATE 33056
#define SET_ALL_PARAMETERS 33087
typedef struct {
unsigned command : 8;
unsigned outdata : 8;
} DLTTY_OUT_COMMAND;
typedef struct {
unsigned on_off : 4;
unsigned line_speed : 4;
unsigned stop_bits : 2;
unsigned parity : 2;
unsigned char_length : 2;
unsigned clear_to_send : 1;
unsigned data_set_ready : 1;
DLword notify_mask;
} DLTTY_OUT_CSB;
typedef struct {
unsigned state : 1;
unsigned nil1 : 7;
unsigned success : 1;
unsigned break_detected : 1;
unsigned framing_error : 1;
unsigned data_lost : 1;
unsigned parity_error : 1;
unsigned nil2 : 2;
unsigned not_ready : 1;
char in_data;
unsigned data_terminal_ready : 1;
unsigned nil3 : 4;
unsigned request_to_send : 1;
unsigned rx_ready : 1;
unsigned tx_ready : 1;
} DLTTY_IN_CSB;
static DLTTY_OUT_COMMAND *DLTTYPortCmd;
static DLTTY_IN_CSB *DLTTYIn;
static DLTTY_OUT_CSB *DLTTYOut;

395
src/ufs.c
View File

@@ -9,7 +9,6 @@
#include "version.h"
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <setjmp.h>
@@ -177,9 +176,9 @@ LispPTR UFS_getfilename(LispPTR *args)
* unixpathname specifies it.
*/
#ifdef DOS
if (unixpathname(lfname, file, sizeof(file), 0, 0, 0, 0, 0) == 0) return (NIL);
if (unixpathname(lfname, file, 0, 0, 0, 0, 0) == 0) return (NIL);
#else
if (unixpathname(lfname, file, sizeof(file), 0, 0) == 0) return (NIL);
if (unixpathname(lfname, file, 0, 0) == 0) return (NIL);
#endif /* DOS */
switch (args[1]) {
@@ -201,7 +200,7 @@ LispPTR UFS_getfilename(LispPTR *args)
case RECOG_NON:
/*
* "New" file means the "not existing" file. UNIX device always
* recognizes a not existing file as is, the subsequent OPENFILE will
* recognizes a not existing file as if, the subsequent OPENFILE will
* find the truth.
* "Non" recognition is used to recognize a sysout file.
*/
@@ -211,15 +210,15 @@ LispPTR UFS_getfilename(LispPTR *args)
* Now, we convert a file name back to Lisp format. The version field have not
* to be converted. The fourth argument for lisppathname specifies it.
*/
if (lisppathname(file, lfname, sizeof(lfname), 0, 0) == 0) return (NIL);
if (lisppathname(file, lfname, 0, 0) == 0) return (NIL);
STRING_BASE(args[2], base);
len = strlen(lfname);
#ifndef BYTESWAP
strncpy(base, lfname, len);
strncpy(base, lfname, len + 1);
#else
MemCpyToLispFromNative(base, lfname, len);
StrNCpyFromCToLisp(base, lfname, len + 1);
#endif /* BYTESWAP */
return (GetSmallp(len));
@@ -260,9 +259,9 @@ LispPTR UFS_deletefile(LispPTR *args)
LispStringToCString(args[0], fbuf, MAXPATHLEN);
#ifdef DOS
if (unixpathname(fbuf, file, sizeof(file), 0, 0, 0, 0, 0) == 0) return (NIL);
if (unixpathname(fbuf, file, 0, 0, 0, 0, 0) == 0) return (NIL);
#else
if (unixpathname(fbuf, file, sizeof(file), 0, 0) == 0) return (NIL);
if (unixpathname(fbuf, file, 0, 0) == 0) return (NIL);
#endif /* DOS */
/* check if we're operating on directory or file */
TIMEOUT(rval = stat(file, &sbuf));
@@ -328,15 +327,15 @@ LispPTR UFS_renamefile(LispPTR *args)
LispStringToCString(args[0], fbuf, MAXPATHLEN);
#ifdef DOS
if (unixpathname(fbuf, src, sizeof(src), 0, 0, 0, 0, 0) == 0) return (NIL);
if (unixpathname(fbuf, src, 0, 0, 0, 0, 0) == 0) return (NIL);
#else
if (unixpathname(fbuf, src, sizeof(src), 0, 0) == 0) return (NIL);
if (unixpathname(fbuf, src, 0, 0) == 0) return (NIL);
#endif /* DOS */
LispStringToCString(args[1], fbuf, MAXPATHLEN);
#ifdef DOS
if (unixpathname(fbuf, dst, sizeof(dst), 0, 0, 0, 0, 0) == 0) return (NIL);
if (unixpathname(fbuf, dst, 0, 0, 0, 0, 0) == 0) return (NIL);
#else
if (unixpathname(fbuf, dst, sizeof(dst), 0, 0) == 0) return (NIL);
if (unixpathname(fbuf, dst, 0, 0) == 0) return (NIL);
#endif /* DOS */
TIMEOUT(rval = rename(src, dst));
@@ -401,9 +400,9 @@ LispPTR UFS_directorynamep(LispPTR *args)
/* Convert Xerox Lisp file naming convention to Unix one. */
#ifdef DOS
if (unixpathname(dirname, fullname, sizeof(fullname), 0, 0, 0, 0, 0) == 0) return (NIL);
if (unixpathname(dirname, fullname, 0, 0, 0, 0, 0) == 0) return (NIL);
#else
if (unixpathname(dirname, fullname, sizeof(fullname), 0, 0) == 0) return (NIL);
if (unixpathname(dirname, fullname, 0, 0) == 0) return (NIL);
#endif /* DOS */
TIMEOUT(rval = stat(fullname, &sbuf));
@@ -415,109 +414,20 @@ LispPTR UFS_directorynamep(LispPTR *args)
if (!S_ISDIR(sbuf.st_mode)) return (NIL);
/* Convert Unix file naming convention to Xerox Lisp one. */
if (lisppathname(fullname, dirname, sizeof(dirname), 1, 0) == 0) return (NIL);
if (lisppathname(fullname, dirname, 1, 0) == 0) return (NIL);
len = strlen(dirname);
STRING_BASE(args[1], base);
#ifndef BYTESWAP
strncpy(base, dirname, len);
strncpy(base, dirname, len + 1);
#else
MemCpyToLispFromNative(base, dirname, len);
StrNCpyFromCToLisp(base, dirname, len + 1);
#endif /* BYTESWAP */
return (GetSmallp(len));
}
/*
* Name: UnixVersionToLispVersion
*
* Argument: char *pathname
* size_t pathsize
* int vlessp
*
* Description:
*
* Converts the Unix version in pathname to a Lisp syntax version.
* If there is no recognizable version present, and vlessp is not
* true then a Lisp version 1 (";1") will be added to the name.
*
* Initially only the "standard" .~nnn~ form of a version is recognized.
* It may be possible in the future to recognize IFS "!nnn"
*/
void UnixVersionToLispVersion(char *pathname, size_t pathsize, int vlessp) {
char *ep = &pathname[strlen(pathname) - 1];
char *uvp;
#ifdef IFSVERSION
if (isdigit(*ep)) goto maybeifsversion; /* possibly foo!## */
#endif
if (*ep-- != '~') goto noversion; /* definitely not .~###~ */
if (!isdigit(*ep)) goto noversion; /* requires at least one digit */
while (isdigit(*ep)) ep--; /* consume all digits */
if (*ep-- != '~') goto noversion; /* definitely not .~###~ */
if (*ep != '.') goto noversion;
/* must end .~###~ and ep points at the dot */
*ep++ = ';'; /* smash . to ; and point to ~ where version will go*/
for (uvp = ep + 1; *uvp == '0' && *(uvp + 1) != '~'; uvp++); /* skip leading zeroes */
while (*uvp != '~') *ep++ = *uvp++; /* shift version back */
*ep = '\0'; /* terminate the string */
return;
noversion:
if (!vlessp) strlcat(pathname, ";1", pathsize);
return;
#ifdef IFSVERSION
maybeifsversion:
while (isdigit(*ep)) ep--; /* consume all digits */
if (*ep != '!') goto noversion;
*ep = ';';
return;
#endif
}
/*
* Name: LispVersionToUnixVersion
*
* Arguments: char *pathname Xerox Lisp style pathname
* size_t pathsize Length of pathname buffer
*
* Helper procedure used by unixpathname to convert from a Lisp style path
* with ";version" style version number to the ".~version~" format used in
* the underlying host file system.
* If a syntactically correct version (all numeric, starting at the rightmost
* unescaped (') semicolon) is found it will be replaced by the host version,
* otherwise the procedure will return the pathname unchanged.
*
*/
void LispVersionToUnixVersion(char *pathname, size_t pathsize) {
char version[VERSIONLEN] = {0};
char *vp = NULL;
char *ep = &pathname[strlen(pathname) - 1]; /* from the end */
while (ep >= pathname) { /* until the beginning */
if (*ep == ';' && /* found a semicolon */
(ep == pathname || *(ep - 1) != '\'')) {/* at the beginning or not quoted */
vp = ep; /* version starts at unquoted semicolon */
break; /* stop when found version */
}
ep--; /* previous character */
}
if (vp == NULL) return; /* there was no version field */
*vp++ = '\0'; /* end name at the semicolon */
if (*vp == '\0') return; /* empty version field */
while (*vp == '0') vp++; /* skip leading zeros */
if (*vp == '\0') return; /* all zero version is no version */
version[0] = '.'; /* leading version marker */
version[1] = '~'; /* leading version marker */
strlcat(version, vp, VERSIONLEN); /* the trimmed version from the source */
strlcat(version, "~", VERSIONLEN); /* trailing version marker */
strlcat(pathname, version, pathsize); /* concatenate version to pathname */
return;
}
/*
* Name: unixpathname
*
@@ -527,7 +437,6 @@ void LispVersionToUnixVersion(char *pathname, size_t pathsize) {
* if the pathname is passed as a directory, the
* tail delimiter may be included.
* char *dst The buffer to which the converted pathname is stored.
* int dstlen The size of the dst buffer
* int versionp
* If 1, version field in src is converted to UNIX
* version form. {DSK} device invokes unixpathname
@@ -554,9 +463,9 @@ void LispVersionToUnixVersion(char *pathname, size_t pathsize) {
*
*/
#ifdef DOS
int unixpathname(char *src, char *dst, int dstlen, int versionp, int genp, char *drive, int *extlenptr, char *rawname)
int unixpathname(char *src, char *dst, int versionp, int genp, char *drive, int *extlenptr, char *rawname)
#else
int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
int unixpathname(char *src, char *dst, int versionp, int genp)
#endif /* DOS */
{
char *cp, *dp, *np;
@@ -586,12 +495,12 @@ int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
* file system code.
*/
if (strcmp(src, "<") == 0) {
strlcpy(dst, DIRSEPSTR, dstlen);
strcpy(dst, DIRSEPSTR);
return (1);
}
/* Copy src to protect it from destructive modification. */
strlcpy(lfname, src, sizeof(lfname));
strcpy(lfname, src);
/*
* If versionp is specified, we have to deal with the version field first,
@@ -601,7 +510,7 @@ int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
#ifdef DOS
if (versionp) LispVersionToUnixVersion(lfname, version); else version = -1;
#else
if (versionp) LispVersionToUnixVersion(lfname, sizeof(lfname));
if (versionp) LispVersionToUnixVersion(lfname);
#endif /* DOS */
cp = lfname;
@@ -673,7 +582,7 @@ int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
TIMEOUT0(pwd = getpwuid(getuid()));
if (pwd == NULL) return (0);
strlcpy(dst, pwd->pw_dir, dstlen);
strcpy(dst, pwd->pw_dir);
while (*dp != '\0') dp++;
if (*(dp - 1) != DIRSEP) {
/*
@@ -697,7 +606,7 @@ int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
TIMEOUT0(pwd = getpwnam(name));
if (pwd == NULL) return (0);
strlcpy(dst, pwd->pw_dir, dstlen);
strcpy(dst, pwd->pw_dir);
while (*dp != '\0') dp++;
if (*(dp - 1) != DIRSEP) {
/*
@@ -860,8 +769,6 @@ int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
#ifdef DOS
if (NameValid) *dp++ = *(cp + 1);
CountNameChars;
#else
*dp++ = *(cp + 1);
#endif /* DOS */
cp += 2;
break;
@@ -900,10 +807,10 @@ int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
* for the convenience of the pattern matching routines, we don't
* care about the last period character.
*/
strlcpy(fbuf1, lfname, sizeof(fbuf1));
strlcpy(fbuf2, dst, sizeof(fbuf2));
separate_version(fbuf1, sizeof(fbuf1), ver1, sizeof(ver1), 1);
separate_version(fbuf2, sizeof(fbuf2), ver2, sizeof(ver2), 1);
strcpy(fbuf1, lfname);
strcpy(fbuf2, dst);
separate_version(fbuf1, ver1, 1);
separate_version(fbuf2, ver2, 1);
for (cp = fbuf1; *cp; cp++) {}
for (dp = fbuf2; *dp; dp++) {}
if (*(cp - 1) == '.') {
@@ -918,11 +825,11 @@ int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
}
#ifdef DOS
if (version >= 0)
snprintf(ver2, sizeof(ver2), "%d", version);
sprintf(ver2, "%d", version);
else
*ver2 = '\0';
#endif /* DOS */
conc_name_and_version(fbuf2, ver2, dst, dstlen);
ConcNameAndVersion(fbuf2, ver2, dst);
}
return (1);
}
@@ -938,7 +845,6 @@ int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
* The lispname is used to determine which
* character should be quoted in the result
* Xerox Lisp pathname representation.
* size_t lispnamesize size of storage available for lispname
* int dirp If 1, fullname is a directory. If 0,
* fullname is a file.
* int versionp If 1, version field is also converted
@@ -965,14 +871,14 @@ int unixpathname(char *src, char *dst, size_t dstlen, int versionp, int genp)
*
*/
int lisppathname(char *fullname, char *lispname, size_t lispnamesize, int dirp, int versionp)
int lisppathname(char *fullname, char *lispname, int dirp, int versionp)
{
char *cp, *dp, *lnamep, *cnamep;
char namebuf[MAXPATHLEN], fbuf[MAXPATHLEN], ver[VERSIONLEN];
int i, mask, extensionp;
if (strcmp(fullname, DIRSEPSTR) == 0) {
strlcpy(lispname, "<", lispnamesize);
strcpy(lispname, "<");
return (1);
}
@@ -1034,7 +940,7 @@ int lisppathname(char *fullname, char *lispname, size_t lispnamesize, int dirp,
* ' ''
* . '. only if it is used as a part of the extension
* field.
* others as is
* others as if
*/
cp = fullname + 1;
@@ -1076,7 +982,7 @@ int lisppathname(char *fullname, char *lispname, size_t lispnamesize, int dirp,
if (dirp) {
if (*(dp - 1) != '>' || *(dp - 2) == '\'') *dp++ = '>';
*dp = '\0';
strlcpy(lispname, namebuf, lispnamesize);
strcpy(lispname, namebuf);
return (1);
}
@@ -1140,7 +1046,7 @@ int lisppathname(char *fullname, char *lispname, size_t lispnamesize, int dirp,
* or not. If extension field is not included, we have to add a period
* to specify empty extension field.
*/
strlcpy(fbuf, namebuf, sizeof(fbuf));
strcpy(fbuf, namebuf);
dp = cp = fbuf;
while (*cp) {
switch (*cp) {
@@ -1160,7 +1066,7 @@ int lisppathname(char *fullname, char *lispname, size_t lispnamesize, int dirp,
}
}
cp = dp + 1;
if (versionp) separate_version(fbuf, sizeof(fbuf), ver, sizeof(ver), 1);
if (versionp) separate_version(fbuf, ver, 1);
extensionp = 0;
while (*cp && !extensionp) {
switch (*cp) {
@@ -1181,16 +1087,237 @@ int lisppathname(char *fullname, char *lispname, size_t lispnamesize, int dirp,
*cp = '\0';
}
if (versionp && *ver != '\0') {
conc_name_and_version(fbuf, ver, namebuf, sizeof(namebuf));
ConcNameAndVersion(fbuf, ver, namebuf);
} else {
strlcpy(namebuf, fbuf, sizeof(namebuf));
strcpy(namebuf, fbuf);
}
/*
* Now, it's time to convert the version field.
*/
if (!dirp && versionp) UnixVersionToLispVersion(namebuf, sizeof(namebuf), 0);
if (!dirp && versionp) UnixVersionToLispVersion(namebuf, 0);
strlcpy(lispname, namebuf, lispnamesize);
strcpy(lispname, namebuf);
return (1);
}
/*
* Name: quote_fname
*
* Argument: char *file The root file name in UNIX format. "Root"
* file name contains the name, extension and
* version fields. A valid version field is in a
* form as ".~##~".
*
* Value: If succeed, returns 1, otherwise 0.
*
* Side Effect: If succeed, file is replaced with the file name in Xerox Lisp format
* in which special characters are quoted.
*
* Description:
*
* Converts a UNIX root file name to Xerox Lisp one. This routine only quotes special
* characters in Xerox file naming convention, does not care about the "true" name
* which might be specified directly by the user as like lisppathname. Thus, this
* routine can be invoked when you don't know how to escape the period character. This
* is the case when you convert a file name in the course of the directory enumeration.
*
* This routine is used when file is a "FILE" name and being converted to {DSK} name.
*
* The special characters which is quoted include "<", ">", ";", and "'" itself. Notice
* again that "." is not quoted, because we don't know it is a extension separator in
* Lisp sense or not.
*/
int quote_fname(char *file)
{
char *cp, *dp;
int extensionp;
char fbuf[MAXNAMLEN + 1], namebuf[MAXNAMLEN + 1], ver[VERSIONLEN];
cp = file;
dp = fbuf;
while (*cp) {
switch (*cp) {
case '>':
case ';':
case '\'':
*dp++ = '\'';
*dp++ = *cp++;
break;
default: *dp++ = *cp++; break;
}
}
*dp = '\0';
/*
* extensionp indicates whether extension field is included in a file
* name or not. If extension field is not included, we have to add a
* period to specify empty extension field.
*/
separate_version(fbuf, ver, 1);
cp = fbuf;
extensionp = 0;
while (*cp && !extensionp) {
switch (*cp) {
case '.':
if (*(cp + 1)) extensionp = 1;
cp++;
break;
case '\'':
if (*(cp + 1) != '\0')
cp += 2;
else
cp++;
break;
default: cp++; break;
}
}
if (!extensionp) {
if (*(cp - 1) == '.') {
*(cp - 1) = '\'';
*cp++ = '.';
}
*cp++ = '.';
*cp = '\0';
}
if (*ver != '\0') {
ConcNameAndVersion(fbuf, ver, namebuf);
} else {
strcpy(namebuf, fbuf);
}
UnixVersionToLispVersion(namebuf, 1);
strcpy(file, namebuf);
return (1);
}
/*
* Name: quote_fname_ufs
*
* Argument: char *file The root file name in UNIX format. "Root"
* file name contains the name, extension and
* version fields. A valid version field is in a
* form as ".~##~".
*
* Value: If succeed, returns 1, otherwise 0.
*
* Side Effect: If succeed, file is replaced with the file name in Xerox Lisp format
* in which special characters are quoted.
*
* Description:
*
* Similar to quote_fname, but this routine is only used when file is a "FILE" name
* and being converted to {UNIX} name.
*/
int quote_fname_ufs(char *file)
{
char *cp, *dp;
int extensionp;
char fbuf[MAXNAMLEN + 1];
cp = file;
dp = fbuf;
while (*cp) {
switch (*cp) {
case '>':
case ';':
case '\'':
*dp++ = '\'';
*dp++ = *cp++;
break;
default: *dp++ = *cp++; break;
}
}
*dp = '\0';
/*
* extensionp indicates whether extension field is included in a file
* name or not. If extension field is not included, we have to add a
* period to specify empty extension field.
*/
cp = fbuf;
extensionp = 0;
while (*cp && !extensionp) {
switch (*cp) {
case '.':
if (*(cp + 1)) extensionp = 1;
cp++;
break;
case '\'':
if (*(cp + 1) != '\0')
cp += 2;
else
cp++;
break;
default: cp++; break;
}
}
if (!extensionp) {
if (*(cp - 1) == '.') {
*(cp - 1) = '\'';
*cp++ = '.';
}
*cp++ = '.';
*cp = '\0';
}
strcpy(file, fbuf);
return (1);
}
/*
* Name: quote_dname
*
* Argument: char *dir The directory name in UNIX format. Does not
* include its parent name.
*
* Value: If succeed, returns 1, otherwise 0.
*
* Side Effect: If succeed, dir is replaced with the directory name in Xerox Lisp
* format in which special characters are quoted.
*
* Description:
*
* Similar to quote_fname, but this routine is only used when dir is a "DIRECTORY"
* name. Both {DSK} and {UNIX} uses this routine.
*/
int quote_dname(char *dir)
{
char *cp, *dp;
char fbuf[MAXNAMLEN + 1];
cp = dir;
dp = fbuf;
while (*cp) {
switch (*cp) {
case '>':
case ';':
case '\'':
*dp++ = '\'';
*dp++ = *cp++;
break;
default: *dp++ = *cp++; break;
}
}
*dp = '\0';
if (*(dp - 1) == '.') {
/* Trail period should be quoted. */
*(dp - 1) = '\'';
*dp++ = '.';
}
strcpy(dir, fbuf);
return (1);
}

View File

@@ -303,7 +303,7 @@ int FindUnixPipes(void) {
/* */
/************************************************************************/
static int FindAvailablePty(char *Slave, size_t SlaveLen) {
static int FindAvailablePty(char *Slave) {
int res;
res = posix_openpt(O_RDWR);
@@ -313,7 +313,7 @@ static int FindAvailablePty(char *Slave, size_t SlaveLen) {
}
grantpt(res);
unlockpt(res);
strlcpy(Slave, ptsname(res), SlaveLen);
strcpy(Slave, ptsname(res));
DBPRINT(("slave pty name is %s.\n", Slave));
if (res != -1) {
@@ -392,7 +392,7 @@ LispPTR Unix_handlecomm(LispPTR *args) {
PipeName = build_socket_pathname(sockFD);
memset(&sock, 0, sizeof(sock));
sock.sun_family = AF_UNIX;
strlcpy(sock.sun_path, PipeName, sizeof(sock.sun_path));
strcpy(sock.sun_path, PipeName);
if (bind(sockFD, (struct sockaddr *)&sock, sizeof(struct sockaddr_un)) < 0) {
close(sockFD);
perror("binding sockets");
@@ -570,7 +570,7 @@ LispPTR Unix_handlecomm(LispPTR *args) {
int Master;
unsigned short len;
Master = FindAvailablePty(SlavePTY, sizeof(SlavePTY));
Master = FindAvailablePty(SlavePTY);
DBPRINT(("Fork Shell; Master PTY = %d. Slave=%c%c.\n", Master, SlavePTY[0], SlavePTY[1]));
if (Master < 0) {
printf("Open of lisp side of PTY failed.\n");
@@ -771,7 +771,6 @@ LispPTR Unix_handlecomm(LispPTR *args) {
{
int sockFD;
struct sockaddr_un sock;
size_t pathsize;
/* First open the socket */
sockFD = socket(AF_UNIX, SOCK_STREAM, 0);
@@ -783,13 +782,12 @@ LispPTR Unix_handlecomm(LispPTR *args) {
socket into it */
/* need to type-check the string here */
LispStringToCString(args[1], shcom, 2048);
pathsize = strlen(shcom) + 1;
UJ[sockFD].pathname = malloc(pathsize);
strlcpy(UJ[sockFD].pathname, shcom, pathsize);
UJ[sockFD].pathname = malloc(strlen(shcom) + 1);
strcpy(UJ[sockFD].pathname, shcom);
/* Then bind it to the pathname, and get it listening properly */
sock.sun_family = AF_UNIX;
strlcpy(sock.sun_path, shcom, sizeof(sock.sun_path));
strcpy(sock.sun_path, shcom);
if (bind(sockFD, (struct sockaddr *)&sock, sizeof(struct sockaddr_un)) < 0) {
close(sockFD);
free(UJ[sockFD].pathname);

View File

@@ -358,7 +358,7 @@ int fork_Unix(void) {
(void)snprintf(PipeName, sizeof(PipeName), "/tmp/LPU%ld-%d", StartTime, slot);
memset(&addr, 0, sizeof(struct sockaddr_un));
addr.sun_family = AF_UNIX;
strlcpy(addr.sun_path, PipeName, sizeof(addr.sun_path));
strcpy(addr.sun_path, PipeName);
status =
connect(sock, (struct sockaddr *)&addr, sizeof(struct sockaddr_un));
if (status < 0) {

View File

@@ -168,7 +168,6 @@ static const char *URaid_summary2 =
"\n-- Memory display commands\n\
a litatom\t\tDisplays the top-level value of the litatom\n\
B Xaddress\t\tPrint the contents of the arrayblock at that address.\n\
F [size]\t\tPrint the head of the array free list chain for given size, or all\n\
d litatom\t\tDisplays the definition cell for the litatom\n\
M\t\t\tDisplays TOS,CSP,PVAR,IVAR,PC\n\
m func1 func2\t\tMOVD func1 to func2\n\
@@ -202,7 +201,6 @@ l [type]\t\tDisplays backtrace for specified type of stack. (k|m|r|g|p|u|<null>)
\n-- Memory display commands\n\
a litatom\t\tDisplays the top-level value of the litatom\n\
B Xaddress\t\tDisplays the contents of the arrayblock at that address.\n\
F [size]\t\tPrint the head of the array free list chain for given size, or all\n\
d litatom\t\tDisplays the definition cell of the litatom\n\
M\t\t\tDisplays TOS,CSP,PVAR,IVAR,PC\n\
m func1 func2\t\tMoves definition of func1 to func2 (MOVD)\n\
@@ -469,26 +467,6 @@ LispPTR uraid_commands(void) {
}
break;
case 'F': { /* print array block free list head(s) */
long size;
if (URaid_argnum != 1 && URaid_argnum != 2) {
printf("FREE-BLOCK-CHAIN: F [block-size (cells)]\n");
return (T);
}
if (URaid_argnum == 1) {
size = -1;
} else {
errno = 0;
size = (LispPTR)strtol(URaid_arg1, &endpointer, 0);
if (errno != 0 || *endpointer != '\0') {
printf("Arg not number\n");
return (T);
}
}
printfreeblockchainn(size);
}
break;
case 'd': /* DEFCELL */
if (URaid_argnum != 2) {
printf("GETD: d litatom\n");

View File

@@ -32,7 +32,7 @@
#include "lispemul.h" // for LispPTR, DLword, NIL, ATOM_T
#include "lspglob.h"
#include "lsptypes.h" // for GETWORD, OneDArray, GetTypeNumber, THIN_CHAR...
#include "osmsgprint.h" // for OSMESSAGE_PRINT
#include "osmsg.h" // for OSMESSAGE_PRINT
#include "uraiddefs.h" // for device_after_raid, device_before_raid
#include "uutilsdefs.h" // for c_string_to_lisp_string, check_unix_password
@@ -292,7 +292,7 @@ LispPTR unix_fullname(LispPTR *args) {
extern DLword *EmMouseX68K, *EmMouseY68K, *EmKbdAd068K, *EmRealUtilin68K, *EmUtilin68K;
extern DLword *EmKbdAd168K, *EmKbdAd268K, *EmKbdAd368K, *EmKbdAd468K, *EmKbdAd568K;
LispPTR suspend_lisp(void) {
LispPTR suspend_lisp(LispPTR *args) {
#ifndef DOS
extern DLword *CTopKeyevent;
extern LispPTR *KEYBUFFERING68k;

View File

@@ -41,6 +41,7 @@
#include "lispemul.h"
#include "lispmap.h"
#include "lspglob.h"
#include "vmemsave.h"
#include "timeout.h"
#include "adr68k.h"
#include "lsptypes.h"
@@ -57,12 +58,6 @@
#include "perrnodefs.h"
#include "ufsdefs.h"
/* Definitions incorporated from vmemsave.h (removed) */
#define FP_IFPAGE 512 /* IFPAGE address in sysoutfile by Byte */
#define DOMINOPAGES 301 /* skip dominopages in fptovp */
#define SKIPPAGES 301 /* save first filepage */
#define SKIP_DOMINOPAGES 153600 /* Byte size in sysoutfile for dominocode */
#define SAVE_IFPAGE 223 /* Virtual address for IFPAGES's buffer page. This value is \EMUSWAPBUFFERS in lisp. */
/* Error return values from VMEMSAVE */
#define COMPLETESYSOUT NIL
@@ -92,7 +87,7 @@ extern int please_fork;
/* */
/************************************************************************/
static int lispstringP(LispPTR Lisp)
int lispstringP(LispPTR Lisp)
{
switch (((OneDArray *)(NativeAligned4FromLAddr(Lisp)))->typenumber) {
case THIN_CHAR_TYPENUMBER:
@@ -156,36 +151,36 @@ LispPTR vmem_save0(LispPTR *args)
LispStringToCString(args[0], pathname, MAXPATHLEN);
separate_host(pathname, host);
#ifdef DOS
if (!unixpathname(pathname, sysout, sizeof(sysout), 0, 0, drive, 0, 0)) return (BADFILENAME);
if (!unixpathname(pathname, sysout, 0, 0, drive, 0, 0)) return (BADFILENAME);
#else
if (!unixpathname(pathname, sysout, sizeof(sysout), 0, 0)) return (BADFILENAME);
if (!unixpathname(pathname, sysout, 0, 0)) return (BADFILENAME);
#endif /* DOS */
return (vmem_save(sysout));
} else {
if ((def = getenv("LDEDESTSYSOUT")) == 0) {
#ifdef DOS
if (getcwd(pwd, MAXNAMLEN) == NULL) return (FILETIMEOUT);
strlcpy(sysout, pwd, sizeof(sysout));
strlcat(sysout, "/lisp.vm", sizeof(sysout));
strcpy(sysout, pwd);
strcat(sysout, "/lisp.vm");
#else
pwd = getpwuid(getuid()); /* NEED TIMEOUT */
if (pwd == (struct passwd *)NULL) return (FILETIMEOUT);
strlcpy(sysout, pwd->pw_dir, sizeof(sysout));
strlcat(sysout, "/lisp.virtualmem", sizeof(sysout));
strcpy(sysout, pwd->pw_dir);
strcat(sysout, "/lisp.virtualmem");
#endif /* DOS */
} else {
if (*def == '~' && (*(def + 1) == '/' || *(def + 1) == '\0')) {
#ifdef DOS
if (getcwd(pwd, MAXNAMLEN) == NULL) return (FILETIMEOUT);
strlcpy(sysout, pwd, sizeof(sysout));
strcpy(sysout, pwd);
#else
pwd = getpwuid(getuid()); /* NEED TIMEOUT */
if (pwd == (struct passwd *)NULL) return (FILETIMEOUT);
strlcpy(sysout, pwd->pw_dir, sizeof(sysout));
strcpy(sysout, pwd->pw_dir);
#endif /* DOS */
strlcat(sysout, def + 1, sizeof(sysout));
strcat(sysout, def + 1);
} else {
strlcpy(sysout, def, sizeof(sysout));
strcpy(sysout, def);
}
}
return (vmem_save(sysout));
@@ -349,9 +344,9 @@ LispPTR vmem_save(char *sysout_file_name)
SETJMP(FILETIMEOUT);
#ifdef DOS
/* Bloddy 8 char filenames in dos ... /jarl */
make_old_version(tempname, sizeof(tempname), sysout_file_name);
make_old_version(tempname, sysout_file_name);
#else /* DOS */
snprintf(tempname, sizeof(tempname), "%s-temp", sysout_file_name);
sprintf(tempname, "%s-temp", sysout_file_name);
#endif /* DOS */
/* Confirm protection of specified file by open/close */
@@ -518,7 +513,7 @@ LispPTR vmem_save(char *sysout_file_name)
/* Make sure that we kill off any Unix subprocesses before we go away */
void lisp_finish(int exit_status) {
void lisp_finish(void) {
char d[4];
DBPRINT(("finish lisp_finish\n"));
@@ -536,5 +531,5 @@ void lisp_finish(int exit_status) {
#ifdef DOS
exit_host_filesystem();
#endif /* DOS */
exit(exit_status);
exit(0);
}

View File

@@ -41,7 +41,7 @@
#include "address.h"
#include "adr68k.h"
#include "stack.h"
#include "retmacro.h"
#include "return.h"
#include "dbprint.h"
#include "lspglob.h"
@@ -814,7 +814,7 @@ nextopcode:
/******* FJumpx *******/
case 0262:
case262 : {
if (TOPOFSTACK != 0) { POP; nextop2; }
if (TOPOFSTACK != 0) { goto PopNextop2; }
CHECK_INTERRUPT;
POP;
PCMACL += Get_SBYTE_PCMAC1;
@@ -825,7 +825,7 @@ nextopcode:
case 0263:
case263 : {
if (TOPOFSTACK == 0) { POP; nextop2; }
if (TOPOFSTACK == 0) { goto PopNextop2; }
CHECK_INTERRUPT;
POP;
PCMACL += Get_SBYTE_PCMAC1;
@@ -836,7 +836,7 @@ nextopcode:
case 0264:
case264 : {
if (TOPOFSTACK != 0) { POP; nextop2; }
if (TOPOFSTACK != 0) { goto PopNextop2; }
CHECK_INTERRUPT;
PCMACL += Get_SBYTE_PCMAC1;
nextop0;
@@ -846,7 +846,7 @@ nextopcode:
case 0265:
case265 : {
if (TOPOFSTACK == 0) { POP; nextop2; }
if (TOPOFSTACK == 0) { goto PopNextop2; }
CHECK_INTERRUPT;
PCMACL += Get_SBYTE_PCMAC1;
nextop0;
@@ -1261,7 +1261,19 @@ check_interrupt:
}
}
}
nextop0;
/************************************************************************/
/* Common Jump Tails (they have to jump anyway, so use common Tail) */
/************************************************************************/
PopNextop1:
POP;
nextop1;
PopNextop2:
POP;
nextop2;
}
void do_brk(void) {}

View File

@@ -50,6 +50,8 @@ unsigned LispWindowRequestedHeight = DEF_WIN_HEIGHT;
extern int LispDisplayRequestedX, LispDisplayRequestedY;
extern unsigned LispDisplayRequestedWidth, LispDisplayRequestedHeight;
int LispDisplayRequestedX, LispDisplayRequestedY;
unsigned LispDisplayRequestedWidth, LispDisplayRequestedHeight;
extern Colormap Colors;
Colormap Colors;

View File

@@ -17,7 +17,6 @@
#include <X11/Xlib.h> // for XCreateSimpleWindow, XMapWindow, XChangeWin...
#include <X11/Xutil.h> // for XSizeHints, XStringListToTextProperty, XWMH...
#include <stdio.h> // for NULL
#include <stdlib.h> // for exit
#include "commondefs.h" // for error
#include "dbprint.h" // for TPRINT
#include "devif.h" // for (anonymous), MRegion, OUTER_SB_WIDTH, Defin...
@@ -39,8 +38,8 @@ extern DLword *DisplayRegion68k;
extern int Current_Hot_X, Current_Hot_Y; /* X Cursor hotspots */
extern char windowTitle[255];
extern char iconTitle[255];
extern char Window_Title[255];
extern char Icon_Title[255];
extern int save_argc;
extern char **save_argv;
@@ -51,7 +50,6 @@ extern int LispWindowRequestedX, LispWindowRequestedY;
extern unsigned LispWindowRequestedWidth, LispWindowRequestedHeight;
extern int noscroll;
extern Colormap Colors;
/*
* globals defined in this module
*/
@@ -68,16 +66,9 @@ Cursor WaitCursor, DefaultCursor, VertScrollCursor, VertThumbCursor, ScrollUpCur
/* */
/* */
/************************************************************************/
static unsigned long foregroundPixel;
static unsigned long backgroundPixel;
void Create_LispWindow(DspInterface dsp)
{
extern char foregroundColorName[];
extern char backgroundColorName[];
XColor foregroundColor_xcsd;
XColor backgroundColor_xcsd;
Status status;
XSizeHints szhint = {0};
XWMHints Lisp_WMhints = {0};
XClassHint xclasshint = {0};
@@ -91,8 +82,8 @@ void Create_LispWindow(DspInterface dsp)
unsigned int GravSize;
char *WT, *IT;
WT = windowTitle;
IT = iconTitle;
WT = Window_Title;
IT = Icon_Title;
GravSize = (dsp->ScrollBarWidth / 2) - dsp->InternalBorderWidth;
Col2 = dsp->Visible.width;
@@ -101,33 +92,13 @@ void Create_LispWindow(DspInterface dsp)
Row3 = dsp->Visible.height + (OUTER_SB_WIDTH(dsp) / 2);
screen = ScreenOfDisplay(dsp->display_id, DefaultScreen(dsp->display_id));
/* set up default display as black on white */
foregroundPixel = BlackPixelOfScreen(screen);
backgroundPixel = WhitePixelOfScreen(screen);
/* parse and record non-default color specs for foreground and background */
if (foregroundColorName[0]) {
status = XAllocNamedColor(dsp->display_id, Colors, foregroundColorName, &foregroundColor_xcsd, &foregroundColor_xcsd);
if (status == 0) {
fprintf(stderr, "Color allocation failed for foreground color: %s\n", foregroundColorName);
exit(1);
}
foregroundPixel = foregroundColor_xcsd.pixel;
}
if (backgroundColorName[0]) {
status = XAllocNamedColor(dsp->display_id, Colors, backgroundColorName, &backgroundColor_xcsd, &backgroundColor_xcsd);
if (status == 0) {
fprintf(stderr, "Color allocation failed for background color: %s\n", backgroundColorName);
exit(1);
}
backgroundPixel = backgroundColor_xcsd.pixel;
}
dsp->LispWindow = XCreateSimpleWindow(
dsp->display_id, RootWindowOfScreen(screen), LispWindowRequestedX, /* Default upper left */
LispWindowRequestedY, /* Default upper left */
dsp->Visible.width + OUTER_SB_WIDTH(dsp), /* Default width */
dsp->Visible.height + OUTER_SB_WIDTH(dsp), /* Default height */
0, /* Default border */
foregroundPixel, backgroundPixel);
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
Lisp_SetWinAttributes.bit_gravity = dsp->BitGravity;
Lisp_SetWinAttributes.override_redirect = False;
@@ -143,8 +114,10 @@ void Create_LispWindow(DspInterface dsp)
/* Have to make the GC before we make the icon. */
gcv.function = GXcopy;
gcv.foreground = foregroundPixel;
gcv.background = backgroundPixel;
gcv.foreground =
BlackPixelOfScreen(ScreenOfDisplay(dsp->display_id, DefaultScreen(dsp->display_id)));
gcv.background =
WhitePixelOfScreen(ScreenOfDisplay(dsp->display_id, DefaultScreen(dsp->display_id)));
dsp->Copy_GC =
XCreateGC(dsp->display_id, dsp->LispWindow, GCForeground | GCBackground | GCFunction, &gcv);
@@ -173,7 +146,7 @@ void Create_LispWindow(DspInterface dsp)
dsp->DisplayWindow = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, 0, 0,
dsp->Visible.width, dsp->Visible.height, 0,
foregroundPixel, backgroundPixel);
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
XChangeWindowAttributes(dsp->display_id, dsp->DisplayWindow,
CWBitGravity | CWOverrideRedirect | CWBackingStore,
&Lisp_SetWinAttributes);
@@ -186,14 +159,14 @@ void Create_LispWindow(DspInterface dsp)
dsp->ScrollBarPixmap = XCreatePixmapFromBitmapData(
dsp->display_id, dsp->LispWindow, (char *)check_bits, check_width, check_height,
foregroundPixel, backgroundPixel, (unsigned)DefaultDepthOfScreen(screen));
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen), (unsigned)DefaultDepthOfScreen(screen));
dsp->GravityOnPixmap = XCreatePixmapFromBitmapData(
dsp->display_id, dsp->LispWindow, (char *)check_bits, 16, 16, foregroundPixel,
backgroundPixel, (unsigned)DefaultDepthOfScreen(screen));
dsp->display_id, dsp->LispWindow, (char *)check_bits, 16, 16, BlackPixelOfScreen(screen),
WhitePixelOfScreen(screen), (unsigned)DefaultDepthOfScreen(screen));
dsp->GravityOffPixmap = XCreatePixmapFromBitmapData(
dsp->display_id, dsp->LispWindow, (char *)plain_bits, 16, 16, foregroundPixel,
backgroundPixel, (unsigned)DefaultDepthOfScreen(screen));
dsp->display_id, dsp->LispWindow, (char *)plain_bits, 16, 16, BlackPixelOfScreen(screen),
WhitePixelOfScreen(screen), (unsigned)DefaultDepthOfScreen(screen));
set_Xcursor(dsp, default_cursor.cuimage, (int)default_cursor.cuhotspotx,
(int)(15 - default_cursor.cuhotspoty), &DefaultCursor, 0);
@@ -224,7 +197,7 @@ void Create_LispWindow(DspInterface dsp)
0 - (int)dsp->InternalBorderWidth, /* y */
dsp->ScrollBarWidth, /* width */
dsp->Visible.height, dsp->InternalBorderWidth,
foregroundPixel, backgroundPixel);
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
DefineCursor(dsp, dsp->VerScrollBar, &VertScrollCursor);
XMapWindow(dsp->display_id, dsp->VerScrollBar);
@@ -232,7 +205,7 @@ void Create_LispWindow(DspInterface dsp)
0 - (int)dsp->InternalBorderWidth, (int)Row2, /* y */
dsp->Visible.width, /* width */
dsp->ScrollBarWidth, dsp->InternalBorderWidth,
foregroundPixel, backgroundPixel);
BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
DefineCursor(dsp, dsp->HorScrollBar, &HorizScrollCursor);
XChangeWindowAttributes(dsp->display_id, dsp->HorScrollBar, CWOverrideRedirect,
&Lisp_SetWinAttributes);
@@ -243,7 +216,7 @@ void Create_LispWindow(DspInterface dsp)
(dsp->Visible.y * (int)dsp->Visible.height) / (int)dsp->Display.height, /* y */
dsp->ScrollBarWidth, /* width */
((dsp->Visible.height * dsp->Visible.height) / dsp->Display.height) + 1,
dsp->InternalBorderWidth, foregroundPixel, backgroundPixel);
dsp->InternalBorderWidth, BlackPixelOfScreen(screen), WhitePixelOfScreen(screen));
XChangeWindowAttributes(dsp->display_id, dsp->VerScrollButton, CWOverrideRedirect,
&Lisp_SetWinAttributes);
XSetWindowBackgroundPixmap(dsp->display_id, dsp->VerScrollButton, dsp->ScrollBarPixmap);
@@ -255,8 +228,8 @@ void Create_LispWindow(DspInterface dsp)
(dsp->Visible.x * (int)dsp->Visible.width) / (int)dsp->Display.width,
0 - (int)dsp->InternalBorderWidth, /* y */
((dsp->Visible.width * dsp->Visible.width) / dsp->Display.width) + 1,
dsp->ScrollBarWidth, dsp->InternalBorderWidth, foregroundPixel,
backgroundPixel);
dsp->ScrollBarWidth, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
WhitePixelOfScreen(screen));
XChangeWindowAttributes(dsp->display_id, dsp->HorScrollButton, CWOverrideRedirect,
&Lisp_SetWinAttributes);
XSetWindowBackgroundPixmap(dsp->display_id, dsp->HorScrollButton, dsp->ScrollBarPixmap);
@@ -264,8 +237,8 @@ void Create_LispWindow(DspInterface dsp)
XMapWindow(dsp->display_id, dsp->HorScrollButton);
dsp->NWGrav = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, (int)Col2, (int)Row2, GravSize,
GravSize, dsp->InternalBorderWidth, foregroundPixel,
backgroundPixel);
GravSize, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
WhitePixelOfScreen(screen));
XSetWindowBackgroundPixmap(dsp->display_id, dsp->NWGrav, dsp->GravityOnPixmap);
DefineCursor(dsp, dsp->NWGrav, &DefaultCursor);
XChangeWindowAttributes(dsp->display_id, dsp->NWGrav, CWOverrideRedirect, &Lisp_SetWinAttributes);
@@ -273,8 +246,8 @@ void Create_LispWindow(DspInterface dsp)
XMapWindow(dsp->display_id, dsp->NWGrav);
dsp->SEGrav = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, (int)Col3, (int)Row3, GravSize,
GravSize, dsp->InternalBorderWidth, foregroundPixel,
backgroundPixel);
GravSize, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
WhitePixelOfScreen(screen));
XSetWindowBackgroundPixmap(dsp->display_id, dsp->SEGrav, dsp->GravityOffPixmap);
DefineCursor(dsp, dsp->SEGrav, &DefaultCursor);
XChangeWindowAttributes(dsp->display_id, dsp->SEGrav, CWOverrideRedirect, &Lisp_SetWinAttributes);
@@ -282,16 +255,16 @@ void Create_LispWindow(DspInterface dsp)
XMapWindow(dsp->display_id, dsp->SEGrav);
dsp->SWGrav = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, (int)Col2, (int)Row3, GravSize,
GravSize, dsp->InternalBorderWidth, foregroundPixel,
backgroundPixel);
GravSize, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
WhitePixelOfScreen(screen));
XSetWindowBackgroundPixmap(dsp->display_id, dsp->SWGrav, dsp->GravityOffPixmap);
DefineCursor(dsp, dsp->SWGrav, &DefaultCursor);
XClearWindow(dsp->display_id, dsp->NWGrav);
XMapWindow(dsp->display_id, dsp->SWGrav);
dsp->NEGrav = XCreateSimpleWindow(dsp->display_id, dsp->LispWindow, (int)Col3, (int)Row2, GravSize,
GravSize, dsp->InternalBorderWidth, foregroundPixel,
backgroundPixel);
GravSize, dsp->InternalBorderWidth, BlackPixelOfScreen(screen),
WhitePixelOfScreen(screen));
XSetWindowBackgroundPixmap(dsp->display_id, dsp->NEGrav, dsp->GravityOffPixmap);
DefineCursor(dsp, dsp->NEGrav, &DefaultCursor);
XClearWindow(dsp->display_id, dsp->NWGrav);
@@ -307,12 +280,14 @@ void Create_LispWindow(DspInterface dsp)
void lisp_Xvideocolor(int flag)
{
Screen *screen;
XEvent event = {0};
XGCValues gcv = {0};
unsigned long newForeground;
XLOCK;
newForeground = flag ? backgroundPixel : foregroundPixel;
screen = ScreenOfDisplay(currentdsp->display_id, DefaultScreen(currentdsp->display_id));
newForeground = flag ? WhitePixelOfScreen(screen) : BlackPixelOfScreen(screen);
/* window -- are we making a change? */
XGetGCValues(currentdsp->display_id, currentdsp->Copy_GC, GCForeground | GCBackground, &gcv);

Some files were not shown because too many files have changed in this diff Show More