mirror of
https://github.com/Interlisp/maiko.git
synced 2026-03-17 15:24:44 +00:00
Compare commits
43 Commits
testing123
...
maiko-2109
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f79f55c20 | ||
|
|
85c4ebf0ac | ||
|
|
7284e19b32 | ||
|
|
0de1b1438b | ||
|
|
740f012254 | ||
|
|
377a6f3f47 | ||
|
|
c07618f55c | ||
|
|
dbbb59b30b | ||
|
|
e957e331c4 | ||
|
|
934a86fbb5 | ||
|
|
28ea238807 | ||
|
|
81c36341ef | ||
|
|
6cad51735f | ||
|
|
c33386ef44 | ||
|
|
588e804a2f | ||
|
|
c56cbb2a91 | ||
|
|
ef31b3fe0b | ||
|
|
ea8d31f590 | ||
|
|
093fb9a3d5 | ||
|
|
b53620852a | ||
|
|
13163c6772 | ||
|
|
9e179e66f2 | ||
|
|
084d69c6e8 | ||
|
|
40e18e6da0 | ||
|
|
9ed46e6b69 | ||
|
|
934b15b63b | ||
|
|
2de44247b5 | ||
|
|
ef6a6554ac | ||
|
|
1c47bf5df0 | ||
|
|
f42671022f | ||
|
|
2122f095e8 | ||
|
|
91fe7d51f9 | ||
|
|
a5410ef93d | ||
|
|
5ce292ed32 | ||
|
|
081e2288ff | ||
|
|
c4873d0ff8 | ||
|
|
01a8948a7d | ||
|
|
36ccd9a5f5 | ||
|
|
f6da80f8b3 | ||
|
|
be4d4c771e | ||
|
|
d025ff0101 | ||
|
|
22ae23552c | ||
|
|
082bd15542 |
19
.github/workflows/build.yml
vendored
19
.github/workflows/build.yml
vendored
@@ -21,14 +21,17 @@ jobs:
|
|||||||
working-directory: bin
|
working-directory: bin
|
||||||
run: ./makeright x
|
run: ./makeright x
|
||||||
|
|
||||||
build-pi:
|
#
|
||||||
runs-on: [self-hosted, linux, ARM]
|
# Commented out because the RPi is not online at this time (6 July 2021)
|
||||||
if: ${{ github.repository == 'Interlisp/maiko' }}
|
#
|
||||||
steps:
|
# build-pi:
|
||||||
- uses: actions/checkout@v2
|
# runs-on: [self-hosted, linux, ARM]
|
||||||
- name: Build
|
# if: ${{ github.repository == 'Interlisp/maiko' }}
|
||||||
working-directory: bin
|
# steps:
|
||||||
run: ./makeright x
|
# - uses: actions/checkout@v2
|
||||||
|
# - name: Build
|
||||||
|
# working-directory: bin
|
||||||
|
# run: ./makeright x
|
||||||
|
|
||||||
build-cmake:
|
build-cmake:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|||||||
84
.github/workflows/buildDocker.yml
vendored
Normal file
84
.github/workflows/buildDocker.yml
vendored
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
# based on https://blog.oddbit.com/post/2020-09-25-building-multi-architecture-im/
|
||||||
|
---
|
||||||
|
# Interlisp workflow to build a Docker Image that supports multiple architectures
|
||||||
|
name: 'Build Maiko Docker image'
|
||||||
|
|
||||||
|
# Run this workflow on push to master
|
||||||
|
# Other branches can be added it needed.
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
# Jobs that are run as part of this workflow.
|
||||||
|
jobs:
|
||||||
|
# Job to build the docker image
|
||||||
|
# see: https://github.com/docker/build-push-action
|
||||||
|
docker:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
# Checkout the branch
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
# Setup some environment variables
|
||||||
|
- name: Prepare
|
||||||
|
id: prep
|
||||||
|
run: |
|
||||||
|
# Name of the Docker Image.
|
||||||
|
DOCKER_IMAGE=interlisp/${GITHUB_REPOSITORY#*/}
|
||||||
|
VERSION=latest
|
||||||
|
SHORTREF=${GITHUB_SHA::8}
|
||||||
|
## Do we want to use tags and or versions
|
||||||
|
# If this is git tag, use the tag name as a docker tag
|
||||||
|
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
||||||
|
VERSION=${GITHUB_REF#refs/tags/v}
|
||||||
|
fi
|
||||||
|
TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${SHORTREF}"
|
||||||
|
# If the VERSION looks like a version number, assume that
|
||||||
|
# this is the most recent version of the image and also
|
||||||
|
# tag it 'latest'.
|
||||||
|
if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
||||||
|
TAGS="$TAGS,${DOCKER_IMAGE}:latest"
|
||||||
|
fi
|
||||||
|
# Set output parameters.
|
||||||
|
echo ::set-output name=tags::${TAGS}
|
||||||
|
echo ::set-output name=docker_image::${DOCKER_IMAGE}
|
||||||
|
echo ::set-output name=build_time::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
||||||
|
# Setup the Docker Machine Emulation environment.
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@master
|
||||||
|
with:
|
||||||
|
platforms: all
|
||||||
|
|
||||||
|
# Setup the Docker Buildx funtion
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
id: buildx
|
||||||
|
uses: docker/setup-buildx-action@master
|
||||||
|
|
||||||
|
# Login into DockerHub - required to store the created image
|
||||||
|
- name: Login to DockerHub
|
||||||
|
if: github.event_name != 'pull_request'
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
# Start the Docker Build using the Dockerfile in the repository we
|
||||||
|
# checked out.
|
||||||
|
- name: Build
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
builder: ${{ steps.buildx.outputs.name }}
|
||||||
|
build-args: BUILD_DATE=${{ steps.prep.outputs.build_time }}
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
# Platforms - Sepecify the platforms to include in the build
|
||||||
|
# linux/amd64 -- Standard x86_64
|
||||||
|
# linux/arm64 -- Apple M1
|
||||||
|
# linux/arm/v7 -- Raspberry pi
|
||||||
|
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||||
|
# Push the result to DockerHub
|
||||||
|
push: true
|
||||||
|
# tags to assign to the Docker image
|
||||||
|
tags: ${{ steps.prep.outputs.tags }}
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,6 +5,7 @@
|
|||||||
\#*#
|
\#*#
|
||||||
.DS_Store
|
.DS_Store
|
||||||
# build directories
|
# build directories
|
||||||
|
build/**
|
||||||
*.386-x/**
|
*.386-x/**
|
||||||
*.386/**
|
*.386/**
|
||||||
*.ppc-x/**
|
*.ppc-x/**
|
||||||
|
|||||||
@@ -16,6 +16,19 @@ IF(CMAKE_C_COMPILER_ID MATCHES "SunPro")
|
|||||||
SET(CMAKE_C_FLAGS "-fno-strict-aliasing ${CMAKE_C_FLAGS}")
|
SET(CMAKE_C_FLAGS "-fno-strict-aliasing ${CMAKE_C_FLAGS}")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
find_program(
|
||||||
|
CLANG_TIDY_EXE
|
||||||
|
NAMES "clang-tidy" "clang-tidy12" "clang-tidy11" "clang-tidy10"
|
||||||
|
DOC "Path to clang-tidy executable"
|
||||||
|
)
|
||||||
|
|
||||||
|
IF (CLANG_TIDY_EXE)
|
||||||
|
# There are many many warnings for strcpy instances to deal with,
|
||||||
|
# but suppress it for now so that other issues are more obvious
|
||||||
|
#
|
||||||
|
SET(CMAKE_C_CLANG_TIDY ${CLANG_TIDY_EXE} -checks=-*,cert-*,clang-analyzer-security.*,-clang-analyzer-security.insecureAPI.strcpy,-clang-analyzer-security.insecureAPI.bzero -header-filter=.*)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
INCLUDE(CheckLibraryExists)
|
INCLUDE(CheckLibraryExists)
|
||||||
CHECK_LIBRARY_EXISTS(m fmod "" NEED_LIB_M)
|
CHECK_LIBRARY_EXISTS(m fmod "" NEED_LIB_M)
|
||||||
IF(NEED_LIB_M)
|
IF(NEED_LIB_M)
|
||||||
|
|||||||
18
Dockerfile
Normal file
18
Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
FROM ubuntu:focal
|
||||||
|
ARG BUILD_DATE
|
||||||
|
LABEL name="Maiko"
|
||||||
|
LABEL description="Virtual machine for Interlisp Medley"
|
||||||
|
LABEL url="https://github.com/Interlisp/maiko"
|
||||||
|
LABEL build-time=$BUILD_DATE
|
||||||
|
|
||||||
|
ARG TARGETPLATFORM
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y make clang libx11-dev gcc x11vnc xvfb
|
||||||
|
|
||||||
|
COPY --chown=nonroot:nonroot . /app/maiko
|
||||||
|
RUN rm -rf /app/maiko/linux*
|
||||||
|
|
||||||
|
WORKDIR /app/maiko/bin
|
||||||
|
RUN ./makeright x
|
||||||
|
|
||||||
|
RUN rm -rf /app/maiko/inc /app/maiko/include /app/maiko/src
|
||||||
15
README.md
15
README.md
@@ -4,9 +4,9 @@ Maiko is the implementation of the Medley Interlisp virtual machine, for a
|
|||||||
byte-coded Lisp instruction set and some low-level functions for
|
byte-coded Lisp instruction set and some low-level functions for
|
||||||
connecting with Lisp for access to display (via X11) and disk etc.
|
connecting with Lisp for access to display (via X11) and disk etc.
|
||||||
|
|
||||||
Newcomers should check out the [Medley Interlisp Introduction](https://github.com/Interlisp/medley/wiki/Medley-Interlisp-Introduction).
|
For an overview, see [Medley Interlisp Introduction](https://github.com/Interlisp/medley/wiki/Medley-Interlisp-Introduction).
|
||||||
|
|
||||||
See [the Medley repository](https://github.org/Interlisp/medley) for
|
See [the Medley repository](https://github.com/Interlisp/medley) for
|
||||||
* [Issues](https://github.com/Interlisp/medley/issues) (note that maiko issues are there too)
|
* [Issues](https://github.com/Interlisp/medley/issues) (note that maiko issues are there too)
|
||||||
* [Discussions](https://github.com/Interlisp/medley/discussions) (Q&A, announcements, etc)
|
* [Discussions](https://github.com/Interlisp/medley/discussions) (Q&A, announcements, etc)
|
||||||
* [Medley's README](https://github.com/Interlisp/medley/blob/master/README.md)
|
* [Medley's README](https://github.com/Interlisp/medley/blob/master/README.md)
|
||||||
@@ -33,18 +33,17 @@ $ cd maiko/bin
|
|||||||
$ ./makeright x
|
$ ./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 (new) Mac will use `darwin.arm64`.
|
* 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-x1) 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`.
|
* 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)
|
* There is a cmake configuration (TBD To Be Described here).
|
||||||
|
|
||||||
### Building For MacOS
|
### Building For MacOS
|
||||||
|
|
||||||
* Running on MacOS requires an X server, and building on a Mac requires X client libraries.
|
* Running on MacOS requires an X server, and building on a Mac requires X client libraries.
|
||||||
An X-server for x86 MacOS (and X11 client libraries) can be freely obtained at https://www.xquartz.org/
|
An X-server for MacOS (and X11 client libraries) can be freely obtained at https://www.xquartz.org/releases
|
||||||
For the new arm64 MacOS 11, you'll need https://x.org which you can get via MacPorts or Brew.
|
|
||||||
|
|
||||||
### Building for Windows 10
|
### Building for Windows 10
|
||||||
|
|
||||||
Windows 10 currently requires "Docker for Desktop" or WSL2 -- basically a Linux virtual machine -- and a (Windows X-server).
|
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.
|
See [Medley's README](https://github.com/Interlisp/medley/blob/master/README.md) for more.
|
||||||
|
|
||||||
|
|||||||
@@ -128,5 +128,4 @@ bitbltsub.c:#ifdef GETBASE
|
|||||||
testdisplay.c:#ifdef NOTUSED
|
testdisplay.c:#ifdef NOTUSED
|
||||||
uraid.c:#ifdef ETHERINT
|
uraid.c:#ifdef ETHERINT
|
||||||
bitblt.c:#ifndef COLOR
|
bitblt.c:#ifndef COLOR
|
||||||
bitbltsub.c:#ifndef prropstyle
|
|
||||||
lispmap.h:#ifdef MEDLEY
|
lispmap.h:#ifdef MEDLEY
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
|
|||||||
OPTFLAGS = -O2 -g
|
OPTFLAGS = -O2 -g
|
||||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
|
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
|
||||||
-DRELEASE=351 -DSTACKCHECK -DFSBCHECK -DPCTRACE
|
-DRELEASE=351 # -DSTACKCHECK -DFSBCHECK -DPCTRACE
|
||||||
|
|
||||||
LDFLAGS = -L/opt/X11/lib -lX11 -lm
|
LDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||||
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
|
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
|||||||
XFLAGS = -I/usr/local/include -DXWINDOW
|
XFLAGS = -I/usr/local/include -DXWINDOW
|
||||||
|
|
||||||
# OPTFLAGS is normally -O2.
|
# OPTFLAGS is normally -O2.
|
||||||
OPTFLAGS = -O1 -gdwarf-2
|
OPTFLAGS = -O2 -g
|
||||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||||
|
|
||||||
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
|||||||
27
bin/makefile-freebsd.aarch64-x
Normal file
27
bin/makefile-freebsd.aarch64-x
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Options for FreeBSD, ARMv7 and X-Windows
|
||||||
|
|
||||||
|
CC = clang -m64 $(CLANG_CFLAGS)
|
||||||
|
|
||||||
|
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||||
|
$(OBJECTDIR)xbbt.o \
|
||||||
|
$(OBJECTDIR)dspif.o \
|
||||||
|
$(OBJECTDIR)xinit.o \
|
||||||
|
$(OBJECTDIR)xscroll.o \
|
||||||
|
$(OBJECTDIR)xcursor.o \
|
||||||
|
$(OBJECTDIR)xlspwin.o \
|
||||||
|
$(OBJECTDIR)xrdopt.o \
|
||||||
|
$(OBJECTDIR)xwinman.o
|
||||||
|
|
||||||
|
|
||||||
|
XFLAGS = -I/usr/local/include -DXWINDOW
|
||||||
|
|
||||||
|
# OPTFLAGS is normally -O2.
|
||||||
|
OPTFLAGS = -O2 -g
|
||||||
|
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||||
|
|
||||||
|
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
|
||||||
|
OBJECTDIR = ../$(RELEASENAME)/
|
||||||
|
|
||||||
|
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex
|
||||||
27
bin/makefile-freebsd.x86_64-x
Normal file
27
bin/makefile-freebsd.x86_64-x
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Options for FreeBSD, Intel x86_64 and X-Windows
|
||||||
|
|
||||||
|
CC = clang -m64 $(CLANG_CFLAGS)
|
||||||
|
|
||||||
|
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||||
|
$(OBJECTDIR)xbbt.o \
|
||||||
|
$(OBJECTDIR)dspif.o \
|
||||||
|
$(OBJECTDIR)xinit.o \
|
||||||
|
$(OBJECTDIR)xscroll.o \
|
||||||
|
$(OBJECTDIR)xcursor.o \
|
||||||
|
$(OBJECTDIR)xlspwin.o \
|
||||||
|
$(OBJECTDIR)xrdopt.o \
|
||||||
|
$(OBJECTDIR)xwinman.o
|
||||||
|
|
||||||
|
|
||||||
|
XFLAGS = -I/usr/local/include -DXWINDOW
|
||||||
|
|
||||||
|
# OPTFLAGS is normally -O2.
|
||||||
|
OPTFLAGS = -O2 -g
|
||||||
|
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||||
|
|
||||||
|
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
|
||||||
|
OBJECTDIR = ../$(RELEASENAME)/
|
||||||
|
|
||||||
|
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex
|
||||||
28
bin/makefile-init-darwin.x86_64
Normal file
28
bin/makefile-init-darwin.x86_64
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Options for MacOS, x86_64 processor, X windows, for INIT processing
|
||||||
|
|
||||||
|
CC = clang -m64 $(CLANG_CFLAGS)
|
||||||
|
|
||||||
|
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||||
|
$(OBJECTDIR)xbbt.o \
|
||||||
|
$(OBJECTDIR)dspif.o \
|
||||||
|
$(OBJECTDIR)xinit.o \
|
||||||
|
$(OBJECTDIR)xscroll.o \
|
||||||
|
$(OBJECTDIR)xcursor.o \
|
||||||
|
$(OBJECTDIR)xlspwin.o \
|
||||||
|
$(OBJECTDIR)xrdopt.o \
|
||||||
|
$(OBJECTDIR)xwinman.o
|
||||||
|
|
||||||
|
|
||||||
|
XFLAGS = -I/opt/X11/include -DXWINDOW
|
||||||
|
|
||||||
|
# OPTFLAGS is normally -O2.
|
||||||
|
OPTFLAGS = -O0 -g
|
||||||
|
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||||
|
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||||
|
|
||||||
|
LDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||||
|
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||||
|
|
||||||
|
OBJECTDIR = ../$(RELEASENAME)/
|
||||||
|
|
||||||
|
default : ../$(OSARCHNAME)/ldeinit
|
||||||
27
bin/makefile-init-freebsd.386
Normal file
27
bin/makefile-init-freebsd.386
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Options for FreeBSD, Intel 386/486 and X Windows
|
||||||
|
|
||||||
|
CC = clang -m32 $(CLANG_CFLAGS)
|
||||||
|
|
||||||
|
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||||
|
$(OBJECTDIR)xbbt.o \
|
||||||
|
$(OBJECTDIR)dspif.o \
|
||||||
|
$(OBJECTDIR)xinit.o \
|
||||||
|
$(OBJECTDIR)xscroll.o \
|
||||||
|
$(OBJECTDIR)xcursor.o \
|
||||||
|
$(OBJECTDIR)xlspwin.o \
|
||||||
|
$(OBJECTDIR)xrdopt.o \
|
||||||
|
$(OBJECTDIR)xwinman.o
|
||||||
|
|
||||||
|
|
||||||
|
XFLAGS = -I/usr/local/include -DXWINDOW
|
||||||
|
|
||||||
|
# OPTFLAGS is normally -O0 for init
|
||||||
|
OPTFLAGS = -O0 -g
|
||||||
|
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||||
|
|
||||||
|
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
|
||||||
|
OBJECTDIR = ../$(RELEASENAME)/
|
||||||
|
|
||||||
|
default : ../$(OSARCHNAME)/ldeinit
|
||||||
27
bin/makefile-init-freebsd.aarch64
Normal file
27
bin/makefile-init-freebsd.aarch64
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Options for FreeBSD, ARMv7 and X-Windows
|
||||||
|
|
||||||
|
CC = clang -m64 $(CLANG_CFLAGS)
|
||||||
|
|
||||||
|
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||||
|
$(OBJECTDIR)xbbt.o \
|
||||||
|
$(OBJECTDIR)dspif.o \
|
||||||
|
$(OBJECTDIR)xinit.o \
|
||||||
|
$(OBJECTDIR)xscroll.o \
|
||||||
|
$(OBJECTDIR)xcursor.o \
|
||||||
|
$(OBJECTDIR)xlspwin.o \
|
||||||
|
$(OBJECTDIR)xrdopt.o \
|
||||||
|
$(OBJECTDIR)xwinman.o
|
||||||
|
|
||||||
|
|
||||||
|
XFLAGS = -I/usr/local/include -DXWINDOW
|
||||||
|
|
||||||
|
# OPTFLAGS is normally -O0 for init
|
||||||
|
OPTFLAGS = -O0 -g
|
||||||
|
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||||
|
|
||||||
|
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
|
||||||
|
OBJECTDIR = ../$(RELEASENAME)/
|
||||||
|
|
||||||
|
default : ../$(OSARCHNAME)/ldeinit
|
||||||
27
bin/makefile-init-freebsd.x86_64
Normal file
27
bin/makefile-init-freebsd.x86_64
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Options for FreeBSD, Intel x86_64 and X-Windows
|
||||||
|
|
||||||
|
CC = clang -m64 $(CLANG_CFLAGS)
|
||||||
|
|
||||||
|
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||||
|
$(OBJECTDIR)xbbt.o \
|
||||||
|
$(OBJECTDIR)dspif.o \
|
||||||
|
$(OBJECTDIR)xinit.o \
|
||||||
|
$(OBJECTDIR)xscroll.o \
|
||||||
|
$(OBJECTDIR)xcursor.o \
|
||||||
|
$(OBJECTDIR)xlspwin.o \
|
||||||
|
$(OBJECTDIR)xrdopt.o \
|
||||||
|
$(OBJECTDIR)xwinman.o
|
||||||
|
|
||||||
|
|
||||||
|
XFLAGS = -I/usr/local/include -DXWINDOW
|
||||||
|
|
||||||
|
# OPTFLAGS is normally -O0 for init
|
||||||
|
OPTFLAGS = -O0 -g
|
||||||
|
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||||
|
|
||||||
|
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
|
||||||
|
|
||||||
|
OBJECTDIR = ../$(RELEASENAME)/
|
||||||
|
|
||||||
|
default : ../$(OSARCHNAME)/ldeinit
|
||||||
29
bin/makefile-init-linux.x86_64
Normal file
29
bin/makefile-init-linux.x86_64
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Options for Linux, x86 processor, X windows, for INIT processing
|
||||||
|
|
||||||
|
#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, for INIT we want unoptimized in case we need to debug it
|
||||||
|
OPTFLAGS = -O0 -g
|
||||||
|
DEBUGFLAGS =
|
||||||
|
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||||
|
|
||||||
|
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||||
|
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||||
|
|
||||||
|
OBJECTDIR = ../$(RELEASENAME)/
|
||||||
|
|
||||||
|
default : ../$(OSARCHNAME)/ldeinit
|
||||||
@@ -41,7 +41,7 @@ OPTFLAGS = -g3 -O0
|
|||||||
|
|
||||||
DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
|
DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
|
||||||
|
|
||||||
MACHINEFLAGS = -DOS5 -DUSE_DLPI -DLOCK_X_UPDATES
|
MACHINEFLAGS = -DOS5 -DUSE_DLPI
|
||||||
|
|
||||||
# The LDEINIT wants to have NOVERSION set, so we don't hang up on
|
# The LDEINIT wants to have NOVERSION set, so we don't hang up on
|
||||||
# any change-over in versions.
|
# any change-over in versions.
|
||||||
|
|||||||
27
bin/makefile-linux.aarch64-x
Normal file
27
bin/makefile-linux.aarch64-x
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Options for Linux, ARMv7 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=351
|
||||||
|
|
||||||
|
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||||
|
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||||
|
|
||||||
|
OBJECTDIR = ../$(RELEASENAME)/
|
||||||
|
|
||||||
|
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex
|
||||||
@@ -36,7 +36,6 @@ DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
|
|||||||
DFLAGS = $(XFLAGS) \
|
DFLAGS = $(XFLAGS) \
|
||||||
$(DEBUGFLAGS) \
|
$(DEBUGFLAGS) \
|
||||||
-DOS5 \
|
-DOS5 \
|
||||||
-DLOCK_X_UPDATES \
|
|
||||||
-DRELEASE=351
|
-DRELEASE=351
|
||||||
|
|
||||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
|
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
|
|||||||
DFLAGS = $(XFLAGS) \
|
DFLAGS = $(XFLAGS) \
|
||||||
$(DEBUGFLAGS) \
|
$(DEBUGFLAGS) \
|
||||||
-DOS5 -DUSE_DLPI \
|
-DOS5 -DUSE_DLPI \
|
||||||
-DLOCK_X_UPDATES \
|
|
||||||
-I$(OPENWINHOME)/include \
|
-I$(OPENWINHOME)/include \
|
||||||
-DRELEASE=210
|
-DRELEASE=210
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ OPTFLAGS = -O2 -g3
|
|||||||
|
|
||||||
DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
|
DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
|
||||||
|
|
||||||
MACHINEFLAGS = -DOS5 -DUSE_DLPI -DLOCK_X_UPDATES
|
MACHINEFLAGS = -DOS5 -DUSE_DLPI
|
||||||
|
|
||||||
DFLAGS = $(XFLAGS) \
|
DFLAGS = $(XFLAGS) \
|
||||||
$(DEBUGFLAGS) \
|
$(DEBUGFLAGS) \
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
|
|||||||
DFLAGS = $(XFLAGS) \
|
DFLAGS = $(XFLAGS) \
|
||||||
$(DEBUGFLAGS) \
|
$(DEBUGFLAGS) \
|
||||||
-DOS5 \
|
-DOS5 \
|
||||||
-DLOCK_X_UPDATES \
|
|
||||||
-DUSE_DLPI \
|
-DUSE_DLPI \
|
||||||
-DRELEASE=351
|
-DRELEASE=351
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ typedef struct
|
|||||||
, White_Pixel ); \
|
, White_Pixel ); \
|
||||||
XLOCK; \
|
XLOCK; \
|
||||||
XFlush( display ); \
|
XFlush( display ); \
|
||||||
XUNLOCK; \
|
XUNLOCK( display ); \
|
||||||
(child_win)->parent = parent_win; \
|
(child_win)->parent = parent_win; \
|
||||||
if( (child_win)->after_create ) \
|
if( (child_win)->after_create ) \
|
||||||
((child_win)->after_create)(parent_win,child_win);\
|
((child_win)->after_create)(parent_win,child_win);\
|
||||||
@@ -96,7 +96,7 @@ typedef struct
|
|||||||
, (window)->width \
|
, (window)->width \
|
||||||
, (window)->height ); \
|
, (window)->height ); \
|
||||||
XFlush( display ); \
|
XFlush( display ); \
|
||||||
XUNLOCK; \
|
XUNLOCK( display ); \
|
||||||
if( (window)->after_resize ) \
|
if( (window)->after_resize ) \
|
||||||
((window)->after_resize)( window ); \
|
((window)->after_resize)( window ); \
|
||||||
} \
|
} \
|
||||||
@@ -106,7 +106,7 @@ typedef struct
|
|||||||
XLOCK; \
|
XLOCK; \
|
||||||
XDefineCursor( display, (window)->win, *(mycursor) ); \
|
XDefineCursor( display, (window)->win, *(mycursor) ); \
|
||||||
XFlush( display ); \
|
XFlush( display ); \
|
||||||
XUNLOCK; \
|
XUNLOCK( display ); \
|
||||||
(window)->cursor = mycursor; \
|
(window)->cursor = mycursor; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,8 @@
|
|||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
/* NOTE: These MACRO should be used for the pointers in LISP SYSOUT */
|
/* NOTE: These MACRO should be used for the pointers in LISP SYSOUT */
|
||||||
#define LLSH(datum , n) ((datum )<< n)
|
#define LLSH(datum, n) ((datum) << (n))
|
||||||
#define LRSH(datum , n) ((datum) >> n)
|
#define LRSH(datum, n) ((datum) >> (n))
|
||||||
|
|
||||||
#define HILOC(ptr) (LRSH(((unsigned int)(ptr) & SEGMASK),16))
|
#define HILOC(ptr) (LRSH(((unsigned int)(ptr) & SEGMASK),16))
|
||||||
#define LOLOC(ptr) ((unsigned int)(ptr) & 0x0ffff)
|
#define LOLOC(ptr) ((unsigned int)(ptr) & 0x0ffff)
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/* translate LispPage to 68k address */
|
/* translate LispPage to 68k address */
|
||||||
#define Addr68k_from_LPAGE(Lisp_page) (Addr68k_from_LADDR((Lisp_page << 8) ))
|
#define Addr68k_from_LPAGE(Lisp_page) (Addr68k_from_LADDR(((Lisp_page) << 8) ))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
56
inc/arith.h
56
inc/arith.h
@@ -10,20 +10,20 @@
|
|||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
#define MAX_SMALL 65535 /* == 0x0000FFFF */
|
#define MAX_SMALL 65535 /* == 0x0000FFFF */
|
||||||
#define MIN_SMALL -65536 /* == 0xFFFF0000 */
|
#define MIN_SMALL (-65536) /* == 0xFFFF0000 */
|
||||||
|
|
||||||
#define MAX_FIXP 2147483647 /* == 0x7FFFFFFF */
|
#define MAX_FIXP 2147483647 /* == 0x7FFFFFFF */
|
||||||
#define MIN_FIXP -2147483648 /* == 0x80000000 */
|
#define MIN_FIXP (-2147483648) /* == 0x80000000 */
|
||||||
|
|
||||||
#define GetSmalldata(x) \
|
#define GetSmalldata(x) \
|
||||||
(((SEGMASK & x) == S_POSITIVE) \
|
(((SEGMASK & (x)) == S_POSITIVE) \
|
||||||
? (0xFFFF & x) \
|
? (0xFFFF & (x)) \
|
||||||
: (((SEGMASK & x) == S_NEGATIVE) ? (0xFFFF0000 | x) : error("Not smallp address")))
|
: (((SEGMASK & (x)) == S_NEGATIVE) ? (0xFFFF0000 | (x)) : error("Not smallp address")))
|
||||||
|
|
||||||
#define GetSmallp(x) \
|
#define GetSmallp(x) \
|
||||||
((0xFFFF0000 & x) ? (((0xFFFF0000 & x) == 0xFFFF0000) ? (S_NEGATIVE | (0xFFFF & x)) \
|
((0xFFFF0000 & (x)) ? (((0xFFFF0000 & (x)) == 0xFFFF0000) ? (S_NEGATIVE | (0xFFFF & (x))) \
|
||||||
: error("Not Smallp data")) \
|
: error("Not Smallp data")) \
|
||||||
: (S_POSITIVE | (0xFFFF & x)))
|
: (S_POSITIVE | (0xFFFF & (x))))
|
||||||
|
|
||||||
#define FIXP_VALUE(dest) *((int *)Addr68k_from_LADDR(dest))
|
#define FIXP_VALUE(dest) *((int *)Addr68k_from_LADDR(dest))
|
||||||
|
|
||||||
@@ -31,32 +31,34 @@
|
|||||||
|
|
||||||
#define N_GETNUMBER(sour, dest, label) \
|
#define N_GETNUMBER(sour, dest, label) \
|
||||||
do { \
|
do { \
|
||||||
dest = sour; /* access memory once */ \
|
(dest) = (sour); /* access memory once */ \
|
||||||
switch (SEGMASK & dest) { \
|
switch (SEGMASK & (dest)) { \
|
||||||
case S_POSITIVE: dest = 0xFFFF & (dest); break; \
|
case S_POSITIVE: (dest) = 0xFFFF & (dest); break; \
|
||||||
case S_NEGATIVE: dest = 0xFFFF0000 | (dest); break; \
|
case S_NEGATIVE: (dest) = 0xFFFF0000 | (dest); break; \
|
||||||
default: \
|
default: \
|
||||||
|
/* NOLINTNEXTLINE(bugprone-macro-parentheses) */ \
|
||||||
if (GetTypeNumber(dest) != TYPE_FIXP) goto label; \
|
if (GetTypeNumber(dest) != TYPE_FIXP) goto label; \
|
||||||
dest = FIXP_VALUE(dest); \
|
(dest) = FIXP_VALUE(dest); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define N_IGETNUMBER(sour, dest, label) \
|
#define N_IGETNUMBER(sour, dest, label) \
|
||||||
do { \
|
do { \
|
||||||
dest = sour; /* access memory once */ \
|
(dest) = (sour); /* access memory once */ \
|
||||||
switch (SEGMASK & dest) { \
|
switch (SEGMASK & (dest)) { \
|
||||||
case S_POSITIVE: dest = 0xFFFF & dest; break; \
|
case S_POSITIVE: (dest) = 0xFFFF & (dest); break; \
|
||||||
case S_NEGATIVE: dest = 0xFFFF0000 | dest; break; \
|
case S_NEGATIVE: (dest) = 0xFFFF0000 | (dest); break; \
|
||||||
default: \
|
default: \
|
||||||
switch (GetTypeNumber(dest)) { \
|
switch (GetTypeNumber(dest)) { \
|
||||||
case TYPE_FIXP: dest = FIXP_VALUE(dest); break; \
|
case TYPE_FIXP: (dest) = FIXP_VALUE(dest); break; \
|
||||||
case TYPE_FLOATP: { \
|
case TYPE_FLOATP: { \
|
||||||
register float temp; \
|
register float temp; \
|
||||||
temp = FLOATP_VALUE(dest); \
|
temp = FLOATP_VALUE(dest); \
|
||||||
|
/* NOLINTNEXTLINE(bugprone-macro-parentheses) */ \
|
||||||
if ((temp > ((float)0x7fffffff)) || (temp < ((float)0x80000000))) goto label; \
|
if ((temp > ((float)0x7fffffff)) || (temp < ((float)0x80000000))) goto label; \
|
||||||
dest = (int)temp; \
|
(dest) = (int)temp; \
|
||||||
} break; \
|
} break; \
|
||||||
default: goto label; \
|
default: goto label; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
} \
|
} \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
@@ -64,15 +66,15 @@
|
|||||||
|
|
||||||
#define ARITH_SWITCH(arg, result) \
|
#define ARITH_SWITCH(arg, result) \
|
||||||
do { \
|
do { \
|
||||||
switch ((int)arg & 0xFFFF0000) { \
|
switch ((int)(arg) & 0xFFFF0000) { \
|
||||||
case 0: result = (S_POSITIVE | (int)arg); break; \
|
case 0: (result) = (S_POSITIVE | (int)(arg)); break; \
|
||||||
case 0xFFFF0000: result = (S_NEGATIVE | (0xFFFF & (int)arg)); break; \
|
case 0xFFFF0000: (result) = (S_NEGATIVE | (0xFFFF & (int)(arg))); break; \
|
||||||
default: { \
|
default: { \
|
||||||
register LispPTR *wordp; \
|
register LispPTR *wordp; \
|
||||||
/* arg is FIXP, call createcell */ \
|
/* arg is FIXP, call createcell */ \
|
||||||
wordp = (LispPTR *)createcell68k(TYPE_FIXP); \
|
wordp = (LispPTR *)createcell68k(TYPE_FIXP); \
|
||||||
*((int *)wordp) = (int)arg; \
|
*((int *)wordp) = (int)(arg); \
|
||||||
result = (LADDR_from_68k(wordp)); \
|
(result) = (LADDR_from_68k(wordp)); \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
@@ -104,9 +106,9 @@
|
|||||||
|
|
||||||
#define N_ARITH_SWITCH(arg) \
|
#define N_ARITH_SWITCH(arg) \
|
||||||
do { \
|
do { \
|
||||||
switch (arg & 0xFFFF0000) { \
|
switch ((arg) & 0xFFFF0000) { \
|
||||||
case 0: return (S_POSITIVE | arg); \
|
case 0: return (S_POSITIVE | (arg)); \
|
||||||
case 0xFFFF0000: return (S_NEGATIVE | (0xFFFF & arg)); \
|
case 0xFFFF0000: return (S_NEGATIVE | (0xFFFF & (arg))); \
|
||||||
default: { \
|
default: { \
|
||||||
register LispPTR *fixpp; \
|
register LispPTR *fixpp; \
|
||||||
/* arg is FIXP, call createcell */ \
|
/* arg is FIXP, call createcell */ \
|
||||||
|
|||||||
2
inc/bb.h
2
inc/bb.h
@@ -140,7 +140,7 @@
|
|||||||
#define B_src_word_in_postloop src32lbit >= dst32lbit
|
#define B_src_word_in_postloop src32lbit >= dst32lbit
|
||||||
|
|
||||||
/* VARIABLES */
|
/* VARIABLES */
|
||||||
#define F_num_loop ((dst32lbit + w) >> 5) - 1
|
#define F_num_loop (((dst32lbit + w) >> 5) - 1)
|
||||||
#define B_num_loop ((w - dst32rbit - 1) > 0) ? ((w - dst32rbit - 1) >> 5) : 0
|
#define B_num_loop ((w - dst32rbit - 1) > 0) ? ((w - dst32rbit - 1) >> 5) : 0
|
||||||
#define F_preloop_mask ((dst32lbit) ? (~(0xFFFFFFFF << (32 - dst32lbit))) : 0xFFFFFFFF)
|
#define F_preloop_mask ((dst32lbit) ? (~(0xFFFFFFFF << (32 - dst32lbit))) : 0xFFFFFFFF)
|
||||||
#define F_postloop_mask 0xFFFFFFFF << (31 - dst32rbit)
|
#define F_postloop_mask 0xFFFFFFFF << (31 - dst32rbit)
|
||||||
|
|||||||
@@ -1,36 +1,19 @@
|
|||||||
#ifndef BBTSUBDEFS_H
|
#ifndef BBTSUBDEFS_H
|
||||||
#define BBTSUBDEFS_H 1
|
#define BBTSUBDEFS_H 1
|
||||||
|
|
||||||
/***** Don't use PixRect code on 386i for now *****/
|
|
||||||
/***** -or on any machine that doesn't support it (HP, e.g.) *****/
|
|
||||||
|
|
||||||
/********************************************************/
|
/********************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* prropstyle is DEFINED when we want to use */
|
/* Don Charnley's bitblt code */
|
||||||
/* pixrect versions of the operations in this */
|
|
||||||
/* file, and UNDEFINED, when we want to use */
|
|
||||||
/* Don Charnley's bitblt code to do them. */
|
|
||||||
/* */
|
/* */
|
||||||
/********************************************************/
|
/********************************************************/
|
||||||
#include "lispemul.h" /* for LispPTR, DLword */
|
#include "lispemul.h" /* for LispPTR, DLword */
|
||||||
|
|
||||||
#if defined(SUNDISPLAY) && \
|
|
||||||
!defined(NOPIXRECT) && \
|
|
||||||
!defined(NEWBITBLT)
|
|
||||||
#define prropstyle 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void bitbltsub(LispPTR *argv);
|
void bitbltsub(LispPTR *argv);
|
||||||
LispPTR n_new_cursorin(DLword *baseaddr, int dx, int dy, int w, int h);
|
LispPTR n_new_cursorin(DLword *baseaddr, int dx, int dy, int w, int h);
|
||||||
LispPTR bitblt_bitmap(LispPTR *args);
|
LispPTR bitblt_bitmap(LispPTR *args);
|
||||||
LispPTR bitshade_bitmap(LispPTR *args);
|
LispPTR bitshade_bitmap(LispPTR *args);
|
||||||
#ifndef prropstyle
|
|
||||||
void bltchar(LispPTR *args);
|
void bltchar(LispPTR *args);
|
||||||
void newbltchar(LispPTR *args);
|
void newbltchar(LispPTR *args);
|
||||||
#else
|
|
||||||
LispPTR bltchar(LispPTR *args);
|
|
||||||
LispPTR newbltchar(LispPTR *args);
|
|
||||||
#endif
|
|
||||||
void ccfuncall(unsigned int atom_index, int argnum, int bytenum);
|
void ccfuncall(unsigned int atom_index, int argnum, int bytenum);
|
||||||
void tedit_bltchar(LispPTR *args);
|
void tedit_bltchar(LispPTR *args);
|
||||||
|
|
||||||
|
|||||||
25
inc/bitblt.h
25
inc/bitblt.h
@@ -27,16 +27,16 @@
|
|||||||
#define ERROR PIX_SRC
|
#define ERROR PIX_SRC
|
||||||
|
|
||||||
#define PixOperation( SRCTYPE, OPERATION ) \
|
#define PixOperation( SRCTYPE, OPERATION ) \
|
||||||
( SRCTYPE == ERASE ? \
|
( (SRCTYPE) == ERASE ? \
|
||||||
(OPERATION == REPLACE ? PIX_NOT(PIX_SRC) : \
|
((OPERATION) == REPLACE ? PIX_NOT(PIX_SRC) : \
|
||||||
(OPERATION == PAINT ? PIX_NOT(PIX_SRC) | PIX_DST : \
|
((OPERATION) == PAINT ? PIX_NOT(PIX_SRC) | PIX_DST : \
|
||||||
(OPERATION == ERASE ? PIX_NOT(PIX_SRC) & PIX_DST : \
|
((OPERATION) == ERASE ? PIX_NOT(PIX_SRC) & PIX_DST : \
|
||||||
(OPERATION == INVERT ? PIX_NOT(PIX_SRC) ^ PIX_DST : ERROR)))) : \
|
((OPERATION) == INVERT ? PIX_NOT(PIX_SRC) ^ PIX_DST : ERROR)))) : \
|
||||||
/* SRCTYPE == INPUT */ \
|
/* SRCTYPE == INPUT */ \
|
||||||
(OPERATION == REPLACE ? PIX_SRC : \
|
((OPERATION) == REPLACE ? PIX_SRC : \
|
||||||
(OPERATION == PAINT ? PIX_SRC | PIX_DST : \
|
((OPERATION) == PAINT ? PIX_SRC | PIX_DST : \
|
||||||
(OPERATION == ERASE ? PIX_SRC & PIX_DST : \
|
((OPERATION) == ERASE ? PIX_SRC & PIX_DST : \
|
||||||
(OPERATION == INVERT ? PIX_SRC ^ PIX_DST : ERROR)))))
|
((OPERATION) == INVERT ? PIX_SRC ^ PIX_DST : ERROR)))))
|
||||||
|
|
||||||
|
|
||||||
extern DLword *EmMouseX68K, *EmMouseY68K;
|
extern DLword *EmMouseX68K, *EmMouseY68K;
|
||||||
@@ -54,13 +54,6 @@ extern int DisplayRasterWidth;
|
|||||||
#define ShowCursor { (currentdsp->mouse_visible)(IOPage68K->dlmousex, \
|
#define ShowCursor { (currentdsp->mouse_visible)(IOPage68K->dlmousex, \
|
||||||
IOPage68K->dlmousey); }
|
IOPage68K->dlmousey); }
|
||||||
|
|
||||||
#elif defined(SUNDISPLAY) && defined(OLD_CURSOR)
|
|
||||||
extern struct winlock DisplayLockArea;
|
|
||||||
#define HideCursor \
|
|
||||||
ioctl( LispWindowFd, WINLOCKSCREEN, &DisplayLockArea)
|
|
||||||
|
|
||||||
#define ShowCursor \
|
|
||||||
ioctl( LispWindowFd, WINUNLOCKSCREEN, &DisplayLockArea)
|
|
||||||
#else
|
#else
|
||||||
extern DLword *EmCursorX68K,*EmCursorY68K;
|
extern DLword *EmCursorX68K,*EmCursorY68K;
|
||||||
#define HideCursor { taking_mouse_down();}
|
#define HideCursor { taking_mouse_down();}
|
||||||
|
|||||||
22
inc/cell.h
22
inc/cell.h
@@ -29,7 +29,7 @@
|
|||||||
/* On 68010,68000 This Macro does not effect */
|
/* On 68010,68000 This Macro does not effect */
|
||||||
|
|
||||||
#ifdef NEWCDRCODING
|
#ifdef NEWCDRCODING
|
||||||
#define CARFIELD(x) ((int)x & 0x0fffffff)
|
#define CARFIELD(x) ((int)(x) & 0x0fffffff)
|
||||||
|
|
||||||
/* CDR-Codes defs */
|
/* CDR-Codes defs */
|
||||||
#define CDR_ONPAGE 8
|
#define CDR_ONPAGE 8
|
||||||
@@ -124,7 +124,7 @@ typedef struct freec {
|
|||||||
|
|
||||||
#endif /* BYTESWAP */
|
#endif /* BYTESWAP */
|
||||||
|
|
||||||
#define FREECONS(page, offset) ((freecons *)((DLword *)page + offset))
|
#define FREECONS(page, offset) ((freecons *)((DLword *)(page) + (offset)))
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
@@ -375,20 +375,20 @@ struct cadr_cell {
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
/* Good for old LITATOMS and new NEW-ATOMs */
|
/* Good for old LITATOMS and new NEW-ATOMs */
|
||||||
#define GetDEFCELL68k(index) \
|
#define GetDEFCELL68k(index) \
|
||||||
(((index & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_DEFN_OFFSET) \
|
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_DEFN_OFFSET) \
|
||||||
: GetDEFCELLlitatom(index))
|
: GetDEFCELLlitatom(index))
|
||||||
|
|
||||||
#define GetVALCELL68k(index) \
|
#define GetVALCELL68k(index) \
|
||||||
(((index & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_VALUE_OFFSET) \
|
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_VALUE_OFFSET) \
|
||||||
: GetVALCELLlitatom(index))
|
: GetVALCELLlitatom(index))
|
||||||
|
|
||||||
#define GetPnameCell(index) \
|
#define GetPnameCell(index) \
|
||||||
(((index & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PNAME_OFFSET) \
|
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PNAME_OFFSET) \
|
||||||
: GetPnameCelllitatom(index))
|
: GetPnameCelllitatom(index))
|
||||||
|
|
||||||
#define GetPropCell(index) \
|
#define GetPropCell(index) \
|
||||||
(((index & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PLIST_OFFSET) \
|
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PLIST_OFFSET) \
|
||||||
: GetPropCelllitatom(index))
|
: GetPropCelllitatom(index))
|
||||||
|
|
||||||
/* Good only for old-style LITATOMS */
|
/* Good only for old-style LITATOMS */
|
||||||
@@ -420,6 +420,6 @@ struct cadr_cell {
|
|||||||
if (GetTypeNumber(parm) != TYPE_LISTP) { \
|
if (GetTypeNumber(parm) != TYPE_LISTP) { \
|
||||||
ERROR_EXIT(tos); \
|
ERROR_EXIT(tos); \
|
||||||
} else \
|
} else \
|
||||||
dest = cadr(parm); \
|
(dest) = cadr(parm); \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
13
inc/devif.h
13
inc/devif.h
@@ -264,14 +264,15 @@ typedef struct
|
|||||||
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
#define DefineCursor(display, window, mycursor) { \
|
#define DefineCursor(dsp, window, mycursor) \
|
||||||
XLOCK;\
|
do { \
|
||||||
XDefineCursor( display, window, *(mycursor) );\
|
XLOCK; \
|
||||||
XUNLOCK;\
|
XDefineCursor((dsp)->display_id, window, *(mycursor) ); \
|
||||||
}
|
XUNLOCK(dsp); \
|
||||||
|
} while (0)
|
||||||
#endif /* XWINDOW */
|
#endif /* XWINDOW */
|
||||||
|
|
||||||
#define OUTER_SB_WIDTH(dsp) (dsp->ScrollBarWidth + 2*(dsp->InternalBorderWidth))
|
#define OUTER_SB_WIDTH(dsp) ((dsp)->ScrollBarWidth + 2*((dsp)->InternalBorderWidth))
|
||||||
|
|
||||||
#ifndef min
|
#ifndef min
|
||||||
#define min( a, b ) (((a)<(b))?(a):(b))
|
#define min( a, b ) (((a)<(b))?(a):(b))
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ extern DLword *DISP_MAX_Address;
|
|||||||
extern DLword *DisplayRegion68k;
|
extern DLword *DisplayRegion68k;
|
||||||
|
|
||||||
#define in_display_segment(baseaddr) \
|
#define in_display_segment(baseaddr) \
|
||||||
(((DisplayRegion68k <= baseaddr) && \
|
(((DisplayRegion68k <= (baseaddr)) && \
|
||||||
(baseaddr <=DISP_MAX_Address)) ? T :NIL )
|
((baseaddr) <= DISP_MAX_Address)) ? T : NIL )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
|
|||||||
40
inc/gcdata.h
40
inc/gcdata.h
@@ -48,7 +48,7 @@
|
|||||||
/* IncAllocCnt is called only when *Reclaim_cnt_word != NIL */
|
/* IncAllocCnt is called only when *Reclaim_cnt_word != NIL */
|
||||||
|
|
||||||
#define IncAllocCnt(n) {\
|
#define IncAllocCnt(n) {\
|
||||||
if ((*Reclaim_cnt_word -= n) <= S_POSITIVE) {\
|
if ((*Reclaim_cnt_word -= (n)) <= S_POSITIVE) { \
|
||||||
/* time for GC */\
|
/* time for GC */\
|
||||||
Irq_Stk_Check = Irq_Stk_End = 0;\
|
Irq_Stk_Check = Irq_Stk_End = 0;\
|
||||||
*Reclaim_cnt_word = S_POSITIVE;\
|
*Reclaim_cnt_word = S_POSITIVE;\
|
||||||
@@ -57,35 +57,35 @@
|
|||||||
|
|
||||||
/* DecAllocCnt only called when *Reclaim_cnt_word != NIL */
|
/* DecAllocCnt only called when *Reclaim_cnt_word != NIL */
|
||||||
|
|
||||||
#define DecAllocCnt(n) { *Reclaim_cnt_word += n; }
|
#define DecAllocCnt(n) { *Reclaim_cnt_word += (n); }
|
||||||
|
|
||||||
#define FreeLink(link) {\
|
#define FreeLink(link) { \
|
||||||
GETGC(link) = 0;\
|
GETGC(link) = 0; \
|
||||||
GETGC(link+1) = GETGC(HTcoll);\
|
GETGC((link)+1) = GETGC(HTcoll); \
|
||||||
GETGC(HTcoll) = (link - HTcoll);\
|
GETGC(HTcoll) = ((link) - HTcoll); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Given the contents of an HTMAIN or HTCOLL entry,
|
/* Given the contents of an HTMAIN or HTCOLL entry,
|
||||||
get the link pointer (i.e., turn off the low bit) */
|
get the link pointer (i.e., turn off the low bit) */
|
||||||
#define GetLinkptr(entry) (entry & 0x0fffffffe)
|
#define GetLinkptr(entry) ((entry) & 0x0fffffffe)
|
||||||
|
|
||||||
|
|
||||||
#define DelLink(link, prev, entry) { \
|
#define DelLink(link, prev, entry) { \
|
||||||
if (prev != (GCENTRY *)0) \
|
if ((prev) != (GCENTRY *)0) \
|
||||||
{ \
|
{ \
|
||||||
GETGC((GCENTRY *)prev + 1) = GETGC((GCENTRY *)link + 1); \
|
GETGC((GCENTRY *)(prev) + 1) = GETGC((GCENTRY *)(link) + 1); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
GETGC((GCENTRY *)entry) = GETGC((GCENTRY *)link + 1) | 1; \
|
GETGC((GCENTRY *)(entry)) = GETGC((GCENTRY *)(link) + 1) | 1; \
|
||||||
} \
|
} \
|
||||||
FreeLink((GCENTRY *)link); \
|
FreeLink((GCENTRY *)(link)); \
|
||||||
link = (GCENTRY *)(HTcoll + GetLinkptr(GETGC((GCENTRY *)entry))); \
|
(link) = (GCENTRY *)(HTcoll + GetLinkptr(GETGC((GCENTRY *)(entry)))); \
|
||||||
if (GETGC((GCENTRY *)link + 1) == 0) \
|
if (GETGC((GCENTRY *)(link) + 1) == 0) \
|
||||||
{ \
|
{ \
|
||||||
GETGC((GCENTRY *)entry) = GETGC((GCENTRY *)link); \
|
GETGC((GCENTRY *)(entry)) = GETGC((GCENTRY *)(link)); \
|
||||||
FreeLink((GCENTRY *)link); \
|
FreeLink((GCENTRY *)(link)); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,18 +104,18 @@
|
|||||||
#define GCLOOKUPV(ptr, case, val) { \
|
#define GCLOOKUPV(ptr, case, val) { \
|
||||||
if (RefCntP(ptr)) { \
|
if (RefCntP(ptr)) { \
|
||||||
if (*Reclaim_cnt_word != NIL) \
|
if (*Reclaim_cnt_word != NIL) \
|
||||||
val = htfind(ptr, case); \
|
(val) = htfind((ptr), (case)); \
|
||||||
else \
|
else \
|
||||||
val = rec_htfind(ptr, case); \
|
(val) = rec_htfind((ptr), (case)); \
|
||||||
} else val = NIL; \
|
} else (val) = NIL; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define REC_GCLOOKUP(ptr, case) { if (RefCntP(ptr)) rec_htfind(ptr, case); }
|
#define REC_GCLOOKUP(ptr, case) { if (RefCntP(ptr)) rec_htfind(ptr, case); }
|
||||||
#define REC_GCLOOKUPV(ptr, case, val) { \
|
#define REC_GCLOOKUPV(ptr, case, val) { \
|
||||||
if (RefCntP(ptr)) \
|
if (RefCntP(ptr)) \
|
||||||
val = rec_htfind(ptr, case); \
|
(val) = rec_htfind((ptr), (case)); \
|
||||||
else \
|
else \
|
||||||
val = NIL; \
|
(val) = NIL; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FRPLPTR(old , new) { \
|
#define FRPLPTR(old , new) { \
|
||||||
|
|||||||
142
inc/inlineC.h
142
inc/inlineC.h
@@ -211,7 +211,7 @@
|
|||||||
#define JUMPMACRO(x) \
|
#define JUMPMACRO(x) \
|
||||||
do { \
|
do { \
|
||||||
CHECK_INTERRUPT; \
|
CHECK_INTERRUPT; \
|
||||||
PCMACL += x; \
|
PCMACL += (x); \
|
||||||
nextop0; \
|
nextop0; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@@ -221,7 +221,7 @@
|
|||||||
{ \
|
{ \
|
||||||
CHECK_INTERRUPT; \
|
CHECK_INTERRUPT; \
|
||||||
POP; \
|
POP; \
|
||||||
PCMACL += x; \
|
PCMACL += (x); \
|
||||||
nextop0; \
|
nextop0; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
@@ -231,7 +231,7 @@
|
|||||||
{ \
|
{ \
|
||||||
CHECK_INTERRUPT; \
|
CHECK_INTERRUPT; \
|
||||||
POP; \
|
POP; \
|
||||||
PCMACL += x; \
|
PCMACL += (x); \
|
||||||
nextop0; \
|
nextop0; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
@@ -239,13 +239,13 @@
|
|||||||
#define GETBASE_N(N) \
|
#define GETBASE_N(N) \
|
||||||
do { \
|
do { \
|
||||||
TOPOFSTACK = \
|
TOPOFSTACK = \
|
||||||
(S_POSITIVE | GETWORD((DLword *)Addr68k_from_LADDR((POINTERMASK & TOPOFSTACK) + N))); \
|
(S_POSITIVE | GETWORD((DLword *)Addr68k_from_LADDR((POINTERMASK & TOPOFSTACK) + (N)))); \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GETBASEPTR_N(N) \
|
#define GETBASEPTR_N(N) \
|
||||||
do { \
|
do { \
|
||||||
TOPOFSTACK = (POINTERMASK & *((LispPTR *)Addr68k_from_LADDR((POINTERMASK & TOPOFSTACK) + N))); \
|
TOPOFSTACK = (POINTERMASK & *((LispPTR *)Addr68k_from_LADDR((POINTERMASK & TOPOFSTACK) + (N)))); \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define PUTBASEBYTE \
|
#define PUTBASEBYTE \
|
||||||
@@ -288,44 +288,44 @@
|
|||||||
nextop1; \
|
nextop1; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define PUTBASEPTR_N(n) \
|
#define PUTBASEPTR_N(n) \
|
||||||
do { \
|
do { \
|
||||||
register int base; \
|
register int base; \
|
||||||
base = POINTERMASK & POP_TOS_1; \
|
base = POINTERMASK & POP_TOS_1; \
|
||||||
*((LispPTR *)Addr68k_from_LADDR(base + n)) = TOPOFSTACK; \
|
*((LispPTR *)Addr68k_from_LADDR(base + (n))) = TOPOFSTACK; \
|
||||||
TOPOFSTACK = base; \
|
TOPOFSTACK = base; \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define PUTBASE_N(n) \
|
#define PUTBASE_N(n) \
|
||||||
do { \
|
do { \
|
||||||
register int base; \
|
register int base; \
|
||||||
if (GetHiWord(TOPOFSTACK) != (S_POSITIVE >> 16)) goto op_ufn; \
|
if (GetHiWord(TOPOFSTACK) != (S_POSITIVE >> 16)) goto op_ufn; \
|
||||||
base = POINTERMASK & POP_TOS_1; \
|
base = POINTERMASK & POP_TOS_1; \
|
||||||
GETWORD((DLword *)Addr68k_from_LADDR(base + n)) = GetLoWord(TOPOFSTACK); \
|
GETWORD((DLword *)Addr68k_from_LADDR(base + (n))) = GetLoWord(TOPOFSTACK); \
|
||||||
TOPOFSTACK = base; \
|
TOPOFSTACK = base; \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define PVARX(x) \
|
#define PVARX(x) \
|
||||||
do { \
|
do { \
|
||||||
PUSH(GetLongWord((DLword *)PVAR + x)); \
|
PUSH(GetLongWord((DLword *)PVAR + (x))); \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define PVARX_(x) \
|
#define PVARX_(x) \
|
||||||
do { \
|
do { \
|
||||||
*((LispPTR *)((DLword *)PVAR + x)) = TOPOFSTACK; \
|
*((LispPTR *)((DLword *)PVAR + (x))) = TOPOFSTACK; \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define IVARX(x) \
|
#define IVARX(x) \
|
||||||
do { \
|
do { \
|
||||||
PUSH(GetLongWord((DLword *)IVAR + x)); \
|
PUSH(GetLongWord((DLword *)IVAR + (x))); \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define IVARX_(x) \
|
#define IVARX_(x) \
|
||||||
do { \
|
do { \
|
||||||
*((LispPTR *)((DLword *)IVAR + x)) = TOPOFSTACK; \
|
*((LispPTR *)((DLword *)IVAR + (x))) = TOPOFSTACK; \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#ifndef BIGATOMS
|
#ifndef BIGATOMS
|
||||||
@@ -565,14 +565,14 @@
|
|||||||
nextop1; \
|
nextop1; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GETBITS_N_M(a, b) \
|
#define GETBITS_N_M(a, b) \
|
||||||
do { \
|
do { \
|
||||||
register int temp, bb = b; \
|
register int temp, bb = b; \
|
||||||
temp = 0xF & bb; \
|
temp = 0xF & bb; \
|
||||||
TOPOFSTACK = S_POSITIVE | (((GETWORD(Addr68k_from_LADDR(POINTERMASK & (TOPOFSTACK + a)))) >> \
|
TOPOFSTACK = S_POSITIVE | (((GETWORD(Addr68k_from_LADDR(POINTERMASK & (TOPOFSTACK + (a))))) >> \
|
||||||
(16 - ((0xF & (bb >> 4)) + temp + 1))) & \
|
(16 - ((0xF & (bb >> 4)) + temp + 1))) & \
|
||||||
n_mask_array[temp]); \
|
n_mask_array[temp]); \
|
||||||
nextop3; \
|
nextop3; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define PUTBITS_N_M(a, b) \
|
#define PUTBITS_N_M(a, b) \
|
||||||
@@ -583,7 +583,7 @@
|
|||||||
register int shift_size, field_size, fmask; \
|
register int shift_size, field_size, fmask; \
|
||||||
if ((SEGMASK & TOPOFSTACK) != S_POSITIVE) { goto op_ufn; }; \
|
if ((SEGMASK & TOPOFSTACK) != S_POSITIVE) { goto op_ufn; }; \
|
||||||
base = POINTERMASK & POP_TOS_1; \
|
base = POINTERMASK & POP_TOS_1; \
|
||||||
pword = (DLword *)Addr68k_from_LADDR(base + a); \
|
pword = (DLword *)Addr68k_from_LADDR(base + (a)); \
|
||||||
field_size = 0xF & bb; \
|
field_size = 0xF & bb; \
|
||||||
shift_size = 15 - (0xF & (bb >> 4)) - field_size; \
|
shift_size = 15 - (0xF & (bb >> 4)) - field_size; \
|
||||||
fmask = n_mask_array[field_size] << shift_size; \
|
fmask = n_mask_array[field_size] << shift_size; \
|
||||||
@@ -633,16 +633,16 @@
|
|||||||
nextop1; \
|
nextop1; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define TYPEP(n) \
|
#define TYPEP(n) \
|
||||||
do { \
|
do { \
|
||||||
if ((DLword)GetTypeNumber(TOPOFSTACK) != n) TOPOFSTACK = NIL_PTR; \
|
if ((DLword)GetTypeNumber(TOPOFSTACK) != (n)) TOPOFSTACK = NIL_PTR; \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define TYPEMASK(n) \
|
#define TYPEMASK(n) \
|
||||||
do { \
|
do { \
|
||||||
if ((((DLword)GetTypeEntry(TOPOFSTACK)) & ((DLword)n << 8)) == 0) TOPOFSTACK = NIL_PTR; \
|
if ((((DLword)GetTypeEntry(TOPOFSTACK)) & ((DLword)(n) << 8)) == 0) TOPOFSTACK = NIL_PTR; \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define INSTANCEP(atom_index) \
|
#define INSTANCEP(atom_index) \
|
||||||
@@ -651,16 +651,16 @@
|
|||||||
nextop_atom; \
|
nextop_atom; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define STOREN(n) \
|
#define STOREN(n) \
|
||||||
do { \
|
do { \
|
||||||
*(CSTKPTR - ((n + 2) >> 1)) = TOPOFSTACK; \
|
*(CSTKPTR - (((n) + 2) >> 1)) = TOPOFSTACK; \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define COPYN(n) \
|
#define COPYN(n) \
|
||||||
do { \
|
do { \
|
||||||
PUSH(*(CSTKPTR - ((n + 2) >> 1))); \
|
PUSH(*(CSTKPTR - (((n) + 2) >> 1))); \
|
||||||
nextop2; \
|
nextop2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define POPN(n) \
|
#define POPN(n) \
|
||||||
@@ -792,16 +792,16 @@
|
|||||||
} while (0)
|
} while (0)
|
||||||
#endif /* BIGVM */
|
#endif /* BIGVM */
|
||||||
|
|
||||||
#define FVAR(n) \
|
#define FVAR(n) \
|
||||||
do { \
|
do { \
|
||||||
register LispPTR *chain; \
|
register LispPTR *chain; \
|
||||||
chain = (LispPTR *)(PVar + n); \
|
chain = (LispPTR *)(PVar + (n)); \
|
||||||
if (WBITSPTR(chain)->LSB) { \
|
if (WBITSPTR(chain)->LSB) { \
|
||||||
PUSH(GetLongWord(Addr68k_from_LADDR(POINTERMASK &swapx(native_newframe(n >> 1))))); \
|
PUSH(GetLongWord(Addr68k_from_LADDR(POINTERMASK &swapx(native_newframe((n) >> 1))))); \
|
||||||
nextop1; \
|
nextop1; \
|
||||||
} /* if(((WBITS */ \
|
} /* if(((WBITS */ \
|
||||||
PUSH(GetLongWord(Addr68k_from_LADDR(POINTERMASK &swapx(*chain)))); \
|
PUSH(GetLongWord(Addr68k_from_LADDR(POINTERMASK &swapx(*chain)))); \
|
||||||
nextop1; \
|
nextop1; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define FVARX(n) \
|
#define FVARX(n) \
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#ifndef KEYEVENTDEFS_H
|
#ifndef KEYEVENTDEFS_H
|
||||||
#define KEYEVENTDEFS_H 1
|
#define KEYEVENTDEFS_H 1
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
void getsignaldata(int sig);
|
void process_io_events();
|
||||||
void kb_trans(u_short keycode, u_short upflg);
|
void kb_trans(u_short keycode, u_short upflg);
|
||||||
void taking_mouse_down(void);
|
void taking_mouse_down(void);
|
||||||
void copy_cursor(int newx, int newy);
|
void copy_cursor(int newx, int newy);
|
||||||
|
|||||||
@@ -13,23 +13,24 @@
|
|||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
#ifdef LOCK_X_UPDATES
|
#ifdef LOCK_X_UPDATES
|
||||||
#define XLOCK { XLocked++; /* printf("L"); fflush(stdout);*/}
|
#define XLOCK do { XLocked++; } while (0)
|
||||||
#define XUNLOCK \
|
#define XUNLOCK(dsp) \
|
||||||
{ XLocked--;/* printf("U"); fflush(stdout);*/ \
|
do { \
|
||||||
if (XNeedSignal) \
|
if (XLocked == 1 && XNeedSignal) \
|
||||||
{ \
|
{ \
|
||||||
XNeedSignal = 0; \
|
XNeedSignal = 0; \
|
||||||
kill(getpid(), SIGPOLL); \
|
getXsignaldata(dsp); \
|
||||||
}; \
|
}; \
|
||||||
}
|
XLocked--; \
|
||||||
|
} while (0)
|
||||||
#else
|
#else
|
||||||
#define XLOCK
|
#define XLOCK
|
||||||
#define XUNLOCK
|
#define XUNLOCK
|
||||||
#endif /* LOCK_X_UPDATES */
|
#endif /* LOCK_X_UPDATES */
|
||||||
|
|
||||||
extern int XLocked;
|
#include <signal.h>
|
||||||
extern int XNeedSignal;
|
extern volatile sig_atomic_t XLocked;
|
||||||
/* this is !0 if we're locked; it should be 0 or larger always */
|
extern volatile sig_atomic_t XNeedSignal;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -97,16 +97,16 @@ struct state {
|
|||||||
|
|
||||||
/***** Get_DLword(ptr) ptr is char* ***/
|
/***** Get_DLword(ptr) ptr is char* ***/
|
||||||
#ifndef UNALIGNED_FETCH_OK
|
#ifndef UNALIGNED_FETCH_OK
|
||||||
#define Get_DLword(ptr) ((Get_BYTE(ptr) << 8) | Get_BYTE(ptr + 1))
|
#define Get_DLword(ptr) ((Get_BYTE(ptr) << 8) | Get_BYTE((ptr) + 1))
|
||||||
#else
|
#else
|
||||||
#define Get_DLword(ptr) *(((DLword *)WORDPTR(ptr)))
|
#define Get_DLword(ptr) *(((DLword *)WORDPTR(ptr)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BIGVM
|
#ifdef BIGVM
|
||||||
#define Get_Pointer(ptr) \
|
#define Get_Pointer(ptr) \
|
||||||
((Get_BYTE(ptr) << 24) | (Get_BYTE(ptr + 1) << 16) | (Get_BYTE(ptr + 2) << 8) | Get_BYTE(ptr + 3))
|
((Get_BYTE(ptr) << 24) | (Get_BYTE((ptr) + 1) << 16) | (Get_BYTE((ptr) + 2) << 8) | Get_BYTE((ptr) + 3))
|
||||||
#else
|
#else
|
||||||
#define Get_Pointer(ptr) ((Get_BYTE(ptr) << 16) | (Get_BYTE(ptr + 1) << 8) | Get_BYTE(ptr + 2))
|
#define Get_Pointer(ptr) ((Get_BYTE(ptr) << 16) | (Get_BYTE((ptr) + 1) << 8) | Get_BYTE((ptr) + 2))
|
||||||
#endif /* BIGVM */
|
#endif /* BIGVM */
|
||||||
|
|
||||||
#define Get_code_BYTE Get_BYTE
|
#define Get_code_BYTE Get_BYTE
|
||||||
@@ -241,11 +241,11 @@ struct state {
|
|||||||
|
|
||||||
/* Fetching 2 bytes to make a word -- always do it the hard way */
|
/* Fetching 2 bytes to make a word -- always do it the hard way */
|
||||||
/* if we're byte-swapped: You can't rely on byte ordering!! */
|
/* if we're byte-swapped: You can't rely on byte ordering!! */
|
||||||
#define Get_DLword(ptr) ((Get_BYTE(ptr) << 8) | Get_BYTE(ptr + 1))
|
#define Get_DLword(ptr) ((Get_BYTE(ptr) << 8) | Get_BYTE((ptr) + 1))
|
||||||
|
|
||||||
#ifdef BIGVM
|
#ifdef BIGVM
|
||||||
#define Get_Pointer(ptr) \
|
#define Get_Pointer(ptr) \
|
||||||
((Get_BYTE(ptr) << 24) | (Get_BYTE(ptr + 1) << 16) | (Get_BYTE(ptr + 2) << 8) | Get_BYTE(ptr + 3))
|
((Get_BYTE(ptr) << 24) | (Get_BYTE((ptr) + 1) << 16) | (Get_BYTE((ptr) + 2) << 8) | Get_BYTE((ptr) + 3))
|
||||||
#else
|
#else
|
||||||
#define Get_Pointer(ptr) ((Get_BYTE(ptr) << 16) | (Get_BYTE(ptr + 1) << 8) | Get_BYTE(ptr + 2))
|
#define Get_Pointer(ptr) ((Get_BYTE(ptr) << 16) | (Get_BYTE(ptr + 1) << 8) | Get_BYTE(ptr + 2))
|
||||||
#endif /* BIGVM */
|
#endif /* BIGVM */
|
||||||
@@ -336,7 +336,7 @@ extern struct state MachineState;
|
|||||||
offset: word offset from base
|
offset: word offset from base
|
||||||
return: DLword*
|
return: DLword*
|
||||||
****************************************************/
|
****************************************************/
|
||||||
#define MakeAddr(base, offset) ((DLword *)(base + (int)offset))
|
#define MakeAddr(base, offset) ((DLword *)((base) + (int)(offset)))
|
||||||
|
|
||||||
/****************************************************
|
/****************************************************
|
||||||
GetHiWord:
|
GetHiWord:
|
||||||
@@ -369,10 +369,10 @@ PopCStack:
|
|||||||
PopStackTo: CSTK -> Place
|
PopStackTo: CSTK -> Place
|
||||||
#define PopStackTo(Place) {Place= *((LispPTR *)(--CurrentStackPTR)); CurrentStackPTR--; }
|
#define PopStackTo(Place) {Place= *((LispPTR *)(--CurrentStackPTR)); CurrentStackPTR--; }
|
||||||
*****************************************************/
|
*****************************************************/
|
||||||
#define PopStackTo(Place) \
|
#define PopStackTo(Place) \
|
||||||
do { \
|
do { \
|
||||||
Place = *((LispPTR *)(CurrentStackPTR)); \
|
(Place) = *((LispPTR *)(CurrentStackPTR)); \
|
||||||
CurrentStackPTR -= 2; \
|
CurrentStackPTR -= 2; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/****************************************************
|
/****************************************************
|
||||||
@@ -399,7 +399,7 @@ PushStack:
|
|||||||
SmashStack:
|
SmashStack:
|
||||||
#define SmashStack(x) (*((LispPTR *)(CurrentStackPTR-1))=x)
|
#define SmashStack(x) (*((LispPTR *)(CurrentStackPTR-1))=x)
|
||||||
*****************************************************/
|
*****************************************************/
|
||||||
#define SmashStack(x) (*((LispPTR *)(CurrentStackPTR)) = x)
|
#define SmashStack(x) (*((LispPTR *)(CurrentStackPTR)) = (x))
|
||||||
|
|
||||||
/*********************************************************
|
/*********************************************************
|
||||||
Get_BYTE(byteptr) byteptr: pointer to 8 bit data
|
Get_BYTE(byteptr) byteptr: pointer to 8 bit data
|
||||||
@@ -416,7 +416,7 @@ DOSTACKOVERFLOW(argnum,bytenum) if it needs hardreturn-cleanup
|
|||||||
#define DOSTACKOVERFLOW(argnum, bytenum) \
|
#define DOSTACKOVERFLOW(argnum, bytenum) \
|
||||||
do { \
|
do { \
|
||||||
if (do_stackoverflow(T)) { \
|
if (do_stackoverflow(T)) { \
|
||||||
PushStack(S_POSITIVE | argnum); \
|
PushStack(S_POSITIVE | (argnum)); \
|
||||||
contextsw(SubovFXP, bytenum, 1); \
|
contextsw(SubovFXP, bytenum, 1); \
|
||||||
return; \
|
return; \
|
||||||
} \
|
} \
|
||||||
@@ -505,7 +505,7 @@ DOSTACKOVERFLOW(argnum,bytenum) if it needs hardreturn-cleanup
|
|||||||
#define SFS_ARRAYSWITCHED 3
|
#define SFS_ARRAYSWITCHED 3
|
||||||
#define SFS_FULLYSWITCHED 4
|
#define SFS_FULLYSWITCHED 4
|
||||||
|
|
||||||
#define AtomHTSIZE 256 * DLWORDSPER_PAGE
|
#define AtomHTSIZE (256 * DLWORDSPER_PAGE)
|
||||||
|
|
||||||
#define MAXPNCHARS 255 /* Maximum length of PnChars */
|
#define MAXPNCHARS 255 /* Maximum length of PnChars */
|
||||||
|
|
||||||
@@ -586,7 +586,7 @@ typedef struct newatom {
|
|||||||
|
|
||||||
#ifdef BIGVM
|
#ifdef BIGVM
|
||||||
#define GETFPTOVP(b, o) b[o]
|
#define GETFPTOVP(b, o) b[o]
|
||||||
#define GETPAGEOK(b, o) (b[o] >> 16)
|
#define GETPAGEOK(b, o) ((b)[o] >> 16)
|
||||||
#else
|
#else
|
||||||
#define GETFPTOVP GETWORDBASEWORD
|
#define GETFPTOVP GETWORDBASEWORD
|
||||||
#define GETPAGEOK GETWORDBASEWORD
|
#define GETPAGEOK GETWORDBASEWORD
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
NumericStringP(vp, YES, NO); \
|
NumericStringP(vp, YES, NO); \
|
||||||
NO: *vp = 0; \
|
NO: *vp = 0; \
|
||||||
YES: \
|
YES: \
|
||||||
if ((*vp)) ver = atoi(vp); \
|
if ((*vp)) ver = strtol(vp, (char **)NULL, 10); \
|
||||||
else ver = -1; \
|
else ver = -1; \
|
||||||
} \
|
} \
|
||||||
else ver = -1; \
|
else ver = -1; \
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
\
|
\
|
||||||
register char *lv_cp; \
|
register char *lv_cp; \
|
||||||
register char *lv_vp; \
|
register char *lv_vp; \
|
||||||
register int lv_ver; \
|
register unsigned lv_ver; \
|
||||||
char lv_ver_buf[VERSIONLEN]; \
|
char lv_ver_buf[VERSIONLEN]; \
|
||||||
\
|
\
|
||||||
lv_cp = pathname; \
|
lv_cp = pathname; \
|
||||||
@@ -48,12 +48,12 @@
|
|||||||
/* \
|
/* \
|
||||||
* Convert the remaining field to digit. \
|
* Convert the remaining field to digit. \
|
||||||
*/ \
|
*/ \
|
||||||
lv_ver = atoi(lv_vp + 1); \
|
lv_ver = strtoul(lv_vp + 1, (char **)NULL, 10); \
|
||||||
if (lv_ver == 0) { \
|
if (lv_ver == 0) { \
|
||||||
/* versionless */ \
|
/* versionless */ \
|
||||||
*lv_vp = 0; \
|
*lv_vp = 0; \
|
||||||
} else { \
|
} else { \
|
||||||
sprintf(lv_ver_buf, ".~%d~", lv_ver); \
|
sprintf(lv_ver_buf, ".~%u~", lv_ver); \
|
||||||
*lv_vp = 0; \
|
*lv_vp = 0; \
|
||||||
strcat(pathname, lv_ver_buf); \
|
strcat(pathname, lv_ver_buf); \
|
||||||
} \
|
} \
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
\
|
\
|
||||||
NO: \
|
NO: \
|
||||||
strcpy(lv_ver_buf, lv_vp + 1); \
|
strcpy(lv_ver_buf, lv_vp + 1); \
|
||||||
strcat(lv_ver_buf, "~"); \
|
strcat(lv_ver_buf, "~"); \
|
||||||
*lv_vp++ = '.'; \
|
*lv_vp++ = '.'; \
|
||||||
*lv_vp++ = '~'; \
|
*lv_vp++ = '~'; \
|
||||||
*lv_vp = 0; \
|
*lv_vp = 0; \
|
||||||
|
|||||||
@@ -36,12 +36,12 @@
|
|||||||
extern DLword *Lisp_world; /* To access LispSysout area */
|
extern DLword *Lisp_world; /* To access LispSysout area */
|
||||||
|
|
||||||
|
|
||||||
#define ToLispTime(x) ((int)x + 29969152)
|
#define ToLispTime(x) ((int)(x) + 29969152)
|
||||||
/* For getfileinfo. For WDATE&RDATE */
|
/* For getfileinfo. For WDATE&RDATE */
|
||||||
/* 29969152 == (timer.c)LISP_UNIX_TIME_DIFF */
|
/* 29969152 == (timer.c)LISP_UNIX_TIME_DIFF */
|
||||||
/* - 61200 == - 17hours */
|
/* - 61200 == - 17hours */
|
||||||
|
|
||||||
#define ToUnixTime(x) ((int)x - 29969152)
|
#define ToUnixTime(x) ((int)(x) - 29969152)
|
||||||
/* For getfileinfo. For WDATE&RDATE */
|
/* For getfileinfo. For WDATE&RDATE */
|
||||||
/* 29969152 == (timer.c)LISP_UNIX_TIME_DIFF */
|
/* 29969152 == (timer.c)LISP_UNIX_TIME_DIFF */
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
lf_base = ((char *)(Addr68k_from_LADDR(lf_arrayp->base))) \
|
lf_base = ((char *)(Addr68k_from_LADDR(lf_arrayp->base))) \
|
||||||
+ ((int)(lf_arrayp->offset)); \
|
+ ((int)(lf_arrayp->offset)); \
|
||||||
strncpy(C, lf_base, lf_length); \
|
strncpy(C, lf_base, lf_length); \
|
||||||
C[lf_length] = '\0'; \
|
(C)[lf_length] = '\0'; \
|
||||||
break; \
|
break; \
|
||||||
\
|
\
|
||||||
case FAT_CHAR_TYPENUMBER: \
|
case FAT_CHAR_TYPENUMBER: \
|
||||||
@@ -121,7 +121,7 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
lf_base = ((char *)(Addr68k_from_LADDR(lf_arrayp->base))) \
|
lf_base = ((char *)(Addr68k_from_LADDR(lf_arrayp->base))) \
|
||||||
+ ((int)(lf_arrayp->offset)); \
|
+ ((int)(lf_arrayp->offset)); \
|
||||||
StrNCpyFromLispToC(C , lf_base , lf_length ); \
|
StrNCpyFromLispToC(C , lf_base , lf_length ); \
|
||||||
C[lf_length] = '\0'; \
|
(C)[lf_length] = '\0'; \
|
||||||
break; \
|
break; \
|
||||||
\
|
\
|
||||||
case FAT_CHAR_TYPENUMBER: \
|
case FAT_CHAR_TYPENUMBER: \
|
||||||
@@ -153,16 +153,16 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
{ \
|
{ \
|
||||||
OneDArray *lf_arrayp; \
|
OneDArray *lf_arrayp; \
|
||||||
lf_arrayp = (OneDArray *)(Addr68k_from_LADDR(LispString)); \
|
lf_arrayp = (OneDArray *)(Addr68k_from_LADDR(LispString)); \
|
||||||
switch(lf_arrayp->typenumber) \
|
switch(lf_arrayp->typenumber) \
|
||||||
{ \
|
{ \
|
||||||
case THIN_CHAR_TYPENUMBER: \
|
case THIN_CHAR_TYPENUMBER: \
|
||||||
Length = lf_arrayp->fillpointer; \
|
(Length) = lf_arrayp->fillpointer; \
|
||||||
FatP = 0; \
|
(FatP) = 0; \
|
||||||
break; \
|
break; \
|
||||||
\
|
\
|
||||||
case FAT_CHAR_TYPENUMBER: \
|
case FAT_CHAR_TYPENUMBER: \
|
||||||
Length = lf_arrayp->fillpointer * 2; \
|
(Length) = lf_arrayp->fillpointer * 2; \
|
||||||
FatP = 1; \
|
(FatP) = 1; \
|
||||||
break; \
|
break; \
|
||||||
default: \
|
default: \
|
||||||
error("LispStringLength: Not a character array.\n"); \
|
error("LispStringLength: Not a character array.\n"); \
|
||||||
@@ -183,24 +183,24 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
{ \
|
{ \
|
||||||
LispPTR *lf_naddress; \
|
LispPTR *lf_naddress; \
|
||||||
lf_naddress = (LispPTR *)(Addr68k_from_LADDR(lstringp)); \
|
lf_naddress = (LispPTR *)(Addr68k_from_LADDR(lstringp)); \
|
||||||
cstringp = (char *)(Addr68k_from_LADDR(((OneDArray *)lf_naddress)->base)); \
|
(cstringp) = (char *)(Addr68k_from_LADDR(((OneDArray *)lf_naddress)->base)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef min
|
#ifndef min
|
||||||
#define min(a, b) ((a <= b)?a:b)
|
#define min(a, b) (((a) <= (b))?(a):(b))
|
||||||
#endif /* min */
|
#endif /* min */
|
||||||
|
|
||||||
#define LispNumToCInt(Lisp) \
|
#define LispNumToCInt(Lisp) \
|
||||||
( ((Lisp & SEGMASK) == S_POSITIVE) ? \
|
( (((Lisp) & SEGMASK) == S_POSITIVE) ? \
|
||||||
(Lisp & 0xFFFF) : (*((int *)(Addr68k_from_LADDR(Lisp)))) )
|
((Lisp) & 0xFFFF) : (*((int *)(Addr68k_from_LADDR(Lisp)))) )
|
||||||
|
|
||||||
#define UPLOWDIFF 0x20
|
#define UPLOWDIFF 0x20
|
||||||
|
|
||||||
#define DOWNCASE(name){ \
|
#define DOWNCASE(name){ \
|
||||||
\
|
\
|
||||||
char *lf_cp; \
|
char *lf_cp; \
|
||||||
\
|
\
|
||||||
for(lf_cp = name; *lf_cp!='\0'; ++lf_cp) \
|
for(lf_cp = (name); *lf_cp!='\0'; ++lf_cp) \
|
||||||
if((*lf_cp >= 'A') && (*lf_cp <= 'Z')) *lf_cp += UPLOWDIFF; \
|
if((*lf_cp >= 'A') && (*lf_cp <= 'Z')) *lf_cp += UPLOWDIFF; \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,7 +208,7 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
\
|
\
|
||||||
char *lf_cp; \
|
char *lf_cp; \
|
||||||
\
|
\
|
||||||
for(lf_cp = name; *lf_cp!='\0'; ++lf_cp) \
|
for(lf_cp = (name); *lf_cp!='\0'; ++lf_cp) \
|
||||||
if((*lf_cp >= 'a') && (*lf_cp <= 'z')) *lf_cp -= UPLOWDIFF; \
|
if((*lf_cp >= 'a') && (*lf_cp <= 'z')) *lf_cp -= UPLOWDIFF; \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,16 +219,16 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
TIMEOUT(lf_result = stat(name, &lf_statbuf)); \
|
TIMEOUT(lf_result = stat(name, &lf_statbuf)); \
|
||||||
if (lf_result < 0) { \
|
if (lf_result < 0) { \
|
||||||
*Lisp_errno = errno; \
|
*Lisp_errno = errno; \
|
||||||
type = 0; \
|
(type) = 0; \
|
||||||
} else { \
|
} else { \
|
||||||
switch (lf_statbuf.st_mode & S_IFMT) { \
|
switch (lf_statbuf.st_mode & S_IFMT) { \
|
||||||
\
|
\
|
||||||
case S_IFDIR: \
|
case S_IFDIR: \
|
||||||
type = -1; \
|
(type) = -1; \
|
||||||
break; \
|
break; \
|
||||||
\
|
\
|
||||||
case S_IFREG: \
|
case S_IFREG: \
|
||||||
type = 1; \
|
(type) = 1; \
|
||||||
break; \
|
break; \
|
||||||
\
|
\
|
||||||
default: \
|
default: \
|
||||||
@@ -236,7 +236,7 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
* Should we deal with the other \
|
* Should we deal with the other \
|
||||||
* types? \
|
* types? \
|
||||||
*/ \
|
*/ \
|
||||||
type = 0; \
|
(type) = 0; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
@@ -272,20 +272,21 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define STREQ(name1, name2)( \
|
#define STREQ(name1, name2)( \
|
||||||
(*name1 == *name2) && (strcmp(name1, name2) == 0) \
|
(*(name1) == *(name2)) && (strcmp(name1, name2) == 0) \
|
||||||
)
|
)
|
||||||
|
|
||||||
#define SPECIALFILEMARK -1
|
#define SPECIALFILEMARK (-1)
|
||||||
|
|
||||||
#define NumericStringP(str, truetag, falsetag) { \
|
#define NumericStringP(str, truetag, falsetag) { \
|
||||||
char *lfn_cp; \
|
char *lfn_cp; \
|
||||||
\
|
\
|
||||||
if (*str == '\0') goto falsetag; \
|
/* NOLINTNEXTLINE(bugprone-macro-parentheses) */ \
|
||||||
|
if (*(str) == '\0') goto falsetag; \
|
||||||
\
|
\
|
||||||
for(lfn_cp = str; *lfn_cp!='\0'; ++lfn_cp) \
|
for(lfn_cp = str; *lfn_cp!='\0'; ++lfn_cp) \
|
||||||
if(*lfn_cp < '0' || '9' < *lfn_cp) \
|
if(*lfn_cp < '0' || '9' < *lfn_cp) \
|
||||||
goto falsetag; \
|
goto falsetag; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
goto truetag; \
|
goto truetag; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -384,24 +385,24 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
*(start - 1) = ';'; \
|
*(start - 1) = ';'; \
|
||||||
*start = '\0'; \
|
*start = '\0'; \
|
||||||
*end = '\0'; \
|
*end = '\0'; \
|
||||||
/* call ato i to eliminate leading 0s. */ \
|
/* call strtoul() to eliminate leading 0s. */ \
|
||||||
ver_no = atoi(start + 1); \
|
ver_no = strtoul(start + 1, (char **)NULL, 10); \
|
||||||
sprintf(ver_buf, "%d", ver_no); \
|
sprintf(ver_buf, "%u", ver_no); \
|
||||||
strcat(pathname, ver_buf); \
|
strcat(pathname, ver_buf); \
|
||||||
goto CONT; \
|
goto CONT; \
|
||||||
\
|
\
|
||||||
NO: \
|
NO: \
|
||||||
/* Dealt with as version 1 unless vlessp */ \
|
/* Dealt with as version 1 unless vlessp */ \
|
||||||
if (!vlessp) strcat(pathname, ";1"); \
|
if (!(vlessp)) strcat(pathname, ";1"); \
|
||||||
CONT: \
|
CONT: \
|
||||||
lf_cp--; /* Just for label */ \
|
lf_cp--; /* Just for label */ \
|
||||||
} else { \
|
} else { \
|
||||||
/* Dealt with as version 1 unless vlessp. */ \
|
/* Dealt with as version 1 unless vlessp. */ \
|
||||||
if (!vlessp) strcat(pathname, ";1"); \
|
if (!(vlessp)) strcat(pathname, ";1"); \
|
||||||
} \
|
} \
|
||||||
} else { \
|
} else { \
|
||||||
/* Dealt with as version 1 unless vlessp. */ \
|
/* Dealt with as version 1 unless vlessp. */ \
|
||||||
if (!vlessp) strcat(pathname, ";1"); \
|
if (!(vlessp)) strcat(pathname, ";1"); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -444,7 +445,7 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
if (lf_cp1 == (lf_cp2 - 1)) { \
|
if (lf_cp1 == (lf_cp2 - 1)) { \
|
||||||
if (lf_cp1 == dir) { \
|
if (lf_cp1 == (dir)) { \
|
||||||
/* dir is a root directory. */ \
|
/* dir is a root directory. */ \
|
||||||
strcpy(fname, "/"); \
|
strcpy(fname, "/"); \
|
||||||
strcat(fname, name); \
|
strcat(fname, name); \
|
||||||
@@ -479,7 +480,7 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define ConcNameAndVersion(name, ver, rname){ \
|
#define ConcNameAndVersion(name, ver, rname){ \
|
||||||
if (*ver != '\0') { \
|
if (*(ver) != '\0') { \
|
||||||
strcpy(rname, name); \
|
strcpy(rname, name); \
|
||||||
strcat(rname, ".~"); \
|
strcat(rname, ".~"); \
|
||||||
strcat(rname, ver); \
|
strcat(rname, ver); \
|
||||||
@@ -493,18 +494,18 @@ extern DLword *Lisp_world; /* To access LispSysout area */
|
|||||||
|
|
||||||
#define MAXVERSION 999999999
|
#define MAXVERSION 999999999
|
||||||
|
|
||||||
#define LASTVERSIONARRAY -1
|
#define LASTVERSIONARRAY ((unsigned) -1)
|
||||||
#define VERSIONARRAYLENGTH 200
|
#define VERSIONARRAYLENGTH 200
|
||||||
|
|
||||||
#define NoFileP(varray) \
|
#define NoFileP(varray) \
|
||||||
((varray->version_no == LASTVERSIONARRAY)? 1 : 0)
|
(((varray)->version_no == LASTVERSIONARRAY)? 1 : 0)
|
||||||
|
|
||||||
|
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
#define OnlyVersionlessP(varray) 0
|
#define OnlyVersionlessP(varray) 0
|
||||||
#else
|
#else
|
||||||
#define OnlyVersionlessP(varray) \
|
#define OnlyVersionlessP(varray) \
|
||||||
((varray->version_no == 0 && (varray + 1)->version_no == LASTVERSIONARRAY) ? \
|
(((varray)->version_no == 0 && ((varray) + 1)->version_no == LASTVERSIONARRAY) ? \
|
||||||
1 : 0)
|
1 : 0)
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
|
|||||||
@@ -3,5 +3,4 @@
|
|||||||
#include "lispemul.h" /* for LispPTR, DLword */
|
#include "lispemul.h" /* for LispPTR, DLword */
|
||||||
LispPTR N_OP_createcell(register LispPTR tos);
|
LispPTR N_OP_createcell(register LispPTR tos);
|
||||||
DLword *createcell68k(unsigned int type);
|
DLword *createcell68k(unsigned int type);
|
||||||
LispPTR Create_n_Set_Cell(unsigned int type, LispPTR value);
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
16
inc/my.h
16
inc/my.h
@@ -38,20 +38,20 @@
|
|||||||
/* */
|
/* */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
#define N_MakeFloat(arg, dest, tos){ \
|
#define N_MakeFloat(arg, dest, tos){ \
|
||||||
switch (SEGMASK & (LispPTR)arg) { \
|
switch (SEGMASK & (LispPTR)(arg)) { \
|
||||||
case S_POSITIVE: \
|
case S_POSITIVE: \
|
||||||
dest = (float)(0xFFFF & (LispPTR)arg); \
|
(dest) = (float)(0xFFFF & (LispPTR)(arg)); \
|
||||||
break; \
|
break; \
|
||||||
case S_NEGATIVE: \
|
case S_NEGATIVE: \
|
||||||
dest = (float)((int)(0xFFFF0000 | (LispPTR)arg)); \
|
(dest) = (float)((int)(0xFFFF0000 | (LispPTR)(arg))); \
|
||||||
break; \
|
break; \
|
||||||
default: \
|
default: \
|
||||||
switch (GetTypeNumber(arg)) { \
|
switch (GetTypeNumber(arg)) { \
|
||||||
case TYPE_FLOATP: \
|
case TYPE_FLOATP: \
|
||||||
dest = *((float *)Addr68k_from_LADDR(arg)); \
|
(dest) = *((float *)Addr68k_from_LADDR(arg)); \
|
||||||
break; \
|
break; \
|
||||||
case TYPE_FIXP: \
|
case TYPE_FIXP: \
|
||||||
dest = (float)(*((int *)Addr68k_from_LADDR(arg))); \
|
(dest) = (float)(*((int *)Addr68k_from_LADDR(arg)));\
|
||||||
break; \
|
break; \
|
||||||
default: ERROR_EXIT(tos); \
|
default: ERROR_EXIT(tos); \
|
||||||
} \
|
} \
|
||||||
@@ -61,11 +61,11 @@
|
|||||||
|
|
||||||
|
|
||||||
#define N_GetPos(arg, dest, tos){ \
|
#define N_GetPos(arg, dest, tos){ \
|
||||||
if ((arg & SEGMASK) == S_POSITIVE) \
|
if (((arg) & SEGMASK) == S_POSITIVE) \
|
||||||
dest = arg & 0xFFFF; \
|
(dest) = (arg) & 0xFFFF; \
|
||||||
else { \
|
else { \
|
||||||
if (GetTypeNumber(arg) != TYPE_FIXP) ERROR_EXIT(tos); \
|
if (GetTypeNumber(arg) != TYPE_FIXP) ERROR_EXIT(tos); \
|
||||||
if ((dest = *((int *)Addr68k_from_LADDR(arg))) & 0x80000000) \
|
if (((dest) = *((int *)Addr68k_from_LADDR(arg))) & 0x80000000) \
|
||||||
ERROR_EXIT(tos); \
|
ERROR_EXIT(tos); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|||||||
12
inc/return.h
12
inc/return.h
@@ -35,7 +35,7 @@
|
|||||||
/* FAST case return use */
|
/* FAST case return use */
|
||||||
#ifndef RESWAPPEDCODESTREAM
|
#ifndef RESWAPPEDCODESTREAM
|
||||||
#define FastRetCALL \
|
#define FastRetCALL \
|
||||||
{ \
|
do { \
|
||||||
/* Get IVar from Returnee's IVAR offset slot(BF) */ \
|
/* Get IVar from Returnee's IVAR offset slot(BF) */ \
|
||||||
IVar = Addr68k_from_LADDR(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
|
IVar = Addr68k_from_LADDR(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
|
||||||
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \
|
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \
|
||||||
@@ -43,10 +43,10 @@
|
|||||||
Addr68k_from_LADDR(FX_FNHEADER); \
|
Addr68k_from_LADDR(FX_FNHEADER); \
|
||||||
/* Get PC from Returnee's pc slot in FX */ \
|
/* Get PC from Returnee's pc slot in FX */ \
|
||||||
PC = (ByteCode *)FuncObj + CURRENTFX->pc ; \
|
PC = (ByteCode *)FuncObj + CURRENTFX->pc ; \
|
||||||
}
|
} while (0)
|
||||||
#else
|
#else
|
||||||
#define FastRetCALL \
|
#define FastRetCALL \
|
||||||
{ \
|
do { \
|
||||||
/* Get IVar from Returnee's IVAR offset slot(BF) */ \
|
/* Get IVar from Returnee's IVAR offset slot(BF) */ \
|
||||||
IVar = Addr68k_from_LADDR(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
|
IVar = Addr68k_from_LADDR(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
|
||||||
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \
|
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
byte_swap_code_block(FuncObj); \
|
byte_swap_code_block(FuncObj); \
|
||||||
FuncObj->byteswapped = 1; \
|
FuncObj->byteswapped = 1; \
|
||||||
} \
|
} \
|
||||||
}
|
} while (0)
|
||||||
#endif /* RESWAPPEDCODESTREAM */
|
#endif /* RESWAPPEDCODESTREAM */
|
||||||
|
|
||||||
|
|
||||||
@@ -71,9 +71,9 @@
|
|||||||
midpunt = LOLOC(LADDR_from_68k(CURRENTFX)); \
|
midpunt = LOLOC(LADDR_from_68k(CURRENTFX)); \
|
||||||
PVar=(DLword *) \
|
PVar=(DLword *) \
|
||||||
Addr68k_from_StkOffset( \
|
Addr68k_from_StkOffset( \
|
||||||
(GETWORD(((DLword *)InterfacePage) +fxnum))) \
|
(GETWORD(((DLword *)InterfacePage) + (fxnum)))) \
|
||||||
+ FRAMESIZE; \
|
+ FRAMESIZE; \
|
||||||
GETWORD(((DLword *)InterfacePage) +fxnum) = midpunt ; \
|
GETWORD(((DLword *)InterfacePage) + (fxnum)) = midpunt ; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
24
inc/stack.h
24
inc/stack.h
@@ -301,13 +301,13 @@ typedef struct stackp {
|
|||||||
#define DUMMYBF(fx) (((DLword *)(fx)) - DLWORDSPER_CELL)
|
#define DUMMYBF(fx) (((DLword *)(fx)) - DLWORDSPER_CELL)
|
||||||
#define SLOWP(fx) (((FXBLOCK *)(fx))->slowp)
|
#define SLOWP(fx) (((FXBLOCK *)(fx))->slowp)
|
||||||
#define FASTP(fx) (!SLOWP(fx))
|
#define FASTP(fx) (!SLOWP(fx))
|
||||||
#define SET_FASTP_NIL(fx68k) \
|
#define SET_FASTP_NIL(fx68k) \
|
||||||
{ \
|
{ \
|
||||||
if (FASTP(fx68k)) { \
|
if (FASTP(fx68k)) { \
|
||||||
((FX *)fx68k)->blink = StkOffset_from_68K(DUMMYBF(fx68k)); \
|
((FX *)(fx68k))->blink = StkOffset_from_68K(DUMMYBF(fx68k)); \
|
||||||
((FX *)fx68k)->clink = ((FX *)fx68k)->alink; \
|
((FX *)(fx68k))->clink = ((FX *)(fx68k))->alink; \
|
||||||
SLOWP(fx68k) = T; \
|
SLOWP(fx68k) = T; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define GETALINK(fx) ((((fx)->alink) & 0xfffe) - FRAMESIZE)
|
#define GETALINK(fx) ((((fx)->alink) & 0xfffe) - FRAMESIZE)
|
||||||
@@ -354,10 +354,10 @@ typedef struct stackp {
|
|||||||
#define SWAP_FNHEAD(x) swapx(x)
|
#define SWAP_FNHEAD(x) swapx(x)
|
||||||
#endif /* BIGVM */
|
#endif /* BIGVM */
|
||||||
|
|
||||||
#define GETNAMETABLE(fx) \
|
#define GETNAMETABLE(fx) \
|
||||||
((struct fnhead *)Addr68k_from_LADDR( \
|
((struct fnhead *)Addr68k_from_LADDR( \
|
||||||
SWAP_FNHEAD( \
|
SWAP_FNHEAD( \
|
||||||
((((FX2 *)fx)->validnametable) ? ((FX2 *)fx)->nametable : ((FX2 *)fx)->fnheader)) & \
|
((((FX2 *)(fx))->validnametable) ? ((FX2 *)(fx))->nametable : ((FX2 *)(fx))->fnheader)) & \
|
||||||
POINTERMASK))
|
POINTERMASK))
|
||||||
|
|
||||||
#define MAKEFREEBLOCK(ptr68k, size) \
|
#define MAKEFREEBLOCK(ptr68k, size) \
|
||||||
@@ -429,7 +429,7 @@ typedef struct stackp {
|
|||||||
|
|
||||||
#endif /* STACKCHECK */
|
#endif /* STACKCHECK */
|
||||||
|
|
||||||
#define STK_MIN(fnobj) ((fnobj->stkmin /* NOT NEEDED in stkmin +STK_SAFE */) << 1)
|
#define STK_MIN(fnobj) (((fnobj)->stkmin /* NOT NEEDED in stkmin +STK_SAFE */) << 1)
|
||||||
|
|
||||||
#define STK_END_COMPUTE(stk_end, fnobj) ((UNSIGNED)(stk_end)-STK_MIN(fnobj))
|
#define STK_END_COMPUTE(stk_end, fnobj) ((UNSIGNED)(stk_end)-STK_MIN(fnobj))
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ void doko(void);
|
|||||||
void dumpl(LispPTR laddr);
|
void dumpl(LispPTR laddr);
|
||||||
void dumps(LispPTR laddr);
|
void dumps(LispPTR laddr);
|
||||||
void printPC(void);
|
void printPC(void);
|
||||||
int countchar(char *string);
|
|
||||||
void dump_bf(Bframe *bf);
|
void dump_bf(Bframe *bf);
|
||||||
void dump_fx(struct frameex1 *fx_addr68k);
|
void dump_fx(struct frameex1 *fx_addr68k);
|
||||||
void dump_stackframe(struct frameex1 *fx_addr68k);
|
void dump_stackframe(struct frameex1 *fx_addr68k);
|
||||||
@@ -29,13 +28,12 @@ void dump_CSTK(int before);
|
|||||||
void btv(void);
|
void btv(void);
|
||||||
int get_framename(struct frameex1 *fx_addr68k);
|
int get_framename(struct frameex1 *fx_addr68k);
|
||||||
FX *get_nextFX(FX *fx);
|
FX *get_nextFX(FX *fx);
|
||||||
int MAKEATOM(char *string);
|
LispPTR MAKEATOM(char *string);
|
||||||
LispPTR *MakeAtom68k(char *string);
|
LispPTR *MakeAtom68k(char *string);
|
||||||
void GETTOPVAL(char *string);
|
void GETTOPVAL(char *string);
|
||||||
void S_TOPVAL(char *string);
|
|
||||||
int S_MAKEATOM(char *string);
|
|
||||||
void all_stack_dump(DLword start, DLword end, DLword silent);
|
void all_stack_dump(DLword start, DLword end, DLword silent);
|
||||||
void dtd_chain(DLword type);
|
void dtd_chain(DLword type);
|
||||||
|
void check_dtd_chain(DLword type);
|
||||||
void Trace_FNCall(int numargs, int atomindex, int arg1, LispPTR *tos);
|
void Trace_FNCall(int numargs, int atomindex, int arg1, LispPTR *tos);
|
||||||
void Trace_APPLY(int atomindex);
|
void Trace_APPLY(int atomindex);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
36
inc/tosfns.h
36
inc/tosfns.h
@@ -203,13 +203,13 @@
|
|||||||
FN_STACK_CHECK; \
|
FN_STACK_CHECK; \
|
||||||
{ \
|
{ \
|
||||||
register UNSIGNED newivar; \
|
register UNSIGNED newivar; \
|
||||||
newivar = (UNSIGNED)(IVARL = (DLword *)(CSTKPTR - argcount + 1)); \
|
newivar = (UNSIGNED)(IVARL = (DLword *)(CSTKPTR - (argcount) + 1)); \
|
||||||
BCE_CURRENTFX->nextblock = NEXTBLOCK = StkOffset_from_68K(newivar); \
|
BCE_CURRENTFX->nextblock = NEXTBLOCK = StkOffset_from_68K(newivar); \
|
||||||
} \
|
} \
|
||||||
HARD_PUSH(TOPOFSTACK); /* save TOS */ \
|
HARD_PUSH(TOPOFSTACK); /* save TOS */ \
|
||||||
if (LOCFNCELL->na >= 0) { \
|
if (LOCFNCELL->na >= 0) { \
|
||||||
register int RESTARGS; \
|
register int RESTARGS; \
|
||||||
RESTARGS = argcount - LOCFNCELL->na; \
|
RESTARGS = (argcount) - LOCFNCELL->na; \
|
||||||
while (RESTARGS < 0) { \
|
while (RESTARGS < 0) { \
|
||||||
HARD_PUSH(NIL_PTR); \
|
HARD_PUSH(NIL_PTR); \
|
||||||
RESTARGS++; \
|
RESTARGS++; \
|
||||||
@@ -223,22 +223,10 @@
|
|||||||
CSTKPTRL = (LispPTR *)(((DLword *)CSTKPTR) + FRAMESIZE); \
|
CSTKPTRL = (LispPTR *)(((DLword *)CSTKPTR) + FRAMESIZE); \
|
||||||
PVARL = (DLword *)CSTKPTR; \
|
PVARL = (DLword *)CSTKPTR; \
|
||||||
{ \
|
{ \
|
||||||
register int result; \
|
for (int pv = LOCFNCELL->pv; pv >= 0; pv--) { \
|
||||||
result = LOCFNCELL->pv; \
|
const LispPTR unboundval = 0xffffffff; \
|
||||||
if (result >= 0) { \
|
|
||||||
register LispPTR unboundval; \
|
|
||||||
unboundval = (LispPTR)0xffffffff; \
|
|
||||||
HARD_PUSH(unboundval); \
|
HARD_PUSH(unboundval); \
|
||||||
HARD_PUSH(unboundval); \
|
HARD_PUSH(unboundval); \
|
||||||
if (result > 0) { \
|
|
||||||
HARD_PUSH(unboundval); \
|
|
||||||
HARD_PUSH(unboundval); \
|
|
||||||
result -= 1; \
|
|
||||||
for (; --result >= 0;) { \
|
|
||||||
HARD_PUSH(unboundval); \
|
|
||||||
HARD_PUSH(unboundval); \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
CSTKPTRL += 1; \
|
CSTKPTRL += 1; \
|
||||||
@@ -291,22 +279,10 @@
|
|||||||
CSTKPTRL = (LispPTR *)(((DLword *)CSTKPTR) + FRAMESIZE); \
|
CSTKPTRL = (LispPTR *)(((DLword *)CSTKPTR) + FRAMESIZE); \
|
||||||
PVARL = (DLword *)CSTKPTR; \
|
PVARL = (DLword *)CSTKPTR; \
|
||||||
{ \
|
{ \
|
||||||
register int result; \
|
for (int pv = LOCFNCELL->pv; pv >= 0; pv--) { \
|
||||||
result = LOCFNCELL->pv; \
|
const LispPTR unboundval = 0xffffffff; \
|
||||||
if (result >= 0) { \
|
|
||||||
register LispPTR unboundval; \
|
|
||||||
unboundval = (LispPTR)0xffffffff; \
|
|
||||||
HARD_PUSH(unboundval); \
|
HARD_PUSH(unboundval); \
|
||||||
HARD_PUSH(unboundval); \
|
HARD_PUSH(unboundval); \
|
||||||
if (result > 0) { \
|
|
||||||
HARD_PUSH(unboundval); \
|
|
||||||
HARD_PUSH(unboundval); \
|
|
||||||
result -= 1; \
|
|
||||||
for (; --result >= 0;) { \
|
|
||||||
HARD_PUSH(unboundval); \
|
|
||||||
HARD_PUSH(unboundval); \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
CSTKPTRL += 1; \
|
CSTKPTRL += 1; \
|
||||||
|
|||||||
@@ -223,7 +223,6 @@ error Must specify RELEASE to build Medley.
|
|||||||
#ifdef OS5
|
#ifdef OS5
|
||||||
/* Solaris, sort of SYSV-ish, but not really */
|
/* Solaris, sort of SYSV-ish, but not really */
|
||||||
#define MAIKO_ENABLE_ETHERNET
|
#define MAIKO_ENABLE_ETHERNET
|
||||||
#define LOCK_X_UPDATES 1
|
|
||||||
#endif /* OS5 */
|
#endif /* OS5 */
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,6 @@
|
|||||||
#include "devif.h" /* for DspInterface */
|
#include "devif.h" /* for DspInterface */
|
||||||
void Init_XCursor(void);
|
void Init_XCursor(void);
|
||||||
void Set_XCursor(int x, int y);
|
void Set_XCursor(int x, int y);
|
||||||
void init_Xcursor(Display *display, Window window);
|
void init_Xcursor(DspInterface dsp);
|
||||||
void set_Xcursor(DspInterface dsp, const uint8_t *bitmap, int hotspot_x, int hotspot_y, Cursor *return_cursor, int from_lisp);
|
void set_Xcursor(DspInterface dsp, const uint8_t *bitmap, int hotspot_x, int hotspot_y, Cursor *return_cursor, int from_lisp);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
21
inc/xdefs.h
21
inc/xdefs.h
@@ -32,22 +32,25 @@
|
|||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
extern int XLocked;
|
#include "xwinmandefs.h"
|
||||||
extern int XNeedSignal;
|
|
||||||
/* this is !0 if we're locked; it should be 0 or larger always */
|
|
||||||
|
|
||||||
#define XLOCK do { XLocked++; /* printf("L"); fflush(stdout);*/} while (0)
|
/* this is !0 if we're locked; it should be 0 or larger always */
|
||||||
#define XUNLOCK \
|
extern volatile sig_atomic_t XLocked;
|
||||||
do { XLocked--;/* printf("U"); fflush(stdout);*/ \
|
extern volatile sig_atomic_t XNeedSignal;
|
||||||
if (XNeedSignal) \
|
|
||||||
|
#define XLOCK do { XLocked++; } while (0)
|
||||||
|
#define XUNLOCK(dsp) \
|
||||||
|
do { \
|
||||||
|
if (XLocked == 1 && XNeedSignal) \
|
||||||
{ \
|
{ \
|
||||||
XNeedSignal = 0; \
|
XNeedSignal = 0; \
|
||||||
kill(getpid(), SIGPOLL); \
|
getXsignaldata(dsp); \
|
||||||
}; \
|
}; \
|
||||||
|
XLocked--; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#else
|
#else
|
||||||
#define XLOCK
|
#define XLOCK
|
||||||
#define XUNLOCK
|
#define XUNLOCK(dsp)
|
||||||
#endif /* LOCK_X_UPDATES */
|
#endif /* LOCK_X_UPDATES */
|
||||||
|
|
||||||
#endif /* XDEFS_H */
|
#endif /* XDEFS_H */
|
||||||
|
|||||||
@@ -8,5 +8,5 @@ void Set_BitGravity(XButtonEvent *event, DspInterface dsp, Window window, int gr
|
|||||||
void enable_Xkeyboard(DspInterface dsp);
|
void enable_Xkeyboard(DspInterface dsp);
|
||||||
void disable_Xkeyboard(DspInterface dsp);
|
void disable_Xkeyboard(DspInterface dsp);
|
||||||
void beep_Xkeyboard(DspInterface dsp);
|
void beep_Xkeyboard(DspInterface dsp);
|
||||||
void getXsignaldata(DspInterface dsp);
|
void process_Xevents(DspInterface dsp);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
368
src/bbtsub.c
368
src/bbtsub.c
@@ -37,12 +37,6 @@
|
|||||||
#include "xdefs.h"
|
#include "xdefs.h"
|
||||||
#endif /* XWINDOW */
|
#endif /* XWINDOW */
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifndef NOPIXRECT
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#include <sunwindow/win_ioctl.h>
|
|
||||||
#endif /* NOPIXRECT */
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#include "lispemul.h"
|
#include "lispemul.h"
|
||||||
#include "lspglob.h"
|
#include "lspglob.h"
|
||||||
@@ -87,10 +81,8 @@ extern int kbd_for_makeinit;
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(SUNDISPLAY)
|
|
||||||
#include "devif.h"
|
#include "devif.h"
|
||||||
extern DspInterface currentdsp;
|
extern DspInterface currentdsp;
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef COLOR
|
#ifdef COLOR
|
||||||
extern int MonoOrColor;
|
extern int MonoOrColor;
|
||||||
@@ -249,29 +241,29 @@ extern int ScreenLocked; /* for mouse tracking */
|
|||||||
(EQ Operation (QUOTE ERASE))) 0)
|
(EQ Operation (QUOTE ERASE))) 0)
|
||||||
(T 1))))))
|
(T 1))))))
|
||||||
*****************************************************************/
|
*****************************************************************/
|
||||||
#define PixOperationLisp(SRCTYPE, OPERATION) \
|
#define PixOperationLisp(SRCTYPE, OPERATION) \
|
||||||
(SRCTYPE == INVERT_atom \
|
((SRCTYPE) == INVERT_atom \
|
||||||
? (OPERATION == REPLACE_atom \
|
? ((OPERATION) == REPLACE_atom \
|
||||||
? PIX_NOT(PIX_SRC) \
|
? PIX_NOT(PIX_SRC) \
|
||||||
: (OPERATION == PAINT_atom \
|
: ((OPERATION) == PAINT_atom \
|
||||||
? PIX_NOT(PIX_SRC) | PIX_DST \
|
? PIX_NOT(PIX_SRC) | PIX_DST \
|
||||||
: (OPERATION == ERASE_atom \
|
: ((OPERATION) == ERASE_atom \
|
||||||
? PIX_SRC & PIX_DST \
|
? PIX_SRC & PIX_DST \
|
||||||
: (OPERATION == INVERT_atom ? PIX_NOT(PIX_SRC) ^ PIX_DST : ERROR)))) \
|
: ((OPERATION) == INVERT_atom ? PIX_NOT(PIX_SRC) ^ PIX_DST : ERROR)))) \
|
||||||
: /* SRCTYPE == INPUT, TEXTURE */ \
|
: /* SRCTYPE == INPUT, TEXTURE */ \
|
||||||
(OPERATION == REPLACE_atom \
|
((OPERATION) == REPLACE_atom \
|
||||||
? PIX_SRC \
|
? PIX_SRC \
|
||||||
: (OPERATION == PAINT_atom \
|
: ((OPERATION) == PAINT_atom \
|
||||||
? PIX_SRC | PIX_DST \
|
? PIX_SRC | PIX_DST \
|
||||||
: (OPERATION == ERASE_atom \
|
: ((OPERATION) == ERASE_atom \
|
||||||
? PIX_NOT(PIX_SRC) & PIX_DST \
|
? PIX_NOT(PIX_SRC) & PIX_DST \
|
||||||
: (OPERATION == INVERT_atom ? PIX_SRC ^ PIX_DST : ERROR)))))
|
: ((OPERATION) == INVERT_atom ? PIX_SRC ^ PIX_DST : ERROR)))))
|
||||||
|
|
||||||
#define bbop(SRCTYPE, OPERATION) \
|
#define bbop(SRCTYPE, OPERATION) \
|
||||||
(OPERATION == PAINT_atom \
|
((OPERATION) == PAINT_atom \
|
||||||
? op_fn_or \
|
? op_fn_or \
|
||||||
: (OPERATION == ERASE_atom ? op_fn_and \
|
: ((OPERATION) == ERASE_atom ? op_fn_and \
|
||||||
: (OPERATION == INVERT_atom ? op_fn_xor : op_repl_src)))
|
: ((OPERATION) == INVERT_atom ? op_fn_xor : op_repl_src)))
|
||||||
|
|
||||||
/********************************************************/
|
/********************************************************/
|
||||||
/* */
|
/* */
|
||||||
@@ -284,9 +276,9 @@ extern int ScreenLocked; /* for mouse tracking */
|
|||||||
/* */
|
/* */
|
||||||
/********************************************************/
|
/********************************************************/
|
||||||
|
|
||||||
#define bbsrc_type(SRCTYPE, OPERATION) \
|
#define bbsrc_type(SRCTYPE, OPERATION) \
|
||||||
(SRCTYPE == INVERT_atom ? (OPERATION == ERASE_atom ? 0 : 1) /* SRCTYPE == INPUT, TEXTURE */ \
|
((SRCTYPE) == INVERT_atom ? ((OPERATION) == ERASE_atom ? 0 : 1) /* SRCTYPE == INPUT, TEXTURE */ \
|
||||||
: (OPERATION == ERASE_atom ? 1 : 0))
|
: ((OPERATION) == ERASE_atom ? 1 : 0))
|
||||||
|
|
||||||
extern struct pixrect *SrcePixRect, *DestPixRect, *TexturePixRect;
|
extern struct pixrect *SrcePixRect, *DestPixRect, *TexturePixRect;
|
||||||
extern struct pixrect *BlackTexturePixRect, *WhiteTexturePixRect;
|
extern struct pixrect *BlackTexturePixRect, *WhiteTexturePixRect;
|
||||||
@@ -484,9 +476,7 @@ do_it_now:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
XLOCK;
|
|
||||||
if (in_display_segment(dstbase)) flush_display_region(dx, dty, w, h);
|
if (in_display_segment(dstbase)) flush_display_region(dx, dty, w, h);
|
||||||
XUNLOCK;
|
|
||||||
#endif /* XWINDOW */
|
#endif /* XWINDOW */
|
||||||
|
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
@@ -841,9 +831,7 @@ do_it_now:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
XLOCK;
|
|
||||||
if (in_display_segment(dstbase)) flush_display_region(dlx, dty, width, height);
|
if (in_display_segment(dstbase)) flush_display_region(dlx, dty, width, height);
|
||||||
XUNLOCK;
|
|
||||||
#endif /* XWINDOW */
|
#endif /* XWINDOW */
|
||||||
|
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
@@ -1090,9 +1078,7 @@ do_it_now:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
XLOCK;
|
|
||||||
if (in_display_segment(dstbase)) flush_display_region(left, dty, width, height);
|
if (in_display_segment(dstbase)) flush_display_region(left, dty, width, height);
|
||||||
XUNLOCK;
|
|
||||||
#endif /* XWINDOW */
|
#endif /* XWINDOW */
|
||||||
|
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
@@ -1144,7 +1130,6 @@ bad_arg:
|
|||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
#ifndef prropstyle
|
|
||||||
/********************************************************/
|
/********************************************************/
|
||||||
/* Non-PIXRECT version of the code */
|
/* Non-PIXRECT version of the code */
|
||||||
/********************************************************/
|
/********************************************************/
|
||||||
@@ -1222,9 +1207,7 @@ void bltchar(LispPTR *args)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
XLOCK;
|
|
||||||
if (in_display_segment(dstbase)) flush_display_lineregion(dx, dstbase, w, h);
|
if (in_display_segment(dstbase)) flush_display_lineregion(dx, dstbase, w, h);
|
||||||
XUNLOCK;
|
|
||||||
#endif /* XWINDOW */
|
#endif /* XWINDOW */
|
||||||
|
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
@@ -1238,100 +1221,6 @@ void bltchar(LispPTR *args)
|
|||||||
UNLOCKSCREEN;
|
UNLOCKSCREEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
/* prropstyle */
|
|
||||||
|
|
||||||
LispPTR bltchar(LispPTR *args)
|
|
||||||
/* args[0] : PILOTBBT
|
|
||||||
* args[1] : DISPLAYDATA
|
|
||||||
* args[2] : CHAR8CODE
|
|
||||||
* args[3] : CURX
|
|
||||||
* args[4] : LEFT
|
|
||||||
* args[5] : RIGHT
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
register PILOTBBT *pbt;
|
|
||||||
register DISPLAYDATA *dspdata;
|
|
||||||
int x, y, destbpl, srcebpl, srcebit, distance;
|
|
||||||
int base;
|
|
||||||
register int displayflg;
|
|
||||||
unsigned int pix_op;
|
|
||||||
DLword *dstbase;
|
|
||||||
|
|
||||||
pbt = (PILOTBBT *)Addr68k_from_LADDR(((BLTC *)args)->pilotbbt);
|
|
||||||
dspdata = (DISPLAYDATA *)Addr68k_from_LADDR(((BLTC *)args)->displaydata);
|
|
||||||
|
|
||||||
(mpr_d(SrcePixRect))->md_image =
|
|
||||||
(short *)Addr68k_from_LADDR(VAG2(pbt->pbtsourcehi, pbt->pbtsourcelo));
|
|
||||||
|
|
||||||
dstbase = (mpr_d(DestPixRect))->md_image =
|
|
||||||
(short *)Addr68k_from_LADDR(VAG2(pbt->pbtdesthi, pbt->pbtdestlo));
|
|
||||||
|
|
||||||
SrcePixRect->pr_width = srcebpl = abs(pbt->pbtsourcebpl);
|
|
||||||
DestPixRect->pr_width = destbpl = abs(pbt->pbtdestbpl);
|
|
||||||
SrcePixRect->pr_height = DestPixRect->pr_height = pbt->pbtheight;
|
|
||||||
|
|
||||||
mpr_mdlinebytes(DestPixRect) = (destbpl + 7) >> 3;
|
|
||||||
mpr_mdlinebytes(SrcePixRect) = (srcebpl + 7) >> 3;
|
|
||||||
|
|
||||||
base = GETWORD(Addr68k_from_LADDR(dspdata->ddoffsetscache + ((BLTC *)args)->char8code));
|
|
||||||
srcebit = base + ((BLTC *)args)->left - ((BLTC *)args)->curx;
|
|
||||||
|
|
||||||
#ifdef REALCURSOR
|
|
||||||
/* if displayflg != 0 then source or destination is DisplayBitMap
|
|
||||||
* Now we consider about only destination
|
|
||||||
*/
|
|
||||||
displayflg = old_cursorin(pbt->pbtdesthi, pbt->pbtdestlo, ((BLTC *)args)->left, (((BLTC *)args)->right - ((BLTC *)args)->left),
|
|
||||||
pbt->pbtheight, y, pbt->pbtbackward);
|
|
||||||
#endif /* REALCURSOR */
|
|
||||||
|
|
||||||
/**** for DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG *****/
|
|
||||||
/* displayflg = T; */
|
|
||||||
/**** for DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG *****/
|
|
||||||
|
|
||||||
pix_op = PixOperation(pbt->pbtsourcetype, pbt->pbtoperation);
|
|
||||||
|
|
||||||
LOCKSCREEN;
|
|
||||||
|
|
||||||
#ifdef REALCURSOR
|
|
||||||
if (displayflg) HideCursor;
|
|
||||||
#endif /* REALCURSOR */
|
|
||||||
|
|
||||||
if (pr_rop(DestPixRect, ((BLTC *)args)->left, 0, (((BLTC *)args)->right - ((BLTC *)args)->left), pbt->pbtheight, pix_op,
|
|
||||||
SrcePixRect, srcebit, 0) != 0)
|
|
||||||
error("pilotbitblt: pr_rop failed\n");
|
|
||||||
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
#ifdef COLOR
|
|
||||||
if (MonoOrColor == MONO_SCREEN)
|
|
||||||
#endif /* COLOR */
|
|
||||||
|
|
||||||
if (in_display_segment(dstbase)) {
|
|
||||||
/* DBPRINT(("bltchar pix: x %x, y %d, w %d, h %d.\n", ((BLTC *)args)->left, dstbase,
|
|
||||||
* (((BLTC *)args)->right - ((BLTC *)args)->left),pbt->pbtheight));
|
|
||||||
*/
|
|
||||||
flush_display_lineregion(((BLTC *)args)->left, dstbase, (((BLTC *)args)->right - ((BLTC *)args)->left), pbt->pbtheight);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
|
||||||
XLOCK;
|
|
||||||
if (in_display_segment(dstbase))
|
|
||||||
flush_display_lineregion(((BLTC *)args)->left, dstbase, (((BLTC *)args)->right - ((BLTC *)args)->left), pbt->pbtheight);
|
|
||||||
XUNLOCK;
|
|
||||||
#endif /* XWINDOW */
|
|
||||||
|
|
||||||
#ifdef DOS
|
|
||||||
if (in_display_segment(dstbase)) flush_display_lineregion(dx, dstbase, w, h);
|
|
||||||
#endif /* DOS */
|
|
||||||
|
|
||||||
#ifdef REALCURSOR
|
|
||||||
if (displayflg) ShowCursor;
|
|
||||||
#endif /* REALCURSOR */
|
|
||||||
|
|
||||||
ScreenLocked = NIL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
@@ -1418,7 +1307,6 @@ LispPTR BLTCHAR_index; /* Atom # for \PUNTBLTCHAR punt fn */
|
|||||||
LispPTR TEDIT_BLTCHAR_index; /* if NIL ,TEDIT is not yet loaded */
|
LispPTR TEDIT_BLTCHAR_index; /* if NIL ,TEDIT is not yet loaded */
|
||||||
|
|
||||||
|
|
||||||
#ifndef prropstyle
|
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
@@ -1547,150 +1435,6 @@ void newbltchar(LispPTR *args) {
|
|||||||
|
|
||||||
} /* end of newbltchar */
|
} /* end of newbltchar */
|
||||||
|
|
||||||
#else /* prropstyle */
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* n e w b l t c h a r */
|
|
||||||
/* (PIXRECT version) */
|
|
||||||
/* */
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
LispPTR newbltchar(LispPTR *args) {
|
|
||||||
register DISPLAYDATA *displaydata68k;
|
|
||||||
|
|
||||||
register int right, left, curx;
|
|
||||||
register PILOTBBT *pbt;
|
|
||||||
register int lmargin, rmargin, xoff;
|
|
||||||
int displayflg; /* T if cursor needs to be taken down */
|
|
||||||
displaydata68k = (DISPLAYDATA *)Addr68k_from_LADDR(((BLTARG *)args)->displaydata);
|
|
||||||
|
|
||||||
if ((displaydata68k->ddcharset & 0xFFFF) != ((BLTARG *)args)->charset) {
|
|
||||||
/* Currently, this has BUG, so I can't call it */
|
|
||||||
/*if(changecharset_display(displaydata68k,((BLTARG *)args)->charset) ==-1)*/
|
|
||||||
{ PUNT_TO_BLTCHAR; }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (displaydata68k->ddslowprintingcase) { PUNT_TO_BLTCHAR; /** \SLOWBLTCHAR--return;**/ }
|
|
||||||
|
|
||||||
FGetNum(displaydata68k->ddxposition, curx);
|
|
||||||
FGetNum(displaydata68k->ddrightmargin, rmargin);
|
|
||||||
FGetNum(displaydata68k->ddleftmargin, lmargin);
|
|
||||||
FGetNum(displaydata68k->ddxoffset, xoff);
|
|
||||||
|
|
||||||
right =
|
|
||||||
curx +
|
|
||||||
GETWORD((DLword *)Addr68k_from_LADDR(displaydata68k->ddcharimagewidths + ((BLTARG *)args)->char8code));
|
|
||||||
|
|
||||||
if ((right > rmargin) && (curx > lmargin)) PUNT_TO_BLTCHAR;
|
|
||||||
if (((BLTARG *)args)->displaystream != *TOPWDS68k) PUNT_TO_BLTCHAR;
|
|
||||||
{
|
|
||||||
register int newpos;
|
|
||||||
newpos = curx +
|
|
||||||
GETWORD((DLword *)Addr68k_from_LADDR(displaydata68k->ddwidthscache + ((BLTARG *)args)->char8code));
|
|
||||||
|
|
||||||
if ((0 <= newpos) && (newpos < 65536))
|
|
||||||
(displaydata68k->ddxposition) = (LispPTR)(S_POSITIVE | newpos);
|
|
||||||
else if (-65537 < newpos)
|
|
||||||
(displaydata68k->ddxposition) = (LispPTR)(S_NEGATIVE | (0xffff & newpos));
|
|
||||||
else {
|
|
||||||
PUNT_TO_BLTCHAR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
curx += xoff;
|
|
||||||
right += xoff;
|
|
||||||
if (right > (int)(displaydata68k->ddclippingright)) right = displaydata68k->ddclippingright;
|
|
||||||
|
|
||||||
if (curx > (int)(displaydata68k->ddclippingleft))
|
|
||||||
left = curx;
|
|
||||||
else
|
|
||||||
left = displaydata68k->ddclippingleft;
|
|
||||||
|
|
||||||
if (left < right) {
|
|
||||||
pbt = (PILOTBBT *)Addr68k_from_LADDR(displaydata68k->ddpilotbbt);
|
|
||||||
if (pbt->pbtheight != 0) {
|
|
||||||
/****** OLD bltchar *****/
|
|
||||||
register int destbpl, srcebpl, sourcebit;
|
|
||||||
DLword *dstbase;
|
|
||||||
int base, y;
|
|
||||||
|
|
||||||
(mpr_d(SrcePixRect))->md_image =
|
|
||||||
(short *)Addr68k_from_LADDR(VAG2(pbt->pbtsourcehi, pbt->pbtsourcelo));
|
|
||||||
|
|
||||||
dstbase = (mpr_d(DestPixRect))->md_image =
|
|
||||||
(short *)Addr68k_from_LADDR(VAG2(pbt->pbtdesthi, pbt->pbtdestlo));
|
|
||||||
|
|
||||||
SrcePixRect->pr_width = srcebpl = abs(pbt->pbtsourcebpl);
|
|
||||||
DestPixRect->pr_width = destbpl = abs(pbt->pbtdestbpl);
|
|
||||||
SrcePixRect->pr_height = DestPixRect->pr_height = pbt->pbtheight;
|
|
||||||
|
|
||||||
mpr_mdlinebytes(DestPixRect) = (destbpl + 7) >> 3;
|
|
||||||
mpr_mdlinebytes(SrcePixRect) = (srcebpl + 7) >> 3;
|
|
||||||
|
|
||||||
base = GETBASE(Addr68k_from_LADDR(displaydata68k->ddoffsetscache), ((BLTARG *)args)->char8code);
|
|
||||||
sourcebit = base + left - curx;
|
|
||||||
|
|
||||||
LOCKSCREEN;
|
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
if (displayflg = old_cursorin(pbt->pbtdesthi, pbt->pbtdestlo, left, (right - left),
|
|
||||||
pbt->pbtheight, y, pbt->pbtbackward)) {
|
|
||||||
HideCursor;
|
|
||||||
if (pr_rop(DestPixRect, left, 0, (right - left), pbt->pbtheight,
|
|
||||||
PixOperation(pbt->pbtsourcetype, pbt->pbtoperation), SrcePixRect, sourcebit,
|
|
||||||
0) != 0)
|
|
||||||
error("pilotbitblt: pr_rop failed\n");
|
|
||||||
/* Save SHOWCURSOR 'til after paint to screen */
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
ShowCursor;
|
|
||||||
#endif
|
|
||||||
} /* display case */
|
|
||||||
else {
|
|
||||||
if (pr_rop(DestPixRect, left, 0, (right - left), pbt->pbtheight,
|
|
||||||
PixOperation(pbt->pbtsourcetype, pbt->pbtoperation), SrcePixRect, sourcebit,
|
|
||||||
0) != 0)
|
|
||||||
error("pilotbitblt: pr_rop failed\n");
|
|
||||||
|
|
||||||
} /* else */
|
|
||||||
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
#ifdef COLOR
|
|
||||||
if (MonoOrColor == MONO_SCREEN)
|
|
||||||
#endif /* COLOR */
|
|
||||||
|
|
||||||
if (in_display_segment(dstbase)) {
|
|
||||||
/* DBPRINT(("newbltchar: x %d, y 0x%x, w %d, h %d.\n", left, dstbase,
|
|
||||||
* (right - left), pbt->pbtheight)); */
|
|
||||||
|
|
||||||
flush_display_lineregion(left, dstbase, (right - left), pbt->pbtheight);
|
|
||||||
if (displayflg) ShowCursor; /* because hide is done earlier */
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
|
||||||
if (pr_rop(DestPixRect, left, 0, (right - left), pbt->pbtheight,
|
|
||||||
PixOperation(pbt->pbtsourcetype, pbt->pbtoperation), SrcePixRect, sourcebit,
|
|
||||||
0) != 0)
|
|
||||||
error("pilotbitblt: pr_rop failed\n");
|
|
||||||
|
|
||||||
if (in_display_segment(dstbase))
|
|
||||||
flush_display_lineregion(left, dstbase, (right - left), pbt->pbtheight);
|
|
||||||
#endif /* XWINDOW */
|
|
||||||
|
|
||||||
#ifdef DOS
|
|
||||||
if (in_display_segment(dstbase)) flush_display_lineregion(dx, dstbase, w, h);
|
|
||||||
if (displayflg) ShowCursor;
|
|
||||||
#endif /* DOS */
|
|
||||||
|
|
||||||
ScreenLocked = NIL;
|
|
||||||
|
|
||||||
/****** OLD bltchar *****/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} /* newbltchar */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/******************************************************************/
|
/******************************************************************/
|
||||||
#ifndef BYTESWAP
|
#ifndef BYTESWAP
|
||||||
@@ -1988,7 +1732,6 @@ void ccfuncall(register unsigned int atom_index, register int argnum, register i
|
|||||||
/* */
|
/* */
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
|
|
||||||
#ifndef prropstyle
|
|
||||||
/***************************/
|
/***************************/
|
||||||
/* Non-PIXRECT version */
|
/* Non-PIXRECT version */
|
||||||
/***************************/
|
/***************************/
|
||||||
@@ -2046,67 +1789,6 @@ void tedit_bltchar(LispPTR *args)
|
|||||||
#undef backwardflg
|
#undef backwardflg
|
||||||
|
|
||||||
} /* end tedit_bltchar */
|
} /* end tedit_bltchar */
|
||||||
#else
|
|
||||||
|
|
||||||
/* pr_op style */
|
|
||||||
/**********************/
|
|
||||||
/* PIXRECT version */
|
|
||||||
/**********************/
|
|
||||||
|
|
||||||
void tedit_bltchar(LispPTR *args)
|
|
||||||
{
|
|
||||||
register DISPLAYDATA *displaydata68k;
|
|
||||||
register int left, right;
|
|
||||||
register PILOTBBT *pbt;
|
|
||||||
register int imagewidth, newx;
|
|
||||||
register displayflg;
|
|
||||||
|
|
||||||
displaydata68k = (DISPLAYDATA *)Addr68k_from_LADDR(((TBLTARG *)args)->displaydata);
|
|
||||||
if (displaydata68k->ddcharset != ((TBLTARG *)args)->charset) {
|
|
||||||
/**if(changecharset_display(displaydata68k, ((TBLTARG *)args)->charset)== -1)**/
|
|
||||||
{ PUNT_TO_TEDIT_BLTCHAR; }
|
|
||||||
}
|
|
||||||
imagewidth = *((DLword *)Addr68k_from_LADDR(displaydata68k->ddcharimagewidths + ((TBLTARG *)args)->char8code));
|
|
||||||
newx = ((TBLTARG *)args)->current_x + imagewidth;
|
|
||||||
left = IMAX(0, ((TBLTARG *)args)->current_x);
|
|
||||||
right = IMIN(newx, ((TBLTARG *)args)->clipright);
|
|
||||||
LOCKSCREEN;
|
|
||||||
|
|
||||||
if (left < right) {
|
|
||||||
pbt = (PILOTBBT *)Addr68k_from_LADDR(displaydata68k->ddpilotbbt);
|
|
||||||
if (pbt->pbtheight) {
|
|
||||||
(mpr_d(SrcePixRect))->md_image =
|
|
||||||
(short *)Addr68k_from_LADDR(VAG2(pbt->pbtsourcehi, pbt->pbtsourcelo));
|
|
||||||
|
|
||||||
(mpr_d(DestPixRect))->md_image =
|
|
||||||
(short *)Addr68k_from_LADDR(VAG2(pbt->pbtdesthi, pbt->pbtdestlo));
|
|
||||||
{
|
|
||||||
register int srcebpl, destbpl;
|
|
||||||
SrcePixRect->pr_width = srcebpl = abs(pbt->pbtsourcebpl);
|
|
||||||
DestPixRect->pr_width = destbpl = abs(pbt->pbtdestbpl);
|
|
||||||
SrcePixRect->pr_height = DestPixRect->pr_height = pbt->pbtheight;
|
|
||||||
|
|
||||||
mpr_mdlinebytes(DestPixRect) = (destbpl + 7) >> 3;
|
|
||||||
mpr_mdlinebytes(SrcePixRect) = (srcebpl + 7) >> 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
pbt->pbtwidth = IMIN(imagewidth, (right - left));
|
|
||||||
pbt->pbtsourcebit =
|
|
||||||
GETBASE(Addr68k_from_LADDR(displaydata68k->ddoffsetscache), ((TBLTARG *)args)->char8code);
|
|
||||||
|
|
||||||
if (pr_rop(DestPixRect, left, 0, pbt->pbtwidth, pbt->pbtheight,
|
|
||||||
PixOperation(pbt->pbtsourcetype, pbt->pbtoperation), SrcePixRect,
|
|
||||||
pbt->pbtsourcebit, 0) != 0)
|
|
||||||
error("pilotbitblt: pr_rop failed\n");
|
|
||||||
|
|
||||||
} /* if pbt->pbtheight */
|
|
||||||
} /* if left<right */
|
|
||||||
|
|
||||||
UNLOCKSCREEN;
|
|
||||||
|
|
||||||
} /* end tedit_bltchar */
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REALCURSOR) || defined(SUNDISPLAY)
|
#if defined(REALCURSOR) || defined(SUNDISPLAY)
|
||||||
#ifndef COLOR
|
#ifndef COLOR
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ LispPTR *N_OP_bind(register LispPTR *stack_pointer, register LispPTR tos, int by
|
|||||||
register int n1; /* # slots to bind to NIL (0, 0) */
|
register int n1; /* # slots to bind to NIL (0, 0) */
|
||||||
register int n2; /* # slots to bind to value in stack */
|
register int n2; /* # slots to bind to value in stack */
|
||||||
register LispPTR *ppvar; /* pointer to argued slot in Pvar area */
|
register LispPTR *ppvar; /* pointer to argued slot in Pvar area */
|
||||||
register int i; /* temporary for control */
|
register unsigned i; /* temporary for control */
|
||||||
|
|
||||||
#ifdef TRACE
|
#ifdef TRACE
|
||||||
printPC();
|
printPC();
|
||||||
|
|||||||
25
src/bitblt.c
25
src/bitblt.c
@@ -12,16 +12,6 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#include <sunwindow/win_ioctl.h>
|
|
||||||
|
|
||||||
#include <suntool/sunview.h>
|
|
||||||
#include <sunwindow/cms_mono.h>
|
|
||||||
#include <suntool/canvas.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
#define DISPLAYBUFFER
|
#define DISPLAYBUFFER
|
||||||
@@ -127,25 +117,14 @@ LispPTR N_OP_pilotbitblt(LispPTR pilot_bt_tbl,int tos)
|
|||||||
num_gray = ((TEXTUREBBT *)pbt)->pbtgrayheightlessone + 1;
|
num_gray = ((TEXTUREBBT *)pbt)->pbtgrayheightlessone + 1;
|
||||||
curr_gray_line = ((TEXTUREBBT *)pbt)->pbtgrayoffset;
|
curr_gray_line = ((TEXTUREBBT *)pbt)->pbtgrayoffset;
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
#if DOS
|
||||||
if (displayflg) HideCursor;
|
|
||||||
#elif DOS
|
|
||||||
if (displayflg) (currentdsp->mouse_invisible)(currentdsp, IOPage68K);
|
if (displayflg) (currentdsp->mouse_invisible)(currentdsp, IOPage68K);
|
||||||
;
|
;
|
||||||
#endif /* SUNDISPLAY / DOS */
|
#endif /* SUNDISPLAY / DOS */
|
||||||
|
|
||||||
new_bitblt_code
|
new_bitblt_code
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
#if DOS
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
#ifdef COLOR
|
|
||||||
if (MonoOrColor == MONO_SCREEN)
|
|
||||||
#endif /* COLOR */
|
|
||||||
|
|
||||||
if (in_display_segment(dstbase)) flush_display_lineregion(dx, dstbase, w, h);
|
|
||||||
#endif
|
|
||||||
if (displayflg) ShowCursor;
|
|
||||||
#elif DOS
|
|
||||||
flush_display_lineregion(dx, dstbase, w, h);
|
flush_display_lineregion(dx, dstbase, w, h);
|
||||||
if (displayflg) (currentdsp->mouse_visible)(IOPage68K->dlmousex, IOPage68K->dlmousey);
|
if (displayflg) (currentdsp->mouse_visible)(IOPage68K->dlmousex, IOPage68K->dlmousey);
|
||||||
#endif /* SUNDISPLAY / DOS */
|
#endif /* SUNDISPLAY / DOS */
|
||||||
|
|||||||
@@ -777,7 +777,7 @@ void nts(struct frameex1 *fxp) {
|
|||||||
#define VARTYPE_PVAR (2)
|
#define VARTYPE_PVAR (2)
|
||||||
#define VARTYPE_IVAR (0)
|
#define VARTYPE_IVAR (0)
|
||||||
|
|
||||||
#define VAROFFSET(X) (X & 0xFFFFFFF)
|
#define VAROFFSET(X) ((X) & 0xFFFFFFF)
|
||||||
|
|
||||||
void nt1(LispPTR *start, int size, char *str) {
|
void nt1(LispPTR *start, int size, char *str) {
|
||||||
LispPTR *endp, *entry2p;
|
LispPTR *endp, *entry2p;
|
||||||
|
|||||||
38
src/dir.c
38
src/dir.c
@@ -77,14 +77,14 @@ extern int Dummy_errno;
|
|||||||
separate_version(tname, tver, 0); \
|
separate_version(tname, tver, 0); \
|
||||||
\
|
\
|
||||||
if ((pp = (char *)strrchr(tname, '.')) == NULL) { \
|
if ((pp = (char *)strrchr(tname, '.')) == NULL) { \
|
||||||
*text = '\0'; \
|
*(text) = '\0'; \
|
||||||
} else { \
|
} else { \
|
||||||
*pp = '\0'; \
|
*pp = '\0'; \
|
||||||
strcpy(text, pp + 1); \
|
strcpy(text, pp + 1); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
if ((pp = (char *)strrchr(pname, '.')) == NULL) { \
|
if ((pp = (char *)strrchr(pname, '.')) == NULL) { \
|
||||||
*pext = '\0'; \
|
*(pext) = '\0'; \
|
||||||
} else { \
|
} else { \
|
||||||
*pp = '\0'; \
|
*pp = '\0'; \
|
||||||
strcpy(pext, pp + 1); \
|
strcpy(pext, pp + 1); \
|
||||||
@@ -104,9 +104,9 @@ extern int Dummy_errno;
|
|||||||
SetupMatch(tname, pname, text, pext, tver); \
|
SetupMatch(tname, pname, text, pext, tver); \
|
||||||
\
|
\
|
||||||
if (match_pattern(tname, pname) && match_pattern(text, pext) && match_pattern(tver, ver)) \
|
if (match_pattern(tname, pname) && match_pattern(text, pext) && match_pattern(tver, ver)) \
|
||||||
goto matchtag; \
|
goto matchtag; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
else \
|
else \
|
||||||
goto unmatchtag; \
|
goto unmatchtag; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MatchP_Case(target, name, ver, matchtag, unmatchtag) \
|
#define MatchP_Case(target, name, ver, matchtag, unmatchtag) \
|
||||||
@@ -120,9 +120,9 @@ extern int Dummy_errno;
|
|||||||
SetupMatch(tname, pname, text, pext, tver); \
|
SetupMatch(tname, pname, text, pext, tver); \
|
||||||
\
|
\
|
||||||
if (match_pattern(tname, pname) && match_pattern(text, pext) && match_pattern(tver, ver)) \
|
if (match_pattern(tname, pname) && match_pattern(text, pext) && match_pattern(tver, ver)) \
|
||||||
goto matchtag; \
|
goto matchtag; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
else \
|
else \
|
||||||
goto unmatchtag; \
|
goto unmatchtag; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -292,13 +292,13 @@ int MAXFINFO;
|
|||||||
#define AllocFinfo(fp) \
|
#define AllocFinfo(fp) \
|
||||||
{ \
|
{ \
|
||||||
if (FreeFinfoList != (FINFO *)NULL) { \
|
if (FreeFinfoList != (FINFO *)NULL) { \
|
||||||
fp = FreeFinfoList; \
|
(fp) = FreeFinfoList; \
|
||||||
FreeFinfoList = fp->next; \
|
FreeFinfoList = (fp)->next; \
|
||||||
} else if ((fp = (FINFO *)calloc(1, sizeof(FINFO))) == NULL) { \
|
} else if (((fp) = (FINFO *)calloc(1, sizeof(FINFO))) == NULL) { \
|
||||||
fp = (FINFO *)NULL; \
|
(fp) = (FINFO *)NULL; \
|
||||||
} else if ((fp->prop = (FPROP *)calloc(1, sizeof(FPROP))) == NULL) { \
|
} else if (((fp)->prop = (FPROP *)calloc(1, sizeof(FPROP))) == NULL) { \
|
||||||
free(fp); \
|
free(fp); \
|
||||||
fp = (FINFO *)NULL; \
|
(fp) = (FINFO *)NULL; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -329,7 +329,7 @@ void print_finfo(FINFO *fp)
|
|||||||
if (fp != (FINFO *)NULL) {
|
if (fp != (FINFO *)NULL) {
|
||||||
do {
|
do {
|
||||||
printf("%s -> ", fp->lname);
|
printf("%s -> ", fp->lname);
|
||||||
printf("%d\n", fp->version);
|
printf("%u\n", fp->version);
|
||||||
fp = fp->next;
|
fp = fp->next;
|
||||||
} while (fp != (FINFO *)NULL && fp != sp);
|
} while (fp != (FINFO *)NULL && fp != sp);
|
||||||
|
|
||||||
@@ -685,7 +685,7 @@ static int enum_dsk_prop(char *dir, char *name, char *ver, FINFO **finfo_buf)
|
|||||||
if (*fver == '\0')
|
if (*fver == '\0')
|
||||||
nextp->version = 0;
|
nextp->version = 0;
|
||||||
else
|
else
|
||||||
nextp->version = atoi(fver);
|
nextp->version = strtoul(fver, (char **)NULL, 10);
|
||||||
nextp->ino = sbuf.st_ino;
|
nextp->ino = sbuf.st_ino;
|
||||||
nextp->prop->length = (unsigned)sbuf.st_size;
|
nextp->prop->length = (unsigned)sbuf.st_size;
|
||||||
nextp->prop->wdate = (unsigned)ToLispTime(sbuf.st_mtime);
|
nextp->prop->wdate = (unsigned)ToLispTime(sbuf.st_mtime);
|
||||||
@@ -948,7 +948,7 @@ static int enum_dsk(char *dir, char *name, char *ver, FINFO **finfo_buf)
|
|||||||
if (*fver == '\0')
|
if (*fver == '\0')
|
||||||
nextp->version = 0;
|
nextp->version = 0;
|
||||||
else
|
else
|
||||||
nextp->version = atoi(fver);
|
nextp->version = strtoul(fver, (char **)NULL, 10);
|
||||||
nextp->ino = sbuf.st_ino;
|
nextp->ino = sbuf.st_ino;
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
@@ -1399,7 +1399,7 @@ static int trim_finfo(FINFO **fp)
|
|||||||
* Versionless is not linked to any versioned
|
* Versionless is not linked to any versioned
|
||||||
* file.
|
* file.
|
||||||
*/
|
*/
|
||||||
sprintf(ver, ";%d", mp->version + 1);
|
sprintf(ver, ";%u", mp->version + 1);
|
||||||
strcat(sp->lname, ver);
|
strcat(sp->lname, ver);
|
||||||
sp->lname_len = strlen(sp->lname);
|
sp->lname_len = strlen(sp->lname);
|
||||||
pnum = ++num;
|
pnum = ++num;
|
||||||
@@ -1527,7 +1527,7 @@ static int trim_finfo_highest(FINFO **fp, int highestp)
|
|||||||
* Versionless is not linked to any versioned
|
* Versionless is not linked to any versioned
|
||||||
* file.
|
* file.
|
||||||
*/
|
*/
|
||||||
sprintf(ver, ";%d", mp->version + 1);
|
sprintf(ver, ";%u", mp->version + 1);
|
||||||
strcat(sp->lname, ver);
|
strcat(sp->lname, ver);
|
||||||
sp->lname_len = strlen(sp->lname);
|
sp->lname_len = strlen(sp->lname);
|
||||||
/*
|
/*
|
||||||
@@ -1709,7 +1709,7 @@ static int trim_finfo_version(FINFO **fp, int rver)
|
|||||||
* file.
|
* file.
|
||||||
*/
|
*/
|
||||||
if (mp->version + 1 == rver) {
|
if (mp->version + 1 == rver) {
|
||||||
sprintf(ver, ";%d", rver);
|
sprintf(ver, ";%u", rver);
|
||||||
strcat(sp->lname, ver);
|
strcat(sp->lname, ver);
|
||||||
sp->lname_len = strlen(sp->lname);
|
sp->lname_len = strlen(sp->lname);
|
||||||
/*
|
/*
|
||||||
@@ -2111,7 +2111,7 @@ LispPTR COM_gen_files(register LispPTR *args)
|
|||||||
|
|
||||||
if (*ver != '\0') {
|
if (*ver != '\0') {
|
||||||
highestp = 0;
|
highestp = 0;
|
||||||
version = atoi(ver);
|
version = strtoul(ver, (char **)NULL, 10);
|
||||||
if (version > 0) strcpy(ver, "*");
|
if (version > 0) strcpy(ver, "*");
|
||||||
} else {
|
} else {
|
||||||
version = 0;
|
version = 0;
|
||||||
|
|||||||
42
src/draw.c
42
src/draw.c
@@ -20,11 +20,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#include <sunwindow/win_ioctl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "lispemul.h"
|
#include "lispemul.h"
|
||||||
#include "lspglob.h"
|
#include "lspglob.h"
|
||||||
@@ -133,17 +128,6 @@ int N_OP_drawline(LispPTR ptr, int curbit, int xsize, int width, int ysize, int
|
|||||||
if (MonoOrColor == MONO_SCREEN)
|
if (MonoOrColor == MONO_SCREEN)
|
||||||
#endif /* COLOR */
|
#endif /* COLOR */
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
HideCursor; /** Figure out how to be smart later **/
|
|
||||||
#else /* DISPLAYBUFFER */
|
|
||||||
#ifndef OLD_CURSOR
|
|
||||||
HideCursor;
|
|
||||||
#endif /* OLD_CURSOR */
|
|
||||||
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
delta &= 0xFFFF;
|
delta &= 0xFFFF;
|
||||||
op &= 3;
|
op &= 3;
|
||||||
@@ -277,17 +261,6 @@ int N_OP_drawline(LispPTR ptr, int curbit, int xsize, int width, int ysize, int
|
|||||||
if (MonoOrColor == MONO_SCREEN)
|
if (MonoOrColor == MONO_SCREEN)
|
||||||
#endif /* COLOR */
|
#endif /* COLOR */
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
ShowCursor; /** figure how to be smart later **/
|
|
||||||
#else
|
|
||||||
#ifndef OLD_CURSOR
|
|
||||||
ShowCursor;
|
|
||||||
#endif /* OLD_CURSOR */
|
|
||||||
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef DISPLAYBUFFER
|
#ifdef DISPLAYBUFFER
|
||||||
#ifdef COLOR
|
#ifdef COLOR
|
||||||
@@ -304,9 +277,6 @@ int N_OP_drawline(LispPTR ptr, int curbit, int xsize, int width, int ysize, int
|
|||||||
((int)(temp_e = (DLword *)(dataptr - DisplayRegion68k)) >= 0) &&
|
((int)(temp_e = (DLword *)(dataptr - DisplayRegion68k)) >= 0) &&
|
||||||
((DLword *)dataptr < DisplayRegion68k_end_addr)) {
|
((DLword *)dataptr < DisplayRegion68k_end_addr)) {
|
||||||
int start_x, start_y, end_x, end_y, w, h;
|
int start_x, start_y, end_x, end_y, w, h;
|
||||||
#if defined(SUNDISPLAY) && defined(OLD_CURSOR)
|
|
||||||
int displayflg;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
start_y = (int)temp_s / DisplayRasterWidth;
|
start_y = (int)temp_s / DisplayRasterWidth;
|
||||||
start_x = ((int)temp_s % DisplayRasterWidth) * BITSPER_DLWORD;
|
start_x = ((int)temp_s % DisplayRasterWidth) * BITSPER_DLWORD;
|
||||||
@@ -320,18 +290,6 @@ int N_OP_drawline(LispPTR ptr, int curbit, int xsize, int width, int ysize, int
|
|||||||
if (start_x > end_x) start_x = end_x;
|
if (start_x > end_x) start_x = end_x;
|
||||||
if (start_y > end_y) start_y = end_y;
|
if (start_y > end_y) start_y = end_y;
|
||||||
|
|
||||||
#if defined(SUNDISPLAY) && !defined(BYTESWAP)
|
|
||||||
#ifdef OLD_CURSOR
|
|
||||||
if ((displayflg = n_new_cursorin_CG6(start_x, start_y, w, h))) HideCursor;
|
|
||||||
#endif /* OLD_CURSOR */
|
|
||||||
|
|
||||||
pr_rop(ColorDisplayPixrect, start_x, start_y, w, h, PIX_SRC, DisplayRegionPixrect, start_x,
|
|
||||||
start_y);
|
|
||||||
#ifdef OLD_CURSOR
|
|
||||||
if (displayflg) ShowCursor;
|
|
||||||
#endif /* OLD_CURSOR */
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#if defined(XWINDOW) || defined(BYTESWAP)
|
#if defined(XWINDOW) || defined(BYTESWAP)
|
||||||
flush_display_region(start_x, start_y, w, h);
|
flush_display_region(start_x, start_y, w, h);
|
||||||
|
|||||||
99
src/dsk.c
99
src/dsk.c
@@ -53,16 +53,13 @@
|
|||||||
#include "commondefs.h"
|
#include "commondefs.h"
|
||||||
#include "ufsdefs.h"
|
#include "ufsdefs.h"
|
||||||
|
|
||||||
#ifdef GCC386
|
|
||||||
#include "inlnPS2.h"
|
|
||||||
#endif /* GCC386 */
|
|
||||||
|
|
||||||
extern int *Lisp_errno;
|
extern int *Lisp_errno;
|
||||||
extern int Dummy_errno;
|
extern int Dummy_errno;
|
||||||
|
|
||||||
typedef struct filename_entry {
|
typedef struct filename_entry {
|
||||||
char name[MAXPATHLEN]; /* With version, foo.~3~ or foo */
|
char name[MAXPATHLEN]; /* With version, foo.~3~ or foo */
|
||||||
int version_no;
|
unsigned version_no;
|
||||||
} FileName;
|
} FileName;
|
||||||
|
|
||||||
typedef struct current_varray {
|
typedef struct current_varray {
|
||||||
@@ -2368,7 +2365,7 @@ LispPTR COM_getfreeblock(register LispPTR *args)
|
|||||||
void separate_version(char *name, char *ver, int checkp)
|
void separate_version(char *name, char *ver, int checkp)
|
||||||
{
|
{
|
||||||
register char *start, *end, *cp;
|
register char *start, *end, *cp;
|
||||||
register int ver_no;
|
register unsigned ver_no;
|
||||||
size_t len;
|
size_t len;
|
||||||
char ver_buf[VERSIONLEN];
|
char ver_buf[VERSIONLEN];
|
||||||
|
|
||||||
@@ -2400,10 +2397,10 @@ void separate_version(char *name, char *ver, int checkp)
|
|||||||
*(start - 1) = '\0';
|
*(start - 1) = '\0';
|
||||||
*end = '\0';
|
*end = '\0';
|
||||||
/*
|
/*
|
||||||
* Use atoi to eliminate leading 0s.
|
* Use strtoul() to eliminate leading 0s.
|
||||||
*/
|
*/
|
||||||
ver_no = atoi(start + 1);
|
ver_no = strtoul(start + 1, (char **)NULL, 10);
|
||||||
sprintf(ver_buf, "%d", ver_no);
|
sprintf(ver_buf, "%u", ver_no);
|
||||||
strcpy(ver, ver_buf);
|
strcpy(ver, ver_buf);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
@@ -2830,10 +2827,10 @@ static int make_directory(register char *dir)
|
|||||||
#define FindHighestVersion(varray, mentry, max_no) \
|
#define FindHighestVersion(varray, mentry, max_no) \
|
||||||
{ \
|
{ \
|
||||||
register FileName *centry; \
|
register FileName *centry; \
|
||||||
for (centry = varray, max_no = 0; centry->version_no != LASTVERSIONARRAY; centry++) { \
|
for (centry = (varray), (max_no) = 0; centry->version_no != LASTVERSIONARRAY; centry++) { \
|
||||||
if (centry->version_no > max_no) { \
|
if (centry->version_no > (max_no)) { \
|
||||||
max_no = centry->version_no; \
|
(max_no) = centry->version_no; \
|
||||||
mentry = centry; \
|
(mentry) = centry; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
@@ -2878,10 +2875,10 @@ static int make_directory(register char *dir)
|
|||||||
#define FindLowestVersion(varray, mentry, min_no) \
|
#define FindLowestVersion(varray, mentry, min_no) \
|
||||||
{ \
|
{ \
|
||||||
register FileName *centry; \
|
register FileName *centry; \
|
||||||
for (centry = varray, min_no = MAXVERSION; centry->version_no != LASTVERSIONARRAY; centry++) { \
|
for (centry = (varray), (min_no) = MAXVERSION; centry->version_no != LASTVERSIONARRAY; centry++) { \
|
||||||
if (centry->version_no < min_no && centry->version_no != 0) { \
|
if (centry->version_no < (min_no) && centry->version_no != 0) { \
|
||||||
min_no = centry->version_no; \
|
(min_no) = centry->version_no; \
|
||||||
mentry = centry; \
|
(mentry) = centry; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
@@ -2915,10 +2912,10 @@ static int make_directory(register char *dir)
|
|||||||
{ \
|
{ \
|
||||||
register FileName *centry; \
|
register FileName *centry; \
|
||||||
\
|
\
|
||||||
sentry = (FileName *)NULL; \
|
(sentry) = (FileName *)NULL; \
|
||||||
for (centry = varray; centry->version_no != LASTVERSIONARRAY; centry++) \
|
for (centry = varray; centry->version_no != LASTVERSIONARRAY; centry++) \
|
||||||
if (centry->version_no == ver_no) { \
|
if (centry->version_no == (ver_no)) { \
|
||||||
sentry = centry; \
|
(sentry) = centry; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
@@ -3028,7 +3025,7 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
|||||||
* separator_version guarantees ver is a numeric
|
* separator_version guarantees ver is a numeric
|
||||||
* string.
|
* string.
|
||||||
*/
|
*/
|
||||||
svarray->version_no = atoi(ver);
|
svarray->version_no = strtoul(ver, (char **)NULL, 10);
|
||||||
}
|
}
|
||||||
svarray++;
|
svarray++;
|
||||||
}
|
}
|
||||||
@@ -3122,7 +3119,7 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
|
|||||||
* separator_version guarantees ver is a numeric
|
* separator_version guarantees ver is a numeric
|
||||||
* string.
|
* string.
|
||||||
*/
|
*/
|
||||||
svarray->version_no = atoi(ver);
|
svarray->version_no = strtoul(ver, (char **)NULL, 10);
|
||||||
}
|
}
|
||||||
svarray++;
|
svarray++;
|
||||||
}
|
}
|
||||||
@@ -3266,7 +3263,7 @@ static int maintain_version(char *file, FileName *varray, int forcep)
|
|||||||
* is versioned one higher than the existing highest version.
|
* is versioned one higher than the existing highest version.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
sprintf(ver, "%d", max_no + 1);
|
sprintf(ver, "%u", max_no + 1);
|
||||||
/*
|
/*
|
||||||
* The old file should have the same case name as the versionless
|
* The old file should have the same case name as the versionless
|
||||||
* file.
|
* file.
|
||||||
@@ -3501,7 +3498,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
{
|
{
|
||||||
char name[MAXPATHLEN], vless[MAXPATHLEN], to_file[MAXPATHLEN];
|
char name[MAXPATHLEN], vless[MAXPATHLEN], to_file[MAXPATHLEN];
|
||||||
char ver[VERSIONLEN], vbuf[VERSIONLEN];
|
char ver[VERSIONLEN], vbuf[VERSIONLEN];
|
||||||
register int ver_no, max_no;
|
register unsigned ver_no, max_no;
|
||||||
int highest_p;
|
int highest_p;
|
||||||
register FileName *entry;
|
register FileName *entry;
|
||||||
|
|
||||||
@@ -3531,7 +3528,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* varray and try to find the file with the specified
|
* varray and try to find the file with the specified
|
||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindSpecifiedVersion(varray, entry, ver_no);
|
FindSpecifiedVersion(varray, entry, ver_no);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
ConcDirAndName(dir, entry->name, afile);
|
ConcDirAndName(dir, entry->name, afile);
|
||||||
@@ -3555,7 +3552,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
if (ver_no == 1) {
|
if (ver_no == 1) {
|
||||||
/*
|
/*
|
||||||
* Version 1 is specified. The versionless file is
|
* Version 1 is specified. The versionless file is
|
||||||
@@ -3589,13 +3586,13 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* link missing versionless file.
|
* link missing versionless file.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
sprintf(vbuf, "%d", max_no + 1);
|
sprintf(vbuf, "%u", max_no + 1);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
/* A version is specified. */
|
/* A version is specified. */
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
if (ver_no == max_no + 1) {
|
if (ver_no == max_no + 1) {
|
||||||
/*
|
/*
|
||||||
@@ -3604,7 +3601,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* is dealt with as a version of the link
|
* is dealt with as a version of the link
|
||||||
* missing versionless file.
|
* missing versionless file.
|
||||||
*/
|
*/
|
||||||
sprintf(vbuf, "%d", ver_no);
|
sprintf(vbuf, "%u", ver_no);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
return (1);
|
return (1);
|
||||||
@@ -3643,7 +3640,7 @@ static int get_old(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* varray and try to find the file with the specified
|
* varray and try to find the file with the specified
|
||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindSpecifiedVersion(varray, entry, ver_no);
|
FindSpecifiedVersion(varray, entry, ver_no);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
ConcDirAndName(dir, entry->name, afile);
|
ConcDirAndName(dir, entry->name, afile);
|
||||||
@@ -3700,7 +3697,7 @@ static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
{
|
{
|
||||||
char name[MAXPATHLEN], vless[MAXPATHLEN], to_file[MAXPATHLEN];
|
char name[MAXPATHLEN], vless[MAXPATHLEN], to_file[MAXPATHLEN];
|
||||||
char ver[VERSIONLEN], vbuf[VERSIONLEN];
|
char ver[VERSIONLEN], vbuf[VERSIONLEN];
|
||||||
register int ver_no, min_no;
|
register unsigned ver_no, min_no;
|
||||||
int highest_p;
|
int highest_p;
|
||||||
register FileName *entry;
|
register FileName *entry;
|
||||||
|
|
||||||
@@ -3730,7 +3727,7 @@ static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* varray and try to find the file with the specified
|
* varray and try to find the file with the specified
|
||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindSpecifiedVersion(varray, entry, ver_no);
|
FindSpecifiedVersion(varray, entry, ver_no);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
ConcDirAndName(dir, entry->name, afile);
|
ConcDirAndName(dir, entry->name, afile);
|
||||||
@@ -3754,7 +3751,7 @@ static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
if (ver_no == 1) {
|
if (ver_no == 1) {
|
||||||
/*
|
/*
|
||||||
* Version 1 is specified. The versionless file is
|
* Version 1 is specified. The versionless file is
|
||||||
@@ -3791,7 +3788,7 @@ static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
/* A version is specified. */
|
/* A version is specified. */
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindHighestVersion(varray, entry, min_no);
|
FindHighestVersion(varray, entry, min_no);
|
||||||
if (ver_no == min_no + 1) {
|
if (ver_no == min_no + 1) {
|
||||||
/*
|
/*
|
||||||
@@ -3800,7 +3797,7 @@ static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* is dealt with as a version of the link
|
* is dealt with as a version of the link
|
||||||
* missing versionless file.
|
* missing versionless file.
|
||||||
*/
|
*/
|
||||||
sprintf(vbuf, "%d", ver_no);
|
sprintf(vbuf, "%u", ver_no);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
return (1);
|
return (1);
|
||||||
@@ -3839,7 +3836,7 @@ static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* varray and try to find the file with the specified
|
* varray and try to find the file with the specified
|
||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindSpecifiedVersion(varray, entry, ver_no);
|
FindSpecifiedVersion(varray, entry, ver_no);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
ConcDirAndName(dir, entry->name, afile);
|
ConcDirAndName(dir, entry->name, afile);
|
||||||
@@ -3897,7 +3894,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
{
|
{
|
||||||
char name[MAXPATHLEN], vless[MAXPATHLEN], to_file[MAXPATHLEN];
|
char name[MAXPATHLEN], vless[MAXPATHLEN], to_file[MAXPATHLEN];
|
||||||
char ver[VERSIONLEN], vbuf[VERSIONLEN];
|
char ver[VERSIONLEN], vbuf[VERSIONLEN];
|
||||||
register int ver_no, max_no;
|
register unsigned ver_no, max_no;
|
||||||
int highest_p;
|
int highest_p;
|
||||||
register FileName *entry;
|
register FileName *entry;
|
||||||
|
|
||||||
@@ -3945,7 +3942,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* the existing highest version.
|
* the existing highest version.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
sprintf(vbuf, "%d", max_no + 1);
|
sprintf(vbuf, "%u", max_no + 1);
|
||||||
/*
|
/*
|
||||||
* We will use the file name of the existing highest
|
* We will use the file name of the existing highest
|
||||||
* versioned file as the name of the new file, so that
|
* versioned file as the name of the new file, so that
|
||||||
@@ -3963,7 +3960,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* varray and try to find the file with the specified
|
* varray and try to find the file with the specified
|
||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindSpecifiedVersion(varray, entry, ver_no);
|
FindSpecifiedVersion(varray, entry, ver_no);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
ConcDirAndName(dir, entry->name, afile);
|
ConcDirAndName(dir, entry->name, afile);
|
||||||
@@ -4001,7 +3998,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
strcpy(afile, vfile);
|
strcpy(afile, vfile);
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
if (ver_no == 1) {
|
if (ver_no == 1) {
|
||||||
/*
|
/*
|
||||||
* Version 1 is specified. The versionless file is
|
* Version 1 is specified. The versionless file is
|
||||||
@@ -4037,13 +4034,13 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* missing versionless file.
|
* missing versionless file.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
sprintf(vbuf, "%d", max_no + 2);
|
sprintf(vbuf, "%u", max_no + 2);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vfile);
|
strcpy(afile, vfile);
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
/* A version is specified. */
|
/* A version is specified. */
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
if (ver_no == max_no + 1) {
|
if (ver_no == max_no + 1) {
|
||||||
/*
|
/*
|
||||||
@@ -4052,7 +4049,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* is dealt with as a version of the link
|
* is dealt with as a version of the link
|
||||||
* missing versionless file.
|
* missing versionless file.
|
||||||
*/
|
*/
|
||||||
sprintf(vbuf, "%d", ver_no);
|
sprintf(vbuf, "%u", ver_no);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
return (1);
|
return (1);
|
||||||
@@ -4100,7 +4097,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* new file.
|
* new file.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
sprintf(vbuf, "%d", max_no + 1);
|
sprintf(vbuf, "%u", max_no + 1);
|
||||||
/*
|
/*
|
||||||
* We will use the name of the highest versioned file
|
* We will use the name of the highest versioned file
|
||||||
* as the name of the new file.
|
* as the name of the new file.
|
||||||
@@ -4117,7 +4114,7 @@ static int get_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* varray and try to find the file with the specified
|
* varray and try to find the file with the specified
|
||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindSpecifiedVersion(varray, entry, ver_no);
|
FindSpecifiedVersion(varray, entry, ver_no);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
ConcDirAndName(dir, entry->name, afile);
|
ConcDirAndName(dir, entry->name, afile);
|
||||||
@@ -4191,7 +4188,7 @@ static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
{
|
{
|
||||||
char name[MAXPATHLEN], vless[MAXPATHLEN], to_file[MAXPATHLEN];
|
char name[MAXPATHLEN], vless[MAXPATHLEN], to_file[MAXPATHLEN];
|
||||||
char ver[VERSIONLEN], vbuf[VERSIONLEN];
|
char ver[VERSIONLEN], vbuf[VERSIONLEN];
|
||||||
register int ver_no, max_no;
|
register unsigned ver_no, max_no;
|
||||||
int highest_p;
|
int highest_p;
|
||||||
register FileName *entry;
|
register FileName *entry;
|
||||||
|
|
||||||
@@ -4243,7 +4240,7 @@ static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* varray and try to find the file with the specified
|
* varray and try to find the file with the specified
|
||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindSpecifiedVersion(varray, entry, ver_no);
|
FindSpecifiedVersion(varray, entry, ver_no);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
ConcDirAndName(dir, entry->name, afile);
|
ConcDirAndName(dir, entry->name, afile);
|
||||||
@@ -4281,7 +4278,7 @@ static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
if (ver_no == 1) {
|
if (ver_no == 1) {
|
||||||
/*
|
/*
|
||||||
* Version 1 is specified. The versionless file is
|
* Version 1 is specified. The versionless file is
|
||||||
@@ -4316,13 +4313,13 @@ static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* link missing versionless file.
|
* link missing versionless file.
|
||||||
*/
|
*/
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
sprintf(vbuf, "%d", max_no + 1);
|
sprintf(vbuf, "%u", max_no + 1);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
/* A version is specified. */
|
/* A version is specified. */
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindHighestVersion(varray, entry, max_no);
|
FindHighestVersion(varray, entry, max_no);
|
||||||
if (ver_no == max_no + 1) {
|
if (ver_no == max_no + 1) {
|
||||||
/*
|
/*
|
||||||
@@ -4331,7 +4328,7 @@ static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* is dealt with as a version of the link
|
* is dealt with as a version of the link
|
||||||
* missing versionless file.
|
* missing versionless file.
|
||||||
*/
|
*/
|
||||||
sprintf(vbuf, "%d", ver_no);
|
sprintf(vbuf, "%u", ver_no);
|
||||||
ConcNameAndVersion(vless, vbuf, vfile);
|
ConcNameAndVersion(vless, vbuf, vfile);
|
||||||
strcpy(afile, vless);
|
strcpy(afile, vless);
|
||||||
return (1);
|
return (1);
|
||||||
@@ -4387,7 +4384,7 @@ static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile)
|
|||||||
* varray and try to find the file with the specified
|
* varray and try to find the file with the specified
|
||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
ver_no = atoi(ver);
|
ver_no = strtoul(ver, (char **)NULL, 10);
|
||||||
FindSpecifiedVersion(varray, entry, ver_no);
|
FindSpecifiedVersion(varray, entry, ver_no);
|
||||||
if (entry != NULL) {
|
if (entry != NULL) {
|
||||||
ConcDirAndName(dir, entry->name, afile);
|
ConcDirAndName(dir, entry->name, afile);
|
||||||
|
|||||||
@@ -21,9 +21,8 @@
|
|||||||
#include "dspifdefs.h"
|
#include "dspifdefs.h"
|
||||||
#include "xinitdefs.h"
|
#include "xinitdefs.h"
|
||||||
|
|
||||||
DspInterfaceRec _curdsp;
|
DspInterfaceRec curdsp;
|
||||||
|
DspInterface currentdsp = &curdsp;
|
||||||
DspInterface currentdsp = &_curdsp;
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
extern int LispDisplayRequestedWidth;
|
extern int LispDisplayRequestedWidth;
|
||||||
|
|||||||
@@ -12,9 +12,6 @@
|
|||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "lispemul.h"
|
#include "lispemul.h"
|
||||||
#include "lsptypes.h"
|
#include "lsptypes.h"
|
||||||
@@ -68,9 +65,7 @@ void DSP_showdisplay(LispPTR *args)
|
|||||||
LispPTR DSP_VideoColor(LispPTR *args) /* args[0] : black flag */
|
LispPTR DSP_VideoColor(LispPTR *args) /* args[0] : black flag */
|
||||||
{
|
{
|
||||||
int invert;
|
int invert;
|
||||||
#ifdef SUNDISPLAY
|
#if defined(XWINDOW)
|
||||||
return NIL;
|
|
||||||
#elif defined(XWINDOW)
|
|
||||||
invert = args[0] & 0xFFFF;
|
invert = args[0] & 0xFFFF;
|
||||||
lisp_Xvideocolor(invert);
|
lisp_Xvideocolor(invert);
|
||||||
if (invert)
|
if (invert)
|
||||||
@@ -99,50 +94,7 @@ void DSP_Cursor(LispPTR *args, int argnum)
|
|||||||
extern int ScreenLocked;
|
extern int ScreenLocked;
|
||||||
extern DLword *EmCursorX68K, *EmCursorY68K;
|
extern DLword *EmCursorX68K, *EmCursorY68K;
|
||||||
extern int LastCursorX, LastCursorY;
|
extern int LastCursorX, LastCursorY;
|
||||||
#if defined(SUNDISPLAY) && !defined(OLD_CURSOR)
|
|
||||||
static int Init = T;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
if (argnum == 2) {
|
|
||||||
CurrentCursor.cur_xhot = args[0] & 0xffff;
|
|
||||||
CurrentCursor.cur_yhot = args[1] & 0xffff;
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef OLD_CURSOR
|
|
||||||
win_setcursor(LispWindowFd, &CurrentCursor);
|
|
||||||
#else
|
|
||||||
#ifndef INIT
|
|
||||||
ScreenLocked = T;
|
|
||||||
if (!Init) {
|
|
||||||
taking_mouse_down();
|
|
||||||
taking_mouse_up(*EmCursorX68K, *EmCursorY68K);
|
|
||||||
} else {
|
|
||||||
Init = NIL;
|
|
||||||
cursor_hidden_bitmap(0, 0);
|
|
||||||
taking_mouse_up(0, 0);
|
|
||||||
*EmCursorX68K = LastCursorX = 0;
|
|
||||||
*EmCursorY68K = LastCursorY = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScreenLocked = NIL;
|
|
||||||
#else
|
|
||||||
/* Init specific lde only */
|
|
||||||
ScreenLocked = T;
|
|
||||||
if (!Init) {
|
|
||||||
taking_mouse_down();
|
|
||||||
taking_mouse_up(0, 0);
|
|
||||||
} else {
|
|
||||||
Init = NIL;
|
|
||||||
cursor_hidden_bitmap(0, 0);
|
|
||||||
taking_mouse_up(0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
ScreenLocked = NIL;
|
|
||||||
#endif /* INIT */
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
/* For X-Windows, set the cursor to the given location. */
|
/* For X-Windows, set the cursor to the given location. */
|
||||||
@@ -161,32 +113,6 @@ void DSP_Cursor(LispPTR *args, int argnum)
|
|||||||
*/
|
*/
|
||||||
void DSP_SetMousePos(register LispPTR *args)
|
void DSP_SetMousePos(register LispPTR *args)
|
||||||
{
|
{
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifdef OLD_CURSOR
|
|
||||||
register int x, y;
|
|
||||||
x = GetSmalldata(args[0]);
|
|
||||||
y = GetSmalldata(args[1]); /* debug */
|
|
||||||
win_setmouseposition(LispWindowFd, GetSmalldata(args[0]), GetSmalldata(args[1]));
|
|
||||||
#else
|
|
||||||
extern int ScreenLocked;
|
|
||||||
extern DLword *EmCursorX68K, *EmCursorY68K, *EmMouseX68K, *EmMouseY68K;
|
|
||||||
register int x, y;
|
|
||||||
ScreenLocked = T;
|
|
||||||
x = GetSmalldata(args[0]);
|
|
||||||
y = GetSmalldata(args[1]);
|
|
||||||
/* for Suntool's invisible cursor */
|
|
||||||
win_setmouseposition(LispWindowFd, x, y);
|
|
||||||
/* for REAL cursor image */
|
|
||||||
taking_mouse_down();
|
|
||||||
taking_mouse_up(x, y);
|
|
||||||
|
|
||||||
#ifndef INIT
|
|
||||||
*EmMouseX68K = x;
|
|
||||||
*EmMouseY68K = y;
|
|
||||||
#endif
|
|
||||||
ScreenLocked = NIL;
|
|
||||||
#endif
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
if (Mouse_Included)
|
if (Mouse_Included)
|
||||||
@@ -251,25 +177,6 @@ void flip_cursor() {
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifdef OLD_CURSOR
|
|
||||||
|
|
||||||
win_setcursor(LispWindowFd, &CurrentCursor);
|
|
||||||
#else
|
|
||||||
ScreenLocked = T;
|
|
||||||
taking_mouse_down();
|
|
||||||
#ifndef INIT
|
|
||||||
taking_mouse_up(*EmCursorX68K, *EmCursorY68K);
|
|
||||||
#else
|
|
||||||
if (!for_makeinit)
|
|
||||||
taking_mouse_up(*EmCursorX68K, *EmCursorY68K);
|
|
||||||
else
|
|
||||||
taking_mouse_up(0, 0);
|
|
||||||
#endif /* INIT */
|
|
||||||
|
|
||||||
ScreenLocked = NIL;
|
|
||||||
#endif
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
/* JDS 011213: 15- cur y, as function does same! */
|
/* JDS 011213: 15- cur y, as function does same! */
|
||||||
|
|||||||
12
src/eqf.c
12
src/eqf.c
@@ -68,12 +68,12 @@ BIGNUM (integer that can't be represented bigger than 32 bits)
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define IF_IMMEDIATE(arg, doit, doitsmall) \
|
#define IF_IMMEDIATE(arg, doit, doitsmall) \
|
||||||
switch (SEGMASK & arg) { \
|
switch (SEGMASK & (arg)) { \
|
||||||
case ATOM_OFFSET: doit; \
|
case ATOM_OFFSET: doit; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
case S_CHARACTER: doit; \
|
case S_CHARACTER: doit; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
case S_POSITIVE: doitsmall; \
|
case S_POSITIVE: doitsmall; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
case S_NEGATIVE: doitsmall; \
|
case S_NEGATIVE: doitsmall; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|||||||
42
src/ether.c
42
src/ether.c
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
#define PKTFILTER 1
|
#define PKTFILTER 1
|
||||||
#define NIOCSFLAGS SBIOCSFLAGS
|
#define NIOCSFLAGS SBIOCSFLAGS
|
||||||
#endif
|
#endif
|
||||||
@@ -34,9 +34,9 @@
|
|||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <netinet/if_ether.h>
|
#include <netinet/if_ether.h>
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
#include "dlpidefs.h"
|
#include "dlpidefs.h"
|
||||||
#else
|
#elif defined(USE_NIT)
|
||||||
#include <net/nit.h>
|
#include <net/nit.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
#endif /* OS4 */
|
#endif /* OS4 */
|
||||||
#endif /* PKTFILTER */
|
#endif /* PKTFILTER */
|
||||||
|
|
||||||
#ifndef USE_DLPI
|
#if defined(USE_NIT)
|
||||||
#include <sys/mbuf.h>
|
#include <sys/mbuf.h>
|
||||||
#endif
|
#endif
|
||||||
#include <nlist.h>
|
#include <nlist.h>
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
#include "dbprint.h"
|
#include "dbprint.h"
|
||||||
#include "etherdefs.h"
|
#include "etherdefs.h"
|
||||||
|
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
#define NIOCSETF PFIOCSETF
|
#define NIOCSETF PFIOCSETF
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@ LispPTR ether_suspend(LispPTR args[])
|
|||||||
|
|
||||||
/* The trick here is to install a packet filter */
|
/* The trick here is to install a packet filter */
|
||||||
/* that rejects all packets, I think... */
|
/* that rejects all packets, I think... */
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
|
|
||||||
si.ic_cmd = PFIOCSETF;
|
si.ic_cmd = PFIOCSETF;
|
||||||
si.ic_timout = -1;
|
si.ic_timout = -1;
|
||||||
@@ -257,7 +257,7 @@ LispPTR ether_suspend(LispPTR args[])
|
|||||||
return (NIL);
|
return (NIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#elif defined(USE_NIT)
|
||||||
if (ioctl(ether_fd, NIOCSETF, &nopf) != 0) {
|
if (ioctl(ether_fd, NIOCSETF, &nopf) != 0) {
|
||||||
perror("ether_suspend: NIOCSETF failed\n");
|
perror("ether_suspend: NIOCSETF failed\n");
|
||||||
return (NIL);
|
return (NIL);
|
||||||
@@ -291,7 +291,7 @@ LispPTR ether_resume(LispPTR args[])
|
|||||||
#else /* PKTFILTER */
|
#else /* PKTFILTER */
|
||||||
|
|
||||||
/* Install a packet filter that accepts all packets we want */
|
/* Install a packet filter that accepts all packets we want */
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
|
|
||||||
si.ic_cmd = PFIOCSETF;
|
si.ic_cmd = PFIOCSETF;
|
||||||
si.ic_timout = -1;
|
si.ic_timout = -1;
|
||||||
@@ -303,7 +303,7 @@ LispPTR ether_resume(LispPTR args[])
|
|||||||
return (NIL);
|
return (NIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#elif defined(USE_NIT)
|
||||||
if (ioctl(ether_fd, NIOCSETF, &goodpf) != 0) {
|
if (ioctl(ether_fd, NIOCSETF, &goodpf) != 0) {
|
||||||
perror("ether_resume: NIOCSETF failed\n");
|
perror("ether_resume: NIOCSETF failed\n");
|
||||||
return (NIL);
|
return (NIL);
|
||||||
@@ -763,9 +763,9 @@ void init_ifpage_ether() {
|
|||||||
#ifdef MAIKO_ENABLE_ETHERNET
|
#ifdef MAIKO_ENABLE_ETHERNET
|
||||||
/* this needs to be a global so the name can be set by main() in Ctest */
|
/* this needs to be a global so the name can be set by main() in Ctest */
|
||||||
/* But MAIKO_ENABLE_ETHERNET doesn't support NIT, so dyke it out for MAIKO_ENABLE_ETHERNET */
|
/* But MAIKO_ENABLE_ETHERNET doesn't support NIT, so dyke it out for MAIKO_ENABLE_ETHERNET */
|
||||||
#ifndef USE_DLPI
|
#if defined(USE_NIT)
|
||||||
struct sockaddr_nit snit;
|
struct sockaddr_nit snit;
|
||||||
#endif /* USE_DLPI */
|
#endif /* USE_NIT */
|
||||||
#endif /* MAIKO_ENABLE_ETHERNET */
|
#endif /* MAIKO_ENABLE_ETHERNET */
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
@@ -793,7 +793,7 @@ void init_ether() {
|
|||||||
if it's already open here, it was opened by ldeether and
|
if it's already open here, it was opened by ldeether and
|
||||||
all the appropriate stuff was done to it there.
|
all the appropriate stuff was done to it there.
|
||||||
*/
|
*/
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
/* Use DLPI to connect to the ethernet. This code is stolen
|
/* Use DLPI to connect to the ethernet. This code is stolen
|
||||||
from NFSWATCH4.3
|
from NFSWATCH4.3
|
||||||
*/
|
*/
|
||||||
@@ -832,9 +832,7 @@ void init_ether() {
|
|||||||
}
|
}
|
||||||
seteuid(getuid());
|
seteuid(getuid());
|
||||||
}
|
}
|
||||||
#else
|
#elif defined(USE_NIT)
|
||||||
/* N O T D L P I C O D E */
|
|
||||||
|
|
||||||
#ifndef OS4
|
#ifndef OS4
|
||||||
if (getuid() != geteuid()) {
|
if (getuid() != geteuid()) {
|
||||||
if ((ether_fd = socket(AF_NIT, SOCK_RAW, NITPROTO_RAW)) >= 0) {
|
if ((ether_fd = socket(AF_NIT, SOCK_RAW, NITPROTO_RAW)) >= 0) {
|
||||||
@@ -995,7 +993,7 @@ void init_ether() {
|
|||||||
|
|
||||||
/* first and foremost, flush out ether_fd's buffers and filter it */
|
/* first and foremost, flush out ether_fd's buffers and filter it */
|
||||||
/* install packetfilter that rejects everything */
|
/* install packetfilter that rejects everything */
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
|
|
||||||
si.ic_cmd = PFIOCSETF;
|
si.ic_cmd = PFIOCSETF;
|
||||||
si.ic_timout = -1;
|
si.ic_timout = -1;
|
||||||
@@ -1009,7 +1007,7 @@ void init_ether() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#elif defined(USE_NIT)
|
||||||
if (ioctl(ether_fd, NIOCSETF, &nopf) != 0) {
|
if (ioctl(ether_fd, NIOCSETF, &nopf) != 0) {
|
||||||
perror("init_ether: nopf NIOCSETF failed:\n");
|
perror("init_ether: nopf NIOCSETF failed:\n");
|
||||||
|
|
||||||
@@ -1028,9 +1026,9 @@ void init_ether() {
|
|||||||
/* then throw away everything that's currently buffered there;
|
/* then throw away everything that's currently buffered there;
|
||||||
this descriptor may have been open since ldeether ran, with
|
this descriptor may have been open since ldeether ran, with
|
||||||
no filtering; a busy net will have stuffed it full */
|
no filtering; a busy net will have stuffed it full */
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
if (ioctl(ether_fd, I_FLUSH, (char *)FLUSHR) < 0) { perror("init_ether I_FLUSH"); }
|
if (ioctl(ether_fd, I_FLUSH, (char *)FLUSHR) < 0) { perror("init_ether I_FLUSH"); }
|
||||||
#else
|
#elif defined(USE_NIT)
|
||||||
{
|
{
|
||||||
FD_SET(ether_fd, &rfds);
|
FD_SET(ether_fd, &rfds);
|
||||||
while (select(32, &rfds, NULL, NULL, &EtherTimeout) > 0)
|
while (select(32, &rfds, NULL, NULL, &EtherTimeout) > 0)
|
||||||
@@ -1044,7 +1042,7 @@ void init_ether() {
|
|||||||
goodpf.Pf_Filter[11] = (DLword)((ether_host[2] << 8) + ether_host[3]);
|
goodpf.Pf_Filter[11] = (DLword)((ether_host[2] << 8) + ether_host[3]);
|
||||||
goodpf.Pf_Filter[14] = (DLword)((ether_host[4] << 8) + ether_host[5]);
|
goodpf.Pf_Filter[14] = (DLword)((ether_host[4] << 8) + ether_host[5]);
|
||||||
/* and set up the packetfilter */
|
/* and set up the packetfilter */
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
|
|
||||||
si.ic_cmd = PFIOCSETF;
|
si.ic_cmd = PFIOCSETF;
|
||||||
si.ic_timout = -1;
|
si.ic_timout = -1;
|
||||||
@@ -1066,7 +1064,7 @@ void init_ether() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* USE_DLPI */
|
#endif /* USE_DLPI */
|
||||||
#ifndef USE_DLPI
|
#if defined(USE_NIT)
|
||||||
DBPRINT(("INIT ETHER: Doing I_SETSIG.\n"));
|
DBPRINT(("INIT ETHER: Doing I_SETSIG.\n"));
|
||||||
if (ioctl(ether_fd, I_SETSIG, S_INPUT) != 0) {
|
if (ioctl(ether_fd, I_SETSIG, S_INPUT) != 0) {
|
||||||
perror("init_ether: I_SETSIG failed:\n");
|
perror("init_ether: I_SETSIG failed:\n");
|
||||||
@@ -1074,7 +1072,7 @@ void init_ether() {
|
|||||||
ether_fd = -1;
|
ether_fd = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* USE_DLPI */
|
#endif /* USE_NIT */
|
||||||
#endif /* PKTFILTER */
|
#endif /* PKTFILTER */
|
||||||
|
|
||||||
if (ether_fd < 0) error ("ether_fd is -1, but enet opened??");
|
if (ether_fd < 0) error ("ether_fd is -1, but enet opened??");
|
||||||
|
|||||||
@@ -24,9 +24,6 @@
|
|||||||
#include "commondefs.h"
|
#include "commondefs.h"
|
||||||
#include "gchtfinddefs.h"
|
#include "gchtfinddefs.h"
|
||||||
|
|
||||||
#ifdef GCC386
|
|
||||||
#include "inlnPS2.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MaskShift(x) (((x) << 16) & SEGMASK)
|
#define MaskShift(x) (((x) << 16) & SEGMASK)
|
||||||
|
|
||||||
@@ -374,7 +371,7 @@ LispPTR N_OP_fvar_(register LispPTR tos, register int n) {
|
|||||||
|
|
||||||
#define VALS_HI_RET(x) ((int)(x) << 17) + VALS_HI + ((unsigned short)(x) >> 15)
|
#define VALS_HI_RET(x) ((int)(x) << 17) + VALS_HI + ((unsigned short)(x) >> 15)
|
||||||
|
|
||||||
#define STK_HI_RET(x) ((int)(x) << 16) | 1 | ((unsigned int)(x) >> 16)
|
#define STK_HI_RET(x) (((int)(x) << 16) | 1 | ((unsigned int)(x) >> 16))
|
||||||
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@@ -389,7 +386,7 @@ LispPTR N_OP_fvar_(register LispPTR tos, register int n) {
|
|||||||
: (swapx((int)(x) + NEWATOM_VALUE_OFFSET)))
|
: (swapx((int)(x) + NEWATOM_VALUE_OFFSET)))
|
||||||
#endif /* BIGVM */
|
#endif /* BIGVM */
|
||||||
|
|
||||||
#define STK_HI_RET(x) ((unsigned int)(x) << 16) | 1 | ((unsigned int)(x) >> 16)
|
#define STK_HI_RET(x) (((unsigned int)(x) << 16) | 1 | ((unsigned int)(x) >> 16))
|
||||||
|
|
||||||
#endif /* BIGATOMS */
|
#endif /* BIGATOMS */
|
||||||
|
|
||||||
|
|||||||
@@ -34,9 +34,6 @@
|
|||||||
#include "gc2defs.h"
|
#include "gc2defs.h"
|
||||||
#include "gcscandefs.h"
|
#include "gcscandefs.h"
|
||||||
|
|
||||||
#ifdef GCC386
|
|
||||||
#include "inlnPS2.h"
|
|
||||||
#endif /* GCC386 */
|
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ LispPTR get_package_atom(const char *char_base, DLword charlen, const char *pack
|
|||||||
packindex = find_package_from_name(packname, packlen);
|
packindex = find_package_from_name(packname, packlen);
|
||||||
|
|
||||||
if (packindex < 0) {
|
if (packindex < 0) {
|
||||||
printf("getting package index is failed \n");
|
printf("getting package index failed %s:%s\n", packname, char_base);
|
||||||
return (0xffffffff);
|
return (0xffffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,15 +46,15 @@
|
|||||||
#include "commondefs.h"
|
#include "commondefs.h"
|
||||||
#include "gchtfinddefs.h"
|
#include "gchtfinddefs.h"
|
||||||
|
|
||||||
#define min(a, b) ((a > b) ? b : a)
|
#define min(a, b) (((a) > (b)) ? (b) : (a))
|
||||||
|
|
||||||
#define ENDOFX 0
|
#define ENDOFX 0
|
||||||
#define GCONST 111
|
#define GCONST 111
|
||||||
|
|
||||||
#define Reprobefn(bits, index) (((bits ^ ((bits) >> 8)) & min(63, index)) | 1)
|
#define Reprobefn(bits, index) ((((bits) ^ ((bits) >> 8)) & min(63, index)) | 1)
|
||||||
#define Fn16bits(a, b) ((a + b) & 0x0ffff)
|
#define Fn16bits(a, b) (((a) + (b)) & 0x0ffff)
|
||||||
#define Hashingbits(item) (HILOC(item) ^ (((LOLOC(item) & 0x1fff) << 3) ^ (LOLOC(item) >> 9)))
|
#define Hashingbits(item) (HILOC(item) ^ (((LOLOC(item) & 0x1fff) << 3) ^ (LOLOC(item) >> 9)))
|
||||||
#define Getikvalue(base, index) (*(LispPTR *)Addr68k_from_LADDR(base + (index << 1)))
|
#define Getikvalue(base, index) (*(LispPTR *)Addr68k_from_LADDR((base) + ((index) << 1)))
|
||||||
|
|
||||||
#ifndef BYTESWAP
|
#ifndef BYTESWAP
|
||||||
typedef struct implicit_key_hash_table {
|
typedef struct implicit_key_hash_table {
|
||||||
|
|||||||
@@ -72,8 +72,8 @@
|
|||||||
#define Boundp(frame_field) ((frame_field == 0) ? 1 : 0)
|
#define Boundp(frame_field) ((frame_field == 0) ? 1 : 0)
|
||||||
#endif /* NEVER */
|
#endif /* NEVER */
|
||||||
|
|
||||||
#define min(a, b) ((a > b) ? b : a)
|
#define min(a, b) (((a) > (b)) ? (b) : (a))
|
||||||
#define Trailer(ldatum, datum68) (ldatum + 2 * (datum68->arlen - ARRAYBLOCKTRAILERCELLS))
|
#define Trailer(ldatum, datum68) ((ldatum) + 2 * ((datum68)->arlen - ARRAYBLOCKTRAILERCELLS))
|
||||||
#define BucketIndex(n) min(integerlength(n), MAXBUCKETINDEX)
|
#define BucketIndex(n) min(integerlength(n), MAXBUCKETINDEX)
|
||||||
#define FreeBlockChainN(n) ((POINTERMASK & *FreeBlockBuckets_word) + 2 * BucketIndex(n))
|
#define FreeBlockChainN(n) ((POINTERMASK & *FreeBlockBuckets_word) + 2 * BucketIndex(n))
|
||||||
|
|
||||||
|
|||||||
@@ -24,12 +24,12 @@
|
|||||||
#include "gcrdefs.h"
|
#include "gcrdefs.h"
|
||||||
#include "storagedefs.h"
|
#include "storagedefs.h"
|
||||||
|
|
||||||
#define Evenp(num, prim) ((num % prim) == 0)
|
#define Evenp(num, prim) (((num) % (prim)) == 0)
|
||||||
#ifdef BIGVM
|
#ifdef BIGVM
|
||||||
/* HTCOLLMAX should be in half-entries, not in words */
|
/* HTCOLLMAX should be in half-entries, not in words */
|
||||||
#define HTCOLLMAX (HTCOLL_SIZE / DLWORDSPER_CELL) - 16
|
#define HTCOLLMAX ((HTCOLL_SIZE / DLWORDSPER_CELL) - 16)
|
||||||
#else
|
#else
|
||||||
#define HTCOLLMAX HTCOLL_SIZE - 16
|
#define HTCOLLMAX (HTCOLL_SIZE - 16)
|
||||||
#endif /* BIGVM */
|
#endif /* BIGVM */
|
||||||
|
|
||||||
/* GetLink gets a new entry from the GC collision table */
|
/* GetLink gets a new entry from the GC collision table */
|
||||||
@@ -43,10 +43,10 @@
|
|||||||
return (NIL); \
|
return (NIL); \
|
||||||
}; \
|
}; \
|
||||||
GETGC((GCENTRY *)HTcoll + 1) = linkoff + 2; \
|
GETGC((GCENTRY *)HTcoll + 1) = linkoff + 2; \
|
||||||
var = (GCENTRY *)(HTcoll + linkoff); \
|
(var) = (GCENTRY *)(HTcoll + linkoff); \
|
||||||
} else { \
|
} else { \
|
||||||
GETGC(HTcoll) = GETGC((GCENTRY *)(HTcoll + linkoff + 1)); \
|
GETGC(HTcoll) = GETGC((GCENTRY *)(HTcoll + linkoff + 1)); \
|
||||||
var = (GCENTRY *)(HTcoll + linkoff); \
|
(var) = (GCENTRY *)(HTcoll + linkoff); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,20 +82,20 @@
|
|||||||
* NewEntry is never called in the course of the reclamation.
|
* NewEntry is never called in the course of the reclamation.
|
||||||
* Thus STKREF case is not needed.
|
* Thus STKREF case is not needed.
|
||||||
*/
|
*/
|
||||||
#define NewEntry(entry, hiptr, casep, ptr) \
|
#define NewEntry(entry, hiptr, casep, ptr) \
|
||||||
{ \
|
{ \
|
||||||
switch (casep) { \
|
switch (casep) { \
|
||||||
case ADDREF: \
|
case ADDREF: \
|
||||||
GETGC(entry) = hiptr | (2 << HTCNTSHIFT); /* set count = 2 */ \
|
GETGC(entry) = (hiptr) | (2 << HTCNTSHIFT); /* set count = 2 */ \
|
||||||
IncAllocCnt(1); \
|
IncAllocCnt(1); \
|
||||||
return NIL; /* not new 0 entry */ \
|
return NIL; /* not new 0 entry */ \
|
||||||
case DELREF: \
|
case DELREF: \
|
||||||
GETGC(entry) = hiptr; /* set count = 0 */ \
|
GETGC(entry) = hiptr; /* set count = 0 */ \
|
||||||
IncAllocCnt(1); \
|
IncAllocCnt(1); \
|
||||||
return ptr; /* new 0 entry */ \
|
return ptr; /* new 0 entry */ \
|
||||||
default: error("GC error: new entry touches stack bit"); \
|
default: error("GC error: new entry touches stack bit"); \
|
||||||
return NIL; /* NOT REACHED */ \
|
return NIL; /* NOT REACHED */ \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -106,13 +106,13 @@
|
|||||||
{ \
|
{ \
|
||||||
switch (casep) { \
|
switch (casep) { \
|
||||||
case ADDREF: \
|
case ADDREF: \
|
||||||
GETGC(entry) = hiptr | (2 << HTCNTSHIFT); /* set count = 2 */ \
|
GETGC(entry) = (hiptr) | (2 << HTCNTSHIFT); /* set count = 2 */ \
|
||||||
return NIL; /* not new 0 entry */ \
|
return NIL; /* not new 0 entry */ \
|
||||||
case DELREF: \
|
case DELREF: \
|
||||||
GETGC(entry) = hiptr; /* set count = 0 */ \
|
GETGC(entry) = hiptr; /* set count = 0 */ \
|
||||||
return ptr; /* new 0 entry */ \
|
return ptr; /* new 0 entry */ \
|
||||||
case STKREF: /* set refcnt to 1, stack bit to 1 */ \
|
case STKREF: /* set refcnt to 1, stack bit to 1 */ \
|
||||||
GETGC(entry) = hiptr | (1 << HTCNTSHIFT) | HTSTKMASK; \
|
GETGC(entry) = (hiptr) | (1 << HTCNTSHIFT) | HTSTKMASK; \
|
||||||
return NIL; \
|
return NIL; \
|
||||||
default: error("GC error: new entry when turning off stack bit"); \
|
default: error("GC error: new entry when turning off stack bit"); \
|
||||||
return NIL; /* NOT REACHED */ \
|
return NIL; /* NOT REACHED */ \
|
||||||
@@ -134,29 +134,29 @@
|
|||||||
*/
|
*/
|
||||||
#define ModEntry(entry, contents, ptr, casep, remove) \
|
#define ModEntry(entry, contents, ptr, casep, remove) \
|
||||||
{ \
|
{ \
|
||||||
if ((contents & HTCNTMASK) == HTCNTMASK) { /* overflow; return non-zero */ \
|
if (((contents) & HTCNTMASK) == HTCNTMASK) { /* overflow; return non-zero */ \
|
||||||
modify_big_reference_count(entry, casep, ptr); \
|
modify_big_reference_count(entry, casep, ptr); \
|
||||||
return NIL; \
|
return NIL; \
|
||||||
} \
|
} \
|
||||||
switch (casep) { \
|
switch (casep) { \
|
||||||
case ADDREF: \
|
case ADDREF: \
|
||||||
contents += (1 << HTCNTSHIFT); \
|
(contents) += (1 << HTCNTSHIFT); \
|
||||||
if ((contents & HTCNTMASK) == HTCNTMASK) { /* overflow */ \
|
if (((contents) & HTCNTMASK) == HTCNTMASK) { /* overflow */ \
|
||||||
GETGC(entry) = contents; \
|
GETGC(entry) = contents; \
|
||||||
enter_big_reference_count(ptr); \
|
enter_big_reference_count(ptr); \
|
||||||
return NIL; \
|
return NIL; \
|
||||||
} \
|
} \
|
||||||
if ((contents & HTCNTSTKMASK) == (1 << HTCNTSHIFT)) { \
|
if (((contents) & HTCNTSTKMASK) == (1 << HTCNTSHIFT)) { \
|
||||||
DecAllocCnt(1); \
|
DecAllocCnt(1); \
|
||||||
goto remove; \
|
goto remove; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
} \
|
} \
|
||||||
break; \
|
break; \
|
||||||
case DELREF: \
|
case DELREF: \
|
||||||
if ((contents >> HTCNTSHIFT) == 0) error("attempt to decrement 0 reference count"); \
|
if (((contents) >> HTCNTSHIFT) == 0) error("attempt to decrement 0 reference count"); \
|
||||||
contents -= (1 << HTCNTSHIFT); \
|
(contents) -= (1 << HTCNTSHIFT); \
|
||||||
if ((contents & HTCNTSTKMASK) == (1 << HTCNTSHIFT)) { \
|
if (((contents) & HTCNTSTKMASK) == (1 << HTCNTSHIFT)) { \
|
||||||
DecAllocCnt(1); \
|
DecAllocCnt(1); \
|
||||||
goto remove; \
|
goto remove; /* NOLINT(bugprone-macro-parentheses) */ \
|
||||||
} \
|
} \
|
||||||
break; \
|
break; \
|
||||||
default: error("GC error: mod entry touches stack bit"); \
|
default: error("GC error: mod entry touches stack bit"); \
|
||||||
@@ -171,14 +171,14 @@
|
|||||||
*/
|
*/
|
||||||
#define RecModEntry(entry, contents, ptr, casep, remove) \
|
#define RecModEntry(entry, contents, ptr, casep, remove) \
|
||||||
{ \
|
{ \
|
||||||
if ((contents & HTCNTMASK) == HTCNTMASK) { /* overflow; return non-zero */ \
|
if (((contents) & HTCNTMASK) == HTCNTMASK) { /* overflow; return non-zero */ \
|
||||||
modify_big_reference_count(entry, casep, ptr); \
|
modify_big_reference_count(entry, casep, ptr); \
|
||||||
return NIL; \
|
return NIL; \
|
||||||
} \
|
} \
|
||||||
switch (casep) { \
|
switch (casep) { \
|
||||||
case ADDREF: \
|
case ADDREF: \
|
||||||
contents += (1 << HTCNTSHIFT); \
|
(contents) += (1 << HTCNTSHIFT); \
|
||||||
if ((contents & HTCNTMASK) == HTCNTMASK) { \
|
if (((contents) & HTCNTMASK) == HTCNTMASK) { \
|
||||||
/* overflow */ \
|
/* overflow */ \
|
||||||
GETGC(entry) = contents; \
|
GETGC(entry) = contents; \
|
||||||
enter_big_reference_count(ptr); \
|
enter_big_reference_count(ptr); \
|
||||||
@@ -186,11 +186,11 @@
|
|||||||
} \
|
} \
|
||||||
break; /* check for possibly deleting entry */ \
|
break; /* check for possibly deleting entry */ \
|
||||||
case DELREF: \
|
case DELREF: \
|
||||||
if ((contents >> HTCNTSHIFT) == 0) error("attempt to decrement 0 reference count"); \
|
if (((contents) >> HTCNTSHIFT) == 0) error("attempt to decrement 0 reference count"); \
|
||||||
contents -= (1 << HTCNTSHIFT); \
|
(contents) -= (1 << HTCNTSHIFT); \
|
||||||
break; \
|
break; \
|
||||||
case STKREF: \
|
case STKREF: \
|
||||||
GETGC(entry) = contents | HTSTKMASK; \
|
GETGC(entry) = (contents) | HTSTKMASK; \
|
||||||
return NIL; \
|
return NIL; \
|
||||||
/* \
|
/* \
|
||||||
case UNSTKREF: \
|
case UNSTKREF: \
|
||||||
@@ -198,7 +198,8 @@
|
|||||||
break; \
|
break; \
|
||||||
*/ \
|
*/ \
|
||||||
} \
|
} \
|
||||||
if ((contents & HTCNTSTKMASK) == (1 << HTCNTSHIFT)) goto remove; \
|
/* NOLINTNEXTLINE(bugprone-macro-parentheses) */ \
|
||||||
|
if (((contents) & HTCNTSTKMASK) == (1 << HTCNTSHIFT)) goto remove; \
|
||||||
GETGC(entry) = contents; \
|
GETGC(entry) = contents; \
|
||||||
return NIL; \
|
return NIL; \
|
||||||
}
|
}
|
||||||
|
|||||||
203
src/gcmain3.c
203
src/gcmain3.c
@@ -52,9 +52,6 @@
|
|||||||
#include "gcrcelldefs.h"
|
#include "gcrcelldefs.h"
|
||||||
#include "gcscandefs.h"
|
#include "gcscandefs.h"
|
||||||
|
|
||||||
#ifdef GCC386
|
|
||||||
#include "inlnPS2.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define WORDSPERCELL 2
|
#define WORDSPERCELL 2
|
||||||
#define MAXHTCNT 63
|
#define MAXHTCNT 63
|
||||||
@@ -74,7 +71,7 @@
|
|||||||
#define Boundp(frame_field) ((frame_field) == 0)
|
#define Boundp(frame_field) ((frame_field) == 0)
|
||||||
#define Stkref(ptr) REC_GCLOOKUP(ptr, STKREF)
|
#define Stkref(ptr) REC_GCLOOKUP(ptr, STKREF)
|
||||||
#define GcreclaimLp(ptr) \
|
#define GcreclaimLp(ptr) \
|
||||||
while ((ptr = gcreccell(ptr)) != NIL) REC_GCLOOKUP(ptr, ADDREF)
|
while (((ptr) = gcreccell(ptr)) != NIL) REC_GCLOOKUP(ptr, ADDREF)
|
||||||
#define HTLPTR ((struct htlinkptr *)(entry))
|
#define HTLPTR ((struct htlinkptr *)(entry))
|
||||||
#define HENTRY ((struct hashentry *)(entry))
|
#define HENTRY ((struct hashentry *)(entry))
|
||||||
#define HTMAIN_ENTRY_COUNT (HTMAIN_SIZE >> 1)
|
#define HTMAIN_ENTRY_COUNT (HTMAIN_SIZE >> 1)
|
||||||
@@ -99,203 +96,6 @@
|
|||||||
#define STKREFBIT 0x200
|
#define STKREFBIT 0x200
|
||||||
#endif /* BIGVM */
|
#endif /* BIGVM */
|
||||||
|
|
||||||
#ifdef GCC386
|
|
||||||
/* byte-swapped, 386 assembler version */
|
|
||||||
LispPTR gcmapscan() {
|
|
||||||
volatile DLword probe;
|
|
||||||
volatile DLword *entry;
|
|
||||||
volatile DLword offset;
|
|
||||||
volatile LispPTR ptr;
|
|
||||||
|
|
||||||
asm volatile(
|
|
||||||
" \n\
|
|
||||||
movl $32768,%%edi / probe = HTSIZE. \n\
|
|
||||||
.align 4 \n\
|
|
||||||
nextentry: / nextentry: \n\
|
|
||||||
decl %%edi \n\
|
|
||||||
js returNIL \n\
|
|
||||||
leal 0(,%%edi,2),%%esi \n\
|
|
||||||
addl HTmain,%%esi /htlptr = (struct htlinkptr *)(HTmain+probe); \n\
|
|
||||||
.align 4 \n\
|
|
||||||
scanloop: \n\
|
|
||||||
movl %%esi,%%edx \n\
|
|
||||||
xorb $2,%%dl \n\
|
|
||||||
movzwl (%%edx),%%eax / contents = ((struct htlinkptr *)WORDPTR(htlptr))->contents \n\
|
|
||||||
testl %%eax,%%eax / if (contents && \n\
|
|
||||||
je scanbot \n\
|
|
||||||
testb $1,%%al \n\
|
|
||||||
jne scanok \n\
|
|
||||||
testb $254,%%ah \n\
|
|
||||||
jne scanbot \n\
|
|
||||||
scanok: \n\
|
|
||||||
jmp scandone \n\
|
|
||||||
.align 4 \n\
|
|
||||||
scanbot: \n\
|
|
||||||
addl $-2,%%esi / end of while loop. \n\
|
|
||||||
decl %%edi \n\
|
|
||||||
jns scanloop \n\
|
|
||||||
jmp returNIL \n\
|
|
||||||
\n\
|
|
||||||
\n\
|
|
||||||
scandone: \n\
|
|
||||||
movl %%edx,%0 / entry = (DLword *) HTmain + probe. \n\
|
|
||||||
retry: / retry: \n\
|
|
||||||
movl %0,%%ecx \n\
|
|
||||||
movzwl (%%ecx),%%eax \n\
|
|
||||||
testb $1,%%al / if HENTRY->collision, \n\
|
|
||||||
je nocollision \n\
|
|
||||||
xorl %%esi,%%esi / prev = 0 \n\
|
|
||||||
andl $65534,%%eax \n\
|
|
||||||
linkloop: // linkloop: \n\
|
|
||||||
leal 0(,%%eax,2),%%ecx \n\
|
|
||||||
addl HTcoll,%%ecx \n\
|
|
||||||
movw 2(%%ecx),%%ax / offset = ((struct htcoll *)link)->free_ptr; \n\
|
|
||||||
testb $254,%%ah / if StkCountIsZero(offset) \n\
|
|
||||||
jne stknz \n\
|
|
||||||
sall $15,%%eax / , (probe << 1)); \n\
|
|
||||||
andl $16711680,%%eax \n\
|
|
||||||
leal 0(,%%edi,2),%%edx \n\
|
|
||||||
orl %%eax,%%edx \n\
|
|
||||||
movl %%edx,%2 / to ptr. \n\
|
|
||||||
testl %%esi,%%esi / DelLink. if (prev != 0) \n\
|
|
||||||
je prevZ \n\
|
|
||||||
leal 2(%%esi),%%edx / GETWORD((DLword *)prev + 1) = GETWORD((DLword *)link + 1) \n\
|
|
||||||
xorb $2,%%dl \n\
|
|
||||||
leal 2(%%ecx),%%eax \n\
|
|
||||||
xorb $2,%%al \n\
|
|
||||||
movw (%%eax),%%ax \n\
|
|
||||||
jmp freelink \n\
|
|
||||||
.align 4 \n\
|
|
||||||
prevZ: \n\
|
|
||||||
movl %0,%%edx / else GETWORD((DLword *)entry) = GETWORD((DLword *)link + 1) \n\
|
|
||||||
leal 2(%%ecx),%%eax \n\
|
|
||||||
xorb $2,%%al \n\
|
|
||||||
movw (%%eax),%%ax \n\
|
|
||||||
orb $1,%%al \n\
|
|
||||||
freelink: / FreeLink \n\
|
|
||||||
movw %%ax,(%%edx) \n\
|
|
||||||
movl %%ecx,%%eax \n\
|
|
||||||
xorb $2,%%al \n\
|
|
||||||
movw $0,(%%eax) \n\
|
|
||||||
leal 2(%%ecx),%%eax \n\
|
|
||||||
xorb $2,%%al \n\
|
|
||||||
movl HTcoll,%%edx / GETWORD(link+1) = GETWORD(HTcoll); \n\
|
|
||||||
xorb $2,%%dl \n\
|
|
||||||
movw (%%edx),%%dx \n\
|
|
||||||
movw %%dx,(%%eax) \n\
|
|
||||||
movl HTcoll,%%edx / GETWORD(HTcoll) = (link - HTcoll); \n\
|
|
||||||
xorb $2,%%dl \n\
|
|
||||||
movl %%ecx,%%eax \n\
|
|
||||||
subl HTcoll,%%eax \n\
|
|
||||||
sarl $1,%%eax \n\
|
|
||||||
movw %%ax,(%%edx) \n\
|
|
||||||
movl %0,%%esi / link = (DLword *)HTcoll + GetLinkptr(GETWORD((DLword *)entry \n\
|
|
||||||
movw (%%esi),%%ax \n\
|
|
||||||
andl $65534,%%eax \n\
|
|
||||||
addl %%eax,%%eax \n\
|
|
||||||
movl %%eax,%%ecx \n\
|
|
||||||
addl HTcoll,%%ecx \n\
|
|
||||||
leal 2(%%ecx),%%edx / if (GETWORD((DLword *)link + 1) == 0) { \n\
|
|
||||||
xorb $2,%%dl \n\
|
|
||||||
cmpw $0,(%%edx) \n\
|
|
||||||
jne sgclp1 \n\
|
|
||||||
movl %%ecx,%%eax / GETWORD((DLword *)entry) = GETWORD((DLword *)link) \n\
|
|
||||||
xorb $2,%%al \n\
|
|
||||||
movw (%%eax),%%bx \n\
|
|
||||||
movw %%bx,(%%esi) \n\
|
|
||||||
movw $0,(%%eax) / FreeLink: GETWORD(link) = 0 \n\
|
|
||||||
movl HTcoll,%%eax / GETWORD(link+1) = GETWORD(HTcoll) \n\
|
|
||||||
xorb $2,%%al \n\
|
|
||||||
movw (%%eax),%%bx \n\
|
|
||||||
movw %%bx,(%%edx) \n\
|
|
||||||
movl %%ecx,%%ebx \n\
|
|
||||||
subl HTcoll,%%ebx \n\
|
|
||||||
sarl $1,%%ebx \n\
|
|
||||||
movw %%bx,(%%eax) \n\
|
|
||||||
.align 4 \n\
|
|
||||||
sgclp1: / start of gcloop 1 - do setup \n\
|
|
||||||
movl GcDisabled_word,%%ecx \n\
|
|
||||||
movl MDStypetbl,%%ebx \n\
|
|
||||||
gclp1: / GcreclaimLp: \n\
|
|
||||||
pushl %2 \n\
|
|
||||||
call gcreccell \n\
|
|
||||||
addl $4,%%esp \n\
|
|
||||||
movl %%eax,%2 \n\
|
|
||||||
testl %%eax,%%eax \n\
|
|
||||||
je eogclp1 \n\
|
|
||||||
shrl $9,%%eax \n\
|
|
||||||
leal 0(%%ebx,%%eax,2),%%eax \n\
|
|
||||||
xorb $2,%%al \n\
|
|
||||||
cmpw $0,(%%eax) \n\
|
|
||||||
jl gclp1 \n\
|
|
||||||
cmpl $76,(%%ecx) \n\
|
|
||||||
je gclp1 \n\
|
|
||||||
pushl $0 \n\
|
|
||||||
pushl %2 \n\
|
|
||||||
call rec_htfind \n\
|
|
||||||
addl $8,%%esp \n\
|
|
||||||
jmp gclp1 \n\
|
|
||||||
.align 4 \n\
|
|
||||||
.align 4 \n\
|
|
||||||
eogclp1: \n\
|
|
||||||
movl %0,%%eax / if (HTLPTR->contents == 0) \n\
|
|
||||||
cmpw $0,(%%eax) \n\
|
|
||||||
je nextentry / goto nextentry; \n\
|
|
||||||
jmp retry / else goto retry; \n\
|
|
||||||
.align 4 \n\
|
|
||||||
.align 4 \n\
|
|
||||||
\n\
|
|
||||||
stknz: \n\
|
|
||||||
movw (%%ecx),%%ax / if ((offset = ((struct htcoll *)link)->next_free)) \n\
|
|
||||||
testw %%ax,%%ax \n\
|
|
||||||
je nextentry \n\
|
|
||||||
movl %%ecx,%%esi \n\
|
|
||||||
andl $65535,%%eax \n\
|
|
||||||
jmp linkloop \n\
|
|
||||||
.align 4 \n\
|
|
||||||
.align 4 \n\
|
|
||||||
nocollision: \n\
|
|
||||||
testw $65024,(%%ecx) / if (StkCntIsZero(HTLPTR->contents)) { \n\
|
|
||||||
jne nextentry \n\
|
|
||||||
movw (%%ecx),%%dx /ptr = VAG2(HENTRY->segnum, (probe << 1)); \n\
|
|
||||||
sall $15,%%edx \n\
|
|
||||||
andl $16711680,%%edx \n\
|
|
||||||
leal (,%%edi,2),%%eax \n\
|
|
||||||
orl %%eax,%%edx \n\
|
|
||||||
movl %%edx,%2 \n\
|
|
||||||
movw $0,(%%ecx) / HTLPTR->contents = 0 \n\
|
|
||||||
.align 4 \n\
|
|
||||||
movl GcDisabled_word,%%ecx \n\
|
|
||||||
movl MDStypetbl,%%ebx \n\
|
|
||||||
gclp2: / GcreclaimLp \n\
|
|
||||||
pushl %2 \n\
|
|
||||||
call gcreccell \n\
|
|
||||||
addl $4,%%esp \n\
|
|
||||||
movl %%eax,%2 \n\
|
|
||||||
testl %%eax,%%eax \n\
|
|
||||||
je nextentry \n\
|
|
||||||
shrl $9,%%eax \n\
|
|
||||||
leal 0(%%ebx,%%eax,2),%%eax \n\
|
|
||||||
xorb $2,%%al \n\
|
|
||||||
cmpw $0,(%%eax) \n\
|
|
||||||
jl gclp2 \n\
|
|
||||||
cmpl $76,(%%ecx) \n\
|
|
||||||
je gclp2 \n\
|
|
||||||
pushl $0 \n\
|
|
||||||
pushl %2 \n\
|
|
||||||
call rec_htfind \n\
|
|
||||||
addl $8,%%esp \n\
|
|
||||||
jmp gclp2 \n\
|
|
||||||
.align 4 \n\
|
|
||||||
returNIL: \n\
|
|
||||||
"
|
|
||||||
: "=g"(entry), "=g"(offset), "=g"(ptr)
|
|
||||||
:
|
|
||||||
: "ax", "dx", "cx", "bx", "si", "di");
|
|
||||||
|
|
||||||
return NIL;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
|
|
||||||
LispPTR gcmapscan(void) {
|
LispPTR gcmapscan(void) {
|
||||||
register GCENTRY probe;
|
register GCENTRY probe;
|
||||||
@@ -342,7 +142,6 @@ nextentry:
|
|||||||
}
|
}
|
||||||
return (NIL);
|
return (NIL);
|
||||||
}
|
}
|
||||||
#endif /* GCC386 */
|
|
||||||
|
|
||||||
LispPTR gcmapunscan(void) {
|
LispPTR gcmapunscan(void) {
|
||||||
register GCENTRY probe;
|
register GCENTRY probe;
|
||||||
|
|||||||
@@ -44,12 +44,12 @@
|
|||||||
#define HTBIGENTRYSIZE 4
|
#define HTBIGENTRYSIZE 4
|
||||||
#define WORDSPERPAGE 256
|
#define WORDSPERPAGE 256
|
||||||
#define MAXTYPENUMBER INIT_TYPENUM
|
#define MAXTYPENUMBER INIT_TYPENUM
|
||||||
#define Oddp(num) (((num % 2) != 0) ? 1 : 0)
|
#define Oddp(num) ((((num) % 2) != 0) ? 1 : 0)
|
||||||
#define Evenp(num, prim) (((num % prim) == 0) ? 1 : 0)
|
#define Evenp(num, prim) ((((num) % (prim)) == 0) ? 1 : 0)
|
||||||
#define Increment_Allocation_Count(n) \
|
#define Increment_Allocation_Count(n) \
|
||||||
if (*Reclaim_cnt_word != NIL) { \
|
if (*Reclaim_cnt_word != NIL) { \
|
||||||
if (*Reclaim_cnt_word > n) \
|
if (*Reclaim_cnt_word > (n)) \
|
||||||
(*Reclaim_cnt_word) -= n; \
|
(*Reclaim_cnt_word) -= (n); \
|
||||||
else { \
|
else { \
|
||||||
*Reclaim_cnt_word = NIL; \
|
*Reclaim_cnt_word = NIL; \
|
||||||
doreclaim(); \
|
doreclaim(); \
|
||||||
|
|||||||
@@ -91,16 +91,16 @@
|
|||||||
#endif /* NEWCDRCODING */
|
#endif /* NEWCDRCODING */
|
||||||
|
|
||||||
#define TODO_LIMIT 1000
|
#define TODO_LIMIT 1000
|
||||||
#define ADD_TO_DO(ptr, offset) \
|
#define ADD_TO_DO(ptr, offset) \
|
||||||
if (do_count < TODO_LIMIT) { \
|
if (do_count < TODO_LIMIT) { \
|
||||||
if (ptr & 0xF0000000) error("illegal ptr in addtodo"); \
|
if ((ptr) & 0xF0000000) error("illegal ptr in addtodo"); \
|
||||||
to_do[do_count] = (ptr); \
|
to_do[do_count] = (ptr); \
|
||||||
to_do_offset[do_count] = offset; \
|
to_do_offset[do_count] = offset; \
|
||||||
todo_uses++; \
|
todo_uses++; \
|
||||||
/*REC_GCLOOKUP((ptr), ADDREF);*/ \
|
/*REC_GCLOOKUP((ptr), ADDREF);*/ \
|
||||||
do_count++; \
|
do_count++; \
|
||||||
} else { /* error("GC missing some to-do's"); */ \
|
} else { /* error("GC missing some to-do's"); */ \
|
||||||
todo_misses++; \
|
todo_misses++; \
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned todo_uses = 0;
|
unsigned todo_uses = 0;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
#ifdef BIGVM
|
#ifdef BIGVM
|
||||||
#define HTSTKBIT 0x10000 /* = 512 */
|
#define HTSTKBIT 0x10000 /* = 512 */
|
||||||
#define HTENDS ((struct hashentry *)htlptr)
|
#define HTENDS ((struct hashentry *)htlptr)
|
||||||
#define GetStkCnt(entry1) (entry1 >> 16)
|
#define GetStkCnt(entry1) ((entry1) >> 16)
|
||||||
#else
|
#else
|
||||||
#define HTSTKBIT 0x200 /* = 512 */
|
#define HTSTKBIT 0x200 /* = 512 */
|
||||||
#define HTENDS ((struct hashentry *)htlptr)
|
#define HTENDS ((struct hashentry *)htlptr)
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
#define MAKE_FXCOPY(fx68k) \
|
#define MAKE_FXCOPY(fx68k) \
|
||||||
{ \
|
{ \
|
||||||
BEFORE_CONTEXTSW; \
|
BEFORE_CONTEXTSW; \
|
||||||
if ((fx68k = (FX *)make_FXcopy(fx68k)) == 0) { return (1); /* Whole space exhausted */ } \
|
if (((fx68k) = (FX *)make_FXcopy(fx68k)) == 0) { return (1); /* Whole space exhausted */ } \
|
||||||
AFTER_CONTEXTSW; \
|
AFTER_CONTEXTSW; \
|
||||||
CHECK_FX(fx68k); \
|
CHECK_FX(fx68k); \
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,9 +49,6 @@
|
|||||||
#include "commondefs.h"
|
#include "commondefs.h"
|
||||||
#include "mkcelldefs.h"
|
#include "mkcelldefs.h"
|
||||||
|
|
||||||
#ifdef GCC386
|
|
||||||
#include "inlnPS2.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TCPhostlookup 0
|
#define TCPhostlookup 0
|
||||||
#define TCPservicelookup 1
|
#define TCPservicelookup 1
|
||||||
|
|||||||
383
src/initdsp.c
383
src/initdsp.c
@@ -18,20 +18,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifndef NOPIXRECT
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#include <sunwindow/cms.h>
|
|
||||||
#include <sunwindow/win_ioctl.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <pixrect/pixrect_hs.h>
|
|
||||||
#include <sun/fbio.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <sys/file.h>
|
|
||||||
#include <pixrect/pr_planegroups.h>
|
|
||||||
#endif /* NOPIXRECT */
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef OS4
|
#ifdef OS4
|
||||||
#include <vfork.h>
|
#include <vfork.h>
|
||||||
@@ -76,21 +62,6 @@ extern DspInterface currentdsp;
|
|||||||
#define FBTYPE_SUNFAST_COLOR 12
|
#define FBTYPE_SUNFAST_COLOR 12
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
struct screen LispScreen;
|
|
||||||
#ifndef NOPIXRECT
|
|
||||||
struct pixrect *CursorBitMap, *InvisibleCursorBitMap;
|
|
||||||
struct pixrect *SrcePixRect, *DestPixRect;
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
int black = 0, white = -1;
|
|
||||||
struct pixrect *ColorDisplayPixrect, *DisplayRegionPixrect;
|
|
||||||
#define COPY_PIXRECT_TO_COLOR (PIX_SRC /*| PIX_DONTCLIP */)
|
|
||||||
#ifdef DEBUG
|
|
||||||
int oldred[2], oldgreen[2], oldblue[2];
|
|
||||||
#endif /* DEBUG */
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
#endif /* NOPIXRECT */
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
int LispWindowFd = -1;
|
int LispWindowFd = -1;
|
||||||
int FrameBufferFd = -1;
|
int FrameBufferFd = -1;
|
||||||
@@ -107,10 +78,6 @@ DLword *DisplayRegion68k_end_addr;
|
|||||||
/* some functions use this variable when undef DISPLAYBUFFER */
|
/* some functions use this variable when undef DISPLAYBUFFER */
|
||||||
DLword *DISP_MAX_Address;
|
DLword *DISP_MAX_Address;
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
struct cursor CurrentCursor, InvisibleCursor;
|
|
||||||
struct winlock DisplayLockArea;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
extern DLword *EmCursorBitMap68K;
|
extern DLword *EmCursorBitMap68K;
|
||||||
extern IFPAGE *InterfacePage;
|
extern IFPAGE *InterfacePage;
|
||||||
@@ -127,13 +94,6 @@ DLword *DisplayRegion68k_end_addr;
|
|||||||
extern int *Xdisplay; /* DAANGER -jarl nilsson 27-apr-92 */
|
extern int *Xdisplay; /* DAANGER -jarl nilsson 27-apr-92 */
|
||||||
#endif /* XWINDOW */
|
#endif /* XWINDOW */
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
/* For SunOS4.1 Window Security Feature. */
|
|
||||||
int Win_security_p;
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#define SV_ACQUIRE "/bin/sunview1/sv_acquire"
|
|
||||||
#define SV_RELEASE "/bin/sunview1/sv_release"
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
@@ -144,30 +104,6 @@ int Win_security_p;
|
|||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
void init_cursor() {
|
void init_cursor() {
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifndef NOPIXRECT
|
|
||||||
CursorBitMap = mem_create(CURSORWIDTH, CURSORHEIGHT, 1);
|
|
||||||
mpr_mdlinebytes(CursorBitMap) = CURSORWIDTH >> 3; /* 2(byte) */
|
|
||||||
#endif /* NOPIXRECT */
|
|
||||||
|
|
||||||
CurrentCursor.cur_xhot = 0;
|
|
||||||
CurrentCursor.cur_yhot = 0;
|
|
||||||
CurrentCursor.cur_shape = CursorBitMap;
|
|
||||||
CurrentCursor.cur_function = PIX_SRC | PIX_DST;
|
|
||||||
|
|
||||||
/* Invisible Cursor */
|
|
||||||
|
|
||||||
#ifndef NOPIXRECT
|
|
||||||
InvisibleCursorBitMap = mem_create(0, 0, 1);
|
|
||||||
#endif /* NOPIXRECT */
|
|
||||||
|
|
||||||
InvisibleCursor.cur_xhot = 0;
|
|
||||||
InvisibleCursor.cur_yhot = 0;
|
|
||||||
InvisibleCursor.cur_shape = InvisibleCursorBitMap;
|
|
||||||
InvisibleCursor.cur_function = /*PIX_SRC |*/ PIX_DST;
|
|
||||||
win_setcursor(LispWindowFd, &InvisibleCursor);
|
|
||||||
win_setmouseposition(LispWindowFd, 0, 0);
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
@@ -178,18 +114,6 @@ void init_cursor() {
|
|||||||
/* */
|
/* */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
void set_cursor() {
|
void set_cursor() {
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifdef OLD_CURSOR
|
|
||||||
(mpr_d(CursorBitMap))->md_image = (short *)(IOPage->dlcursorbitmap);
|
|
||||||
/* BitmapBase of CurrentCursor
|
|
||||||
* is set to IOPage->dlcursorbitmap
|
|
||||||
*/
|
|
||||||
if (win_setcursor(LispWindowFd, &CurrentCursor) == -1) perror("SET Cursor");
|
|
||||||
if (win_setmouseposition(LispWindowFd, 0, 0) == -1) perror("SET Mouse POS");
|
|
||||||
#else
|
|
||||||
if (win_setcursor(LispWindowFd, &InvisibleCursor) == -1) perror("SET Cursor:");
|
|
||||||
#endif
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
Init_XCursor();
|
Init_XCursor();
|
||||||
@@ -208,22 +132,6 @@ void set_cursor() {
|
|||||||
|
|
||||||
#ifndef COLOR
|
#ifndef COLOR
|
||||||
void clear_display() {
|
void clear_display() {
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
register short *word;
|
|
||||||
register int w, h;
|
|
||||||
word = (short *)DisplayRegion68k;
|
|
||||||
for (h = displayheight; (h--);) {
|
|
||||||
for (w = DisplayRasterWidth; (w--);) { *word++ = 0; }
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
pr_rop(ColorDisplayPixrect, 0, 0, displaywidth, displayheight, PIX_CLR, ColorDisplayPixrect, 0,
|
|
||||||
0);
|
|
||||||
/* Original images are still kept in SYSOUT(DisplayRegion) */
|
|
||||||
/* clear_CG6; */
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
TPRINT(("Enter Clear_display\n"));
|
TPRINT(("Enter Clear_display\n"));
|
||||||
@@ -261,82 +169,11 @@ void clear_display() {
|
|||||||
|
|
||||||
void init_display2(DLword *display_addr, int display_max)
|
void init_display2(DLword *display_addr, int display_max)
|
||||||
{
|
{
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
int mmapstat;
|
|
||||||
#endif
|
|
||||||
int fbgattr_result;
|
|
||||||
struct fbtype my_screen;
|
|
||||||
char groups[PIXPG_OVERLAY + 1];
|
|
||||||
struct fbgattr FBattr;
|
|
||||||
struct pixrect *ColorFb;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
|
|
||||||
/* For SunOS4.1 Window Security Feature. */
|
|
||||||
|
|
||||||
union wait status;
|
|
||||||
|
|
||||||
/* Window Security is available? */
|
|
||||||
if (!access(SV_ACQUIRE, F_OK))
|
|
||||||
Win_security_p = 1;
|
|
||||||
else
|
|
||||||
Win_security_p = 0;
|
|
||||||
|
|
||||||
if (Win_security_p) {
|
|
||||||
switch (vfork()) {
|
|
||||||
case -1: /* Error */ (void)fprintf(stderr, "init_display: Fork failed.\n"); exit(1);
|
|
||||||
|
|
||||||
case 0: /* Child */
|
|
||||||
(void)execl(SV_ACQUIRE, "sv_acquire", "0", "256", "250", 0);
|
|
||||||
/* should not return */
|
|
||||||
(void)fprintf(stderr, "init_display: exec for sv_acquire failed\n");
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
default: /* Parent */
|
|
||||||
/* do nothing */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
(void)wait(&status); /* child dies after changing 6 */
|
|
||||||
|
|
||||||
if (status.w_retcode != 0) {
|
|
||||||
(void)fprintf(stderr, "init_display: failed to set ownership of win devices\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
if ((LispWindowFd = win_screennew(&LispScreen)) == -1) {
|
|
||||||
perror("init_display: can't create LispWindow\n");
|
|
||||||
exit(-1);
|
|
||||||
} else {
|
|
||||||
#ifdef KBINT
|
|
||||||
/* int_io_open(LispWindowFd); JDS 4/27/94 move to initkbd, to try preventing the
|
|
||||||
* move-mouse-never-get-kbd bug */
|
|
||||||
#endif
|
|
||||||
fcntl(LispWindowFd, F_SETFL, fcntl(LispWindowFd, F_GETFL, 0) | O_NONBLOCK);
|
|
||||||
}
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
DisplayRegion68k = (DLword *)display_addr;
|
DisplayRegion68k = (DLword *)display_addr;
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
if ((FrameBufferFd = open(LispScreen.scr_fbname, 2)) == -1) {
|
|
||||||
perror("init_display: can't open FrameBuffer\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* initialize Display parameters */
|
|
||||||
if (ioctl(FrameBufferFd, FBIOGTYPE, &my_screen) == -1) {
|
|
||||||
perror("init_display: can't find screen parameters\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
displaywidth = my_screen.fb_width;
|
|
||||||
displayheight = my_screen.fb_height;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#if (defined(XWINDOW) || defined(DOS))
|
#if (defined(XWINDOW) || defined(DOS))
|
||||||
(currentdsp->device.enter)(currentdsp);
|
(currentdsp->device.enter)(currentdsp);
|
||||||
@@ -351,146 +188,7 @@ void init_display2(DLword *display_addr, int display_max)
|
|||||||
DBPRINT(("FBIOGTYPE w x h = %d x %d\n", displaywidth, displayheight));
|
DBPRINT(("FBIOGTYPE w x h = %d x %d\n", displaywidth, displayheight));
|
||||||
|
|
||||||
DBPRINT(("FBIOGTYPE w x h = %d x %d\n", displaywidth, displayheight));
|
DBPRINT(("FBIOGTYPE w x h = %d x %d\n", displaywidth, displayheight));
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
DBPRINT((" (real) type = %d\n", my_screen.fb_type));
|
|
||||||
DBPRINT((" (real) bpp = %d\n", my_screen.fb_depth));
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
/** now attempt to use the FBIOGATTR call for more information **/
|
|
||||||
|
|
||||||
fbgattr_result = ioctl(FrameBufferFd, FBIOGATTR, &FBattr);
|
|
||||||
if (fbgattr_result >= 0) {
|
|
||||||
DBPRINT(("FBIOGATTR realtype = %d\n", FBattr.real_type));
|
|
||||||
DBPRINT((" (real) size = %d x %d\n", FBattr.fbtype.fb_width, FBattr.fbtype.fb_height));
|
|
||||||
DBPRINT((" (real) type = %d\n", FBattr.fbtype.fb_type));
|
|
||||||
DBPRINT((" (real) bpp = %d\n", FBattr.fbtype.fb_depth));
|
|
||||||
DBPRINT((" emuls= %d %d %d %d\n", FBattr.emu_types[0], FBattr.emu_types[1],
|
|
||||||
FBattr.emu_types[2], FBattr.emu_types[3]));
|
|
||||||
} else { /* fill in defaults */
|
|
||||||
FBattr.real_type = my_screen.fb_type;
|
|
||||||
}
|
|
||||||
DBPRINT(("init_display: FBIOGATTR_result = %d\n", fbgattr_result));
|
|
||||||
/* probe for DISPLAY type */
|
|
||||||
/**********************************************************************
|
|
||||||
* FB-TYPE REAL-TYPE
|
|
||||||
* BW2 2 x
|
|
||||||
* CG2 3 3
|
|
||||||
* CG3 8 6
|
|
||||||
* CG4 2 8
|
|
||||||
* CG6 8 12
|
|
||||||
* CG8 6 7
|
|
||||||
* CG9(GP1) 4 4 ;gpconfig -f -b
|
|
||||||
* CG9(GP1) 2 13 ;gpconfig gpone0 -f -b cgtwo0
|
|
||||||
* ;We assume This config for GXP model
|
|
||||||
***********************************************************************/
|
|
||||||
/* Medley supports real (or emulated) BW2, so check for that first */
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
|
|
||||||
if ((my_screen.fb_type == FBTYPE_SUN2BW) /* real or emulated bwtwo */
|
|
||||||
|| (my_screen.fb_type == FBTYPE_SUN3COLOR)) /* Sun 3 color? */
|
|
||||||
switch (FBattr.real_type) {
|
|
||||||
case FBTYPE_SUN2BW: DisplayType = SUN2BW; break;
|
|
||||||
|
|
||||||
case FBTYPE_MEMCOLOR: /* memory 24-bit (CG8) */
|
|
||||||
{
|
|
||||||
DisplayType = SUNMEMCOLOR;
|
|
||||||
ColorFb = pr_open("/dev/fb");
|
|
||||||
pr_available_plane_groups(ColorFb, sizeof(groups), groups);
|
|
||||||
if (groups[PIXPG_OVERLAY] && groups[PIXPG_OVERLAY_ENABLE]) {
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY_ENABLE);
|
|
||||||
pr_rop(ColorFb, 0, 0, ColorFb->pr_width, ColorFb->pr_height, PIX_SET, 0, 0, 0);
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY);
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case FBTYPE_SUN4COLOR: /* cg4 */
|
|
||||||
case FBTYPE_SUNROP_COLOR: /* cg9(GXP) */
|
|
||||||
{ /* need to clear overlay plane */
|
|
||||||
DisplayType = SUN4COLOR;
|
|
||||||
ColorFb = pr_open("/dev/fb");
|
|
||||||
pr_available_plane_groups(ColorFb, sizeof(groups), groups);
|
|
||||||
if (groups[PIXPG_OVERLAY] && groups[PIXPG_OVERLAY_ENABLE]) {
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY_ENABLE);
|
|
||||||
pr_rop(ColorFb, 0, 0, ColorFb->pr_width, ColorFb->pr_height, PIX_SET, 0, 0, 0);
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf("initdisplay: Unsupported FBreal_type %d\n", FBattr.real_type);
|
|
||||||
DisplayType = (my_screen.fb_type) << 3;
|
|
||||||
/* should be able to proceed, since its an emulated bwtwo */
|
|
||||||
}
|
|
||||||
else { /* not currently a SUN2BW, perhaps can emulate it? */
|
|
||||||
if (fbgattr_result >= 0) { /* got gattrs, can try sattr */
|
|
||||||
#ifdef DEBUG
|
|
||||||
error("fb bwtwo emulation not implemented, q to proceed\n");
|
|
||||||
#endif /* DEBUG */
|
|
||||||
} else {
|
|
||||||
error("Not cgfour or bwtwo, q to attempt to proceed");
|
|
||||||
}
|
|
||||||
printf("initdisplay: Unsupported FBreal_type %d\n", FBattr.real_type);
|
|
||||||
DisplayType = (my_screen.fb_type) << 3;
|
|
||||||
/* try to muddle on */
|
|
||||||
}
|
|
||||||
#else /* DISPLAYBUFFER is defined, then: */
|
|
||||||
DisplayRegion68k_end_addr = DisplayRegion68k + DisplayRasterWidth * displayheight;
|
|
||||||
if (my_screen.fb_type == FBTYPE_SUN2BW) /* real or emulated bwtwo */
|
|
||||||
switch (FBattr.real_type) {
|
|
||||||
case FBTYPE_SUN4COLOR: { /* need to clear overlay plane */
|
|
||||||
DisplayType = SUN4COLOR;
|
|
||||||
ColorFb = pr_open("/dev/fb");
|
|
||||||
pr_available_plane_groups(ColorFb, sizeof(groups), groups);
|
|
||||||
if (groups[PIXPG_OVERLAY] && groups[PIXPG_OVERLAY_ENABLE]) {
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY_ENABLE);
|
|
||||||
pr_rop(ColorFb, 0, 0, ColorFb->pr_width, ColorFb->pr_height, PIX_CLR, 0, 0, 0);
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_8BIT_COLOR);
|
|
||||||
}
|
|
||||||
ColorDisplayPixrect = ColorFb;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default: ColorDisplayPixrect = pr_open("/dev/fb"); break;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (my_screen.fb_type == FBTYPE_SUN4COLOR) { /* cg3 or cg6 */
|
|
||||||
switch (FBattr.real_type) {
|
|
||||||
case FBTYPE_SUN3COLOR: /* cg3 */
|
|
||||||
/* DisplayType = SUN3COLOR; */
|
|
||||||
DisplayType = (FBattr.real_type) << 3;
|
|
||||||
break;
|
|
||||||
case FBTYPE_SUNFAST_COLOR: /* cg6 */
|
|
||||||
/* DisplayType = SUNFASTCOLOR; */
|
|
||||||
DisplayType = (FBattr.real_type) << 3;
|
|
||||||
break;
|
|
||||||
default: /* unknown display */ DisplayType = (FBattr.real_type) << 3; break;
|
|
||||||
} /* end switch */
|
|
||||||
ColorDisplayPixrect = pr_open("/dev/fb");
|
|
||||||
} /* end else if() */
|
|
||||||
|
|
||||||
else
|
|
||||||
ColorDisplayPixrect = pr_open("/dev/fb");
|
|
||||||
DisplayRegionPixrect = mem_point(displaywidth, displayheight, 1, display_addr);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
pr_getcolormap(ColorDisplayPixrect, 0, 2, oldred, oldgreen, oldblue);
|
|
||||||
#endif /* DEBUG */
|
|
||||||
DBPRINT(("Color map for color pixrect:\n 0: R: %d, G: %d, B: %d\n 1: R: %d, G: %d, B: %d\n",
|
|
||||||
oldred[0], oldgreen[0], oldblue[0], oldred[1], oldgreen[1], oldblue[1]));
|
|
||||||
DBPRINT(("Color depth = %d.\n", ColorDisplayPixrect->pr_depth));
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, 1, 1, &black, &black, &black);
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, 0, 1, &white, &white, &white);
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, 255, 1, &black, &black, &black);
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, (1 << ColorDisplayPixrect->pr_depth) - 1, 1, &black, &black,
|
|
||||||
&black);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DisplayLockArea.wl_rect.r_width = displaywidth;
|
|
||||||
DisplayLockArea.wl_rect.r_height = displayheight;
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
DisplayType = SUN2BW;
|
DisplayType = SUN2BW;
|
||||||
@@ -504,25 +202,6 @@ void init_display2(DLword *display_addr, int display_max)
|
|||||||
DBPRINT((" length : 0x%x\n", DisplayByteSize));
|
DBPRINT((" length : 0x%x\n", DisplayByteSize));
|
||||||
DBPRINT((" pg size: 0x%x\n", getpagesize()));
|
DBPRINT((" pg size: 0x%x\n", getpagesize()));
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
mmapstat = (int)mmap(DisplayRegion68k, DisplayByteSize, PROT_READ | PROT_WRITE,
|
|
||||||
#ifdef OS4
|
|
||||||
MAP_FIXED |
|
|
||||||
#endif
|
|
||||||
MAP_SHARED,
|
|
||||||
FrameBufferFd, 0);
|
|
||||||
|
|
||||||
DBPRINT(("after mmap: 0x%x\n", mmapstat));
|
|
||||||
|
|
||||||
if (mmapstat == -1) {
|
|
||||||
perror("init_display: ERROR at mmap system call\n");
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
#endif /* ifndef DISPLAYBUFFER */
|
|
||||||
|
|
||||||
DBPRINT(("after mem_point\n"));
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
(currentdsp->cleardisplay)(currentdsp);
|
(currentdsp->cleardisplay)(currentdsp);
|
||||||
@@ -532,11 +211,6 @@ void init_display2(DLword *display_addr, int display_max)
|
|||||||
|
|
||||||
DBPRINT(("after clear_display()\n"));
|
DBPRINT(("after clear_display()\n"));
|
||||||
|
|
||||||
#if defined(SUNDISPLAY) && !defined(NOPIXRECT)
|
|
||||||
/* initialize pixrect used in pilotbitblt */
|
|
||||||
SrcePixRect = mem_point(0, 0, 1, NULL);
|
|
||||||
DestPixRect = mem_point(0, 0, 1, NULL);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DBPRINT(("exiting init_display\n"));
|
DBPRINT(("exiting init_display\n"));
|
||||||
}
|
}
|
||||||
@@ -549,45 +223,12 @@ void init_display2(DLword *display_addr, int display_max)
|
|||||||
/* */
|
/* */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
void display_before_exit() {
|
void display_before_exit() {
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
union wait status;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef TRUECOLOR
|
#ifdef TRUECOLOR
|
||||||
truecolor_before_exit();
|
truecolor_before_exit();
|
||||||
#endif /* TRUECOLOR */
|
#endif /* TRUECOLOR */
|
||||||
|
|
||||||
clear_display();
|
clear_display();
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
/* win_remove( LispWindowFd ); */
|
|
||||||
win_screendestroy(LispWindowFd);
|
|
||||||
#ifdef KBINT
|
|
||||||
int_io_close(LispWindowFd);
|
|
||||||
#endif
|
|
||||||
close(LispWindowFd);
|
|
||||||
|
|
||||||
if (Win_security_p) {
|
|
||||||
switch (vfork()) {
|
|
||||||
case -1: /* Error */ (void)fprintf(stderr, "display_before_exit: Fork failed.\n"); exit(1);
|
|
||||||
|
|
||||||
case 0: /* Child */
|
|
||||||
(void)execl(SV_RELEASE, "sv_release", 0);
|
|
||||||
/* should not return */
|
|
||||||
(void)fprintf(stderr, "display_before_exit: exec for sv_release failed\n");
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
default: /* Parent */
|
|
||||||
/* do nothing */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
(void)wait(&status);
|
|
||||||
if (status.w_retcode != 0) {
|
|
||||||
(void)fprintf(stderr, "display_before_raid: failed to set ownership of win devices\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#if defined(XWINDOW) || defined(DOS)
|
#if defined(XWINDOW) || defined(DOS)
|
||||||
(currentdsp->device.exit)(currentdsp);
|
(currentdsp->device.exit)(currentdsp);
|
||||||
@@ -625,12 +266,6 @@ in_display_segment(baseaddr)
|
|||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
void flush_display_buffer() {
|
void flush_display_buffer() {
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
pr_rop(ColorDisplayPixrect, 0, 0, displaywidth, displayheight, COPY_PIXRECT_TO_COLOR,
|
|
||||||
DisplayRegionPixrect, 0, 0);
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
(currentdsp->bitblt_to_screen)(currentdsp, DisplayRegion68k, currentdsp->Visible.x,
|
(currentdsp->bitblt_to_screen)(currentdsp, DisplayRegion68k, currentdsp->Visible.x,
|
||||||
@@ -662,13 +297,6 @@ void flush_display_buffer() {
|
|||||||
|
|
||||||
void flush_display_region(int x, int y, int w, int h)
|
void flush_display_region(int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
|
|
||||||
pr_rop(ColorDisplayPixrect, x, y, w, h, COPY_PIXRECT_TO_COLOR, DisplayRegionPixrect, x, y);
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#if (defined(XWINDOW) || defined(DOS))
|
#if (defined(XWINDOW) || defined(DOS))
|
||||||
TPRINT(("Enter flush_display_region x=%d, y=%d, w=%d, h=%d\n", x, y, w, h));
|
TPRINT(("Enter flush_display_region x=%d, y=%d, w=%d, h=%d\n", x, y, w, h));
|
||||||
@@ -712,13 +340,6 @@ void flush_display_lineregion(UNSIGNED x, DLword *ybase, UNSIGNED w, UNSIGNED h)
|
|||||||
{
|
{
|
||||||
int y;
|
int y;
|
||||||
y = ((DLword *)ybase - DisplayRegion68k) / DLWORD_PERLINE;
|
y = ((DLword *)ybase - DisplayRegion68k) / DLWORD_PERLINE;
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
|
|
||||||
pr_rop(ColorDisplayPixrect, x, y, w, h, COPY_PIXRECT_TO_COLOR, DisplayRegionPixrect, x, y);
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#if (defined(XWINDOW) || defined(DOS))
|
#if (defined(XWINDOW) || defined(DOS))
|
||||||
TPRINT(("Enter flush_display_lineregion x=%d, y=%d, w=%d, h=%d\n", x, y, w, h));
|
TPRINT(("Enter flush_display_lineregion x=%d, y=%d, w=%d, h=%d\n", x, y, w, h));
|
||||||
@@ -751,9 +372,7 @@ void flush_display_ptrregion(DLword *ybase, UNSIGNED bitoffset, UNSIGNED w, UNSI
|
|||||||
y = baseoffset / DLWORD_PERLINE;
|
y = baseoffset / DLWORD_PERLINE;
|
||||||
x = bitoffset + (BITSPERWORD * (baseoffset - (DLWORD_PERLINE * y)));
|
x = bitoffset + (BITSPERWORD * (baseoffset - (DLWORD_PERLINE * y)));
|
||||||
|
|
||||||
#if (defined(SUNDISPLAY) && defined(DISPLAYBUFFER))
|
#if (defined(XWINDOW) || defined(DOS))
|
||||||
pr_rop(ColorDisplayPixrect, x, y, w, h, COPY_PIXRECT_TO_COLOR, DisplayRegionPixrect, x, y);
|
|
||||||
#elif (defined(XWINDOW) || defined(DOS))
|
|
||||||
TPRINT(("Enter flush_display_ptrregion\n x=%d, y=%d, w=%d, h=%d\n", x, y, w, h));
|
TPRINT(("Enter flush_display_ptrregion\n x=%d, y=%d, w=%d, h=%d\n", x, y, w, h));
|
||||||
(currentdsp->bitblt_to_screen)(currentdsp, DisplayRegion68k, x, y, w, h);
|
(currentdsp->bitblt_to_screen)(currentdsp, DisplayRegion68k, x, y, w, h);
|
||||||
TPRINT(("Exit flush_display_ptrregion\n"));
|
TPRINT(("Exit flush_display_ptrregion\n"));
|
||||||
|
|||||||
@@ -31,15 +31,6 @@
|
|||||||
#include <stk.h>
|
#include <stk.h>
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#include <sundev/kbd.h>
|
|
||||||
#include <sundev/kbio.h>
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#include <sunwindow/cms.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <sunwindow/win_ioctl.h>
|
|
||||||
#include <pixrect/pixrect_hs.h>
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
@@ -76,9 +67,6 @@ extern MouseInterface currentmouse;
|
|||||||
extern KbdInterface currentkbd;
|
extern KbdInterface currentkbd;
|
||||||
extern DspInterface currentdsp;
|
extern DspInterface currentdsp;
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
extern struct screen LispScreen;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
extern int LispWindowFd;
|
extern int LispWindowFd;
|
||||||
int LispKbdFd = -1;
|
int LispKbdFd = -1;
|
||||||
@@ -88,9 +76,6 @@ int DebugKBD = NIL;
|
|||||||
FILE *KBlog;
|
FILE *KBlog;
|
||||||
|
|
||||||
extern fd_set LispReadFds;
|
extern fd_set LispReadFds;
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
struct inputmask LispEventMask;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
IOPAGE *IOPage68K;
|
IOPAGE *IOPage68K;
|
||||||
|
|
||||||
@@ -214,33 +199,13 @@ u_char DOSLispKeyMap_101[0x80] = {
|
|||||||
|
|
||||||
void init_keyboard(int flg) /* if 0 init else re-init */
|
void init_keyboard(int flg) /* if 0 init else re-init */
|
||||||
{
|
{
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
int keytrans;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
set_kbd_iopointers();
|
set_kbd_iopointers();
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
if ((LispKbdFd = open(LispScreen.scr_kbdname, O_RDWR)) == -1) {
|
|
||||||
fprintf(stderr, "can't open %s\n", LispScreen.scr_kbdname);
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
if (flg == 0) { keyboardtype(LispKbdFd); }
|
if (flg == 0) { keyboardtype(LispKbdFd); }
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
#if XWINDOW
|
||||||
keytrans = TR_UNTRANS_EVENT; /* keyboard does not encode key */
|
|
||||||
if (ioctl(LispKbdFd, KIOCTRANS, &keytrans) == -1) {
|
|
||||||
fprintf(stderr, "Error at ioctl errno =%d\n", errno);
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
close(LispKbdFd);
|
|
||||||
#ifdef KBINT
|
|
||||||
int_io_open(LispWindowFd); /* from init_dsp, try to prevent mouse-move-no-kbd bug */
|
|
||||||
#endif /* KBINT */
|
|
||||||
seteventmask(&LispEventMask);
|
|
||||||
#elif XWINDOW
|
|
||||||
init_Xevent(currentdsp);
|
init_Xevent(currentdsp);
|
||||||
|
|
||||||
#elif DOS
|
#elif DOS
|
||||||
@@ -262,22 +227,7 @@ void init_keyboard(int flg) /* if 0 init else re-init */
|
|||||||
/* ----------------------------------------------------------------*/
|
/* ----------------------------------------------------------------*/
|
||||||
|
|
||||||
void device_before_exit() {
|
void device_before_exit() {
|
||||||
#ifdef SUNDISPLAY
|
#if DOS
|
||||||
int keytrans;
|
|
||||||
|
|
||||||
if ((LispKbdFd = open(LispScreen.scr_kbdname, O_RDWR)) == -1) {
|
|
||||||
fprintf(stderr, "can't open %s\n", LispScreen.scr_kbdname);
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
keytrans = TR_EVENT; /* keyboard encodes key */
|
|
||||||
if (ioctl(LispKbdFd, KIOCTRANS, &keytrans) == -1) {
|
|
||||||
fprintf(stderr, "Error at ioctl errno =%d\n", errno);
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
close(LispKbdFd);
|
|
||||||
|
|
||||||
#elif DOS
|
|
||||||
(currentmouse->device.exit)(currentmouse, currentdsp);
|
(currentmouse->device.exit)(currentmouse, currentdsp);
|
||||||
(currentkbd->device.exit)(currentkbd);
|
(currentkbd->device.exit)(currentkbd);
|
||||||
#endif /* SUNDISPLAY DOS*/
|
#endif /* SUNDISPLAY DOS*/
|
||||||
@@ -315,24 +265,6 @@ void set_kbd_iopointers() {
|
|||||||
|
|
||||||
/* ----------------------------------------------------------------*/
|
/* ----------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
void seteventmask(struct inputmask *eventmask)
|
|
||||||
{
|
|
||||||
input_imnull(eventmask);
|
|
||||||
eventmask->im_flags |= IM_ASCII | IM_NEGASCII | IM_NEGEVENT;
|
|
||||||
|
|
||||||
win_setinputcodebit(eventmask, MS_LEFT);
|
|
||||||
win_setinputcodebit(eventmask, MS_MIDDLE);
|
|
||||||
win_setinputcodebit(eventmask, MS_RIGHT);
|
|
||||||
win_setinputcodebit(eventmask, LOC_MOVE);
|
|
||||||
win_unsetinputcodebit(eventmask, LOC_STILL);
|
|
||||||
win_unsetinputcodebit(eventmask, LOC_MOVEWHILEBUTDOWN);
|
|
||||||
win_unsetinputcodebit(eventmask, LOC_WINENTER);
|
|
||||||
win_unsetinputcodebit(eventmask, LOC_WINEXIT);
|
|
||||||
|
|
||||||
win_setinputmask(LispWindowFd, eventmask, eventmask, WIN_NULLLINK);
|
|
||||||
}
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#define MIN_KEYTYPE 3
|
#define MIN_KEYTYPE 3
|
||||||
#define KB_AS3000J (7 + MIN_KEYTYPE)
|
#define KB_AS3000J (7 + MIN_KEYTYPE)
|
||||||
@@ -411,7 +343,7 @@ static u_char *make_X_keymap() {
|
|||||||
XDisplayKeycodes(currentdsp->display_id, &minkey, &maxkey);
|
XDisplayKeycodes(currentdsp->display_id, &minkey, &maxkey);
|
||||||
codecount = maxkey + 1 - minkey;
|
codecount = maxkey + 1 - minkey;
|
||||||
mapping = XGetKeyboardMapping(currentdsp->display_id, minkey, codecount, &symspercode);
|
mapping = XGetKeyboardMapping(currentdsp->display_id, minkey, codecount, &symspercode);
|
||||||
XUNLOCK;
|
XUNLOCK(currentdsp);
|
||||||
|
|
||||||
for (; *key_sym_pairs != -1;) {
|
for (; *key_sym_pairs != -1;) {
|
||||||
int reusable = *key_sym_pairs++, code = *key_sym_pairs++, sym = *key_sym_pairs++, xcode;
|
int reusable = *key_sym_pairs++, code = *key_sym_pairs++, sym = *key_sym_pairs++, xcode;
|
||||||
@@ -500,11 +432,6 @@ void keyboardtype(int fd)
|
|||||||
type = KB_X;
|
type = KB_X;
|
||||||
#elif DOS
|
#elif DOS
|
||||||
type = KB_DOS;
|
type = KB_DOS;
|
||||||
#elif SUNDISPLAY
|
|
||||||
if (ioctl(fd, KIOCTYPE, &type) != 0) {
|
|
||||||
error("keyboardtype:IOCTL(KIOCTYPE) fails (cont. w. type-3");
|
|
||||||
type = KB_SUN3;
|
|
||||||
} /* otherwise, type is set */
|
|
||||||
#endif /* XWINDOW */
|
#endif /* XWINDOW */
|
||||||
} /* if end */
|
} /* if end */
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#ifndef DOS
|
#ifndef DOS
|
||||||
|
|||||||
@@ -16,8 +16,8 @@
|
|||||||
#include "dbprint.h"
|
#include "dbprint.h"
|
||||||
#include "devif.h"
|
#include "devif.h"
|
||||||
|
|
||||||
KbdInterfaceRec _curkbd;
|
KbdInterfaceRec curkbd;
|
||||||
KbdInterface currentkbd = &_curkbd;
|
KbdInterface currentkbd = &curkbd;
|
||||||
|
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
extern void Kbd_event();
|
extern void Kbd_event();
|
||||||
|
|||||||
@@ -22,11 +22,6 @@
|
|||||||
#include <sys/select.h>
|
#include <sys/select.h>
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#include <sundev/kbd.h>
|
|
||||||
#include <sundev/kbio.h>
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#include "lispemul.h"
|
#include "lispemul.h"
|
||||||
|
|
||||||
@@ -55,9 +50,6 @@ extern DspInterface currentdsp;
|
|||||||
*
|
*
|
||||||
****************************************************/
|
****************************************************/
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
extern struct screen LispScreen;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
@@ -72,17 +64,13 @@ void KB_enable(LispPTR *args) /* args[0] : ON/OFF flag
|
|||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
if (args[0] == ATOM_T) {
|
if (args[0] == ATOM_T) {
|
||||||
#ifdef SUNDISPLAY
|
#if XWINDOW
|
||||||
FD_SET(LispWindowFd, &LispReadFds);
|
|
||||||
#elif XWINDOW
|
|
||||||
enable_Xkeyboard(currentdsp);
|
enable_Xkeyboard(currentdsp);
|
||||||
#elif DOS
|
#elif DOS
|
||||||
(currentkbd->device.enter)(currentkbd);
|
(currentkbd->device.enter)(currentkbd);
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
} else if (args[0] == NIL) {
|
} else if (args[0] == NIL) {
|
||||||
#ifdef SUNDISPLAY
|
#if XWINDOW
|
||||||
FD_CLR(LispWindowFd, &LispReadFds);
|
|
||||||
#elif XWINDOW
|
|
||||||
disable_Xkeyboard(currentdsp);
|
disable_Xkeyboard(currentdsp);
|
||||||
#elif DOS
|
#elif DOS
|
||||||
(currentkbd->device.exit)(currentkbd);
|
(currentkbd->device.exit)(currentkbd);
|
||||||
@@ -116,28 +104,7 @@ void KB_beep(LispPTR *args) /* args[0] : ON/OFF flag
|
|||||||
* args[1] : frequency
|
* args[1] : frequency
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
#ifdef SUNDISPLAY
|
#if XWINDOW
|
||||||
int keycommand;
|
|
||||||
|
|
||||||
/* belltime.tv_usec = args[1] & 0xffff;
|
|
||||||
win_bell(LispWindowFd, belltime, 0);
|
|
||||||
*/
|
|
||||||
if ((LispKbdFd = open(LispScreen.scr_kbdname, O_RDWR)) == -1)
|
|
||||||
fprintf(stderr, "can't open %s, errno=%d\n", LispScreen.scr_kbdname, errno);
|
|
||||||
|
|
||||||
if (args[0] == ATOM_T) {
|
|
||||||
keycommand = KBD_CMD_BELL; /* Turn on the bell */
|
|
||||||
if (ioctl(LispKbdFd, KIOCCMD, &keycommand) == -1)
|
|
||||||
fprintf(stderr, "Error at ioctl errno =%d\n", errno);
|
|
||||||
} else {
|
|
||||||
keycommand = KBD_CMD_NOBELL; /* Turn off the bell */
|
|
||||||
if (ioctl(LispKbdFd, KIOCCMD, &keycommand) == -1)
|
|
||||||
fprintf(stderr, "Error at ioctl errno =%d\n", errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(LispKbdFd);
|
|
||||||
|
|
||||||
#elif XWINDOW
|
|
||||||
if (args[0] == ATOM_T) beep_Xkeyboard(currentdsp);
|
if (args[0] == ATOM_T) beep_Xkeyboard(currentdsp);
|
||||||
#elif DOS
|
#elif DOS
|
||||||
if (args[0] == ATOM_T) {
|
if (args[0] == ATOM_T) {
|
||||||
|
|||||||
265
src/keyevent.c
265
src/keyevent.c
@@ -38,12 +38,6 @@
|
|||||||
void Mouse_hndlr(void); /* Fields mouse events from driver */
|
void Mouse_hndlr(void); /* Fields mouse events from driver */
|
||||||
/* (during servicing of mouse interrupt) */
|
/* (during servicing of mouse interrupt) */
|
||||||
|
|
||||||
#elif SUNDISPLAY
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#include <sunwindow/win_ioctl.h>
|
|
||||||
#include <suntool/window.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <sundev/kbio.h>
|
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
#include "lispemul.h"
|
#include "lispemul.h"
|
||||||
@@ -121,10 +115,11 @@ extern DLword *EmMouseX68K, *EmMouseY68K, *EmKbdAd068K, *EmRealUtilin68K, *EmUti
|
|||||||
extern DLword *EmKbdAd168K, *EmKbdAd268K, *EmKbdAd368K, *EmKbdAd468K, *EmKbdAd568K;
|
extern DLword *EmKbdAd168K, *EmKbdAd268K, *EmKbdAd368K, *EmKbdAd468K, *EmKbdAd568K;
|
||||||
extern u_char *SUNLispKeyMap;
|
extern u_char *SUNLispKeyMap;
|
||||||
extern int LispWindowFd;
|
extern int LispWindowFd;
|
||||||
extern int RS232C_Fd, RS232C_remain_data, XLocked;
|
extern int RS232C_Fd, RS232C_remain_data;
|
||||||
extern fd_set LispIOFds;
|
extern fd_set LispIOFds;
|
||||||
fd_set LispReadFds;
|
fd_set LispReadFds;
|
||||||
int XNeedSignal = 0; /* T if an X interrupt happened while XLOCK asserted */
|
extern volatile sig_atomic_t XLocked;
|
||||||
|
extern volatile sig_atomic_t XNeedSignal;
|
||||||
|
|
||||||
extern int LogFileFd;
|
extern int LogFileFd;
|
||||||
|
|
||||||
@@ -138,10 +133,6 @@ extern DLword *DisplayRegion68k;
|
|||||||
static struct timeval SelectTimeout = {0, 0};
|
static struct timeval SelectTimeout = {0, 0};
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
#ifdef XWINDOW
|
|
||||||
extern volatile sig_atomic_t Event_Req;
|
|
||||||
#endif /* XWINDOW */
|
|
||||||
|
|
||||||
extern MISCSTATS *MiscStats;
|
extern MISCSTATS *MiscStats;
|
||||||
LispPTR *LASTUSERACTION68k;
|
LispPTR *LASTUSERACTION68k;
|
||||||
LispPTR *CLastUserActionCell68k;
|
LispPTR *CLastUserActionCell68k;
|
||||||
@@ -178,25 +169,6 @@ typedef struct {
|
|||||||
/* EmXXXX68K are already swapped, no need for GETWORD */
|
/* EmXXXX68K are already swapped, no need for GETWORD */
|
||||||
|
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifdef OLD_CURSOR
|
|
||||||
#define TrackCursor(cx, cy) \
|
|
||||||
{ \
|
|
||||||
*CLastUserActionCell68k = MiscStats->secondstmp; \
|
|
||||||
*EmCursorX68K = cx; \
|
|
||||||
*EmCursorY68K = cy; \
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
#define TrackCursor(cx, cy) \
|
|
||||||
{ \
|
|
||||||
*CLastUserActionCell68k = MiscStats->secondstmp; \
|
|
||||||
taking_mouse_down(); \
|
|
||||||
taking_mouse_up(cx, cy); \
|
|
||||||
*EmCursorX68K = cx; \
|
|
||||||
*EmCursorY68K = cy; \
|
|
||||||
}
|
|
||||||
#endif /* OLD_CURSOR */
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
/* commented out is some code that would also clobber
|
/* commented out is some code that would also clobber
|
||||||
Irq_Stk_Check & Irq_Stk_End to force
|
Irq_Stk_Check & Irq_Stk_End to force
|
||||||
@@ -211,7 +183,7 @@ LispPTR *MOUSECHORDTICKS68k;
|
|||||||
/**NEW GLOBAL***-> will be moved***/
|
/**NEW GLOBAL***-> will be moved***/
|
||||||
LispPTR *KEYBOARDEVENTQUEUE68k;
|
LispPTR *KEYBOARDEVENTQUEUE68k;
|
||||||
LispPTR *KEYBUFFERING68k;
|
LispPTR *KEYBUFFERING68k;
|
||||||
int KBDEventFlg = NIL;
|
int KBDEventFlg = 0;
|
||||||
DLword *CTopKeyevent;
|
DLword *CTopKeyevent;
|
||||||
|
|
||||||
LispPTR DOBUFFEREDTRANSITION_index;
|
LispPTR DOBUFFEREDTRANSITION_index;
|
||||||
@@ -237,20 +209,12 @@ DLword ColorCursor_savebitmap[CURSORWIDTH / COLORPIXELS_IN_DLWORD * CURSORHEIGHT
|
|||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* G E T S I G N A L D A T A */
|
/* p r o c e s s _ i o _ e v e n t s */
|
||||||
/* */
|
|
||||||
/* Handler for the SIGIO interrupt, which happens */
|
|
||||||
/* 1. When a key transition happens */
|
|
||||||
/* 2. On mouse moves */
|
|
||||||
/* 3. When TCP input becomes available. */
|
|
||||||
/* 4. When a NIT ethernet packet becomes available. */
|
|
||||||
/* 5. When a console/log/stderr msg needs to be printed. */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* */
|
/* */
|
||||||
|
/* Periodically, or After a SIGIO interrupt which happens */
|
||||||
|
/* 1. When TCP input becomes available. */
|
||||||
|
/* 2. When a NIT ethernet packet becomes available. */
|
||||||
|
/* 3. When a console/log/stderr msg needs to be printed. */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* Statics: LispReadFds A 32-bit vector with a 1 for each */
|
/* Statics: LispReadFds A 32-bit vector with a 1 for each */
|
||||||
@@ -280,65 +244,16 @@ DLword ColorCursor_savebitmap[CURSORWIDTH / COLORPIXELS_IN_DLWORD * CURSORHEIGHT
|
|||||||
/* */
|
/* */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
void getsignaldata(int sig)
|
void process_io_events()
|
||||||
{
|
{
|
||||||
#ifndef DOS
|
#ifndef DOS
|
||||||
#ifdef SUNDISPLAY
|
fd_set rfds;
|
||||||
struct inputevent event;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
fd_set rfds, efds;
|
|
||||||
u_int iflags;
|
u_int iflags;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
#ifdef XWINDOW
|
|
||||||
#if defined(sun)
|
|
||||||
if (Event_Req) {
|
|
||||||
if (!XLocked++)
|
|
||||||
getXsignaldata(currentdsp);
|
|
||||||
else
|
|
||||||
XNeedSignal = 1;
|
|
||||||
Event_Req = FALSE;
|
|
||||||
XLocked--;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* XWINDOW */
|
|
||||||
|
|
||||||
/* #ifndef KBINT */
|
|
||||||
/* FD_COPY would be preferred but uses deprecated bcopy() on macOS. Why? */
|
|
||||||
memcpy(&rfds, &LispReadFds, sizeof(rfds));
|
memcpy(&rfds, &LispReadFds, sizeof(rfds));
|
||||||
memcpy(&efds, &LispReadFds, sizeof(efds));
|
|
||||||
|
|
||||||
/* label and ifs not needed if only keyboard on SIGIO */
|
if (select(32, &rfds, NULL, NULL, &SelectTimeout) > 0) {
|
||||||
getmore:
|
|
||||||
if (select(32, &rfds, NULL, &efds, &SelectTimeout) >= 0)
|
|
||||||
{
|
|
||||||
/* need to print out fd sets...
|
|
||||||
DBPRINT(("SIGIO: fd mask(r/e) = 0x%x/0x%x.\n", rfds, efds));
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
if (LispWindowFd >= 0 && FD_ISSET(LispWindowFd, &rfds)) {
|
|
||||||
/* #endif */
|
|
||||||
while (input_readevent(LispWindowFd, &event) >= 0) {
|
|
||||||
/*if(!kb_event( &event )) {goto getmore;};*/
|
|
||||||
if ((KBDEventFlg += kb_event(&event)) > 0) {
|
|
||||||
/* immediately request for IRQ check */
|
|
||||||
Irq_Stk_End = Irq_Stk_Check = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* #ifndef KBINT */
|
|
||||||
}
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
|
||||||
if (FD_ISSET(ConnectionNumber(currentdsp->display_id), &rfds)) {
|
|
||||||
if (!XLocked)
|
|
||||||
getXsignaldata(currentdsp);
|
|
||||||
else
|
|
||||||
XNeedSignal = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* XWINDOW */
|
|
||||||
|
|
||||||
#ifdef MAIKO_ENABLE_ETHERNET
|
#ifdef MAIKO_ENABLE_ETHERNET
|
||||||
if (ether_fd >= 0 && FD_ISSET(ether_fd, &rfds)) { /* Raw ethernet (NIT) I/O happened, so handle it. */
|
if (ether_fd >= 0 && FD_ISSET(ether_fd, &rfds)) { /* Raw ethernet (NIT) I/O happened, so handle it. */
|
||||||
@@ -378,134 +293,8 @@ getmore:
|
|||||||
}
|
}
|
||||||
/* #endif */
|
/* #endif */
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
} /* end getsignaldata */
|
} /* end process_io_events */
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
/************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* k b _ e v e n t */
|
|
||||||
/* */
|
|
||||||
/* Given an event from the kbd code, return 1 if a key transition */
|
|
||||||
/* occurred, 0 if one didn't occur. */
|
|
||||||
/* */
|
|
||||||
/************************************************************************/
|
|
||||||
extern int for_makeinit;
|
|
||||||
|
|
||||||
int kb_event(struct inputevent *event);
|
|
||||||
{
|
|
||||||
register u_int upflg;
|
|
||||||
int kn;
|
|
||||||
DLword w, r;
|
|
||||||
KBEVENT *kbevent;
|
|
||||||
|
|
||||||
#ifdef INIT
|
|
||||||
|
|
||||||
/* generate some code to check if we are running as an INIT. Don't
|
|
||||||
needlessly generate this code, and don't return if we aren't
|
|
||||||
running with the -INIT flag turned on. --was 2/7/89 */
|
|
||||||
|
|
||||||
if (for_makeinit) { return (0); };
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
upflg = event_is_up(event);
|
|
||||||
|
|
||||||
#ifdef SHOWKEYSTROKES
|
|
||||||
printf("Key # %d, upflg %d.\n", (unsigned short)event->ie_code, upflg);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
switch (((unsigned short)event->ie_code)) {
|
|
||||||
case LOC_MOVE:
|
|
||||||
#ifndef OLD_CURSOR
|
|
||||||
if (!ScreenLocked)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
ScreenLocked = T;
|
|
||||||
MouseMove(event->ie_locx, event->ie_locy);
|
|
||||||
TrackCursor(event->ie_locx, event->ie_locy);
|
|
||||||
ScreenLocked = NIL;
|
|
||||||
}
|
|
||||||
return (0);
|
|
||||||
|
|
||||||
case MS_LEFT: /*mouse_button( MOUSE_LEFT, upflg );*/
|
|
||||||
PUTBASEBIT68K(EmRealUtilin68K, MOUSE_LEFT, upflg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MS_MIDDLE: /*mouse_button( MOUSE_MIDDLE, upflg );*/
|
|
||||||
PUTBASEBIT68K(EmRealUtilin68K, MOUSE_MIDDLE, upflg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MS_RIGHT: /*mouse_button( MOUSE_RIGHT, upflg );*/
|
|
||||||
PUTBASEBIT68K(EmRealUtilin68K, MOUSE_RIGHT, upflg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default: /* keystroke */
|
|
||||||
if ((kn = SUNLispKeyMap[((unsigned short)event->ie_code)]) < 255)
|
|
||||||
kb_trans(kn, upflg);
|
|
||||||
else
|
|
||||||
printf("kb_event: unknown key number=%d\n", event->ie_code);
|
|
||||||
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
{
|
|
||||||
do_ring:
|
|
||||||
/* Emxxx do not use GETWORD */
|
|
||||||
if (((*EmKbdAd268K) & 2113) == 0) { /*Ctrl-shift-NEXT*/
|
|
||||||
error("****** EMERGENCY Interrupt ******");
|
|
||||||
(*EmKbdAd268K) = KB_ALLUP; /*reset*/
|
|
||||||
((RING *)CTopKeyevent)->read = 0; /* reset queue */
|
|
||||||
((RING *)CTopKeyevent)->write = MINKEYEVENT;
|
|
||||||
/*return(0);*/
|
|
||||||
} else if (((*EmKbdAd268K) & 2114) == 0) { /* Ctrl-Shift-DEL */
|
|
||||||
(*EmKbdAd268K) = KB_ALLUP; /*reset*/
|
|
||||||
URaid_req = T;
|
|
||||||
((RING *)CTopKeyevent)->read = 0; /* reset queue */
|
|
||||||
((RING *)CTopKeyevent)->write = MINKEYEVENT;
|
|
||||||
|
|
||||||
/*return(0);*/
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef OS4_TYPE4BUG
|
|
||||||
else if (((*EmKbdAd268K) & 2120) == 0) { /* Ctrl-Shift-Return */
|
|
||||||
error("****** EMERGENCY Interrupt ******");
|
|
||||||
(*EmKbdAd268K) = KB_ALLUP; /*reset*/
|
|
||||||
((RING *)CTopKeyevent)->read = 0; /* reset queue */
|
|
||||||
((RING *)CTopKeyevent)->write = MINKEYEVENT;
|
|
||||||
/*return(0);*/
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
r = RING_READ(CTopKeyevent);
|
|
||||||
w = RING_WRITE(CTopKeyevent);
|
|
||||||
|
|
||||||
if (r == w) goto KBnext; /* event queue FULL */
|
|
||||||
|
|
||||||
kbevent = (KBEVENT *)(CTopKeyevent + w);
|
|
||||||
|
|
||||||
/* RCLK(kbevent->time); */
|
|
||||||
|
|
||||||
kbevent->W0 = (*EmKbdAd068K); /* Emxxxx do not use GETWORD */
|
|
||||||
kbevent->W1 = (*EmKbdAd168K);
|
|
||||||
kbevent->W2 = (*EmKbdAd268K);
|
|
||||||
kbevent->W3 = (*EmKbdAd368K);
|
|
||||||
kbevent->W4 = (*EmKbdAd468K);
|
|
||||||
kbevent->W5 = (*EmKbdAd568K);
|
|
||||||
kbevent->WU = (*EmRealUtilin68K);
|
|
||||||
|
|
||||||
if (r == 0) /* Queue was empty */
|
|
||||||
((RING *)CTopKeyevent)->read = w;
|
|
||||||
if (w >= MAXKEYEVENT)
|
|
||||||
((RING *)CTopKeyevent)->write = MINKEYEVENT;
|
|
||||||
else
|
|
||||||
((RING *)CTopKeyevent)->write = w + KEYEVENTSIZE;
|
|
||||||
|
|
||||||
KBnext:
|
|
||||||
if (*KEYBUFFERING68k == NIL) *KEYBUFFERING68k = ATOM_T;
|
|
||||||
|
|
||||||
} /* if *EmRealUtilin68K end */
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
@@ -545,22 +334,22 @@ typedef struct {
|
|||||||
LispPTR CUDATA;
|
LispPTR CUDATA;
|
||||||
} CURSOR;
|
} CURSOR;
|
||||||
|
|
||||||
#define CursorClippingX(posx, width) \
|
#define CursorClippingX(posx, width) \
|
||||||
{ \
|
{ \
|
||||||
if (displaywidth < (posx + HARD_CURSORWIDTH)) { \
|
if (displaywidth < ((posx) + HARD_CURSORWIDTH)) { \
|
||||||
LastCursorClippingX = width = displaywidth - posx; \
|
LastCursorClippingX = (width) = displaywidth - (posx); \
|
||||||
} else { \
|
} else { \
|
||||||
LastCursorClippingX = width = HARD_CURSORWIDTH; \
|
LastCursorClippingX = (width) = HARD_CURSORWIDTH; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CursorClippingY(posy, height) \
|
#define CursorClippingY(posy, height) \
|
||||||
{ \
|
{ \
|
||||||
if (displayheight < (posy + HARD_CURSORHEIGHT)) { \
|
if (displayheight < ((posy) + HARD_CURSORHEIGHT)) { \
|
||||||
LastCursorClippingY = height = displayheight - posy; \
|
LastCursorClippingY = (height) = displayheight - (posy); \
|
||||||
} else { \
|
} else { \
|
||||||
LastCursorClippingY = height = HARD_CURSORHEIGHT; \
|
LastCursorClippingY = (height) = HARD_CURSORHEIGHT; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int displaywidth, displayheight;
|
extern int displaywidth, displayheight;
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* JRB - call fork_Unix here, while we're REALLY small, unless -NF is
|
/* JRB - call fork_Unix here, while we're REALLY small, unless -NF is
|
||||||
specified, of course... */
|
specified, of course... */
|
||||||
for (i = 0; i < argc; i++)
|
for (i = 1; i < argc; i++)
|
||||||
if (!strcmp(argv[i], "-NF")) break;
|
if (!strcmp(argv[i], "-NF")) break;
|
||||||
if (i == argc) /* -NF not in arguments */
|
if (i == argc) /* -NF not in arguments */
|
||||||
fork_Unix();
|
fork_Unix();
|
||||||
@@ -181,7 +181,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* JRB - call fork_Unix here, while we're REALLY small, unless -NF is
|
/* JRB - call fork_Unix here, while we're REALLY small, unless -NF is
|
||||||
specified, of course... */
|
specified, of course... */
|
||||||
for (i = 0; i < argc; i++)
|
for (i = 1; i < argc; i++)
|
||||||
if (!strcmp(argv[i], "-NF")) break;
|
if (!strcmp(argv[i], "-NF")) break;
|
||||||
if (i == argc) /* -NF not in arguments */
|
if (i == argc) /* -NF not in arguments */
|
||||||
fork_Unix();
|
fork_Unix();
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ int main(int argc, char *argv[]) { return (0); }
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
#include <sys/stream.h>
|
#include <sys/stream.h>
|
||||||
#include <sys/stropts.h>
|
#include <sys/stropts.h>
|
||||||
#include <sys/pfmod.h>
|
#include <sys/pfmod.h>
|
||||||
@@ -53,14 +53,14 @@ char *devices[] = {"le0", "le1", "le2", "le3", "le4", "ie0", "ie1", "i
|
|||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <netinet/if_ether.h>
|
#include <netinet/if_ether.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#ifndef USE_DLPI
|
#if defined(USE_NIT)
|
||||||
#include <net/nit.h>
|
#include <net/nit.h>
|
||||||
#ifdef OS4
|
#ifdef OS4
|
||||||
#include <stropts.h>
|
#include <stropts.h>
|
||||||
#include <net/nit_if.h>
|
#include <net/nit_if.h>
|
||||||
#include <net/nit_pf.h>
|
#include <net/nit_pf.h>
|
||||||
#endif /* OS4 */
|
#endif /* OS4 */
|
||||||
#endif /* USE_DLPI */
|
#endif /* USE_NIT */
|
||||||
|
|
||||||
#include <nlist.h>
|
#include <nlist.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
@@ -75,7 +75,7 @@ char filetorun[30] = "lde";
|
|||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
char Earg[30], Ename[30], **newargv;
|
char Earg[30], Ename[30], **newargv;
|
||||||
int i;
|
int i;
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
static struct packetfilt pf = {0, 1, {ENF_PUSHZERO}};
|
static struct packetfilt pf = {0, 1, {ENF_PUSHZERO}};
|
||||||
struct strioctl si;
|
struct strioctl si;
|
||||||
#endif /* USE_DLPI */
|
#endif /* USE_DLPI */
|
||||||
@@ -97,7 +97,7 @@ int main(int argc, char *argv[]) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (!geteuid()) {
|
if (!geteuid()) {
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
/* Use DLPI to connect to the ethernet. This code is stolen
|
/* Use DLPI to connect to the ethernet. This code is stolen
|
||||||
from NFSWATCH4.3
|
from NFSWATCH4.3
|
||||||
*/
|
*/
|
||||||
@@ -127,13 +127,10 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
fcntl(ether_fd, F_SETFL, fcntl(ether_fd, F_GETFL, 0) | O_NONBLOCK);
|
fcntl(ether_fd, F_SETFL, fcntl(ether_fd, F_GETFL, 0) | O_NONBLOCK);
|
||||||
|
|
||||||
#else
|
#elif defined(USE_NIT)
|
||||||
/* N O T D L P I C O D E */
|
|
||||||
|
|
||||||
#ifndef OS4
|
#ifndef OS4
|
||||||
if ((ether_fd = socket(AF_NIT, SOCK_RAW, NITPROTO_RAW)) >= 0) {
|
if ((ether_fd = socket(AF_NIT, SOCK_RAW, NITPROTO_RAW)) >= 0) {
|
||||||
#else /* OS4 */
|
#else /* OS4 */
|
||||||
|
|
||||||
if ((ether_fd = open("/dev/nit", O_RDWR)) >= 0) {
|
if ((ether_fd = open("/dev/nit", O_RDWR)) >= 0) {
|
||||||
#endif /* OS4 */
|
#endif /* OS4 */
|
||||||
|
|
||||||
@@ -230,10 +227,10 @@ int main(int argc, char *argv[]) {
|
|||||||
/* then if the net is active, spit out the ether info */
|
/* then if the net is active, spit out the ether info */
|
||||||
if (ether_fd > 0) {
|
if (ether_fd > 0) {
|
||||||
newargv[i++] = "-E";
|
newargv[i++] = "-E";
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
sprintf(Earg, "%d:%x:%x:%x:%x:%x:%x", ether_fd, ether_host[0], ether_host[1], ether_host[2],
|
sprintf(Earg, "%d:%x:%x:%x:%x:%x:%x", ether_fd, ether_host[0], ether_host[1], ether_host[2],
|
||||||
ether_host[3], ether_host[4], ether_host[5]);
|
ether_host[3], ether_host[4], ether_host[5]);
|
||||||
#else
|
#elif defined(USE_NIT)
|
||||||
sprintf(Earg, "%d:%x:%x:%x:%x:%x:%x:%s", ether_fd, ether_host[0], ether_host[1], ether_host[2],
|
sprintf(Earg, "%d:%x:%x:%x:%x:%x:%x:%s", ether_fd, ether_host[0], ether_host[1], ether_host[2],
|
||||||
ether_host[3], ether_host[4], ether_host[5], Ename);
|
ether_host[3], ether_host[4], ether_host[5], Ename);
|
||||||
#endif /* USE_DLPI */
|
#endif /* USE_DLPI */
|
||||||
|
|||||||
@@ -30,9 +30,6 @@
|
|||||||
#include "byteswapdefs.h"
|
#include "byteswapdefs.h"
|
||||||
#include "initdspdefs.h"
|
#include "initdspdefs.h"
|
||||||
|
|
||||||
#ifdef GCC386
|
|
||||||
#include "inlnPS2.h"
|
|
||||||
#endif /* GCC386 */
|
|
||||||
|
|
||||||
#define IFPAGE_ADDRESS 512
|
#define IFPAGE_ADDRESS 512
|
||||||
#define DEFAULT_MAX_SYSOUTSIZE 64 /* in Mbyte */
|
#define DEFAULT_MAX_SYSOUTSIZE 64 /* in Mbyte */
|
||||||
|
|||||||
@@ -31,13 +31,13 @@ unsigned int BMask_tbl[] = {0xf, 7, 3, 1};
|
|||||||
/***************************************************************
|
/***************************************************************
|
||||||
Macro:WriteLongW
|
Macro:WriteLongW
|
||||||
**************************************************************/
|
**************************************************************/
|
||||||
#define WriteLongW(srcpattern, destptr, op1, op2) \
|
#define WriteLongW(srcpattern, destptr, op1, op2) \
|
||||||
{ \
|
{ \
|
||||||
register int cnt; \
|
register int cnt; \
|
||||||
register u_char *des, *src; \
|
register u_char *des, *src; \
|
||||||
for (cnt = 0, des = (u_char *)destptr, src = (u_char *)(&(srcpattern)); cnt < 4; \
|
for (cnt = 0, des = (u_char *)(destptr), src = (u_char *)(&(srcpattern)); cnt < 4; \
|
||||||
cnt++, des++, src++) \
|
cnt++, des++, src++) \
|
||||||
(*des) op1(*src); \
|
(*des) op1(*src); \
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************************************
|
/***************************************************************
|
||||||
@@ -104,14 +104,14 @@ unsigned int BMask_tbl[] = {0xf, 7, 3, 1};
|
|||||||
case 1: \
|
case 1: \
|
||||||
case 2: \
|
case 2: \
|
||||||
case 3: \
|
case 3: \
|
||||||
destc = (u_char *)dstLptr; \
|
destc = (u_char *)(dstLptr); \
|
||||||
while (width--) { \
|
while ((width)--) { \
|
||||||
if (BitMaskArray[mod = (offset % 16)] & *srcw) \
|
if (BitMaskArray[mod = ((offset) % 16)] & *srcw) \
|
||||||
(*destc++) op1(color1); \
|
(*destc++) op1(color1); \
|
||||||
else \
|
else \
|
||||||
(*destc++) op1(color0); \
|
(*destc++) op1(color0); \
|
||||||
if (mod == 15) srcw++; \
|
if (mod == 15) srcw++; \
|
||||||
offset++; \
|
(offset)++; \
|
||||||
} /* WHILE END */ \
|
} /* WHILE END */ \
|
||||||
break; \
|
break; \
|
||||||
default:; /* error */ \
|
default:; /* error */ \
|
||||||
|
|||||||
@@ -12,15 +12,6 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#if defined(COLOR) && !defined(NOPIXRECT)
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#include <sunwindow/cms.h>
|
|
||||||
#include <sunwindow/win_ioctl.h>
|
|
||||||
#include <pixrect/pixrect_hs.h>
|
|
||||||
#include <sun/fbio.h>
|
|
||||||
#include <pixrect/pr_planegroups.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#endif /* COLOR && !NOPIXRECT */
|
|
||||||
|
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|||||||
@@ -482,9 +482,6 @@ extern struct cursor CurrentCursor;
|
|||||||
void flip_cursorbar(int n)
|
void flip_cursorbar(int n)
|
||||||
{
|
{
|
||||||
GETWORD(EmCursorBitMap68K + n) = ~(GETWORD(EmCursorBitMap68K + n));
|
GETWORD(EmCursorBitMap68K + n) = ~(GETWORD(EmCursorBitMap68K + n));
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
win_setcursor(LispWindowFd, &CurrentCursor);
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
/* JDS 011213 When using current_hot_y, remember fn does 15-it! */
|
/* JDS 011213 When using current_hot_y, remember fn does 15-it! */
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ static const char il_string[] = "INTERLISP";
|
|||||||
#define METH_CACHE_INDEX(CLASS, SELECTOR) (1023 & ((CLASS) ^ (SELECTOR)))
|
#define METH_CACHE_INDEX(CLASS, SELECTOR) (1023 & ((CLASS) ^ (SELECTOR)))
|
||||||
#define IV_CACHE_INDEX(VARLIST, IV) (1023 & ((VARLIST) ^ (IV)))
|
#define IV_CACHE_INDEX(VARLIST, IV) (1023 & ((VARLIST) ^ (IV)))
|
||||||
|
|
||||||
#define LC_TYPEP(obj, typeATOM) (DTD_FROM_LADDR((obj)) == typeATOM)
|
#define LC_TYPEP(obj, typeATOM) (DTD_FROM_LADDR((obj)) == (typeATOM))
|
||||||
|
|
||||||
#define INSTANCEP(obj) (LC_TYPEP((obj), atom_instance))
|
#define INSTANCEP(obj) (LC_TYPEP((obj), atom_instance))
|
||||||
#define CLASSP(obj) (LC_TYPEP((obj), atom_class))
|
#define CLASSP(obj) (LC_TYPEP((obj), atom_class))
|
||||||
@@ -80,10 +80,10 @@ static const char il_string[] = "INTERLISP";
|
|||||||
#define GET_IV_INDEX(objptr, iv, dest, otherwise) \
|
#define GET_IV_INDEX(objptr, iv, dest, otherwise) \
|
||||||
{ \
|
{ \
|
||||||
register struct LCIVCacheEntry *ce; \
|
register struct LCIVCacheEntry *ce; \
|
||||||
register LispPTR iNames = objptr->iNames; \
|
register LispPTR iNames = (objptr)->iNames; \
|
||||||
\
|
\
|
||||||
ce = &(LCIVCache[IV_CACHE_INDEX(iNames, iv)]); \
|
ce = &(LCIVCache[IV_CACHE_INDEX(iNames, iv)]); \
|
||||||
if (ce->iNames == iNames && ce->iv == iv) { \
|
if (ce->iNames == iNames && ce->iv == (iv)) { \
|
||||||
(dest) = POSINT_FROM_SMALLP(ce->index); \
|
(dest) = POSINT_FROM_SMALLP(ce->index); \
|
||||||
} else { \
|
} else { \
|
||||||
if (!Listp(iNames)) { \
|
if (!Listp(iNames)) { \
|
||||||
@@ -91,8 +91,8 @@ static const char il_string[] = "INTERLISP";
|
|||||||
} else { \
|
} else { \
|
||||||
register int i = 0; \
|
register int i = 0; \
|
||||||
while (1) { \
|
while (1) { \
|
||||||
if (car(iNames) == iv) { \
|
if (car(iNames) == (iv)) { \
|
||||||
ce->iNames = objptr->iNames; \
|
ce->iNames = (objptr)->iNames; \
|
||||||
ce->iv = iv; \
|
ce->iv = iv; \
|
||||||
ce->index = SMALLP_FROM_POSINT(i); \
|
ce->index = SMALLP_FROM_POSINT(i); \
|
||||||
(dest) = i; \
|
(dest) = i; \
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ LispPTR fmemb(register LispPTR item, register LispPTR list) {
|
|||||||
if (GetTypeNumber(parm) != TYPE_LISTP) { \
|
if (GetTypeNumber(parm) != TYPE_LISTP) { \
|
||||||
SAVE_ERROR_EXIT2(tcstk, tos); \
|
SAVE_ERROR_EXIT2(tcstk, tos); \
|
||||||
} else \
|
} else \
|
||||||
dest = cadr(parm); \
|
(dest) = cadr(parm); \
|
||||||
}
|
}
|
||||||
|
|
||||||
LispPTR N_OP_listget(register LispPTR plist, register LispPTR tos) {
|
LispPTR N_OP_listget(register LispPTR plist, register LispPTR tos) {
|
||||||
|
|||||||
47
src/main.c
47
src/main.c
@@ -36,7 +36,7 @@
|
|||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
#ifdef MAIKO_ENABLE_ETHERNET
|
#ifdef MAIKO_ENABLE_ETHERNET
|
||||||
#ifndef USE_DLPI
|
#if defined(USE_NIT)
|
||||||
#include <net/nit.h> /* needed for Ethernet stuff below */
|
#include <net/nit.h> /* needed for Ethernet stuff below */
|
||||||
#endif /* USE_DLPI */
|
#endif /* USE_DLPI */
|
||||||
#endif /* MAIKO_ENABLE_ETHERNET */
|
#endif /* MAIKO_ENABLE_ETHERNET */
|
||||||
@@ -312,6 +312,7 @@ int main(int argc, char *argv[])
|
|||||||
char *envname;
|
char *envname;
|
||||||
extern int TIMER_INTERVAL;
|
extern int TIMER_INTERVAL;
|
||||||
extern fd_set LispReadFds;
|
extern fd_set LispReadFds;
|
||||||
|
int tmpint;
|
||||||
#ifdef MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE
|
#ifdef MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE
|
||||||
if (dld_find_executable(argv[0]) == 0) {
|
if (dld_find_executable(argv[0]) == 0) {
|
||||||
perror("Name of executable not found.");
|
perror("Name of executable not found.");
|
||||||
@@ -377,18 +378,32 @@ int main(int argc, char *argv[])
|
|||||||
/* -t and -m are undocumented and somewhat dangerous... */
|
/* -t and -m are undocumented and somewhat dangerous... */
|
||||||
|
|
||||||
if (!strcmp(argv[i], "-t")) { /**** timer interval ****/
|
if (!strcmp(argv[i], "-t")) { /**** timer interval ****/
|
||||||
if (argc > ++i)
|
if (argc > ++i) {
|
||||||
TIMER_INTERVAL = atoi(argv[i]);
|
errno = 0;
|
||||||
else {
|
tmpint = strtol(argv[i], (char **)NULL, 10);
|
||||||
|
if (errno == 0 && tmpint > 0) {
|
||||||
|
TIMER_INTERVAL = tmpint;
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Bad value for -t (integer > 0)\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
fprintf(stderr, "Missing argument after -t\n");
|
fprintf(stderr, "Missing argument after -t\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (!strcmp(argv[i], "-m")) { /**** sysout size ****/
|
else if (!strcmp(argv[i], "-m")) { /**** sysout size ****/
|
||||||
if (argc > ++i)
|
if (argc > ++i) {
|
||||||
sysout_size = atoi(argv[i]);
|
errno = 0;
|
||||||
else {
|
tmpint = strtol(argv[i], (char **)NULL, 10);
|
||||||
|
if (errno == 0 && tmpint > 0) {
|
||||||
|
sysout_size = tmpint;
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Bad value for -m (integer > 0)\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
fprintf(stderr, "Missing argument after -m\n");
|
fprintf(stderr, "Missing argument after -m\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@@ -428,7 +443,7 @@ int main(int argc, char *argv[])
|
|||||||
else if (!strcmp(argv[i], "-E")) { /**** ethernet info ****/
|
else if (!strcmp(argv[i], "-E")) { /**** ethernet info ****/
|
||||||
#ifdef MAIKO_ENABLE_ETHERNET
|
#ifdef MAIKO_ENABLE_ETHERNET
|
||||||
int b0, b1, b2, b3, b4, b5;
|
int b0, b1, b2, b3, b4, b5;
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
if (argc > ++i &&
|
if (argc > ++i &&
|
||||||
sscanf(argv[i], "%d:%x:%x:%x:%x:%x:%x", ðer_fd, &b0, &b1, &b2, &b3, &b4, &b5) == 7)
|
sscanf(argv[i], "%d:%x:%x:%x:%x:%x:%x", ðer_fd, &b0, &b1, &b2, &b3, &b4, &b5) == 7)
|
||||||
#else
|
#else
|
||||||
@@ -453,9 +468,16 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
/* diagnostic flag for big vmem write() calls */
|
/* diagnostic flag for big vmem write() calls */
|
||||||
else if (!strcmp(argv[i], "-xpages")) {
|
else if (!strcmp(argv[i], "-xpages")) {
|
||||||
if (argc > ++i)
|
if (argc > ++i) {
|
||||||
maxpages = atoi(argv[i]);
|
errno = 0;
|
||||||
else {
|
tmpint = strtol(argv[i], (char **)NULL, 10);
|
||||||
|
if (errno == 0 && tmpint > 0) {
|
||||||
|
maxpages = tmpint;
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Bad value for -xpages (integer > 0)\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
fprintf(stderr, "Missing argument after -xpages\n");
|
fprintf(stderr, "Missing argument after -xpages\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@@ -517,9 +539,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* Get OS message to ~/lisp.log and print the message to prompt window */
|
/* Get OS message to ~/lisp.log and print the message to prompt window */
|
||||||
if (!for_makeinit) {
|
if (!for_makeinit) {
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
mess_init();
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
init_keyboard(0); /* can't turn on the keyboard yet or you will die
|
init_keyboard(0); /* can't turn on the keyboard yet or you will die
|
||||||
in makeinit. Pilotbitblt will turn it on if
|
in makeinit. Pilotbitblt will turn it on if
|
||||||
|
|||||||
21
src/misc7.c
21
src/misc7.c
@@ -32,15 +32,6 @@
|
|||||||
#include "bbtsubdefs.h"
|
#include "bbtsubdefs.h"
|
||||||
#include "initdspdefs.h"
|
#include "initdspdefs.h"
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#include <sunwindow/win_ioctl.h>
|
|
||||||
|
|
||||||
#include <suntool/sunview.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <sunwindow/cms_mono.h>
|
|
||||||
#include <suntool/canvas.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*************************************************/
|
/*************************************************/
|
||||||
/* Possible operation fields for FBITMAPBIT */
|
/* Possible operation fields for FBITMAPBIT */
|
||||||
@@ -78,9 +69,6 @@ LispPTR N_OP_misc7(LispPTR arg1, LispPTR arg2, LispPTR arg3, LispPTR arg4, LispP
|
|||||||
DBPRINT(("MISC7 args OK.\n"));
|
DBPRINT(("MISC7 args OK.\n"));
|
||||||
|
|
||||||
displayflg = n_new_cursorin(base, x, (heightminus1 - y), 1, 1);
|
displayflg = n_new_cursorin(base, x, (heightminus1 - y), 1, 1);
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
if (displayflg) HideCursor;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
/* Bitmaps use a positive integer coordinate system with the lower left
|
/* Bitmaps use a positive integer coordinate system with the lower left
|
||||||
corner pixel at coordinate (0, 0). Storage is allocated in 16-bit words
|
corner pixel at coordinate (0, 0). Storage is allocated in 16-bit words
|
||||||
@@ -100,15 +88,6 @@ LispPTR N_OP_misc7(LispPTR arg1, LispPTR arg2, LispPTR arg3, LispPTR arg4, LispP
|
|||||||
default: GETWORDBASEWORD(base, offset) = bmdata | bmmask;
|
default: GETWORDBASEWORD(base, offset) = bmdata | bmmask;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
if (in_display_segment(base)) {
|
|
||||||
/* NB: base + offset doesn't need WORDPTR() wrapper */
|
|
||||||
flush_display_ptrregion(base + offset, 0, 16, 1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (displayflg) ShowCursor;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
if (in_display_segment(base)) {
|
if (in_display_segment(base)) {
|
||||||
|
|||||||
45
src/mkcell.c
45
src/mkcell.c
@@ -41,6 +41,9 @@
|
|||||||
#include "allocmdsdefs.h"
|
#include "allocmdsdefs.h"
|
||||||
#include "commondefs.h"
|
#include "commondefs.h"
|
||||||
#include "gchtfinddefs.h"
|
#include "gchtfinddefs.h"
|
||||||
|
#ifdef DTDDEBUG
|
||||||
|
#include "testtooldefs.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
static LispPTR oldoldfree;
|
static LispPTR oldoldfree;
|
||||||
static LispPTR oldfree;
|
static LispPTR oldfree;
|
||||||
@@ -155,45 +158,3 @@ retry:
|
|||||||
}
|
}
|
||||||
|
|
||||||
} /* createcell68k end */
|
} /* createcell68k end */
|
||||||
|
|
||||||
/**********************************************************/
|
|
||||||
/* Create a Cell of Specified Type & Set to given Value */
|
|
||||||
/* Works with 32 bit typed values only. */
|
|
||||||
/* (Initially used only by native code) */
|
|
||||||
/**********************************************************/
|
|
||||||
|
|
||||||
LispPTR Create_n_Set_Cell(unsigned int type, LispPTR value) {
|
|
||||||
register struct dtd *dtd68k;
|
|
||||||
register DLword *ptr, *lastptr;
|
|
||||||
register LispPTR newcell;
|
|
||||||
|
|
||||||
dtd68k = (struct dtd *)GetDTD(type);
|
|
||||||
|
|
||||||
if (dtd68k->dtd_size == 0) error("createcell : Attempt to create a cell not declared yet");
|
|
||||||
|
|
||||||
retry:
|
|
||||||
if ((newcell = (dtd68k->dtd_free & POINTERMASK)) != NIL) {
|
|
||||||
ptr = Addr68k_from_LADDR(newcell);
|
|
||||||
|
|
||||||
/* replace dtd_free with newcell's top DLword (it may keep next chain)*/
|
|
||||||
|
|
||||||
dtd68k->dtd_free = (*((LispPTR *)ptr)) & POINTERMASK;
|
|
||||||
dtd68k->dtd_oldcnt++;
|
|
||||||
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain.");
|
|
||||||
|
|
||||||
/* clear 0 */
|
|
||||||
for (lastptr = ptr + dtd68k->dtd_size; ptr != lastptr; ptr++) { GETWORD(ptr) = 0; }
|
|
||||||
|
|
||||||
/* IncAllocCnt(1); */
|
|
||||||
GCLOOKUP(newcell, DELREF);
|
|
||||||
(*((LispPTR *)Addr68k_from_LADDR(newcell))) = value;
|
|
||||||
return (newcell);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
dtd68k->dtd_free = initmdspage(alloc_mdspage(dtd68k->dtd_typeentry), dtd68k->dtd_size, NIL);
|
|
||||||
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain.");
|
|
||||||
|
|
||||||
goto retry;
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* createcell68k end */
|
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
#include "dbprint.h"
|
#include "dbprint.h"
|
||||||
#include "devif.h"
|
#include "devif.h"
|
||||||
|
|
||||||
MouseInterfaceRec _curmouse;
|
MouseInterfaceRec curmouse;
|
||||||
MouseInterface currentmouse = &_curmouse;
|
MouseInterface currentmouse = &curmouse;
|
||||||
|
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
#include <dos.h>
|
#include <dos.h>
|
||||||
|
|||||||
@@ -28,14 +28,12 @@
|
|||||||
#include "lsptypes.h"
|
#include "lsptypes.h"
|
||||||
#include "opcodes.h"
|
#include "opcodes.h"
|
||||||
#include "cell.h"
|
#include "cell.h"
|
||||||
|
#include "byteswapdefs.h"
|
||||||
|
|
||||||
#include "mvsdefs.h"
|
#include "mvsdefs.h"
|
||||||
#include "car-cdrdefs.h"
|
#include "car-cdrdefs.h"
|
||||||
#include "conspagedefs.h"
|
#include "conspagedefs.h"
|
||||||
|
|
||||||
#ifdef GCC386
|
|
||||||
#include "inlnPS2.h"
|
|
||||||
#endif /* GCC386 */
|
|
||||||
|
|
||||||
/* to optionally swap the fnhead field of a frame */
|
/* to optionally swap the fnhead field of a frame */
|
||||||
#ifdef BIGVM
|
#ifdef BIGVM
|
||||||
|
|||||||
@@ -168,7 +168,8 @@ void contextsw(register DLword fxnum, register DLword bytenum, register DLword f
|
|||||||
CHECKFX;
|
CHECKFX;
|
||||||
if (EndSTKP < CurrentStackPTR) error("contextsw:Illegal ESP");
|
if (EndSTKP < CurrentStackPTR) error("contextsw:Illegal ESP");
|
||||||
#endif
|
#endif
|
||||||
FastRetCALL return;
|
FastRetCALL;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* end contextsw */
|
} /* end contextsw */
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ rs232c_read() {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* SIGIO handler getsignaldata and the successive
|
* SIGIO handler, process_io_events, and the successive
|
||||||
* rs232c_read has been called before Lisp prepares
|
* rs232c_read has been called before Lisp prepares
|
||||||
* the next buffer. Turn on RS232C_remain_data to
|
* the next buffer. Turn on RS232C_remain_data to
|
||||||
* specify to read the remaining data after.
|
* specify to read the remaining data after.
|
||||||
|
|||||||
@@ -99,7 +99,9 @@ int main(int argc, char **argv) {
|
|||||||
printf("setsysout version sysout-name\n");
|
printf("setsysout version sysout-name\n");
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
if ((version = atoi(argv[1])) == 0) {
|
errno = 0;
|
||||||
|
version = (int)strtol(argv[1], (char **)NULL, 10);
|
||||||
|
if (errno || version <= 0) {
|
||||||
printf("version must be an integer > 0.\n");
|
printf("version must be an integer > 0.\n");
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,9 +42,11 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <inttypes.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "lispemul.h"
|
#include "lispemul.h"
|
||||||
#include "lispmap.h"
|
#include "lispmap.h"
|
||||||
@@ -57,7 +59,9 @@
|
|||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "dbprint.h"
|
#include "dbprint.h"
|
||||||
#include "tosfns.h"
|
#include "tosfns.h"
|
||||||
|
#include "array.h"
|
||||||
|
|
||||||
|
#include "commondefs.h"
|
||||||
#include "testtooldefs.h"
|
#include "testtooldefs.h"
|
||||||
#include "dbgtooldefs.h"
|
#include "dbgtooldefs.h"
|
||||||
#include "gcarraydefs.h"
|
#include "gcarraydefs.h"
|
||||||
@@ -106,16 +110,17 @@ void print_atomname(LispPTR index)
|
|||||||
/* */
|
/* */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
#define PACKAGES_LIMIT 255
|
|
||||||
/** GET PACKAGE INDEX from PACKAGE FULL NAME */
|
|
||||||
int find_package_from_name(const char *packname, int len) {
|
int find_package_from_name(const char *packname, int len) {
|
||||||
int index;
|
int index;
|
||||||
PACKAGE *package;
|
PACKAGE *package;
|
||||||
NEWSTRINGP *namestring;
|
NEWSTRINGP *namestring;
|
||||||
DLword len2;
|
DLword len2;
|
||||||
char *pname;
|
char *pname;
|
||||||
|
struct arrayheader *pi_array;
|
||||||
|
|
||||||
for (index = 1; index <= PACKAGES_LIMIT; index++) {
|
/* assumes the *PACKAGE-FROM-INDEX* array is simple with no offset */
|
||||||
|
pi_array = (struct arrayheader *)Addr68k_from_LADDR(*Package_from_Index_word);
|
||||||
|
for (index = 1; index < pi_array->totalsize; index++) {
|
||||||
package = (PACKAGE *)Addr68k_from_LADDR(aref1(*Package_from_Index_word, index));
|
package = (PACKAGE *)Addr68k_from_LADDR(aref1(*Package_from_Index_word, index));
|
||||||
namestring = (NEWSTRINGP *)Addr68k_from_LADDR(package->NAME);
|
namestring = (NEWSTRINGP *)Addr68k_from_LADDR(package->NAME);
|
||||||
pname = (char *)Addr68k_from_LADDR(namestring->base);
|
pname = (char *)Addr68k_from_LADDR(namestring->base);
|
||||||
@@ -322,7 +327,7 @@ void trace_listpDTD(void) {
|
|||||||
void a68k(LispPTR lispptr) {
|
void a68k(LispPTR lispptr) {
|
||||||
DLword *val;
|
DLword *val;
|
||||||
val = Addr68k_from_LADDR(lispptr);
|
val = Addr68k_from_LADDR(lispptr);
|
||||||
printf("68k: 0x%x (%d)\n", val, val);
|
printf("68k: %p (%"PRIuPTR")\n", (void *)val, (uintptr_t)val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
@@ -358,7 +363,7 @@ void dump_fnbody(LispPTR fnblockaddr)
|
|||||||
fnobj = (struct fnhead *)Addr68k_from_LADDR(fnblockaddr);
|
fnobj = (struct fnhead *)Addr68k_from_LADDR(fnblockaddr);
|
||||||
|
|
||||||
printf("***DUMP Func Obj << ");
|
printf("***DUMP Func Obj << ");
|
||||||
printf("start at 0x%x lisp address(0x%x 68k)\n", LADDR_from_68k(fnobj), fnobj);
|
printf("start at 0x%x lisp address(%p 68k)\n", LADDR_from_68k(fnobj), fnobj);
|
||||||
|
|
||||||
print(fnobj->framename);
|
print(fnobj->framename);
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
@@ -377,7 +382,7 @@ void dump_fnbody(LispPTR fnblockaddr)
|
|||||||
for (i = 20; i < (fnobj->startpc); i += 2) {
|
for (i = 20; i < (fnobj->startpc); i += 2) {
|
||||||
int word;
|
int word;
|
||||||
word = (int)(0xffff & (GETWORD((DLword *)(scratch + i))));
|
word = (int)(0xffff & (GETWORD((DLword *)(scratch + i))));
|
||||||
printf(" 0x%x(0x%x 68k): 0%6o 0x%4x\n", LADDR_from_68k(scratch + i), scratch + i, word, word);
|
printf(" 0x%x(%p 68k): 0%6o 0x%4x\n", LADDR_from_68k(scratch + i), scratch + i, word, word);
|
||||||
}
|
}
|
||||||
|
|
||||||
scratch = (DLbyte *)fnobj + (fnobj->startpc);
|
scratch = (DLbyte *)fnobj + (fnobj->startpc);
|
||||||
@@ -813,7 +818,7 @@ void doko(void) {
|
|||||||
printf(" At ");
|
printf(" At ");
|
||||||
print_atomname(FuncObj->framename);
|
print_atomname(FuncObj->framename);
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
printf(" PC cnt = 0%o\n", ((UNSIGNED)(PC) - (UNSIGNED)FuncObj));
|
printf(" PC cnt = 0%"PRIoPTR"\n", ((UNSIGNED)(PC) - (UNSIGNED)FuncObj));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**** dump specified area (in 32 bit width) ***/
|
/**** dump specified area (in 32 bit width) ***/
|
||||||
@@ -847,18 +852,6 @@ void printPC(void) {
|
|||||||
printf("PC: O%o ", pc);
|
printf("PC: O%o ", pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************/
|
|
||||||
int countchar(char *string) {
|
|
||||||
int cnt = 0;
|
|
||||||
|
|
||||||
while (*string != '\0') {
|
|
||||||
string++;
|
|
||||||
cnt++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (cnt);
|
|
||||||
}
|
|
||||||
|
|
||||||
void dump_bf(Bframe *bf) {
|
void dump_bf(Bframe *bf) {
|
||||||
DLword *ptr;
|
DLword *ptr;
|
||||||
printf("\n*** Basic Frame");
|
printf("\n*** Basic Frame");
|
||||||
@@ -881,7 +874,7 @@ void dump_bf(Bframe *bf) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
printflags:
|
printflags:
|
||||||
printf("\n %x : %x %x ", LADDR_from_68k(bf), *bf, *(bf + 1));
|
printf("\n %x : %x %x ", LADDR_from_68k(bf), *(DLword *)bf, *((DLword *)bf + 1));
|
||||||
putchar('[');
|
putchar('[');
|
||||||
if (BFRAMEPTR(bf)->residual) printf("Residual, ");
|
if (BFRAMEPTR(bf)->residual) printf("Residual, ");
|
||||||
if (BFRAMEPTR(bf)->padding) printf("Padded, ");
|
if (BFRAMEPTR(bf)->padding) printf("Padded, ");
|
||||||
@@ -1024,10 +1017,8 @@ FX *get_nextFX(FX *fx) {
|
|||||||
|
|
||||||
} /* get_nextFX end */
|
} /* get_nextFX end */
|
||||||
|
|
||||||
int MAKEATOM(char *string) {
|
LispPTR MAKEATOM(char *string) {
|
||||||
int length;
|
return (make_atom(string, 0, strlen(string), 0));
|
||||||
length = countchar(string);
|
|
||||||
return (make_atom(string, 0, length, 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
@@ -1040,8 +1031,11 @@ int MAKEATOM(char *string) {
|
|||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
LispPTR *MakeAtom68k(char *string) {
|
LispPTR *MakeAtom68k(char *string) {
|
||||||
int index;
|
LispPTR index;
|
||||||
index = make_atom(string, 0, countchar(string), 0);
|
index = make_atom(string, 0, strlen(string), 0);
|
||||||
|
if (index == 0xffffffff) {
|
||||||
|
error("MakeAtom68k: no such atom found");
|
||||||
|
}
|
||||||
#ifdef BIGVM
|
#ifdef BIGVM
|
||||||
index = (ATOMS_HI << 16) + (index * 10) + NEWATOM_VALUE_OFFSET;
|
index = (ATOMS_HI << 16) + (index * 10) + NEWATOM_VALUE_OFFSET;
|
||||||
#else
|
#else
|
||||||
@@ -1070,44 +1064,6 @@ void GETTOPVAL(char *string) {
|
|||||||
printf("'%s': no such symbol.\n", string);
|
printf("'%s': no such symbol.\n", string);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* S _ T O P V A L */
|
|
||||||
/* */
|
|
||||||
/* Given a string that's an atom name minus the initial \, */
|
|
||||||
/* print the atom's top-level value. This is here because */
|
|
||||||
/* DBX won't put \'s in strings you type. */
|
|
||||||
/* */
|
|
||||||
/************************************************************************/
|
|
||||||
|
|
||||||
void S_TOPVAL(char *string) {
|
|
||||||
int index;
|
|
||||||
LispPTR *cell68k;
|
|
||||||
int length;
|
|
||||||
char dummy[256];
|
|
||||||
|
|
||||||
dummy[0] = '\\';
|
|
||||||
for (length = 1; *string != '\0'; length++, string++) { dummy[length] = *string; }
|
|
||||||
|
|
||||||
index = make_atom(dummy, 0, length, 0);
|
|
||||||
cell68k = (LispPTR *)GetVALCELL68k(index);
|
|
||||||
print(*cell68k);
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************/
|
|
||||||
int S_MAKEATOM(char *string) {
|
|
||||||
int index = 0;
|
|
||||||
int length;
|
|
||||||
char dummy[256];
|
|
||||||
|
|
||||||
dummy[0] = '\\';
|
|
||||||
for (length = 1; *string != '\0'; length++, string++) { dummy[length] = *string; }
|
|
||||||
|
|
||||||
index = make_atom(dummy, 0, length, 0);
|
|
||||||
printf("#Atomindex : %d\n", index);
|
|
||||||
return (index);
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/* all_stack_dump(start,end)
|
/* all_stack_dump(start,end)
|
||||||
*/
|
*/
|
||||||
@@ -1285,8 +1241,6 @@ void dtd_chain(DLword type) {
|
|||||||
|
|
||||||
} /* dtd_chain end **/
|
} /* dtd_chain end **/
|
||||||
|
|
||||||
#ifdef DTDDEBUG
|
|
||||||
|
|
||||||
void check_dtd_chain(DLword type)
|
void check_dtd_chain(DLword type)
|
||||||
{
|
{
|
||||||
register LispPTR next, onext;
|
register LispPTR next, onext;
|
||||||
@@ -1314,8 +1268,6 @@ void check_dtd_chain(DLword type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* T R A C E _ F N C A L L */
|
/* T R A C E _ F N C A L L */
|
||||||
|
|||||||
68
src/timer.c
68
src/timer.c
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
@@ -45,7 +46,7 @@ unsigned long tick_count = 0; /* approx 18 ticks per sec */
|
|||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
#include <stropts.h>
|
#include <stropts.h>
|
||||||
extern int ether_fd;
|
extern int ether_fd;
|
||||||
#endif
|
#endif
|
||||||
@@ -85,11 +86,9 @@ extern DspInterface currentdsp;
|
|||||||
* to get Alto time.
|
* to get Alto time.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int TIMEOUT_TIME; /* For file system timeout */
|
int TIMEOUT_TIME = 10; /* For file system timeout, seconds, default 10 */
|
||||||
|
|
||||||
#ifdef XWINDOW
|
volatile sig_atomic_t IO_Signalled = FALSE;
|
||||||
volatile sig_atomic_t Event_Req = FALSE;
|
|
||||||
#endif /* XWINDOW */
|
|
||||||
|
|
||||||
static int gettime(int casep);
|
static int gettime(int casep);
|
||||||
|
|
||||||
@@ -403,7 +402,7 @@ void update_timer() {
|
|||||||
/* TIMER_INTERVAL usec ~ 20 per second. This should live in some
|
/* TIMER_INTERVAL usec ~ 20 per second. This should live in some
|
||||||
machine-configuration
|
machine-configuration
|
||||||
file somewhere - it can be changed as the -t parameter to lisp*/
|
file somewhere - it can be changed as the -t parameter to lisp*/
|
||||||
int TIMER_INTERVAL = 25000;
|
int TIMER_INTERVAL = 10000;
|
||||||
|
|
||||||
extern int LispWindowFd;
|
extern int LispWindowFd;
|
||||||
|
|
||||||
@@ -423,10 +422,6 @@ static void int_timer_service(int sig)
|
|||||||
|
|
||||||
Irq_Stk_Check = 0;
|
Irq_Stk_Check = 0;
|
||||||
Irq_Stk_End = 0;
|
Irq_Stk_End = 0;
|
||||||
|
|
||||||
#ifdef XWINDOW
|
|
||||||
Event_Req = TRUE;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
@@ -466,7 +461,7 @@ static void int_timer_init()
|
|||||||
|
|
||||||
timer_action.sa_handler = int_timer_service;
|
timer_action.sa_handler = int_timer_service;
|
||||||
sigemptyset(&timer_action.sa_mask);
|
sigemptyset(&timer_action.sa_mask);
|
||||||
timer_action.sa_flags = 0;
|
timer_action.sa_flags = SA_RESTART;
|
||||||
|
|
||||||
if (sigaction(SIGVTALRM, &timer_action, NULL) == -1) {
|
if (sigaction(SIGVTALRM, &timer_action, NULL) == -1) {
|
||||||
perror("sigaction: SIGVTALRM");
|
perror("sigaction: SIGVTALRM");
|
||||||
@@ -496,15 +491,10 @@ void int_io_open(int fd)
|
|||||||
{
|
{
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
/* would turn on DOS kbd signal handler here */
|
/* would turn on DOS kbd signal handler here */
|
||||||
#elif KBINT
|
#elseif defined(O_ASYNC)
|
||||||
|
|
||||||
DBPRINT(("int_io_opening %d\n", fd));
|
DBPRINT(("int_io_opening %d\n", fd));
|
||||||
if (fcntl(fd, F_SETOWN, getpid()) == -1) {
|
if (fcntl(fd, F_SETOWN, getpid()) == -1) perror("fcntl F_SETOWN error");
|
||||||
#ifdef DEBUG
|
if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_ASYNC) == -1) perror("fcntl F_SETFL on error");
|
||||||
perror("fcntl F_SETOWN ERROR");
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_ASYNC) == -1) perror("fcntl F_SETFL error");
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -512,11 +502,27 @@ void int_io_close(int fd)
|
|||||||
{
|
{
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
/* Turn off signaller here */
|
/* Turn off signaller here */
|
||||||
#elif KBINT
|
#elseif defined(O_ASYNC)
|
||||||
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_ASYNC);
|
if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_ASYNC) == -1) perror("fcntl_F_SETFL off error");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* i n t _ i o _ s e r v i c e */
|
||||||
|
/* */
|
||||||
|
/* Handle SIGIO */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/************************************************************************/
|
||||||
|
|
||||||
|
static void int_io_service(int sig)
|
||||||
|
{
|
||||||
|
Irq_Stk_Check = 0;
|
||||||
|
Irq_Stk_End = 0;
|
||||||
|
IO_Signalled = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* i n t _ i o _ i n i t */
|
/* i n t _ i o _ i n i t */
|
||||||
@@ -531,7 +537,7 @@ void int_io_close(int fd)
|
|||||||
static void int_io_init() {
|
static void int_io_init() {
|
||||||
#ifndef DOS
|
#ifndef DOS
|
||||||
struct sigaction io_action;
|
struct sigaction io_action;
|
||||||
io_action.sa_handler = getsignaldata;
|
io_action.sa_handler = int_io_service;
|
||||||
sigemptyset(&io_action.sa_mask);
|
sigemptyset(&io_action.sa_mask);
|
||||||
io_action.sa_flags = 0;
|
io_action.sa_flags = 0;
|
||||||
|
|
||||||
@@ -541,12 +547,7 @@ static void int_io_init() {
|
|||||||
DBPRINT(("I/O interrupts enabled\n"));
|
DBPRINT(("I/O interrupts enabled\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(XWINDOW) && defined(I_SETSIG)
|
#if defined(USE_DLPI)
|
||||||
if (ioctl(ConnectionNumber(currentdsp->display_id), I_SETSIG, S_INPUT) < 0)
|
|
||||||
perror("ioctl on X fd - SETSIG for input handling failed");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_DLPI
|
|
||||||
DBPRINT(("INIT ETHER: Doing I_SETSIG.\n"));
|
DBPRINT(("INIT ETHER: Doing I_SETSIG.\n"));
|
||||||
if (ether_fd > 0)
|
if (ether_fd > 0)
|
||||||
if (ioctl(ether_fd, I_SETSIG, S_INPUT) != 0) {
|
if (ioctl(ether_fd, I_SETSIG, S_INPUT) != 0) {
|
||||||
@@ -710,13 +711,12 @@ static void int_file_init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Set Timeout period */
|
/* Set Timeout period */
|
||||||
if ((envtime = getenv("LDEFILETIMEOUT")) == NULL) {
|
envtime = getenv("LDEFILETIMEOUT");
|
||||||
TIMEOUT_TIME = 10;
|
if (envtime != NULL) {
|
||||||
} else {
|
errno = 0;
|
||||||
if ((timeout_time = atoi(envtime)) > 0)
|
timeout_time = (int)strtol(envtime, (char **)NULL, 10);
|
||||||
|
if (errno == 0 && timeout_time > 0)
|
||||||
TIMEOUT_TIME = timeout_time;
|
TIMEOUT_TIME = timeout_time;
|
||||||
else
|
|
||||||
TIMEOUT_TIME = 10;
|
|
||||||
}
|
}
|
||||||
DBPRINT(("File timeout interrupts enabled\n"));
|
DBPRINT(("File timeout interrupts enabled\n"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -247,14 +247,35 @@ void close_unix_descriptors(void) /* Get ready to shut Maiko down */
|
|||||||
|
|
||||||
int FindUnixPipes(void) {
|
int FindUnixPipes(void) {
|
||||||
char *envtmp;
|
char *envtmp;
|
||||||
|
int inttmp;
|
||||||
struct unixjob cleareduj;
|
struct unixjob cleareduj;
|
||||||
|
|
||||||
DBPRINT(("Entering FindUnixPipes\n"));
|
DBPRINT(("Entering FindUnixPipes\n"));
|
||||||
UnixPipeIn = UnixPipeOut = StartTime = UnixPID = -1;
|
UnixPipeIn = UnixPipeOut = StartTime = UnixPID = -1;
|
||||||
if ((envtmp = getenv("LDEPIPEIN"))) UnixPipeIn = atoi(envtmp);
|
if ((envtmp = getenv("LDEPIPEIN"))) {
|
||||||
if ((envtmp = getenv("LDEPIPEOUT"))) UnixPipeOut = atoi(envtmp);
|
errno = 0;
|
||||||
if ((envtmp = getenv("LDESTARTTIME"))) StartTime = atoi(envtmp);
|
inttmp = (int)strtol(envtmp, (char **)NULL, 10);
|
||||||
if ((envtmp = getenv("LDEUNIXPID"))) UnixPID = atoi(envtmp);
|
if (errno == 0)
|
||||||
|
UnixPipeIn = inttmp;
|
||||||
|
}
|
||||||
|
if ((envtmp = getenv("LDEPIPEOUT"))) {
|
||||||
|
errno = 0;
|
||||||
|
inttmp = (int)strtol(envtmp, (char **)NULL, 10);
|
||||||
|
if (errno == 0)
|
||||||
|
UnixPipeOut = inttmp;
|
||||||
|
}
|
||||||
|
if ((envtmp = getenv("LDESTARTTIME"))) {
|
||||||
|
errno = 0;
|
||||||
|
inttmp = (int)strtol(envtmp, (char **)NULL, 10);
|
||||||
|
if (errno == 0)
|
||||||
|
StartTime = inttmp;
|
||||||
|
}
|
||||||
|
if ((envtmp = getenv("LDEUNIXPID"))) {
|
||||||
|
errno = 0;
|
||||||
|
inttmp = (int)strtol(envtmp, (char **)NULL, 10);
|
||||||
|
if (errno == 0)
|
||||||
|
UnixPID = inttmp;
|
||||||
|
}
|
||||||
|
|
||||||
/* This is a good place to initialize stuff like the UJ table */
|
/* This is a good place to initialize stuff like the UJ table */
|
||||||
NPROCS = sysconf(_SC_OPEN_MAX);
|
NPROCS = sysconf(_SC_OPEN_MAX);
|
||||||
|
|||||||
403
src/uraid.c
403
src/uraid.c
@@ -35,20 +35,6 @@
|
|||||||
#include <sys/select.h>
|
#include <sys/select.h>
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#include <sundev/kbd.h>
|
|
||||||
#include <sundev/kbio.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#ifndef NOPIXRECT
|
|
||||||
#include <sunwindow/window_hs.h>
|
|
||||||
#include <sunwindow/win_ioctl.h>
|
|
||||||
#include <pixrect/pixrect_hs.h>
|
|
||||||
#include <sunwindow/win_cursor.h>
|
|
||||||
#include <sunwindow/cms.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
extern int Win_security_p;
|
|
||||||
#endif /* NOPIXRECT */
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef OS5
|
#ifdef OS5
|
||||||
#include <stropts.h>
|
#include <stropts.h>
|
||||||
@@ -149,17 +135,10 @@ v filename Save the virtual memory on the filename(Not Bootable)
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
#ifndef NOPIXRECT
|
|
||||||
extern int black, white;
|
|
||||||
extern struct pixrect *ColorDisplayPixrect, *DisplayRegionPixrect;
|
|
||||||
#endif /* NOPIXRECT */
|
|
||||||
|
|
||||||
extern int DisplayRasterWidth;
|
extern int DisplayRasterWidth;
|
||||||
extern unsigned int LispWindowFd, LispKbdFd;
|
extern unsigned int LispWindowFd, LispKbdFd;
|
||||||
extern fd_set LispReadFds;
|
extern fd_set LispReadFds;
|
||||||
#ifndef NOPIXRECT
|
|
||||||
extern struct pixrect *CursorBitMap, *InvisibleCursorBitMap;
|
|
||||||
#endif /* NOPIXRECT */
|
|
||||||
extern struct cursor CurrentCursor, InvisibleCursor;
|
extern struct cursor CurrentCursor, InvisibleCursor;
|
||||||
extern struct screen LispScreen;
|
extern struct screen LispScreen;
|
||||||
extern int displaywidth, displayheight;
|
extern int displaywidth, displayheight;
|
||||||
@@ -243,10 +222,10 @@ v filename\t\tSaves the virtual memory on the filename (Not Bootable)\n\
|
|||||||
?\t\t\tDisplays this summary";
|
?\t\t\tDisplays this summary";
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
#define ADD_RANGEP(address) \
|
#define ADD_RANGEP(address) \
|
||||||
if ((address < 0) || (POINTERMASK < address)) { \
|
if (((address) < 0) || (POINTERMASK < (address))) { \
|
||||||
printf("Address out of range.\n"); \
|
printf("Address out of range.\n"); \
|
||||||
return (T); \
|
return (T); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define URMAXCOMM 512
|
#define URMAXCOMM 512
|
||||||
@@ -798,10 +777,6 @@ LispPTR uraid_commands() {
|
|||||||
printf("VMEMSAVE: v filename (it's NOT bootable)\n");
|
printf("VMEMSAVE: v filename (it's NOT bootable)\n");
|
||||||
return (T);
|
return (T);
|
||||||
}
|
}
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
copy_region(HideDisp68k, DisplayRegion68k, DisplayRasterWidth, displayheight);
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
if (vmem_save(URaid_arg1) != NIL) {
|
if (vmem_save(URaid_arg1) != NIL) {
|
||||||
#ifndef DISPLAYBUFFER
|
#ifndef DISPLAYBUFFER
|
||||||
clear_display();
|
clear_display();
|
||||||
@@ -861,17 +836,8 @@ LispPTR uraid_commands() {
|
|||||||
extern struct pixrect *ColorDisplayPixrect, *DisplayRegionPixrect;
|
extern struct pixrect *ColorDisplayPixrect, *DisplayRegionPixrect;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
#define SV_ACQUIRE "/bin/sunview1/sv_acquire"
|
|
||||||
#define SV_RELEASE "/bin/sunview1/sv_release"
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
int device_before_raid() {
|
int device_before_raid() {
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
int size;
|
|
||||||
int keytrans;
|
|
||||||
union wait status;
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
sigset_t signals;
|
sigset_t signals;
|
||||||
#endif
|
#endif
|
||||||
@@ -885,12 +851,6 @@ int device_before_raid() {
|
|||||||
sigprocmask(SIG_UNBLOCK, &signals, NULL);
|
sigprocmask(SIG_UNBLOCK, &signals, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
win_setcursor(LispWindowFd, &InvisibleCursor);
|
|
||||||
#ifdef KBINT
|
|
||||||
int_io_close(LispWindowFd);
|
|
||||||
#endif
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef MAIKO_ENABLE_ETHERNET
|
#ifdef MAIKO_ENABLE_ETHERNET
|
||||||
#ifdef ETHERINT
|
#ifdef ETHERINT
|
||||||
@@ -903,96 +863,6 @@ int device_before_raid() {
|
|||||||
int_io_close(RS232C_Fd);
|
int_io_close(RS232C_Fd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
mess_reset(); /* turn off console-msg handling */
|
|
||||||
|
|
||||||
#ifdef FX_AR_124
|
|
||||||
/* For AR 124. Type4 driver bug?? by m.matsuda */
|
|
||||||
{
|
|
||||||
long i;
|
|
||||||
for (i = 0; i < 900000; i++)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
#endif /* FX_AR_124 */
|
|
||||||
|
|
||||||
if ((LispKbdFd = open(LispScreen.scr_kbdname, O_RDWR)) == -1) {
|
|
||||||
fprintf(stderr, "can't open %s\n", LispScreen.scr_kbdname);
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
keytrans = TR_EVENT; /* keyboard encodes key */
|
|
||||||
if (ioctl(LispKbdFd, KIOCTRANS, &keytrans) == -1) {
|
|
||||||
fprintf(stderr, "Error at ioctl errno =%d\n", errno);
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
close(LispKbdFd);
|
|
||||||
close(LispWindowFd);
|
|
||||||
|
|
||||||
#ifdef TRUECOLOR
|
|
||||||
truecolor_before_raid();
|
|
||||||
#endif /* TRUECOLOR */
|
|
||||||
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
size = ((displaywidth * displayheight / 8 + (getpagesize() - 1)) & -getpagesize());
|
|
||||||
|
|
||||||
if ((HideDisp68k = malloc(size)) == 0) {
|
|
||||||
printf("can't malloc hide space\n");
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
copy_region(DisplayRegion68k, HideDisp68k, DisplayRasterWidth, displayheight);
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
#ifdef COLOR
|
|
||||||
save_colormap();
|
|
||||||
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
if (Inited_Color) {
|
|
||||||
#else
|
|
||||||
if (MonoOrColor == COLOR_SCREEN) {
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
/* save color image */
|
|
||||||
size =
|
|
||||||
((displaywidth * displayheight + (getpagesize() - 1)) & -getpagesize()); /* 8 bit depth */
|
|
||||||
if ((HideColorDisp68k = malloc(size)) == 0) {
|
|
||||||
printf("can't malloc hide space\n");
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
copy_region(ColorDisplayRegion68k, HideColorDisp68k, DisplayRasterWidth * 8, displayheight);
|
|
||||||
} /* end if(MonoOrColor) */
|
|
||||||
#endif /* COLOR */
|
|
||||||
|
|
||||||
clear_display();
|
|
||||||
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
pr_close(ColorDisplayPixrect);
|
|
||||||
close(FrameBufferFd);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (Win_security_p) {
|
|
||||||
switch (vfork()) {
|
|
||||||
case -1: /* Error */ (void)fprintf(stderr, "display_before_exit: Fork failed.\n"); exit(1);
|
|
||||||
|
|
||||||
case 0: /* Child */
|
|
||||||
(void)execl(SV_RELEASE, "sv_release", NULL);
|
|
||||||
/* should not return */
|
|
||||||
(void)fprintf(stderr, "display_before_exit: exec for sv_release failed\n");
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
default: /* Parent */
|
|
||||||
/* do nothing */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
(void)wait(&status); /* child dies after changing 16 */
|
|
||||||
|
|
||||||
if (status.w_retcode != 0) {
|
|
||||||
(void)fprintf(stderr, "device_before_raid: failed to set ownership of win devices\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#if defined(XWINDOW) || defined(DOS)
|
#if defined(XWINDOW) || defined(DOS)
|
||||||
(currentdsp->cleardisplay)(currentdsp);
|
(currentdsp->cleardisplay)(currentdsp);
|
||||||
@@ -1083,7 +953,7 @@ int device_after_raid() {
|
|||||||
|
|
||||||
#ifdef MAIKO_ENABLE_ETHERNET
|
#ifdef MAIKO_ENABLE_ETHERNET
|
||||||
init_ether();
|
init_ether();
|
||||||
#ifdef USE_DLPI
|
#if defined(USE_DLPI)
|
||||||
if (ether_fd > 0)
|
if (ether_fd > 0)
|
||||||
if (ioctl(ether_fd, I_SETSIG, S_INPUT) != 0) {
|
if (ioctl(ether_fd, I_SETSIG, S_INPUT) != 0) {
|
||||||
perror("after-uraid: I_SETSIG for ether failed:\n");
|
perror("after-uraid: I_SETSIG for ether failed:\n");
|
||||||
@@ -1103,12 +973,9 @@ int device_after_raid() {
|
|||||||
|
|
||||||
int_init();
|
int_init();
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
FD_SET(LispWindowFd, &LispReadFds);
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
#ifdef MAIKO_ENABLE_ETHERNET
|
#ifdef MAIKO_ENABLE_ETHERNET
|
||||||
FD_SET(ether_fd, &LispReadFds);
|
if (ether_fd > 0) FD_SET(ether_fd, &LispReadFds);
|
||||||
#endif /* MAIKO_ENABLE_ETHERNET */
|
#endif /* MAIKO_ENABLE_ETHERNET */
|
||||||
|
|
||||||
#ifdef XWINDOW
|
#ifdef XWINDOW
|
||||||
@@ -1145,107 +1012,6 @@ int device_after_raid() {
|
|||||||
|
|
||||||
static int re_init_display(int lisp_display_addr, int display_max)
|
static int re_init_display(int lisp_display_addr, int display_max)
|
||||||
{
|
{
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
int mmapstat, size;
|
|
||||||
struct pixrect *ColorFb;
|
|
||||||
extern struct pixrect *ColorDisplayPixrect, *DisplayRegionPixrect;
|
|
||||||
extern int DisplayType;
|
|
||||||
|
|
||||||
union wait status;
|
|
||||||
|
|
||||||
if (Win_security_p) {
|
|
||||||
switch (vfork()) {
|
|
||||||
case -1: /* Error */ (void)fprintf(stderr, "re_init_display: Fork failed.\n"); exit(1);
|
|
||||||
|
|
||||||
case 0: /* Child */
|
|
||||||
(void)execl(SV_ACQUIRE, "sv_acquire", "0", "256", "250", NULL);
|
|
||||||
/* should not return */
|
|
||||||
(void)fprintf(stderr, "re_init_display: exec for sv_acquire failed\n");
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
default: /* Parent */
|
|
||||||
/* do nothing */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
(void)wait(&status); /* child dies after changing 6 */
|
|
||||||
|
|
||||||
if (status.w_retcode != 0) {
|
|
||||||
(void)fprintf(stderr, "re_init_display: failed to set ownership of win devices\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mess_init();
|
|
||||||
if ((LispWindowFd = win_screennew(&LispScreen)) == -1) {
|
|
||||||
fprintf(stderr, "init_display: can't create LispWindow\n");
|
|
||||||
return (-1);
|
|
||||||
} else {
|
|
||||||
#ifdef KBINT
|
|
||||||
int_io_open(LispWindowFd);
|
|
||||||
fcntl(LispWindowFd, F_SETFL, fcntl(LispWindowFd, F_GETFL, 0) | O_NONBLOCK);
|
|
||||||
|
|
||||||
#ifdef FX_AR_124
|
|
||||||
/* For AR 124. Type4 driver bug?? by m.matsuda */
|
|
||||||
{
|
|
||||||
long i;
|
|
||||||
for (i = 0; i < 900000; i++)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
#endif /* FX_AR_124 */
|
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
/* for CGFOUR dev */
|
|
||||||
if (DisplayType == SUN4COLOR) {
|
|
||||||
ColorFb = pr_open("/dev/fb");
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY_ENABLE);
|
|
||||||
pr_rop(ColorFb, 0, 0, ColorFb->pr_width, ColorFb->pr_height, PIX_SET, 0, 0, 0);
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY);
|
|
||||||
}
|
|
||||||
#else /* DISPLAYBUFFER is T */
|
|
||||||
/* ColorDisplayPixrect = pr_open("/dev/fb");
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, 1, 1, &black, &black, &black);
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, 0, 1, &white, &white, &white);
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, 255, 1, &black, &black, &black);
|
|
||||||
pr_putcolormap(ColorDisplayPixrect,
|
|
||||||
(1<<ColorDisplayPixrect->pr_depth)-1, 1,
|
|
||||||
&black, &black, &black);
|
|
||||||
***/
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
init_cursor();
|
|
||||||
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
size = ((displaywidth * displayheight / 8 + (getpagesize() - 1)) & -getpagesize());
|
|
||||||
mmapstat = (int)mmap(DisplayRegion68k, size, PROT_READ | PROT_WRITE,
|
|
||||||
#ifdef OS4
|
|
||||||
MAP_FIXED |
|
|
||||||
#endif /* OS4 */
|
|
||||||
|
|
||||||
MAP_SHARED,
|
|
||||||
FrameBufferFd, 0);
|
|
||||||
|
|
||||||
if (mmapstat == -1) {
|
|
||||||
fprintf(stderr, "re_init_display: ERROR at mmap system call\n");
|
|
||||||
fprintf(stderr, "errno = %d\n\n", errno);
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
copy_region(HideDisp68k, DisplayRegion68k, DisplayRasterWidth, displayheight);
|
|
||||||
|
|
||||||
free(HideDisp68k);
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
ColorDisplayPixrect = pr_open("/dev/fb");
|
|
||||||
flush_display_buffer();
|
|
||||||
/* refresh_CG6; */
|
|
||||||
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@@ -1254,163 +1020,6 @@ static int re_init_display(int lisp_display_addr, int display_max)
|
|||||||
|
|
||||||
static int re_init_display(int lisp_display_addr, int display_max)
|
static int re_init_display(int lisp_display_addr, int display_max)
|
||||||
{
|
{
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
int mmapstat, size;
|
|
||||||
struct pixrect *ColorFb;
|
|
||||||
struct pixrect *color_source;
|
|
||||||
extern int DisplayType;
|
|
||||||
union wait status;
|
|
||||||
|
|
||||||
if (Win_security_p) {
|
|
||||||
switch (vfork()) {
|
|
||||||
case -1: /* Error */ (void)fprintf(stderr, "re_init_display: Fork failed.\n"); exit(1);
|
|
||||||
|
|
||||||
case 0: /* Child */
|
|
||||||
(void)execl(SV_ACQUIRE, "sv_acquire", "0", "256", "250", NULL);
|
|
||||||
/* should not return */
|
|
||||||
(void)fprintf(stderr, "re_init_display: exec for sv_acquire failed\n");
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
default: /* Parent */
|
|
||||||
/* do nothing */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
(void)wait(&status); /* child dies after changing 6 */
|
|
||||||
|
|
||||||
if (status.w_retcode != 0) {
|
|
||||||
(void)fprintf(stderr, "re_init_display: failed to set ownership of win devices\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mess_init();
|
|
||||||
if ((LispWindowFd = win_screennew(&LispScreen)) == -1) {
|
|
||||||
fprintf(stderr, "init_display: can't create LispWindow\n");
|
|
||||||
return (-1);
|
|
||||||
} else {
|
|
||||||
#ifdef KBINT
|
|
||||||
int_io_open(LispWindowFd);
|
|
||||||
fcntl(LispWindowFd, F_SETFL, fcntl(LispWindowFd, F_GETFL, 0) | O_NONBLOCK);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
if ((FrameBufferFd = open(LispScreen.scr_fbname, 2)) == -1) {
|
|
||||||
perror("init_display: can't open FrameBuffer\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
restore_colormap();
|
|
||||||
|
|
||||||
if (MonoOrColor == MONO_SCREEN) {
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
/* for CGFOUR dev */
|
|
||||||
if (DisplayType == SUN4COLOR) {
|
|
||||||
ColorFb = pr_open("/dev/fb");
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY_ENABLE);
|
|
||||||
pr_rop(ColorFb, 0, 0, ColorFb->pr_width, ColorFb->pr_height, PIX_SET, 0, 0, 0);
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY);
|
|
||||||
}
|
|
||||||
#else /* DISPLAYBUFFER is T */
|
|
||||||
/* ColorDisplayPixrect = pr_open("/dev/fb");
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, 1, 1, &black, &black, &black);
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, 0, 1, &white, &white, &white);
|
|
||||||
pr_putcolormap(ColorDisplayPixrect, 255, 1, &black, &black, &black);
|
|
||||||
pr_putcolormap(ColorDisplayPixrect,
|
|
||||||
(1<<ColorDisplayPixrect->pr_depth)-1, 1,
|
|
||||||
&black, &black, &black);
|
|
||||||
***/
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
init_cursor();
|
|
||||||
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
size = ((displaywidth * displayheight / 8 + (getpagesize() - 1)) & -getpagesize());
|
|
||||||
|
|
||||||
mmapstat = (int)mmap(DisplayRegion68k, size, PROT_READ | PROT_WRITE,
|
|
||||||
#ifdef OS4
|
|
||||||
MAP_FIXED |
|
|
||||||
#endif /* OS4 */
|
|
||||||
|
|
||||||
MAP_SHARED,
|
|
||||||
FrameBufferFd, 0);
|
|
||||||
if (Inited_Color)
|
|
||||||
mmapstat = (int)mmap(ColorDisplayRegion68k, Dispcolorsize, PROT_READ | PROT_WRITE,
|
|
||||||
#ifdef OS4
|
|
||||||
MAP_FIXED |
|
|
||||||
#endif /* OS4 */
|
|
||||||
|
|
||||||
MAP_SHARED,
|
|
||||||
FrameBufferFd, 0x40000);
|
|
||||||
|
|
||||||
if (mmapstat == -1) {
|
|
||||||
fprintf(stderr, "re_init_display: ERROR at mmap system call\n");
|
|
||||||
fprintf(stderr, "errno = %d\n\n", errno);
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
/* restore mono image */
|
|
||||||
copy_region(HideDisp68k, DisplayRegion68k, DisplayRasterWidth, displayheight);
|
|
||||||
|
|
||||||
free(HideDisp68k);
|
|
||||||
|
|
||||||
if (Inited_Color) { /* restore color image */
|
|
||||||
copy_region(HideColorDisp68k, ColorDisplayRegion68k, DisplayRasterWidth * 8, displayheight);
|
|
||||||
free(HideColorDisp68k);
|
|
||||||
} /* end if( Inited_Color ) */
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
ColorDisplayPixrect = pr_open("/dev/fb");
|
|
||||||
flush_display_buffer();
|
|
||||||
/* refresh_CG6; */
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
} else { /* MonoOrColor is COLOR_SCREEN */
|
|
||||||
ColorFb = pr_open("/dev/fb");
|
|
||||||
#ifdef DISPLAYBUFFER
|
|
||||||
ColorDisplayPixrect = ColorFb;
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
color_source = mem_point(displaywidth, displayheight, 8, ColorDisplayRegion68k);
|
|
||||||
pr_rop(ColorFb, 0, 0, displaywidth, displayheight, PIX_SRC, color_source, 0, 0);
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_OVERLAY_ENABLE);
|
|
||||||
pr_rop(ColorFb, 0, 0, ColorFb->pr_width, ColorFb->pr_height, PIX_CLR, 0, 0, 0);
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
pr_set_plane_group(ColorFb, PIXPG_8BIT_COLOR);
|
|
||||||
init_cursor();
|
|
||||||
mmapstat = (int)mmap(ColorDisplayRegion68k, Dispcolorsize, PROT_READ | PROT_WRITE,
|
|
||||||
#ifdef OS4
|
|
||||||
MAP_FIXED |
|
|
||||||
#endif
|
|
||||||
MAP_SHARED,
|
|
||||||
FrameBufferFd, 0x40000);
|
|
||||||
if (mmapstat == -1) {
|
|
||||||
perror("cgfour_init_color_display: ERROR at mmap system call\n");
|
|
||||||
error(
|
|
||||||
"cgfour_init_color_display: ERROR at mmap system call\n You may be able to continue by "
|
|
||||||
"typing 'q'");
|
|
||||||
/* printf("MMAP FAIL:BMBASE=0x%x\nNATIVE:= 0x%x\nLISPBASEN:= 0x%x\n",
|
|
||||||
color_bitmapbase,ColorDisplayRegion68k,Lisp_world);
|
|
||||||
*/
|
|
||||||
return (NIL);
|
|
||||||
} /* end if(mmapstat) */
|
|
||||||
|
|
||||||
#ifndef DISPLAYBUFFER
|
|
||||||
/* restore mono image */
|
|
||||||
copy_region(HideDisp68k, DisplayRegion68k, DisplayRasterWidth, displayheight);
|
|
||||||
|
|
||||||
free(HideDisp68k);
|
|
||||||
#endif /* DISPLAYBUFFER */
|
|
||||||
|
|
||||||
/* restore coloe image */
|
|
||||||
copy_region(HideColorDisp68k, ColorDisplayRegion68k, DisplayRasterWidth * 8, displayheight);
|
|
||||||
|
|
||||||
free(HideColorDisp68k);
|
|
||||||
} /* end if(MonoOrColor) */
|
|
||||||
#endif /* SUNDISPLAY */
|
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,9 +36,6 @@
|
|||||||
#define alarm(x) 1
|
#define alarm(x) 1
|
||||||
#endif /* DOS */
|
#endif /* DOS */
|
||||||
|
|
||||||
#if defined(SUNDISPLAY) && defined(OLD_CURSOR)
|
|
||||||
#include <sunwindow/win_cursor.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "hdw_conf.h"
|
#include "hdw_conf.h"
|
||||||
#include "lispemul.h"
|
#include "lispemul.h"
|
||||||
@@ -61,18 +58,15 @@
|
|||||||
#include "perrnodefs.h"
|
#include "perrnodefs.h"
|
||||||
#include "ufsdefs.h"
|
#include "ufsdefs.h"
|
||||||
|
|
||||||
#ifdef GCC386
|
|
||||||
#include "inlnPS2.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Error return values from VMEMSAVE */
|
/* Error return values from VMEMSAVE */
|
||||||
#define COMPLETESYSOUT NIL
|
#define COMPLETESYSOUT NIL
|
||||||
#define BADFILENAME S_POSITIVE | 1
|
#define BADFILENAME (S_POSITIVE | 1)
|
||||||
#define NOFILESPACE S_POSITIVE | 2
|
#define NOFILESPACE (S_POSITIVE | 2)
|
||||||
#define FILECANNOTOPEN S_POSITIVE | 3
|
#define FILECANNOTOPEN (S_POSITIVE | 3)
|
||||||
#define FILECANNOTSEEK S_POSITIVE | 4
|
#define FILECANNOTSEEK (S_POSITIVE | 4)
|
||||||
#define FILECANNOTWRITE S_POSITIVE | 5
|
#define FILECANNOTWRITE (S_POSITIVE | 5)
|
||||||
#define FILETIMEOUT S_POSITIVE | 6
|
#define FILETIMEOUT (S_POSITIVE | 6)
|
||||||
|
|
||||||
extern int LispWindowFd;
|
extern int LispWindowFd;
|
||||||
extern struct pixrect *CursorBitMap, *InvisibleCursorBitMap;
|
extern struct pixrect *CursorBitMap, *InvisibleCursorBitMap;
|
||||||
@@ -319,9 +313,6 @@ LispPTR vmem_save(char *sysout_file_name)
|
|||||||
register int i;
|
register int i;
|
||||||
char tempname[MAXPATHLEN];
|
char tempname[MAXPATHLEN];
|
||||||
register int rval;
|
register int rval;
|
||||||
#ifdef SUNDISPLAY
|
|
||||||
/* DLword *bmptr; */
|
|
||||||
#endif
|
|
||||||
#ifndef DOS
|
#ifndef DOS
|
||||||
extern int ScreenLocked;
|
extern int ScreenLocked;
|
||||||
extern DLword *EmCursorX68K;
|
extern DLword *EmCursorX68K;
|
||||||
@@ -332,17 +323,7 @@ LispPTR vmem_save(char *sysout_file_name)
|
|||||||
|
|
||||||
/* remove cursor image from screen */
|
/* remove cursor image from screen */
|
||||||
|
|
||||||
#ifdef SUNDISPLAY
|
#if DOS
|
||||||
#ifdef OLD_CURSOR
|
|
||||||
win_setcursor(LispWindowFd, &InvisibleCursor);
|
|
||||||
#else
|
|
||||||
ScreenLocked = T;
|
|
||||||
taking_mouse_down();
|
|
||||||
/* bmptr = EmCursorBitMap68K;
|
|
||||||
EmCursorBitMap68K= NullCursor;*/
|
|
||||||
#endif /* OLD_CURSOR */
|
|
||||||
|
|
||||||
#elif DOS
|
|
||||||
/* For DOS, must also take the mouse cursor away (it's */
|
/* For DOS, must also take the mouse cursor away (it's */
|
||||||
/* written into the display-region bitmap). */
|
/* written into the display-region bitmap). */
|
||||||
currentdsp->device.locked++;
|
currentdsp->device.locked++;
|
||||||
@@ -515,17 +496,7 @@ LispPTR vmem_save(char *sysout_file_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* restore cursor image to screen */
|
/* restore cursor image to screen */
|
||||||
#ifdef SUNDISPLAY
|
#if DOS
|
||||||
#ifdef OLD_CURSOR
|
|
||||||
win_setcursor(LispWindowFd, &CurrentCursor);
|
|
||||||
#else
|
|
||||||
ScreenLocked = T;
|
|
||||||
/*EmCursorBitMap68K = bmptr ;*/
|
|
||||||
taking_mouse_up(*EmCursorX68K, *EmCursorY68K);
|
|
||||||
ScreenLocked = NIL;
|
|
||||||
#endif /* OLD_CURSOR */
|
|
||||||
|
|
||||||
#elif DOS
|
|
||||||
/* Must also put the mouse back. */
|
/* Must also put the mouse back. */
|
||||||
(currentdsp->mouse_visible)(IOPage68K->dlmousex, IOPage68K->dlmousey);
|
(currentdsp->mouse_visible)(IOPage68K->dlmousex, IOPage68K->dlmousey);
|
||||||
currentdsp->device.locked--;
|
currentdsp->device.locked--;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user