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

Compare commits

..

7 Commits

Author SHA1 Message Date
Nick Briggs
4245764b31 Turn on DTD checking and differentiate error messages. 2023-07-23 18:55:31 -07:00
Nick Briggs
4520609479 Print the bad Lisp pointer as well as where it came from. 2023-07-23 14:51:36 -07:00
Nick Briggs
3b42f0579d The lisp pointers are 28 bits not 24 2023-07-23 12:23:17 -07:00
Nick Briggs
29b492093d Add ARRAYCHECK to makefile slices for macOS 2023-07-22 15:40:11 -07:00
Nick Briggs
1c6d366e3c Catch more pointer problems in NativeAligned4FromLAddr 2023-07-22 15:37:14 -07:00
Nick Briggs
c74e7a0169 Avoid accessing free block chain pointers when block is not free 2023-07-22 15:36:11 -07:00
Nick Briggs
060420ce42 struct buf is missing definition for byte-swapped bigvm case
While there was a definition for the pre-bigvm case, with 24-bit
pointers, for byteswapped (little-endian) systems, there was no
structure definition for the bigvm case, with 28-bit pointers.
2023-07-22 15:34:33 -07:00
119 changed files with 1467 additions and 3261 deletions

View File

@@ -1,6 +1,6 @@
name: Build name: Build
on: [push, pull_request, workflow_dispatch] on: [push, pull_request]
defaults: defaults:
run: run:
@@ -11,7 +11,7 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [macos-12, macos-13, macos-14, macos-15, ubuntu-24.04, ubuntu-22.04, ubuntu-20.04] os: [macos-11, macos-12, ubuntu-22.04, ubuntu-20.04]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Install X11 dependencies on MacOS - name: Install X11 dependencies on MacOS
@@ -37,7 +37,7 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [macos-12, macos-13, macos-14, macos-15, ubuntu-24.04, ubuntu-22.04, ubuntu-20.04] os: [macos-11, macos-12, ubuntu-22.04, ubuntu-20.04]
env: env:
BUILD_TYPE: Release BUILD_TYPE: Release
steps: steps:

View File

@@ -29,7 +29,7 @@ jobs:
buildBuilder: buildBuilder:
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
steps: steps:
# Checkout maiko # Checkout maiko

View File

@@ -84,7 +84,7 @@ jobs:
# the result of a workflow_dispatch or a workflow_call # the result of a workflow_dispatch or a workflow_call
inputs: inputs:
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
outputs: outputs:
draft: ${{ steps.one.outputs.draft }} draft: ${{ steps.one.outputs.draft }}
force: ${{ steps.one.outputs.force }} force: ${{ steps.one.outputs.force }}
@@ -116,14 +116,14 @@ jobs:
sentry: sentry:
needs: inputs needs: inputs
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
outputs: outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }} release_not_built: ${{ steps.check.outputs.release_not_built }}
steps: steps:
# Checkout the actions for this repo owner # Checkout the actions for this repo owner
- name: Checkout Actions - name: Checkout Actions
uses: actions/checkout@v4 uses: actions/checkout@v3
with: with:
repository: ${{ github.repository_owner }}/.github repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }} path: ./Actions_${{ github.sha }}
@@ -152,12 +152,12 @@ jobs:
|| needs.inputs.outputs.force == 'true' || needs.inputs.outputs.force == 'true'
) )
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
steps: steps:
# Checkout the actions for this repo owner # Checkout the actions for this repo owner
- name: Checkout Actions - name: Checkout Actions
uses: actions/checkout@v4 uses: actions/checkout@v3
with: with:
repository: ${{ github.repository_owner }}/.github repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }} path: ./Actions_${{ github.sha }}
@@ -165,7 +165,7 @@ jobs:
# Checkout the branch # Checkout the branch
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
# Setup release tag # Setup release tag
- name: Setup Release Tag - name: Setup Release Tag
@@ -185,14 +185,14 @@ jobs:
# Setup the Docker Machine Emulation environment. # Setup the Docker Machine Emulation environment.
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v2
with: with:
platforms: linux/amd64,linux/arm64,linux/arm/v7 platforms: linux/amd64,linux/arm64,linux/arm/v7
# Setup the Docker Buildx funtion # Setup the Docker Buildx funtion
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v2
# Do the Docker Build using the Dockerfile in the repository we # Do the Docker Build using the Dockerfile in the repository we
# checked out. Save the results in a directory under /tmp to be used # checked out. Save the results in a directory under /tmp to be used
@@ -204,7 +204,7 @@ jobs:
# Dockerfile, NOT HERE IN THE WORKFLOW. # Dockerfile, NOT HERE IN THE WORKFLOW.
# #
- name: Build Docker Image and Save It Locally - name: Build Docker Image and Save It Locally
uses: docker/build-push-action@v6 uses: docker/build-push-action@v4
with: with:
builder: ${{ steps.buildx.outputs.name }} builder: ${{ steps.buildx.outputs.name }}
build-args: | build-args: |
@@ -266,17 +266,17 @@ jobs:
|| needs.inputs.outputs.force == 'true' || needs.inputs.outputs.force == 'true'
) )
runs-on: macos-12 runs-on: macos-latest
steps: steps:
# Checkout the branch # Checkout the branch
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
# Checkout the actions for this repo owner # Checkout the actions for this repo owner
- name: Checkout Actions - name: Checkout Actions
uses: actions/checkout@v4 uses: actions/checkout@v3
with: with:
repository: ${{ github.repository_owner }}/.github repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }} path: ./Actions_${{ github.sha }}
@@ -290,13 +290,13 @@ jobs:
# Uninstall exisitng X11 stuff preconfigured on runner then install correct X11 dependencies # Uninstall exisitng X11 stuff preconfigured on runner then install correct X11 dependencies
- name: Unistall X components already on the runner - name: Unistall X components already on the runner
run: | run: |
brew uninstall --ignore-dependencies --force libxft brew uninstall --ignore-dependencies libxft
brew uninstall --ignore-dependencies --force libxrender brew uninstall --ignore-dependencies libxrender
brew uninstall --ignore-dependencies --force libxext brew uninstall --ignore-dependencies libxext
brew uninstall --ignore-dependencies --force libx11 brew uninstall --ignore-dependencies libx11
brew uninstall --ignore-dependencies --force xorgproto brew uninstall --ignore-dependencies xorgproto
brew uninstall --ignore-dependencies --force libxdmcp brew uninstall --ignore-dependencies libxdmcp
brew uninstall --ignore-dependencies --force libxau brew uninstall --ignore-dependencies libxau
- name: Install X11 dependencies on MacOS - name: Install X11 dependencies on MacOS
env: env:
@@ -412,7 +412,7 @@ jobs:
run: | run: |
wget https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe wget https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe
Unblock-File setup-x86_64.exe Unblock-File setup-x86_64.exe
Start-Process setup-x86_64.exe -Wait -ArgumentList @("--root", ".\cygwin", "--quiet-mode", "--no-admin", "--wait", "--no-shortcuts", "--no-write-registry", "--verbose", "--site", "https://mirrors.kernel.org/sourceware/cygwin/", "--packages", "nano,binutils,make,cmake,gcc,clang") Start-Process setup-x86_64.exe -Wait -ArgumentList @("--root", ".\cygwin", "--quiet-mode", "--no-admin", "--wait", "--no-shortcuts", "--no-write-registry", "--verbose", "--site", "http://www.gtlib.gatech.edu/pub/cygwin/", "--packages", "nano,binutils,make,cmake,gcc,clang")
cygwin\bin\bash -login -c 'sed -i -e "s/^none/#none/" /etc/fstab; echo "none / cygdrive binary,posix=0,user 0 0" >>/etc/fstab' cygwin\bin\bash -login -c 'sed -i -e "s/^none/#none/" /etc/fstab; echo "none / cygdrive binary,posix=0,user 0 0" >>/etc/fstab'
# Retrieve SDL2 and install in cygwin # Retrieve SDL2 and install in cygwin
@@ -426,13 +426,13 @@ jobs:
# Checkout the branch # Checkout the branch
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
with: with:
path: cygwin\maiko path: cygwin\maiko
# Checkout the actions for this repo owner # Checkout the actions for this repo owner
- name: Checkout Actions - name: Checkout Actions
uses: actions/checkout@v4 uses: actions/checkout@v3
with: with:
repository: ${{ github.repository_owner }}/.github repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }} path: ./Actions_${{ github.sha }}
@@ -473,80 +473,6 @@ jobs:
######################################################################################
# Emscripten: build and push Maiko compiled for Emscripten (to run Maiko in browser)
emscripten:
needs: [inputs, sentry]
if: |
needs.inputs.outputs.linux == 'true'
&& (
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
)
runs-on: ubuntu-24.04
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Install SDL2
- name: Install SDL2
run: |
export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get install -y libsdl2-dev libsdl2-2.0-0
# Install Emscripten SDK
- name: Install Empscripten
working-directory: ../
run: |
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
CWD="$(pwd)"
echo "${CWD}" >> ${GITHUB_PATH}
echo "${CWD}/upstream/emscripten" >> ${GITHUB_PATH}
echo "${CWD}/upstream/emscripten/tools" >> ${GITHUB_PATH}
echo "${CWD}/node/$(ls -d node/*64bit | tail -1)/bin" >> ${GITHUB_PATH}
# Checkout the maiko branch
- name: Checkout
uses: actions/checkout@v4
# Setup release tag
- name: Setup Release Tag
id: tag
uses: ./../actions/release-tag-action
# Compile maiko using Emscripten (no load build)
- name: Compile Maiko using Emscripten
working-directory: ./bin
run: |
./makeright wasm_nl
cd ../emscripten.wasm_nl
tar -c -z -f ../${{ steps.tag.outputs.release_tag }}-emscripten.tgz *
# Push Release to github
- name: Push the release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: ${{ steps.tag.outputs.release_tag }}-emscripten.tgz
tag: ${{ steps.tag.outputs.release_tag }}
draft: ${{ needs.inputs.outputs.draft }}
token: ${{ secrets.GITHUB_TOKEN }}
###################################################################################### ######################################################################################
# Use set-sentry-action to determine set the sentry that says this release has # Use set-sentry-action to determine set the sentry that says this release has
@@ -554,17 +480,17 @@ jobs:
complete: complete:
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
outputs: outputs:
build_successful: ${{ steps.output.outputs.build_successful }} build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, linux, macos, windows, emscripten] needs: [inputs, sentry, linux, macos, windows]
steps: steps:
# Checkout the actions for this repo owner # Checkout the actions for this repo owner
- name: Checkout Actions - name: Checkout Actions
uses: actions/checkout@v4 uses: actions/checkout@v3
with: with:
repository: ${{ github.repository_owner }}/.github repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }} path: ./Actions_${{ github.sha }}

5
.gitignore vendored
View File

@@ -10,7 +10,6 @@ cmake-build-*/**
.idea/ .idea/
*.m68k-x/** *.m68k-x/**
*.m68k/** *.m68k/**
*.386-sdl/**
*.386-x/** *.386-x/**
*.386/** *.386/**
*.ppc-x/** *.ppc-x/**
@@ -20,10 +19,6 @@ cmake-build-*/**
*.x86_64-x/** *.x86_64-x/**
*.x86_64-sdl/** *.x86_64-sdl/**
*.x86_64/** *.x86_64/**
*.wasm/**
*.wasm-wasm/**
*.wasm_nl/**
*.wasm_nl-wasm_nl/**
*.armv7l-x/** *.armv7l-x/**
*.armv7l/** *.armv7l/**
*.aarch64-x/** *.aarch64-x/**

View File

@@ -18,7 +18,7 @@ ENDIF()
find_program( find_program(
CLANG_TIDY_EXE CLANG_TIDY_EXE
NAMES "clang-tidy" "clang-tidy16" "clang-tidy15" "clang-tidy14" "clang-tidy13" "clang-tidy12" "clang-tidy11" "clang-tidy10" NAMES "clang-tidy" "clang-tidy13" "clang-tidy12" "clang-tidy11" "clang-tidy10"
DOC "Path to clang-tidy executable" DOC "Path to clang-tidy executable"
) )
@@ -37,21 +37,12 @@ IF(NEED_LIB_M)
SET(MAIKO_LIBRARIES m) SET(MAIKO_LIBRARIES m)
ENDIF() ENDIF()
SET (MAIKO_RELEASE 351 CACHE STRING "Release version to build. Release: 115, 200, 201, 210, 300, 350, 351")
SET_PROPERTY(CACHE MAIKO_RELEASE PROPERTY STRINGS 115 200 201 210 300 350 351)
MESSAGE("-- Configured for release ${MAIKO_RELEASE}")
SET(MAIKO_DEFINITIONS SET(MAIKO_DEFINITIONS
"-DRELEASE=${MAIKO_RELEASE}" "-DRELEASE=351"
)
SET(MAIKO_INIT_DEFINITIONS
"-DRELEASE=${MAIKO_RELEASE}" "-DINIT" "-DNOVERSION"
) )
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON) OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
SET(MAIKO_DISPLAY_SDL OFF CACHE STRING "Use SDL for display. Version: OFF, 2, 3") OPTION(MAIKO_DISPLAY_SDL "Use SDL for display." OFF)
SET_PROPERTY(CACHE MAIKO_DISPLAY_SDL PROPERTY STRINGS OFF 2 3)
IF(MAIKO_DISPLAY_X11) IF(MAIKO_DISPLAY_X11)
FIND_PACKAGE(X11 REQUIRED) FIND_PACKAGE(X11 REQUIRED)
@@ -86,34 +77,19 @@ IF(MAIKO_DISPLAY_X11)
MESSAGE("-- Configured for X11 display") MESSAGE("-- Configured for X11 display")
ENDIF() ENDIF()
IF(MAIKO_DISPLAY_SDL STREQUAL "2") IF(MAIKO_DISPLAY_SDL)
FIND_PACKAGE(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2) FIND_PACKAGE(SDL2 REQUIRED)
SET(MAIKO_DISPLAY_SDL_DEFINITIONS SET(MAIKO_DISPLAY_SDL_DEFINITIONS
"-DSDL=2" "-DSDL"
) )
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS SDL2::Headers) SET(MAIKO_DISPLAY_SDL_LIBRARIES ${SDL2_LIBRARIES})
SET(MAIKO_DISPLAY_SDL_LIBRARIES SDL2::SDL2)
SET(MAIKO_DISPLAY_SDL_SRCS SET(MAIKO_DISPLAY_SDL_SRCS
src/sdl.c src/sdl.c
) )
SET(MAIKO_DISPLAY_SDL_HDRS SET(MAIKO_DISPLAY_SDL_HDRS
inc/sdldefs.h inc/sdldefs.h
) )
MESSAGE("-- Configured for SDL2 display") MESSAGE("-- Configured for SDL display")
ELSEIF(MAIKO_DISPLAY_SDL STREQUAL "3")
FIND_PACKAGE(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
SET(MAIKO_DISPLAY_SDL_DEFINITIONS
"-DSDL=3"
)
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS SDL3::Headers)
SET(MAIKO_DISPLAY_SDL_LIBRARIES SDL3::SDL3)
SET(MAIKO_DISPLAY_SDL_SRCS
src/sdl.c
)
SET(MAIKO_DISPLAY_SDL_HDRS
inc/sdldefs.h
)
MESSAGE("-- Configured for SDL3 display")
ENDIF() ENDIF()
# according to: https://cmake.org/pipermail/cmake/2016-October/064342.html # according to: https://cmake.org/pipermail/cmake/2016-October/064342.html
@@ -448,23 +424,23 @@ ADD_CUSTOM_TARGET(gen-vdate
) )
ADD_EXECUTABLE(lde src/ldeboot.c src/unixfork.c) ADD_EXECUTABLE(lde src/ldeboot.c src/unixfork.c)
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(lde PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(lde PUBLIC inc)
IF(MAIKO_DISPLAY_X11) IF(MAIKO_DISPLAY_X11)
# Tell it that the X11 launcher is available. # Tell it that the X11 launcher is available.
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DISPLAY_X11_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_X11_DEFINITIONS})
# This is needed so that it can call XOpenDisplay. # This is needed so that it can call XOpenDisplay.
TARGET_LINK_LIBRARIES(lde X11::X11) TARGET_LINK_LIBRARIES(lde X11::X11)
ENDIF() ENDIF()
IF(MAIKO_DISPLAY_SDL) IF(MAIKO_DISPLAY_SDL)
# Tell it that the SDL launcher is available. # Tell it that the SDL launcher is available.
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DISPLAY_SDL_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_SDL_DEFINITIONS})
ENDIF() ENDIF()
ADD_EXECUTABLE(ldeether src/ldeether.c src/dlpi.c) ADD_EXECUTABLE(ldeether src/ldeether.c src/dlpi.c)
TARGET_COMPILE_DEFINITIONS(ldeether PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(ldeether PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldeether PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(ldeether PUBLIC inc)
IF(MAIKO_DISPLAY_X11) IF(MAIKO_DISPLAY_X11)
ADD_EXECUTABLE(ldex ADD_EXECUTABLE(ldex
@@ -475,21 +451,9 @@ IF(MAIKO_DISPLAY_X11)
${MAIKO_DISPLAY_X11_SRCS} ${MAIKO_DISPLAY_X11_SRCS}
${MAIKO_DISPLAY_X11_HDRS} ${MAIKO_DISPLAY_X11_HDRS}
) )
TARGET_COMPILE_DEFINITIONS(ldex PRIVATE ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(ldex PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldex PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(ldex PUBLIC inc)
TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES}) TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
ADD_EXECUTABLE(ldeinit
src/main.c
vdate.c
${MAIKO_SRCS}
${MAIKO_HDRS}
${MAIKO_DISPLAY_X11_SRCS}
${MAIKO_DISPLAY_X11_HDRS}
)
TARGET_COMPILE_DEFINITIONS(ldeinit PRIVATE ${MAIKO_INIT_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldeinit PRIVATE inc)
TARGET_LINK_LIBRARIES(ldeinit ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
ENDIF() ENDIF()
IF(MAIKO_DISPLAY_SDL) IF(MAIKO_DISPLAY_SDL)
@@ -501,32 +465,20 @@ IF(MAIKO_DISPLAY_SDL)
${MAIKO_DISPLAY_SDL_SRCS} ${MAIKO_DISPLAY_SDL_SRCS}
${MAIKO_DISPLAY_SDL_HDRS} ${MAIKO_DISPLAY_SDL_HDRS}
) )
TARGET_COMPILE_DEFINITIONS(ldesdl PRIVATE ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_SDL_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(ldesdl PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_SDL_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(ldesdl PUBLIC inc)
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE ${MAIKO_DISPLAY_SDL_INCLUDE_DIRS}) TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE ${SDL2_INCLUDE_DIRS})
IF(APPLE)
IF(MAIKO_DISPLAY_SDL STREQUAL "3")
#
# Until CMake properly supports .xcframeworks, https://gitlab.kitware.com/cmake/cmake/-/issues/25998
# we need to manually set the RPATH to produce a working executable
#
MESSAGE("-- Applying fixup for macOS RPATH for SDL3.xcframework")
SET_PROPERTY(TARGET ldesdl APPEND PROPERTY BUILD_RPATH "/Library/Frameworks/SDL3.xcframework/macos-arm64_x86_64")
#
ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(ldesdl ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_SDL_LIBRARIES}) TARGET_LINK_LIBRARIES(ldesdl ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_SDL_LIBRARIES})
ENDIF() ENDIF()
ADD_EXECUTABLE(mkvdate src/mkvdate.c) ADD_EXECUTABLE(mkvdate src/mkvdate.c)
TARGET_COMPILE_DEFINITIONS(mkvdate PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(mkvdate PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(mkvdate PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(mkvdate PUBLIC inc)
ADD_EXECUTABLE(setsout src/setsout.c src/byteswap.c) ADD_EXECUTABLE(setsout src/setsout.c src/byteswap.c)
TARGET_COMPILE_DEFINITIONS(setsout PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(setsout PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(setsout PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(setsout PUBLIC inc)
ADD_EXECUTABLE(tstsout src/tstsout.c src/byteswap.c) ADD_EXECUTABLE(tstsout src/tstsout.c src/byteswap.c)
TARGET_COMPILE_DEFINITIONS(tstsout PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(tstsout PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(tstsout PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(tstsout PUBLIC inc)

View File

@@ -4,7 +4,7 @@ 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.
For an overview, see [Medley Interlisp Introduction](https://interlisp.org/medley/using/docs/medley/). For an overview, see [Medley Interlisp Introduction](https://github.com/Interlisp/medley/wiki/Medley-Interlisp-Introduction).
See [the Medley repository](https://github.com/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)

1235
bin/config.guess vendored

File diff suppressed because it is too large Load Diff

310
bin/config.sub vendored
View File

@@ -1,14 +1,12 @@
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright 1992-2024 Free Software Foundation, Inc. # Copyright 1992-2020 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2020-08-17'
timestamp='2024-01-01'
# This file is free software; you can redistribute it and/or modify it # This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by # under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or # the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, but # This program is distributed in the hope that it will be useful, but
@@ -35,7 +33,7 @@ timestamp='2024-01-01'
# Otherwise, we print the canonical config type on stdout and succeed. # Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from: # You can get the latest version of this script from:
# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages # This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases # and recognize all the CPU types, system types and aliases
@@ -52,13 +50,6 @@ timestamp='2024-01-01'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification. # It is wrong to echo any other type of specification.
# The "shellcheck disable" line above the timestamp inhibits complaints
# about features and limitations of the classic Bourne shell that were
# superseded or lifted in POSIX. However, this script identifies a wide
# variety of pre-POSIX systems that do not have POSIX shells at all, and
# even some reasonably current systems (Solaris 10 as case-in-point) still
# have a pre-POSIX /bin/sh.
me=`echo "$0" | sed -e 's,.*/,,'` me=`echo "$0" | sed -e 's,.*/,,'`
usage="\ usage="\
@@ -76,13 +67,13 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\ version="\
GNU config.sub ($timestamp) GNU config.sub ($timestamp)
Copyright 1992-2024 Free Software Foundation, Inc. Copyright 1992-2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help=" help="
Try '$me --help' for more information." Try \`$me --help' for more information."
# Parse command line # Parse command line
while test $# -gt 0 ; do while test $# -gt 0 ; do
@@ -121,16 +112,14 @@ esac
# Split fields of configuration type # Split fields of configuration type
# shellcheck disable=SC2162 # shellcheck disable=SC2162
saved_IFS=$IFS
IFS="-" read field1 field2 field3 field4 <<EOF IFS="-" read field1 field2 field3 field4 <<EOF
$1 $1
EOF EOF
IFS=$saved_IFS
# Separate into logical components for further validation # Separate into logical components for further validation
case $1 in case $1 in
*-*-*-*-*) *-*-*-*-*)
echo "Invalid configuration '$1': more than four components" >&2 echo Invalid configuration \`"$1"\': more than four components >&2
exit 1 exit 1
;; ;;
*-*-*-*) *-*-*-*)
@@ -145,8 +134,7 @@ case $1 in
nto-qnx* | linux-* | uclinux-uclibc* \ nto-qnx* | linux-* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ | storm-chaos* | os2-emx* | rtmk-nova*)
| windows-* )
basic_machine=$field1 basic_machine=$field1
basic_os=$maybe_os basic_os=$maybe_os
;; ;;
@@ -175,10 +163,6 @@ case $1 in
basic_machine=$field1 basic_machine=$field1
basic_os=$field2 basic_os=$field2
;; ;;
zephyr*)
basic_machine=$field1-unknown
basic_os=$field2
;;
# Manufacturers # Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
@@ -938,13 +922,11 @@ case $basic_machine in
*-*) *-*)
# shellcheck disable=SC2162 # shellcheck disable=SC2162
saved_IFS=$IFS
IFS="-" read cpu vendor <<EOF IFS="-" read cpu vendor <<EOF
$basic_machine $basic_machine
EOF EOF
IFS=$saved_IFS
;; ;;
# We use 'pc' rather than 'unknown' # We use `pc' rather than `unknown'
# because (1) that's what they normally are, and # because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users. # (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64) i*86 | x86_64)
@@ -1021,11 +1003,6 @@ case $cpu-$vendor in
;; ;;
# Here we normalize CPU types with a missing or matching vendor # Here we normalize CPU types with a missing or matching vendor
armh-unknown | armh-alt)
cpu=armv7l
vendor=alt
basic_os=${basic_os:-linux-gnueabihf}
;;
dpx20-unknown | dpx20-bull) dpx20-unknown | dpx20-bull)
cpu=rs6000 cpu=rs6000
vendor=bull vendor=bull
@@ -1076,7 +1053,7 @@ case $cpu-$vendor in
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586 cpu=i586
;; ;;
pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
cpu=i686 cpu=i686
;; ;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@@ -1127,7 +1104,7 @@ case $cpu-$vendor in
xscale-* | xscalee[bl]-*) xscale-* | xscalee[bl]-*)
cpu=`echo "$cpu" | sed 's/^xscale/arm/'` cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;; ;;
arm64-* | aarch64le-*) arm64-*)
cpu=aarch64 cpu=aarch64
;; ;;
@@ -1181,14 +1158,14 @@ case $cpu-$vendor in
case $cpu in case $cpu in
1750a | 580 \ 1750a | 580 \
| a29k \ | a29k \
| aarch64 | aarch64_be | aarch64c | arm64ec \ | aarch64 | aarch64_be \
| abacus \ | abacus \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
| alphapca5[67] | alpha64pca5[67] \ | alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \ | am33_2.0 \
| amdgcn \ | amdgcn \
| arc | arceb | arc32 | arc64 \ | arc | arceb \
| arm | arm[lb]e | arme[lb] | armv* \ | arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \ | avr | avr32 \
| asmjs \ | asmjs \
@@ -1200,29 +1177,45 @@ case $cpu-$vendor in
| d10v | d30v | dlx | dsp16xx \ | d10v | d30v | dlx | dsp16xx \
| e2k | elxsi | epiphany \ | e2k | elxsi | epiphany \
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
| javascript \
| h8300 | h8500 \ | h8300 | h8500 \
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \ | hexagon \
| i370 | i*86 | i860 | i960 | ia16 | ia64 \ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \ | ip2k | iq2000 \
| k1om \ | k1om \
| kvx \
| le32 | le64 \ | le32 | le64 \
| lm32 \ | lm32 \
| loongarch32 | loongarch64 \
| m32c | m32r | m32rle \ | m32c | m32r | m32rle \
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
| m88110 | m88k | maxq | mb | mcore | mep | metag \ | m88110 | m88k | maxq | mb | mcore | mep | metag \
| microblaze | microblazeel \ | microblaze | microblazeel \
| mips* \ | mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64eb | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mmix \ | mmix \
| mn10200 | mn10300 \ | mn10200 | mn10300 \
| moxie \ | moxie \
| mt \ | mt \
| msp430 \ | msp430 \
| nanomips* \
| nds32 | nds32le | nds32be \ | nds32 | nds32le | nds32be \
| nfp \ | nfp \
| nios | nios2 | nios2eb | nios2el \ | nios | nios2 | nios2eb | nios2el \
@@ -1236,7 +1229,7 @@ case $cpu-$vendor in
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \ | pru \
| pyramid \ | pyramid \
| riscv | riscv32 | riscv32be | riscv64 | riscv64be \ | riscv | riscv32 | riscv64 \
| rl78 | romp | rs6000 | rx \ | rl78 | romp | rs6000 | rx \
| s390 | s390x \ | s390 | s390x \
| score \ | score \
@@ -1248,13 +1241,11 @@ case $cpu-$vendor in
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
| spu \ | spu \
| tahoe \ | tahoe \
| thumbv7* \
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
| tron \ | tron \
| ubicom32 \ | ubicom32 \
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
| vax \ | vax \
| vc4 \
| visium \ | visium \
| w65 \ | w65 \
| wasm32 | wasm64 \ | wasm32 | wasm64 \
@@ -1266,7 +1257,7 @@ case $cpu-$vendor in
;; ;;
*) *)
echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
exit 1 exit 1
;; ;;
esac esac
@@ -1287,45 +1278,34 @@ esac
# Decode manufacturer-specific aliases for certain operating systems. # Decode manufacturer-specific aliases for certain operating systems.
if test x"$basic_os" != x if test x$basic_os != x
then then
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
# set os. # set os.
obj=
case $basic_os in case $basic_os in
gnu/linux*) gnu/linux*)
kernel=linux kernel=linux
os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'`
;;
os2-emx)
kernel=os2
os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
;; ;;
nto-qnx*) nto-qnx*)
kernel=nto kernel=nto
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'`
;; ;;
*-*) *-*)
# shellcheck disable=SC2162 # shellcheck disable=SC2162
saved_IFS=$IFS
IFS="-" read kernel os <<EOF IFS="-" read kernel os <<EOF
$basic_os $basic_os
EOF EOF
IFS=$saved_IFS
;; ;;
# Default OS when just kernel was specified # Default OS when just kernel was specified
nto*) nto*)
kernel=nto kernel=nto
os=`echo "$basic_os" | sed -e 's|nto|qnx|'` os=`echo $basic_os | sed -e 's|nto|qnx|'`
;; ;;
linux*) linux*)
kernel=linux kernel=linux
os=`echo "$basic_os" | sed -e 's|linux|gnu|'` os=`echo $basic_os | sed -e 's|linux|gnu|'`
;;
managarm*)
kernel=managarm
os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
;; ;;
*) *)
kernel= kernel=
@@ -1346,7 +1326,7 @@ case $os in
os=cnk os=cnk
;; ;;
solaris1 | solaris1.*) solaris1 | solaris1.*)
os=`echo "$os" | sed -e 's|solaris1|sunos4|'` os=`echo $os | sed -e 's|solaris1|sunos4|'`
;; ;;
solaris) solaris)
os=solaris2 os=solaris2
@@ -1375,7 +1355,7 @@ case $os in
os=sco3.2v4 os=sco3.2v4
;; ;;
sco3.2.[4-9]*) sco3.2.[4-9]*)
os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
;; ;;
sco*v* | scout) sco*v* | scout)
# Don't match below # Don't match below
@@ -1387,7 +1367,13 @@ case $os in
os=psos os=psos
;; ;;
qnx*) qnx*)
os=qnx case $cpu in
x86 | i*86)
;;
*)
os=nto-$os
;;
esac
;; ;;
hiux*) hiux*)
os=hiuxwe2 os=hiuxwe2
@@ -1451,7 +1437,7 @@ case $os in
;; ;;
# Preserve the version number of sinix5. # Preserve the version number of sinix5.
sinix5.*) sinix5.*)
os=`echo "$os" | sed -e 's|sinix|sysv|'` os=`echo $os | sed -e 's|sinix|sysv|'`
;; ;;
sinix*) sinix*)
os=sysv4 os=sysv4
@@ -1492,16 +1478,10 @@ case $os in
os=eabi os=eabi
;; ;;
*) *)
os= os=elf
obj=elf
;; ;;
esac esac
;; ;;
aout* | coff* | elf* | pe*)
# These are machine code file formats, not OSes
obj=$os
os=
;;
*) *)
# No normalization, but not necessarily accepted, that comes below. # No normalization, but not necessarily accepted, that comes below.
;; ;;
@@ -1520,15 +1500,12 @@ else
# system, and we'll never get to this point. # system, and we'll never get to this point.
kernel= kernel=
obj=
case $cpu-$vendor in case $cpu-$vendor in
score-*) score-*)
os= os=elf
obj=elf
;; ;;
spu-*) spu-*)
os= os=elf
obj=elf
;; ;;
*-acorn) *-acorn)
os=riscix1.2 os=riscix1.2
@@ -1538,35 +1515,28 @@ case $cpu-$vendor in
os=gnu os=gnu
;; ;;
arm*-semi) arm*-semi)
os= os=aout
obj=aout
;; ;;
c4x-* | tic4x-*) c4x-* | tic4x-*)
os= os=coff
obj=coff
;; ;;
c8051-*) c8051-*)
os= os=elf
obj=elf
;; ;;
clipper-intergraph) clipper-intergraph)
os=clix os=clix
;; ;;
hexagon-*) hexagon-*)
os= os=elf
obj=elf
;; ;;
tic54x-*) tic54x-*)
os= os=coff
obj=coff
;; ;;
tic55x-*) tic55x-*)
os= os=coff
obj=coff
;; ;;
tic6x-*) tic6x-*)
os= os=coff
obj=coff
;; ;;
# This must come before the *-dec entry. # This must come before the *-dec entry.
pdp10-*) pdp10-*)
@@ -1588,24 +1558,19 @@ case $cpu-$vendor in
os=sunos3 os=sunos3
;; ;;
m68*-cisco) m68*-cisco)
os= os=aout
obj=aout
;; ;;
mep-*) mep-*)
os= os=elf
obj=elf
;; ;;
mips*-cisco) mips*-cisco)
os= os=elf
obj=elf
;; ;;
mips*-*|nanomips*-*) mips*-*)
os= os=elf
obj=elf
;; ;;
or32-*) or32-*)
os= os=coff
obj=coff
;; ;;
*-tti) # must be before sparc entry or we get the wrong os. *-tti) # must be before sparc entry or we get the wrong os.
os=sysv3 os=sysv3
@@ -1614,8 +1579,7 @@ case $cpu-$vendor in
os=sunos4.1.1 os=sunos4.1.1
;; ;;
pru-*) pru-*)
os= os=elf
obj=elf
;; ;;
*-be) *-be)
os=beos os=beos
@@ -1696,12 +1660,10 @@ case $cpu-$vendor in
os=uxpv os=uxpv
;; ;;
*-rom68k) *-rom68k)
os= os=coff
obj=coff
;; ;;
*-*bug) *-*bug)
os= os=coff
obj=coff
;; ;;
*-apple) *-apple)
os=macos os=macos
@@ -1719,20 +1681,13 @@ esac
fi fi
# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). # Now, validate our (potentially fixed-up) OS.
case $os in case $os in
# Sometimes we do "kernel-libc", so those need to count as OSes. # Sometimes we do "kernel-abi", so those need to count as OSes.
llvm* | musl* | newlib* | relibc* | uclibc*) musl* | newlib* | uclibc*)
;; ;;
# Likewise for "kernel-abi" # Likewise for "kernel-libc"
eabi* | gnueabi*) eabi | eabihf | gnueabi | gnueabihf)
;;
# VxWorks passes extra cpu info in the 4th filed.
simlinux | simwindows | spe)
;;
# See `case $cpu-$os` validation below
ghcjs)
;; ;;
# Now accept the basic system types. # Now accept the basic system types.
# The portable systems comes first. # The portable systems comes first.
@@ -1742,20 +1697,20 @@ case $os in
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
| hiux* | abug | nacl* | netware* | windows* \ | hiux* | abug | nacl* | netware* | windows* \
| os9* | macos* | osx* | ios* | tvos* | watchos* \ | os9* | macos* | osx* | ios* \
| mpw* | magic* | mmixware* | mon960* | lnews* \ | mpw* | magic* | mmixware* | mon960* | lnews* \
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
| aos* | aros* | cloudabi* | sortix* | twizzler* \ | aos* | aros* | cloudabi* | sortix* | twizzler* \
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
| mirbsd* | netbsd* | dicos* | openedition* | ose* \ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
| bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
| bosx* | nextstep* | cxux* | oabi* \ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
| ptx* | ecoff* | winnt* | domain* | vsta* \ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
| udi* | lites* | ieee* | go32* | aux* | hcos* \ | udi* | lites* | ieee* | go32* | aux* | hcos* \
| chorusrdb* | cegcc* | glidix* | serenity* \ | chorusrdb* | cegcc* | glidix* \
| cygwin* | msys* | moss* | proelf* | rtems* \ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
| midipix* | mingw32* | mingw64* | mint* \ | midipix* | mingw32* | mingw64* | mint* \
| uxpv* | beos* | mpeix* | udk* | moxiebox* \ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
| interix* | uwin* | mks* | rhapsody* | darwin* \ | interix* | uwin* | mks* | rhapsody* | darwin* \
@@ -1767,117 +1722,42 @@ case $os in
| skyos* | haiku* | rdos* | toppers* | drops* | es* \ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ | nsk* | powerunix* | genode* | zvmoe* )
| fiwix* | mlibc* | cos* | mbr* | ironclad* )
;; ;;
# This one is extra strict with allowed versions # This one is extra strict with allowed versions
sco3.2v2 | sco3.2v[4-9]* | sco5v6*) sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
# Don't forget version if it is 3.2v4 or newer. # Don't forget version if it is 3.2v4 or newer.
;; ;;
# This refers to builds using the UEFI calling convention
# (which depends on the architecture) and PE file format.
# Note that this is both a different calling convention and
# different file format than that of GNU-EFI
# (x86_64-w64-mingw32).
uefi)
;;
none) none)
;; ;;
kernel* | msvc* )
# Restricted further below
;;
'')
if test x"$obj" = x
then
echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
fi
;;
*) *)
echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
exit 1
;;
esac
case $obj in
aout* | coff* | elf* | pe*)
;;
'')
# empty is fine
;;
*)
echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
exit 1
;;
esac
# Here we handle the constraint that a (synthetic) cpu and os are
# valid only in combination with each other and nowhere else.
case $cpu-$os in
# The "javascript-unknown-ghcjs" triple is used by GHC; we
# accept it here in order to tolerate that, but reject any
# variations.
javascript-ghcjs)
;;
javascript-* | *-ghcjs)
echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
exit 1 exit 1
;; ;;
esac esac
# As a final step for OS-related things, validate the OS-kernel combination # As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel. # (given a valid OS), if there is a kernel.
case $kernel-$os-$obj in case $kernel-$os in
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
| linux-relibc*- | linux-uclibc*- )
;; ;;
uclinux-uclibc*- ) -dietlibc* | -newlib* | -musl* | -uclibc* )
;;
managarm-mlibc*- | managarm-kernel*- )
;;
windows*-msvc*-)
;;
-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
| -uclibc*- )
# These are just libc implementations, not actual OSes, and thus # These are just libc implementations, not actual OSes, and thus
# require a kernel. # require a kernel.
echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
exit 1 exit 1
;; ;;
-kernel*- ) kfreebsd*-gnu* | kopensolaris*-gnu*)
echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
exit 1
;; ;;
*-kernel*- ) nto-qnx*)
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
exit 1
;; ;;
*-msvc*- ) *-eabi* | *-gnueabi*)
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
exit 1
;; ;;
kfreebsd*-gnu*- | kopensolaris*-gnu*-) -*)
;;
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
;;
nto-qnx*-)
;;
os2-emx-)
;;
*-eabi*- | *-gnueabi*-)
;;
none--*)
# None (no kernel, i.e. freestanding / bare metal),
# can be paired with an machine code file format
;;
-*-)
# Blank kernel with real OS is always fine. # Blank kernel with real OS is always fine.
;; ;;
--*) *-*)
# Blank kernel and OS with real machine code file format is always fine. echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
;;
*-*-*)
echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
exit 1 exit 1
;; ;;
esac esac
@@ -1960,7 +1840,7 @@ case $vendor in
;; ;;
esac esac
echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" echo "$cpu-$vendor-${kernel:+$kernel-}$os"
exit exit
# Local variables: # Local variables:

View File

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

View File

@@ -5,17 +5,11 @@ CC = gcc -m64 $(GCC_CFLAGS) -I/usr/local/include
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# XFLAGS = -DSDL
# For SDL version 2
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
#
XFLAGS = -DSDL=2
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lm -L/usr/local/lib -lSDL2 LDFLAGS = -lm -L/usr/local/lib -lSDL2
# #

View File

@@ -18,7 +18,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -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=$(RELEASE) # -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

View File

@@ -4,21 +4,14 @@ CC = clang -target aarch64-apple-darwin $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL -F /Library/Frameworks
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -framework SDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -framework SDL3 in LDFLAGS
#
SDLFLAGS = -DSDL=2 -F /Library/Frameworks
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -rpath /Library/Frameworks -F /Library/Frameworks -framework SDL2 LDFLAGS = -F /Library/Frameworks -framework SDL2
LDELDFLAGS = LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/ OBJECTDIR = ../$(RELEASENAME)/

View File

@@ -16,9 +16,9 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -I/opt/X11/include -DXWINDOW XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 OPTFLAGS = -g -O2
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = -DARRAYCHECK -DDTDDEBUG # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
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

View File

@@ -19,7 +19,7 @@ XFLAGS = -I/usr/X11/include -DXWINDOW
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \ DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
-DRELEASE=$(RELEASE) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lm LDFLAGS = -L/usr/X11/lib -lX11 -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lm

View File

@@ -2,22 +2,16 @@
CC = clang -m64 -target x86_64-apple-darwin $(CLANG_CFLAGS) CC = clang -m64 -target x86_64-apple-darwin $(CLANG_CFLAGS)
#
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -framework SDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -framework SDL3 in LDFLAGS
#
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
SDLFLAGS = -DSDL=2 -F /Library/Frameworks SDLFLAGS = -DSDL -F /Library/Frameworks
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -rpath /Library/Frameworks -F /Library/Frameworks -framework SDL2 LDFLAGS = -F /Library/Frameworks -framework SDL2
LDELDFLAGS = LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/ OBJECTDIR = ../$(RELEASENAME)/

View File

@@ -17,8 +17,8 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O1 -g OPTFLAGS = -O1 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = -DARRAYCHECK -DDTDDEBUG # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
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

View File

@@ -1,40 +0,0 @@
# Options for Emscripten, WASM and SDL
CC = emcc $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
#
# For SDL version 2
# -DSDL=2 and -sUSE_SDL=2 in XFLAGS and -sUSE_SDL=2 in LDFLAGS
# For SDL version 3
# -DSDL=3 and -sUSE_SDL=3 in XFLAGS and -sUSE_SDL=3 in LDFLAGS
#
XFLAGS = -DSDL=2 -sUSE_SDL=2
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DMAIKO_ENABLE_NETHUB
MEDLEY?=../../medley
SYSOUT?=$(MEDLEY)/loadups/full.sysout
LD = emcc
LDFLAGS = -sUSE_SDL=2 -sASYNCIFY -sALLOW_MEMORY_GROWTH -sEXIT_RUNTIME=1 \
--preload-file $(SYSOUT)@medley/loadups/full.sysout \
--preload-file $(MEDLEY)/loadups/whereis.hash@medley/loadups/whereis.hash \
--preload-file $(MEDLEY)/greetfiles/MEDLEYDIR-INIT.LCOM@usr/local/lde/site-init.lisp \
--preload-file $(MEDLEY)/docs/@medley/docs \
--preload-file $(MEDLEY)/doctools/@medley/doctools \
--preload-file $(MEDLEY)/greetfiles/@medley/greetfiles \
--preload-file $(MEDLEY)/internal/@medley/internal \
--preload-file $(MEDLEY)/sources/@medley/sources \
--preload-file $(MEDLEY)/library/@medley/library \
--preload-file $(MEDLEY)/lispusers/@medley/lispusers \
--preload-file $(MEDLEY)/fonts/@medley/fonts
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldesdl.js

View File

@@ -1,29 +0,0 @@
# Options for Emscripten, WASM and SDL
CC = emcc $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
#
# For SDL version 2
# -DSDL=2 and -sUSE_SDL=2 in XFLAGS and -sUSE_SDL=2 in LDFLAGS
# For SDL version 3
# -DSDL=3 and -sUSE_SDL=3 in XFLAGS and -sUSE_SDL=3 in LDFLAGS
#
XFLAGS = -DSDL=2 -sUSE_SDL=2
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DMAIKO_ENABLE_NETHUB
MEDLEY?=../../medley
SYSOUT?=$(MEDLEY)/loadups/full.sysout
LD = emcc
LDFLAGS = -sUSE_SDL=2 -sASYNCIFY -sALLOW_MEMORY_GROWTH -sEXIT_RUNTIME=1 -sFORCE_FILESYSTEM -sLZ4
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldesdl.js

View File

@@ -4,17 +4,11 @@ CC = clang -m32 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL -I/usr/local/include
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
#
SDLFLAGS = -DSDL=2 -I/usr/local/include
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lSDL2 -lm LDFLAGS = -L/usr/local/lib -lSDL2 -lm
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -4,17 +4,11 @@ CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL -I/usr/local/include
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
#
SDLFLAGS = -DSDL=2 -I/usr/local/include
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lSDL2 -lm LDFLAGS = -L/usr/local/lib -lSDL2 -lm
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -4,17 +4,11 @@ CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL -I/usr/local/include
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
#
SDLFLAGS = -DSDL=2 -I/usr/local/include
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lSDL2 -lm LDFLAGS = -L/usr/local/lib -lSDL2 -lm
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

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

View File

@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it # OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DEBUGFLAGS = DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11/lib -lX11 -lm LDFLAGS = -L/usr/X11/lib -lX11 -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lm

View File

@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O0 -g3 OPTFLAGS = -O0 -g3
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
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

View File

@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
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

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O0 for init # OPTFLAGS is normally -O0 for init
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O0 for init # OPTFLAGS is normally -O0 for init
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O0 for init # OPTFLAGS is normally -O0 for init
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -1,29 +0,0 @@
# Options for Linux, aarch64 processor, X windows, for INIT processing
CC = gcc $(GCC_CFLAGS)
#CC = clang $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g
DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -1,7 +1,7 @@
# Options for Linux, x86 processor, X windows, for INIT processing # Options for Linux, x86 processor, X windows, for INIT processing
CC = gcc $(GCC_CFLAGS) #CC = gcc -m64 $(GCC_CFLAGS)
#CC = clang $(CLANG_CFLAGS) CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \ XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \ $(OBJECTDIR)xbbt.o \
@@ -19,7 +19,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it # OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DEBUGFLAGS = DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

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

View File

@@ -50,7 +50,7 @@ DFLAGS = -DINIT \
$(XFLAGS) \ $(XFLAGS) \
$(DEBUGFLAGS) \ $(DEBUGFLAGS) \
$(MACHINEFLAGS) \ $(MACHINEFLAGS) \
-DNOVERSION -DRELEASE=$(RELEASE) -DNOVERSION -DRELEASE=351
LDFLAGS = -lX11 -lc -lm -lsocket -lnsl LDFLAGS = -lX11 -lc -lm -lsocket -lnsl

View File

@@ -5,17 +5,11 @@ CC = gcc -m32 $(GCC_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# XFLAGS = -DSDL
# For SDL version 2
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
#
XFLAGS = -DSDL=2
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lm -lSDL2 LDFLAGS = -lm -lSDL2
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -5,17 +5,11 @@ CC = gcc $(GCC_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
#
SDLFLAGS = -DSDL=2
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -lSDL2 -lm LDFLAGS = -lSDL2 -lm
LDELDFLAGS = LDELDFLAGS =

View File

@@ -1,4 +1,4 @@
# Options for Linux, aarch64 and X-Window # Options for Linux, ARMv7 and X-Window
CC = gcc $(GCC_CFLAGS) CC = gcc $(GCC_CFLAGS)
#CC = clang $(CLANG_CFLAGS) #CC = clang $(CLANG_CFLAGS)
@@ -17,7 +17,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -5,17 +5,11 @@ CC = gcc $(GCC_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# XFLAGS = -DSDL
# For SDL version 2
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
#
XFLAGS = -DSDL=2
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lm -lSDL2 LDFLAGS = -lm -lSDL2
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -5,17 +5,11 @@ CC = gcc -m64 $(GCC_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# XFLAGS = -DSDL
# For SDL version 2
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
#
XFLAGS = -DSDL=2
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lm -lSDL2 LDFLAGS = -lm -lSDL2
LDELDFLAGS = LDELDFLAGS =

View File

@@ -18,7 +18,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/X11R6/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm

View File

@@ -36,7 +36,7 @@ DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
DFLAGS = $(XFLAGS) \ DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \ $(DEBUGFLAGS) \
-DOS5 \ -DOS5 \
-DRELEASE=$(RELEASE) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl

View File

@@ -45,7 +45,7 @@ MACHINEFLAGS = -DOS5 -DUSE_DLPI
DFLAGS = $(XFLAGS) \ DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \ $(DEBUGFLAGS) \
$(MACHINEFLAGS) \ $(MACHINEFLAGS) \
-DRELEASE=$(RELEASE) -DRELEASE=351
LDFLAGS = -lX11 -lc -lm -lsocket -lnsl LDFLAGS = -lX11 -lc -lm -lsocket -lnsl
LDELDFLAGS = -lX11 -lc -lm -lsocket -lnsl LDELDFLAGS = -lX11 -lc -lm -lsocket -lnsl

View File

@@ -37,7 +37,7 @@ DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \ $(DEBUGFLAGS) \
-DOS5 \ -DOS5 \
-DUSE_DLPI \ -DUSE_DLPI \
-DRELEASE=$(RELEASE) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl

View File

@@ -54,10 +54,9 @@ if test $# -gt 0
shift shift
fi fi
: ${RELEASE=351}
architecture=`machinetype` architecture=`machinetype`
osversion=`osversion` osversion=`osversion`
echo "making release ${RELEASE} for ${osversion} on ${architecture}." echo "making so far for ${osversion} on ${architecture}."
case "$display" in case "$display" in
init) display=single init) display=single
releasename=init-${osversion}.${architecture} releasename=init-${osversion}.${architecture}
@@ -72,19 +71,9 @@ case "$display" in
x) releasename=${osversion}.${architecture}-${display} x) releasename=${osversion}.${architecture}-${display}
ldename=ldex ldename=ldex
;; ;;
sdl*) releasename=${osversion}.${architecture}-${display} sdl) releasename=${osversion}.${architecture}-${display}
ldename=ldesdl ldename=ldesdl
;; ;;
wasm) osversion=emscripten
architecture=wasm
releasename=${osversion}.${architecture}-${display}
ldename=ldesdl.js
;;
wasm_nl) osversion=emscripten
architecture=wasm_nl
releasename=${osversion}.${architecture}-${display}
ldename=ldesdl.js
;;
*) echo "display-option: $display is not supported." *) echo "display-option: $display is not supported."
exit exit
;; ;;
@@ -107,12 +96,12 @@ if [ ! -d ../${releasename} ]; then
mkdir ../${releasename} mkdir ../${releasename}
fi fi
echo start making lde for ${releasename} echo start making lde for ${releasename}.
# then finally do the make, including the right stuff # then finally do the make, including the right stuff
# With makefile-tail merged, this should only take ONE make command.... # With makefile-tail merged, this should only take ONE make command....
make RELEASENAME=${releasename} RELEASE=${RELEASE} LDENAME=${ldename} \ make RELEASENAME=${releasename} LDENAME=${ldename} \
OSARCHNAME=${osversion}.${architecture} \ OSARCHNAME=${osversion}.${architecture} \
-f makefile-header -f makefile-${releasename} \ -f makefile-header -f makefile-${releasename} \
-f makefile-tail $* -f makefile-tail $*

View File

@@ -1,6 +1,5 @@
#!/bin/sh #!/bin/sh
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" os=${LDEARCH:-`./config.guess`}
os=${LDEARCH:-`$SCRIPTPATH/config.guess`}
case "$os" in case "$os" in
m68k-*-amigaos) echo amigaos ;; m68k-*-amigaos) echo amigaos ;;
sparc-sun-sunos*) echo sunos4 ;; sparc-sun-sunos*) echo sunos4 ;;
@@ -12,7 +11,6 @@ case "$os" in
*-*-openbsd*) echo openbsd ;; *-*-openbsd*) echo openbsd ;;
*-*-freebsd*) echo freebsd ;; *-*-freebsd*) echo freebsd ;;
*-*-cygwin*) echo cygwin ;; *-*-cygwin*) echo cygwin ;;
*-*-haiku*) echo haiku ;;
esac esac
### Don't leave the variable set. ### Don't leave the variable set.
unset os unset os

View File

@@ -28,11 +28,19 @@
*/ */
/**********************************************************************/ /**********************************************************************/
#include <execinfo.h>
#include <stddef.h> #include <stddef.h>
#include <stdio.h> #include <stdio.h>
#include "lispemul.h" #include "lispemul.h"
#include "lspglob.h" #include "lspglob.h"
static inline void dobacktrace()
{
void* callstack[128];
int i, frames = backtrace(callstack, 128);
backtrace_symbols_fd(callstack, frames, 2);
}
static inline LispPTR LAddrFromNative(void *NAddr) static inline LispPTR LAddrFromNative(void *NAddr)
{ {
if ((uintptr_t)NAddr & 1) { if ((uintptr_t)NAddr & 1) {
@@ -48,8 +56,9 @@ static inline DLword *NativeAligned2FromLAddr(LispPTR LAddr)
static inline LispPTR *NativeAligned4FromLAddr(LispPTR LAddr) static inline LispPTR *NativeAligned4FromLAddr(LispPTR LAddr)
{ {
if (LAddr & 1) { if (LAddr & 1 || LAddr > 0x0FFFFFFF) {
printf("Misaligned pointer in NativeAligned4FromLAddr 0x%x\n", LAddr); printf("Misaligned/bad pointer in NativeAligned4FromLAddr 0x%x\n", LAddr);
dobacktrace();
} }
return (void *)(Lisp_world + LAddr); return (void *)(Lisp_world + LAddr);
} }
@@ -63,8 +72,8 @@ static inline DLword StackOffsetFromNative(void *SAddr)
{ {
/* Stack offsets are expressed as an offset in DLwords from the stack base */ /* Stack offsets are expressed as an offset in DLwords from the stack base */
ptrdiff_t hoffset = (DLword *)SAddr - Stackspace; ptrdiff_t hoffset = (DLword *)SAddr - Stackspace;
if (hoffset > 0xffff || hoffset < 0) { if (hoffset > 0xffff) {
printf("Stack offset is out of range: 0x%tx\n", hoffset); printf("Stack offset is too large: 0x%tx\n", hoffset);
} }
return (DLword)hoffset; return (DLword)hoffset;
} }

View File

@@ -40,7 +40,7 @@ extern int flushing;
#endif #endif
#ifdef DEBUG #ifdef DEBUG
#define DBPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X ; if (flushing) fflush(stdout); } while(0) #define DBPRINT(X) do {printf X ; if (flushing) fflush(stdout); } while(0)
#define DEBUGGER(X) X #define DEBUGGER(X) X
#else #else
#define DBPRINT(X) if (0) do {printf X ; } while(0) #define DBPRINT(X) if (0) do {printf X ; } while(0)
@@ -51,7 +51,7 @@ extern int flushing;
/* For trace print statements */ /* For trace print statements */
#ifdef TRACE #ifdef TRACE
#define TPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X; if (flushing) fflush(stdout); } while (0) #define TPRINT(X) do { printf X; if (flushing) fflush(stdout); } while (0)
#define TRACER(X) X #define TRACER(X) X
#else /* TRACE */ #else /* TRACE */
@@ -64,7 +64,7 @@ extern int flushing;
/* For tracing individual opcode executions */ /* For tracing individual opcode executions */
#ifdef OPTRACE #ifdef OPTRACE
#define OPTPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X; if (flushing) fflush(stdout); } while (0) #define OPTPRINT(X) do { printf X; if (flushing) fflush(stdout); } while (0)
#define OPTRACER(X) X #define OPTRACER(X) X
#else #else
#define OPTPRINT(X) if (0) do { printf X; } while (0) #define OPTPRINT(X) if (0) do { printf X; } while (0)
@@ -75,7 +75,7 @@ extern int flushing;
/* For tracing function calls */ /* For tracing function calls */
#ifdef FNTRACE #ifdef FNTRACE
#define FNTPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X; if (flushing) fflush(stdout); } while (0) #define FNTPRINT(X) do { printf X; if (flushing) fflush(stdout); } while (0)
#define FNTRACER(X) X #define FNTRACER(X) X
#else #else
#define FNTPRINT(X) if (0) do { printf X; } while (0) #define FNTPRINT(X) if (0) do { printf X; } while (0)
@@ -86,7 +86,7 @@ extern int flushing;
/* For function-call & return stack checking */ /* For function-call & return stack checking */
#ifdef FNSTKCHECK #ifdef FNSTKCHECK
#define FNCHKPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X ; if (flushing) fflush(stdout); } while (0) #define FNCHKPRINT(X) do { printf X ; if (flushing) fflush(stdout); } while (0)
#define FNCHECKER(X) X #define FNCHECKER(X) X
#else #else
#define FNCHKPRINT(X) if (0) do { printf X; } while (0) #define FNCHKPRINT(X) if (0) do { printf X; } while (0)

View File

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

View File

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

View File

@@ -4,7 +4,6 @@
void process_io_events(void); void process_io_events(void);
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 taking_mouse_up(int newx, int newy);
void copy_cursor(int newx, int newy); void copy_cursor(int newx, int newy);
void cursor_hidden_bitmap(int x, int y); void cursor_hidden_bitmap(int x, int y);
#endif #endif

View File

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

View File

@@ -194,9 +194,8 @@ do { \
#endif /* min */ #endif /* min */
#define LispNumToCInt(Lisp) \ #define LispNumToCInt(Lisp) \
( (((Lisp) & SEGMASK) == S_POSITIVE) ? ((Lisp) & 0xFFFF) : \ ( (((Lisp) & SEGMASK) == S_POSITIVE) ? \
(((Lisp) & SEGMASK) == S_NEGATIVE) ? ((Lisp) | 0xFFFF0000) : \ ((Lisp) & 0xFFFF) : (*((int *)(NativeAligned4FromLAddr(Lisp)))) )
(*((int *)(NativeAligned4FromLAddr(Lisp)))) )
#define UPLOWDIFF 0x20 #define UPLOWDIFF 0x20
@@ -499,8 +498,7 @@ do { \
#define MAXVERSION 999999999 #define MAXVERSION 999999999
#define LASTVERSIONARRAY ((unsigned) -1) #define LASTVERSIONARRAY ((unsigned) -1)
#define VERSIONARRAYCHUNKLENGTH 200 #define VERSIONARRAYLENGTH 200
#define VERSIONARRAYMAXLENGTH 2000
#define NoFileP(varray) \ #define NoFileP(varray) \
(((varray)->version_no == LASTVERSIONARRAY)? 1 : 0) (((varray)->version_no == LASTVERSIONARRAY)? 1 : 0)

View File

@@ -83,19 +83,6 @@
# define MAIKO_OS_DETECTED 1 # define MAIKO_OS_DETECTED 1
#endif #endif
#ifdef __EMSCRIPTEN__
# define MAIKO_OS_LINUX 1
# define MAIKO_OS_EMSCRIPTEN 1
# define MAIKO_OS_NAME "Emscripten"
# define MAIKO_EMULATE_TIMER_INTERRUPTS 1
# define MAIKO_EMULATE_ASYNC_INTERRUPTS 1
# define MAIKO_OS_UNIX_LIKE 1
# define MAIKO_OS_DETECTED
# define MAIKO_ARCH_NAME "WebAssembly"
# define MAIKO_ARCH_WORD_BITS 32
# define MAIKO_ARCH_DETECTED 1
#endif
/* __x86_64__: GNU C, __x86_64: Sun Studio, _M_AMD64: Visual Studio */ /* __x86_64__: GNU C, __x86_64: Sun Studio, _M_AMD64: Visual Studio */
#if defined(__x86_64__) || defined(__x86_64) || defined(_M_AMD64) #if defined(__x86_64__) || defined(__x86_64) || defined(_M_AMD64)
# define MAIKO_ARCH_X86_64 1 # define MAIKO_ARCH_X86_64 1
@@ -166,12 +153,6 @@
# define MAIKO_ARCH_DETECTED 1 # define MAIKO_ARCH_DETECTED 1
#endif #endif
#ifdef __HAIKU__
# define MAIKO_OS_HAIKU 1
# define MAIKO_OS_NAME "Haiku"
# define MAIKO_OS_UNIX_LIKE 1
# define MAIKO_OS_DETECTED 1
#endif
/* Modern GNU C, Clang, Sun Studio provide __BYTE_ORDER__ /* Modern GNU C, Clang, Sun Studio provide __BYTE_ORDER__
* Older GNU C (ca. 4.0.1) provides __BIG_ENDIAN__/__LITTLE_ENDIAN__ * Older GNU C (ca. 4.0.1) provides __BIG_ENDIAN__/__LITTLE_ENDIAN__
*/ */

View File

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

View File

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

View File

@@ -37,7 +37,7 @@
#define FastRetCALL \ #define FastRetCALL \
do { \ do { \
/* Get IVar from Returnee's IVAR offset slot(BF) */ \ /* Get IVar from Returnee's IVAR offset slot(BF) */ \
IVar = NativeAligned2FromStackOffset(GETWORD((DLword *)CURRENTFX - 1)); \ IVar = NativeAligned2FromLAddr(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \ /* Get FuncObj from Returnee's FNHEAD slot in FX */ \
FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \ FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \
/* Get PC from Returnee's pc slot in FX */ \ /* Get PC from Returnee's pc slot in FX */ \
@@ -47,7 +47,7 @@
#define FastRetCALL \ #define FastRetCALL \
do { \ do { \
/* Get IVar from Returnee's IVAR offset slot(BF) */ \ /* Get IVar from Returnee's IVAR offset slot(BF) */ \
IVar = NativeAligned2FromStackOffset(GETWORD((DLword *)CURRENTFX - 1)); \ IVar = NativeAligned2FromLAddr(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \ /* Get FuncObj from Returnee's FNHEAD slot in FX */ \
FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \ FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \
/* Get PC from Returnee's pc slot in FX */ \ /* Get PC from Returnee's pc slot in FX */ \

View File

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

View File

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

View File

@@ -49,6 +49,7 @@
#include "stack.h" #include "stack.h"
#include "return.h" #include "return.h"
#include "cell.h" #include "cell.h"
#include "gcdata.h"
#include "bbtsubdefs.h" #include "bbtsubdefs.h"
#include "car-cdrdefs.h" #include "car-cdrdefs.h"
@@ -1663,7 +1664,7 @@ void ccfuncall(unsigned int atom_index, int argnum, int bytenum)
CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */; CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */;
/* Setup IVar */ /* XXX: is it really only 2-byte aligned? */ /* Setup IVar */ /* XXX: is it really only 2-byte aligned? */
IVar = NativeAligned2FromStackOffset(CURRENTFX->nextblock); IVar = NativeAligned2FromLAddr((((LispPTR)(CURRENTFX->nextblock)) | STK_OFFSET));
/* Set PC to the Next Instruction and save into FX */ /* Set PC to the Next Instruction and save into FX */
CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum; CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum;
@@ -1798,7 +1799,7 @@ void tedit_bltchar(LispPTR *args)
} /* end tedit_bltchar */ } /* end tedit_bltchar */
#if defined(REALCURSOR) #if defined(REALCURSOR) || defined(SUNDISPLAY)
#ifndef COLOR #ifndef COLOR
/* Lisp addr hi-word, lo-word, ... */ /* Lisp addr hi-word, lo-word, ... */
static int old_cursorin(DLword addrhi, DLword addrlo, int x, int w, int h, int y, int backward) static int old_cursorin(DLword addrhi, DLword addrlo, int x, int w, int h, int y, int backward)
@@ -1865,4 +1866,4 @@ static int old_cursorin(DLword addrhi, DLword addrlo, int x, int w, int h, int y
} /* COLOR case end */ } /* COLOR case end */
} }
#endif /* COLOR */ #endif /* COLOR */
#endif /* defined(REALCURSOR) */ #endif /* defined(REALCURSOR) || defined(SUNDISPLAY) */

View File

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

View File

@@ -64,14 +64,14 @@ LispPTR Uraid_mess = NIL;
int error(const char *cp) { int error(const char *cp) {
char *ptr; char *ptr;
if (device_before_raid() < 0) { if (device_before_raid() < 0) {
(void)fprintf(stderr, "Can't Enter URAID.\n"); fprintf(stderr, "Can't Enter URAID.\n");
exit(-1); exit(-1);
} }
/* comm read */ /* comm read */
URaid_errmess = cp; URaid_errmess = cp;
(void)fprintf(stderr, "\n*Error* %s\n", cp); fprintf(stderr, "\n*Error* %s\n", cp);
fflush(stdin); fflush(stdin);
(void)fprintf(stderr, "Enter the URaid\n"); fprintf(stderr, "Enter the URaid\n");
print(Uraid_mess); print(Uraid_mess);
putchar('\n'); putchar('\n');
/* XXX: make sure output is flushed so we can see where we are */ /* XXX: make sure output is flushed so we can see where we are */

View File

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

View File

@@ -303,14 +303,14 @@ int sf(struct frameex1 *fx_addr68k) {
if (((fx_addr68k)->alink & 1) == 0) { /* FAST */ if (((fx_addr68k)->alink & 1) == 0) { /* FAST */
bf = (Bframe *)(((DLword *)fx_addr68k) - 2); bf = (Bframe *)(((DLword *)fx_addr68k) - 2);
} else { /* SLOW */ } else { /* SLOW */
bf = (Bframe *)NativeAligned4FromStackOffset((fx_addr68k)->blink); bf = (Bframe *)NativeAligned4FromLAddr(((fx_addr68k)->blink + STK_OFFSET));
} }
/* Print IVARs */ /* Print IVARs */
printf("IVAR -------\n"); printf("IVAR -------\n");
BT_morep; BT_morep;
ptr = NativeAligned2FromStackOffset(bf->ivar); ptr = NativeAligned2FromLAddr(STK_OFFSET + bf->ivar);
i = 0; i = 0;
while (ptr != (DLword *)bf) { while (ptr != (DLword *)bf) {
ptrlo = ptr + 1; ptrlo = ptr + 1;
@@ -475,7 +475,7 @@ int sf(struct frameex1 *fx_addr68k) {
i++; i++;
} }
if (fx_addr68k->alink == 11) /* for contextsw */ if (fx_addr68k->alink == 11) /* for contextsw */
next68k = NativeAligned2FromStackOffset(fx_addr68k->nextblock); next68k = (DLword *)NativeAligned2FromLAddr((fx_addr68k->nextblock + STK_OFFSET));
else else
next68k = CurrentStackPTR; next68k = CurrentStackPTR;
@@ -493,7 +493,7 @@ int sf(struct frameex1 *fx_addr68k) {
return (-1); return (-1);
} }
next68k = NativeAligned2FromStackOffset(fx_addr68k->nextblock); next68k = (DLword *)NativeAligned2FromLAddr((fx_addr68k->nextblock + STK_OFFSET));
ptr = (DLword *)(fx_addr68k + 1); ptr = (DLword *)(fx_addr68k + 1);
i = 0; i = 0;
@@ -589,8 +589,8 @@ void bt1(FX *startFX) {
BT_morep; BT_morep;
while ((fnobj->framename != ATOM_T) && (fx->alink != 11)) { while ((fnobj->framename != ATOM_T) && (fx->alink != 11)) {
if (fnum > URMAXFXNUM - 1) { if (fnum > URMAXFXNUM - 1) {
/* Internal buf overflow, too many stack frames */ /* Internal buf overflow,more than 100 stacks */
printf("***There are more than %d stack frames.\n", URMAXFXNUM); printf("***There are more than 100 stack frames.\n");
printf( printf(
"If you want to continue, Uraid will smash its internal table for FX pointer. Do you " "If you want to continue, Uraid will smash its internal table for FX pointer. Do you "
"accept?(Y or N)\n"); "accept?(Y or N)\n");

View File

@@ -2150,8 +2150,7 @@ LispPTR COM_next_file(LispPTR *args)
propp = gfsp->propp; propp = gfsp->propp;
dfp = &FinfoArray[finfoid]; dfp = &FinfoArray[finfoid];
fp = dfp->next; if (dfp->head == (FINFO *)0 || (fp = dfp->next) == (FINFO *)0) return (SMALLP_MINUSONE);
if (dfp->head == NULL || fp == NULL) return (SMALLP_MINUSONE);
dfp->next = fp->next; dfp->next = fp->next;
laddr = gfsp->name; laddr = gfsp->name;

View File

@@ -188,7 +188,7 @@ int setup_dlpi_dev(char *device)
dlbindreq(fd, 0x0600, 0, DL_CLDLS, 0, 0); dlbindreq(fd, 0x0600, 0, DL_CLDLS, 0, 0);
if (dlbindack(fd, buf) < 0) { if (dlbindack(fd, buf) < 0) {
(void)fprintf(stderr, "%s: dlbindack failed.\n", pname); fprintf(stderr, "%s: dlbindack failed.\n", pname);
return (-1); return (-1);
} }
@@ -202,14 +202,14 @@ int setup_dlpi_dev(char *device)
dlpromisconreq(fd, DL_PROMISC_SAP); dlpromisconreq(fd, DL_PROMISC_SAP);
if (dlokack(fd, buf) < 0) { if (dlokack(fd, buf) < 0) {
(void)fprintf(stderr, "%s: DL_PROMISC_SAP failed.\n", pname); fprintf(stderr, "%s: DL_PROMISC_SAP failed.\n", pname);
return (-1); return (-1);
} }
dlpromisconreq(fd, DL_PROMISC_MULTI); dlpromisconreq(fd, DL_PROMISC_MULTI);
if (dlokack(fd, buf) < 0) { if (dlokack(fd, buf) < 0) {
(void)fprintf(stderr, "%s: DL_PROMISC_MULTI failed.\n", pname); fprintf(stderr, "%s: DL_PROMISC_MULTI failed.\n", pname);
return (-1); return (-1);
} }
@@ -329,8 +329,8 @@ int dlpi_devtype(int fd)
case DL_FDDI: return (DLT_FDDI); case DL_FDDI: return (DLT_FDDI);
#endif #endif
default: default:
(void)fprintf(stderr, "%s: DLPI MACtype %ld unknown, ", pname, (long)dlp->info_ack.dl_mac_type); fprintf(stderr, "%s: DLPI MACtype %ld unknown, ", pname, (long)dlp->info_ack.dl_mac_type);
(void)fprintf(stderr, "assuming ethernet.\n"); fprintf(stderr, "assuming ethernet.\n");
return (DLT_EN10MB); return (DLT_EN10MB);
} }
} }
@@ -585,7 +585,7 @@ static int strgetmsg(int fd, struct strbuf *ctlp, struct strbuf *datap, int *fla
/* /*
* sigalrm - handle alarms. * sigalrm - handle alarms.
*/ */
static void sigalrm(int sig) { (void)(void)fprintf(stderr, "dlpi: timeout\n"); } static void sigalrm(int sig) { (void)fprintf(stderr, "dlpi: timeout\n"); }
/* /*
* savestr - save string in dynamic memory. * savestr - save string in dynamic memory.
@@ -595,7 +595,7 @@ static char *savestr(char *s)
char *t; char *t;
if ((t = malloc(strlen(s) + 1)) == NULL) { if ((t = malloc(strlen(s) + 1)) == NULL) {
(void)(void)fprintf(stderr, "%s: out of memory.\n", pname); (void)fprintf(stderr, "%s: out of memory.\n", pname);
(void)exit(1); (void)exit(1);
} }

391
src/dsk.c
View File

@@ -13,7 +13,7 @@
#include <fcntl.h> // for O_RDWR, O_CREAT, open, O_RDONLY, O_TRUNC #include <fcntl.h> // for O_RDWR, O_CREAT, open, O_RDONLY, O_TRUNC
#include <stdio.h> // for NULL, sprintf, size_t, rename, SEEK_SET #include <stdio.h> // for NULL, sprintf, size_t, rename, SEEK_SET
#include <stddef.h> // for ptrdiff_t #include <stddef.h> // for ptrdiff_t
#include <stdlib.h> // for strtoul, qsort #include <stdlib.h> // for strtoul
#include <string.h> // for strcpy, strcmp, strlen, strncpy, strchr #include <string.h> // for strcpy, strcmp, strlen, strncpy, strchr
#include <sys/stat.h> // for stat, fstat, mkdir, S_ISREG, st_atime, chmod #include <sys/stat.h> // for stat, fstat, mkdir, S_ISREG, st_atime, chmod
#include <sys/types.h> // for ino_t, time_t, off_t #include <sys/types.h> // for ino_t, time_t, off_t
@@ -38,13 +38,12 @@
#include <pwd.h> // for getpwuid, passwd #include <pwd.h> // for getpwuid, passwd
#include <sys/param.h> // for MAXPATHLEN #include <sys/param.h> // for MAXPATHLEN
#include <sys/statvfs.h> // for statvfs #include <sys/statvfs.h> // for statvfs
#include <sys/time.h> // for timeval, utimes, futimens #include <sys/time.h> // for timeval, utimes
#else #else
#include <direct.h> #include <direct.h>
#include <dos.h> #include <dos.h>
#include <time.h> #include <time.h>
#include <io.h> #include <io.h>
#include <search.h> // for qsort(?)
#define MAXPATHLEN _MAX_PATH #define MAXPATHLEN _MAX_PATH
#define MAXNAMLEM _MAX_PATH #define MAXNAMLEM _MAX_PATH
#define alarm(x) 0 #define alarm(x) 0
@@ -58,31 +57,25 @@ typedef struct filename_entry {
unsigned version_no; unsigned version_no;
} FileName; } FileName;
/* typedef struct current_varray {
* VA, a structure representing the file names and version numbers char path[MAXPATHLEN]; /* pathname of directory */
* that were present in a directory at a particular moment in time. char file[MAXPATHLEN]; /* file name (down cased name) */
* The {DSK} device presents a case-insensitive (to Medley) but time_t mtime;
* case-preserving (to the host) file system. The VA (Version Array) } CurrentVArray;
*/
static struct { static FileName VersionArray[VERSIONARRAYLENGTH];
char name[MAXPATHLEN]; /* lowercase unversioned file name */ static CurrentVArray VArrayInfo;
struct timespec lastMTime; /* modification time of the directory */
int allocated; /* number of entries in the files array */
int lastUsed; /* index of the last entry in use in files array */
FileName *files; /* array of files */
} VA = {0};
static int locate_file(char *dir, char *name); static int locate_file(char *dir, char *name);
static int make_directory(char *dir); static int make_directory(char *dir);
static int maintain_version(char *file, int forcep); static int maintain_version(char *file, FileName *varray, int forcep);
static int compare_file_versions(const void *a, const void *b);
static int get_versionless(FileName *varray, char *file, char *dir); static int get_versionless(FileName *varray, char *file, char *dir);
static int check_vless_link(char *vless, FileName *varray, char *to_file, int *highest_p); static int check_vless_link(char *vless, FileName *varray, char *to_file, int *highest_p);
static int get_old(char *dir, FileName *varray, char *afile, char *vfile); static int get_old(char *dir, FileName *varray, char *afile, char *vfile);
static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile); static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile);
static int get_new(char *dir, FileName *varray, char *afile, char *vfile); static int get_new(char *dir, FileName *varray, char *afile, char *vfile);
static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile); static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile);
static int get_version_array(char *dir, char *file); static int get_version_array(char *dir, char *file, FileName *varray, CurrentVArray *cache);
#ifdef DOS #ifdef DOS
static void separate_drive(char *lfname, char *drive) static void separate_drive(char *lfname, char *drive)
@@ -374,24 +367,24 @@ LispPTR COM_openfile(LispPTR *args)
if (dskp) { if (dskp) {
if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL); if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL);
if (true_name(dir) != -1) return (0); if (true_name(dir) != -1) return (0);
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, file); ConcNameAndVersion(name, ver, file);
switch (args[1]) { switch (args[1]) {
case RECOG_OLD: case RECOG_OLD:
if (get_old(dir, VA.files, file, name) == 0) return (NIL); if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
break; break;
case RECOG_OLDEST: case RECOG_OLDEST:
if (get_oldest(dir, VA.files, file, name) == 0) return (NIL); if (get_oldest(dir, VersionArray, file, name) == 0) return (NIL);
break; break;
case RECOG_NEW: case RECOG_NEW:
if (get_new(dir, VA.files, file, name) == 0) return (NIL); if (get_new(dir, VersionArray, file, name) == 0) return (NIL);
break; break;
case RECOG_OLD_NEW: case RECOG_OLD_NEW:
if (get_old_new(dir, VA.files, file, name) == 0) return (NIL); if (get_old_new(dir, VersionArray, file, name) == 0) return (NIL);
break; break;
default: return (NIL); default: return (NIL);
@@ -446,7 +439,7 @@ LispPTR COM_openfile(LispPTR *args)
* Actually we are creating a new file. We have to * Actually we are creating a new file. We have to
* maintain a version status. * maintain a version status.
*/ */
if (maintain_version(file, 1) == 0) { if (maintain_version(file, (FileName *)NULL, 1) == 0) {
TIMEOUT(rval = close(fd)); TIMEOUT(rval = close(fd));
*Lisp_errno = errno; *Lisp_errno = errno;
return (NIL); return (NIL);
@@ -492,7 +485,7 @@ LispPTR COM_openfile(LispPTR *args)
* the entirely newly created file, versionless file, should not * the entirely newly created file, versionless file, should not
* be linked to any file. * be linked to any file.
*/ */
if (maintain_version(file, 0) == 0) { if (maintain_version(file, (FileName *)NULL, 0) == 0) {
TIMEOUT(close(fd)); TIMEOUT(close(fd));
*Lisp_errno = errno; *Lisp_errno = errno;
return (NIL); return (NIL);
@@ -677,7 +670,7 @@ LispPTR COM_closefile(LispPTR *args)
*Lisp_errno = errno; *Lisp_errno = errno;
return (NIL); return (NIL);
} }
#ifndef DOS /* effectively NEVER, since we're in an ifdef DOS */ #ifndef DOS
TIMEOUT(rval = utimes(file, time)); TIMEOUT(rval = utimes(file, time));
if (rval != 0) { if (rval != 0) {
*Lisp_errno = errno; *Lisp_errno = errno;
@@ -688,9 +681,13 @@ LispPTR COM_closefile(LispPTR *args)
int fd, fatp, dskp, rval; int fd, fatp, dskp, rval;
time_t cdate; time_t cdate;
char lfname[MAXPATHLEN + 5], host[MAXNAMLEN]; char lfname[MAXPATHLEN + 5], host[MAXNAMLEN];
char file[MAXPATHLEN]; char file[MAXPATHLEN], dir[MAXPATHLEN], name[MAXNAMLEN + 1];
char ver[VERSIONLEN];
DIR *dirp;
struct dirent *dp;
struct stat sbuf; struct stat sbuf;
struct timespec timesp[2]; struct timeval time[2];
ino_t ino;
ERRSETJMP(NIL); ERRSETJMP(NIL);
Lisp_errno = (int *)NativeAligned4FromLAddr(args[3]); Lisp_errno = (int *)NativeAligned4FromLAddr(args[3]);
@@ -755,21 +752,51 @@ LispPTR COM_closefile(LispPTR *args)
} }
} }
/* introduction of futimens() allows us to set the times on an open if (!unpack_filename(file, dir, name, ver, 1)) return (NIL);
* file descriptor so a lot of directory manipulation to find the
* appropriate name associated with the inode is no longer required if (dskp) {
/*
* On {DSK}, we have to make sure dir is case sensitively existing
* directory.
*/ */
if (true_name(dir) != -1) return (NIL);
timesp[0].tv_sec = (long)sbuf.st_atime; /*
timesp[0].tv_nsec = 0L; * There is a very troublesome problem here. The file name Lisp
timesp[1].tv_sec = (long)ToUnixTime(cdate); * recognizes is not always the same as the name which COM_openfile
timesp[1].tv_nsec = 0L; * used to open the file. Sometimes COM_openfile uses the versionless
* file name to open a file, although Lisp always recognizes with
TIMEOUT(rval = futimens(fd, timesp)); * *versioned* file name.
* Thus, we compare i-node number of the requested file with ones of all
* of files on the directory. This is time spending implementation.
* More clean up work is needed.
*/
TIMEOUT(rval = fstat(fd, &sbuf));
if (rval != 0) { if (rval != 0) {
*Lisp_errno = errno; *Lisp_errno = errno;
return (NIL); return (NIL);
} }
ino = sbuf.st_ino;
errno = 0;
TIMEOUT0(dirp = opendir(dir));
if (dirp == (DIR *)NULL) {
*Lisp_errno = errno;
return (NIL);
}
for (S_TOUT(dp = readdir(dirp)); dp != (struct dirent *)NULL || errno == EINTR;
errno = 0, S_TOUT(dp = readdir(dirp)))
if (dp) {
if (ino == (ino_t)dp->d_ino) sprintf(file, "%s/%s", dir, dp->d_name);
}
TIMEOUT(closedir(dirp));
}
time[0].tv_sec = (long)sbuf.st_atime;
time[0].tv_usec = 0L;
time[1].tv_sec = (long)ToUnixTime(cdate);
time[1].tv_usec = 0L;
TIMEOUT(rval = close(fd)); TIMEOUT(rval = close(fd));
if (rval == -1) { if (rval == -1) {
@@ -777,6 +804,12 @@ LispPTR COM_closefile(LispPTR *args)
return (NIL); return (NIL);
} }
TIMEOUT(rval = utimes(file, time));
if (rval != 0) {
*Lisp_errno = errno;
return (NIL);
}
#endif /* DOS */ #endif /* DOS */
return (ATOM_T); return (ATOM_T);
@@ -885,10 +918,10 @@ LispPTR DSK_getfilename(LispPTR *args)
* Recognizing a file on DSK device needs the version information. * Recognizing a file on DSK device needs the version information.
* We gather version information in a version array first. * We gather version information in a version array first.
*/ */
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname); ConcNameAndVersion(name, ver, aname);
if (get_old(dir, VA.files, aname, vname) == 0) return (NIL); if (get_old(dir, VersionArray, aname, vname) == 0) return (NIL);
if ((rval = true_name(aname)) == 0) return (NIL); if ((rval = true_name(aname)) == 0) return (NIL);
if (rval == -1) { if (rval == -1) {
@@ -925,10 +958,10 @@ LispPTR DSK_getfilename(LispPTR *args)
strcpy(vname, dir); strcpy(vname, dir);
dirp = 1; dirp = 1;
} else { } else {
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname); ConcNameAndVersion(name, ver, aname);
if (get_oldest(dir, VA.files, aname, vname) == 0) return (NIL); if (get_oldest(dir, VersionArray, aname, vname) == 0) return (NIL);
if ((rval = true_name(aname)) == 0) return (NIL); if ((rval = true_name(aname)) == 0) return (NIL);
if (rval == -1) { if (rval == -1) {
@@ -974,10 +1007,10 @@ LispPTR DSK_getfilename(LispPTR *args)
* Here, dir is an existing directory. We have to perform * Here, dir is an existing directory. We have to perform
* "new" recognition with the version information. * "new" recognition with the version information.
*/ */
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname); ConcNameAndVersion(name, ver, aname);
if (get_new(dir, VA.files, aname, vname) == 0) return (NIL); if (get_new(dir, VersionArray, aname, vname) == 0) return (NIL);
dirp = 0; dirp = 0;
} }
} }
@@ -1000,10 +1033,10 @@ LispPTR DSK_getfilename(LispPTR *args)
strcpy(vname, aname); strcpy(vname, aname);
dirp = 1; dirp = 1;
} else { } else {
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname); ConcNameAndVersion(name, ver, aname);
if (get_old_new(dir, VA.files, aname, vname) == 0) return (NIL); if (get_old_new(dir, VersionArray, aname, vname) == 0) return (NIL);
dirp = 0; dirp = 0;
} }
} }
@@ -1099,6 +1132,7 @@ LispPTR DSK_deletefile(LispPTR *args)
char file[MAXPATHLEN], fbuf[MAXPATHLEN], vless[MAXPATHLEN]; char file[MAXPATHLEN], fbuf[MAXPATHLEN], vless[MAXPATHLEN];
char dir[MAXPATHLEN], ver[VERSIONLEN]; char dir[MAXPATHLEN], ver[VERSIONLEN];
int rval, fatp; int rval, fatp;
FileName *varray;
#ifdef DOS #ifdef DOS
char drive[1], rawname[MAXNAMLEN]; char drive[1], rawname[MAXNAMLEN];
int extlen; /* len of extension, for making backup filename */ int extlen; /* len of extension, for making backup filename */
@@ -1126,9 +1160,10 @@ LispPTR DSK_deletefile(LispPTR *args)
#endif #endif
if (unpack_filename(file, dir, fbuf, ver, 1) == 0) return (NIL); if (unpack_filename(file, dir, fbuf, ver, 1) == 0) return (NIL);
if (get_version_array(dir, fbuf) == 0) return (NIL); if (get_version_array(dir, fbuf, VersionArray, &VArrayInfo) == 0) return (NIL);
varray = VersionArray;
if (NoFileP(VA.files)) if (NoFileP(varray))
return (NIL); /* return (NIL); /*
* If the specified file is deleted from * If the specified file is deleted from
* outside of Lisp during the last time * outside of Lisp during the last time
@@ -1143,9 +1178,9 @@ LispPTR DSK_deletefile(LispPTR *args)
*/ */
ConcNameAndVersion(fbuf, ver, file); ConcNameAndVersion(fbuf, ver, file);
if (get_oldest(dir, VA.files, file, fbuf) == 0) return (NIL); if (get_oldest(dir, varray, file, fbuf) == 0) return (NIL);
if (get_versionless(VA.files, vless, dir) == 0) { if (get_versionless(varray, vless, dir) == 0) {
/* /*
* There is no versionless file. All we have to do is to simply * There is no versionless file. All we have to do is to simply
* try to unlink the specified file. * try to unlink the specified file.
@@ -1164,7 +1199,7 @@ LispPTR DSK_deletefile(LispPTR *args)
* file is linked will destroy the consistency of the version status. * file is linked will destroy the consistency of the version status.
*/ */
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) return (NIL); if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
if (strcmp(file, vless) == 0 || strcmp(file, fbuf) == 0) { if (strcmp(file, vless) == 0 || strcmp(file, fbuf) == 0) {
if (*fbuf != '\0') { if (*fbuf != '\0') {
@@ -1185,12 +1220,12 @@ LispPTR DSK_deletefile(LispPTR *args)
/* /*
* Finally, we have to maintain the version status. * Finally, we have to maintain the version status.
*/ */
if (maintain_version(vless, 0) == 0) return (NIL); if (maintain_version(vless, (FileName *)NULL, 0) == 0) return (NIL);
return (ATOM_T); return (ATOM_T);
} else { } else {
/* /*
* Although the versionfile is specified, it is not linked * Although the versionfile is specified, it is not linked
* to any file in VA.files. We should not maintain the version * to any file in varray. We should not maintain the version
* status after deleting the versionless file, because * status after deleting the versionless file, because
* we cannot say whether the versionless file is actually under * we cannot say whether the versionless file is actually under
* control of the Medley DSK file system or not. * control of the Medley DSK file system or not.
@@ -1245,6 +1280,7 @@ LispPTR DSK_renamefile(LispPTR *args)
char dir[MAXPATHLEN], ver[VERSIONLEN]; char dir[MAXPATHLEN], ver[VERSIONLEN];
int rval, fatp; int rval, fatp;
int need_maintain_flg; int need_maintain_flg;
FileName *varray;
#ifdef DOS #ifdef DOS
char drive1[1], drive2[1]; char drive1[1], drive2[1];
int extlen1, extlen2; /* len of extension */ int extlen1, extlen2; /* len of extension */
@@ -1295,9 +1331,10 @@ LispPTR DSK_renamefile(LispPTR *args)
* We maintain the destination to handle the link damaged case correctly. * We maintain the destination to handle the link damaged case correctly.
*/ */
ConcDirAndName(dir, fbuf, dst); ConcDirAndName(dir, fbuf, dst);
if (maintain_version(dst, 0) == 0) return (NIL); if (maintain_version(dst, (FileName *)NULL, 0) == 0) return (NIL);
if (get_version_array(dir, fbuf) == 0) return (NIL); if (get_version_array(dir, fbuf, VersionArray, &VArrayInfo) == 0) return (NIL);
varray = VersionArray;
/* /*
* Although the file should have been recognized with "new" mode in Lisp * Although the file should have been recognized with "new" mode in Lisp
@@ -1306,7 +1343,7 @@ LispPTR DSK_renamefile(LispPTR *args)
*/ */
ConcNameAndVersion(fbuf, ver, dst); ConcNameAndVersion(fbuf, ver, dst);
if (get_new(dir, VA.files, dst, fbuf) == 0) return (NIL); if (get_new(dir, varray, dst, fbuf) == 0) return (NIL);
/* /*
* At this point, there are three cases for the destination. If there is * At this point, there are three cases for the destination. If there is
@@ -1316,9 +1353,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* "real" destination file is the file to which the versionless file is linked, * "real" destination file is the file to which the versionless file is linked,
* we have to unlink the versionless file. * we have to unlink the versionless file.
*/ */
if (!NoFileP(VA.files)) { if (!NoFileP(varray)) {
if (OnlyVersionlessP(VA.files)) { if (OnlyVersionlessP(varray)) {
get_versionless(VA.files, vless, dir); get_versionless(varray, vless, dir);
if (strcmp(dst, vless) != 0) { if (strcmp(dst, vless) != 0) {
ConcNameAndVersion(vless, "1", fbuf); ConcNameAndVersion(vless, "1", fbuf);
TIMEOUT(rval = rename(vless, fbuf)); TIMEOUT(rval = rename(vless, fbuf));
@@ -1332,8 +1369,8 @@ LispPTR DSK_renamefile(LispPTR *args)
* We are sure that the versionless file is linked to one of * We are sure that the versionless file is linked to one of
* the higher versioned file here. * the higher versioned file here.
*/ */
get_versionless(VA.files, vless, dir); get_versionless(varray, vless, dir);
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) { return (NIL); } if (check_vless_link(vless, varray, fbuf, &rval) == 0) { return (NIL); }
if (strcmp(dst, fbuf) == 0) { if (strcmp(dst, fbuf) == 0) {
TIMEOUT(rval = unlink(vless)); TIMEOUT(rval = unlink(vless));
if (rval == -1) { if (rval == -1) {
@@ -1345,9 +1382,9 @@ LispPTR DSK_renamefile(LispPTR *args)
} }
if (unpack_filename(src, dir, fbuf, ver, 1) == 0) return (NIL); if (unpack_filename(src, dir, fbuf, ver, 1) == 0) return (NIL);
if (get_version_array(dir, fbuf) == 0) return (NIL); if (get_version_array(dir, fbuf, varray, &VArrayInfo) == 0) return (NIL);
if (NoFileP(VA.files)) if (NoFileP(varray))
return (NIL); /* return (NIL); /*
* If the specified file is deleted from * If the specified file is deleted from
* outside of Lisp during the last time * outside of Lisp during the last time
@@ -1361,9 +1398,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* of it. * of it.
*/ */
ConcNameAndVersion(fbuf, ver, src); ConcNameAndVersion(fbuf, ver, src);
if (get_old(dir, VA.files, src, fbuf) == 0) return (NIL); if (get_old(dir, varray, src, fbuf) == 0) return (NIL);
if (get_versionless(VA.files, vless, dir) == 0) { if (get_versionless(varray, vless, dir) == 0) {
/* /*
* There is no versionless file. All we have to do is to simply * There is no versionless file. All we have to do is to simply
* try to rename the specified file. * try to rename the specified file.
@@ -1376,7 +1413,7 @@ LispPTR DSK_renamefile(LispPTR *args)
* versionless file is linked will destroy the consistency of the * versionless file is linked will destroy the consistency of the
* version status. * version status.
*/ */
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) return (NIL); if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
if (strcmp(src, vless) == 0 && *fbuf != '\0') { if (strcmp(src, vless) == 0 && *fbuf != '\0') {
/* /*
@@ -1421,9 +1458,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* is on. * is on.
*/ */
if (maintain_version(dst, 0) == 0) return (NIL); if (maintain_version(dst, (FileName *)NULL, 0) == 0) return (NIL);
if (need_maintain_flg) { if (need_maintain_flg) {
if (maintain_version(src, 0) == 0) return (NIL); if (maintain_version(src, (FileName *)NULL, 0) == 0) return (NIL);
} }
return (ATOM_T); return (ATOM_T);
@@ -1621,9 +1658,9 @@ LispPTR COM_getfileinfo(LispPTR *args)
*/ */
strcpy(file, dir); strcpy(file, dir);
} else { } else {
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, file); ConcNameAndVersion(name, ver, file);
if (get_old(dir, VA.files, file, name) == 0) return (NIL); if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
} }
} }
@@ -1810,9 +1847,9 @@ LispPTR COM_setfileinfo(LispPTR *args)
if (dskp) { if (dskp) {
if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL); if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL);
if (true_name(dir) != -1) return (0); if (true_name(dir) != -1) return (0);
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, file); ConcNameAndVersion(name, ver, file);
if (get_old(dir, VA.files, file, name) == 0) return (NIL); if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
} }
switch (args[1]) { switch (args[1]) {
@@ -2766,25 +2803,33 @@ static int make_directory(char *dir)
* and highest version number respectively. * and highest version number respectively.
* *
* Description: * Description:
* Finds the highest versioned entry in varray.
* *
* Preconditions: * Find the highest versioned entry in varray. Varray has to include at least
* Varray must include at least one versioned file, satisfying the condition: * one versioned file, that is varray has to satisfy (!NoFileP(varray) &&
* (!NoFileP(varray) && !OnlyVersionlessP(varray)) * !OnlyVersionlessP(varray)).
* Varray must be sorted from highest to lowest version *
*/ */
#ifdef DOS #ifdef DOS
#define FindHighestVersion(varray, mentry, max_no) \ #define FindHighestVersion(varray, mentry, max_no) \
do { \ do { \
(max_no) = varray[0].version_no; \ FileName *centry; \
(mentry) = &varray[0]; \ for (centry = varray, max_no = -1; centry->version_no != LASTVERSIONARRAY; centry++) { \
if (centry->version_no > max_no) { \
max_no = centry->version_no; \
mentry = centry; \
} \
} \
} while (0) } while (0)
#else #else
#define FindHighestVersion(varray, mentry, max_no) \ #define FindHighestVersion(varray, mentry, max_no) \
do { \ do { \
(max_no) = varray[0].version_no; \ FileName *centry; \
(mentry) = &varray[0]; \ for (centry = (varray), (max_no) = 0; centry->version_no != LASTVERSIONARRAY; centry++) { \
if (centry->version_no > (max_no)) { \
(max_no) = centry->version_no; \
(mentry) = centry; \
} \
} \
} while (0) } while (0)
#endif /* DOS */ #endif /* DOS */
@@ -2872,19 +2917,6 @@ static int make_directory(char *dir)
} \ } \
} while (0) } while (0)
/*
* comparison function for qsort to sort file versions in descending order
*/
static int compare_file_versions(const void *a, const void *b)
{
unsigned a_ver = ((FileName *)a)->version_no;
unsigned b_ver = ((FileName *)b)->version_no;
if (a_ver > b_ver) return (-1);
if (a_ver < b_ver) return (1);
return (0);
}
/************************************************************************/ /************************************************************************/
/* */ /* */
/* g e t _ v e r s i o n _ a r r a y */ /* g e t _ v e r s i o n _ a r r a y */
@@ -2896,6 +2928,7 @@ static int compare_file_versions(const void *a, const void *b)
/* guarantee that the directory exists. */ /* guarantee that the directory exists. */
/* file File name, optionally including a (unix) version */ /* file File name, optionally including a (unix) version */
/* varray Place to put the version array entries. */ /* varray Place to put the version array entries. */
/* cache Place to hold info about the new version array */
/* */ /* */
/* Read thru DIR and gather all files that match FILE into */ /* Read thru DIR and gather all files that match FILE into */
/* VARRAY. DIR's case must match existing directory's, but */ /* VARRAY. DIR's case must match existing directory's, but */
@@ -2905,15 +2938,15 @@ static int compare_file_versions(const void *a, const void *b)
/* */ /* */
/************************************************************************/ /************************************************************************/
static int get_version_array(char *dir, char *file) static int get_version_array(char *dir, char *file, FileName *varray, CurrentVArray *cache)
{ {
#ifdef DOS #ifdef DOS
/* DOS version-array builder */
char lcased_file[MAXPATHLEN]; char lcased_file[MAXPATHLEN];
char old_file[MAXPATHLEN]; char old_file[MAXPATHLEN];
char name[MAXNAMLEN]; char name[MAXNAMLEN];
char ver[VERSIONLEN]; char ver[VERSIONLEN];
int varray_index = 0; FileName *svarray;
struct find_t dirp; struct find_t dirp;
struct direct *dp; struct direct *dp;
int rval, drive = 0, isslash = 0; int rval, drive = 0, isslash = 0;
@@ -2954,12 +2987,14 @@ static int get_version_array(char *dir, char *file)
make_old_version(old_file, lcased_file); make_old_version(old_file, lcased_file);
svarray = varray;
TIMEOUT(res = _dos_findfirst(old_file, _A_NORMAL | _A_SUBDIR, &dirp)); TIMEOUT(res = _dos_findfirst(old_file, _A_NORMAL | _A_SUBDIR, &dirp));
if (res == 0) { if (res == 0) {
strcpy(name, dirp.name); strcpy(name, dirp.name);
strcpy(VA.files[varray_index].name, name); strcpy(svarray->name, name);
VA.files[varray_index].version_no = 0; svarray->version_no = 0;
varray_index++; svarray++;
} }
/*******************************/ /*******************************/
@@ -2978,48 +3013,34 @@ static int get_version_array(char *dir, char *file)
separate_version(name, ver, 1); separate_version(name, ver, 1);
DOWNCASE(name); DOWNCASE(name);
strcpy(VA.files[varray_index].name, dirp.name); strcpy(svarray->name, dirp.name);
if (*ver == '\0') { if (*ver == '\0') {
/* Versionless file */ /* Versionless file */
VA.files[varray_index].version_no = 1; svarray->version_no = 1;
} else { } else {
/* /*
* separate_version guarantees ver is a numeric string. * separator_version guarantees ver is a numeric
* string.
*/ */
VA.files[varray_index].version_no = strtoul(ver, (char **)NULL, 10); svarray->version_no = strtoul(ver, (char **)NULL, 10);
}
varray_index++;
if (varray_index >= VERSIONARRAYMAXLENGTH) {
*Lisp_errno = EIO;
return (0);
} else if (varray_index >= VA.allocated) {
VA.allocated += VERSIONARRAYCHUNKLENGTH;
VA.files = realloc(VA.files,
sizeof(*VA.files) * VA.allocated);
} }
svarray++;
} }
/* /*
* The last entry of VA.files is indicated by setting LASTVERSIONARRAY into * The last entry of varray is indicated by setting LASTVERSIONARRAY into
* version_no field. * version_no field.
*/ */
VA.files[varray_index].version_no = LASTVERSIONARRAY; svarray->version_no = LASTVERSIONARRAY;
VA.lastUsed = varray_index;
/* /*
* If any files have been stored in VA.files, we store the name * If more than one files have been stored in varray, we store the name
* without version in the last marker entry. * without version in the last marker entry.
*
* NOTE: sorting "varray_index" entries will leave the LASTVERSIONARRAY item
* untouched by the sort, which is intentional.
*/ */
if (!NoFileP(VA.files)) { if (!NoFileP(varray)) {
strcpy(name, VA.files[0].name); strcpy(name, varray->name);
separate_version(name, ver, 1); separate_version(name, ver, 1);
strcpy(VA.files[varray_index].name, name); strcpy(svarray->name, name);
if (varray_index > 1) {
qsort(VA.files, varray_index, sizeof(*VA.files), compare_file_versions);
}
} }
return (1); return (1);
@@ -3029,11 +3050,13 @@ static int get_version_array(char *dir, char *file)
char lcased_file[MAXNAMLEN]; char lcased_file[MAXNAMLEN];
char name[MAXNAMLEN]; char name[MAXNAMLEN];
char ver[VERSIONLEN]; char ver[VERSIONLEN];
int varray_index = 0; FileName *svarray;
DIR *dirp; DIR *dirp;
struct dirent *dp; struct dirent *dp;
/* Used in commented out code below:
int rval; int rval;
struct stat sbuf; struct stat sbuf;
*/
/* /*
* First of all, prepare a lower cased file name for the case insensitive * First of all, prepare a lower cased file name for the case insensitive
@@ -3043,27 +3066,30 @@ static int get_version_array(char *dir, char *file)
separate_version(lcased_file, ver, 1); separate_version(lcased_file, ver, 1);
DOWNCASE(lcased_file); DOWNCASE(lcased_file);
/* Cache for VA.files reinstated using nanosecond timestamps which many /*
* systems provide for directory modification times.
* POSIX defines the struct stat field containing the nanosecond resolution
* modification time as "st_mtim". See "version.h" for accomodations
* for systems that call it something else (e.g., macOS st_mtimespec).
*/
TIMEOUT(rval = stat(dir, &sbuf)); TIMEOUT(rval = stat(dir, &sbuf));
if (rval == -1) { if (rval == -1) {
*Lisp_errno = errno; *Lisp_errno = errno;
return(0); return(0);
} }
if (0 == strcmp(lcased_file, VA.name) && */
sbuf.st_mtim.tv_sec == VA.lastMTime.tv_sec &&
sbuf.st_mtim.tv_nsec == VA.lastMTime.tv_nsec) {
return (1);
} else {
VA.lastMTime = sbuf.st_mtim;
strcpy(VA.name, lcased_file);
}
/*
* If the cached version array is still valid, we can return immediately.
*/
/*
* Cache mechanism is not used now, because of the bug of Sun OS.
* Sometimes just after unlinking a file on a directory, the st_mtime
* of the directory does not change. This will make Maiko believe
* cached version array is still valid, although it is already invalid.
* sync(2) has no effect on such case.
*/
/*
if ((sbuf.st_mtime == cache->mtime) && strcmp(dir, cache->path) == 0
&& strcmp(lcased_file, cache->file) == 0) return(1);
*/
errno = 0; errno = 0;
TIMEOUT0(dirp = opendir(dir)); TIMEOUT0(dirp = opendir(dir));
if (dirp == NULL) { if (dirp == NULL) {
@@ -3071,13 +3097,7 @@ static int get_version_array(char *dir, char *file)
return (0); return (0);
} }
/* There is no initialization call for the local file system, so we for (S_TOUT(dp = readdir(dirp)), svarray = varray; dp != NULL || errno == EINTR;
* must ensure there is initial storage allocated for the version array */
if (VA.files == NULL) {
VA.files = calloc(VERSIONARRAYCHUNKLENGTH, sizeof(*VA.files));
VA.allocated = VERSIONARRAYCHUNKLENGTH;
}
for (S_TOUT(dp = readdir(dirp)); dp != NULL || errno == EINTR;
errno = 0, S_TOUT(dp = readdir(dirp))) errno = 0, S_TOUT(dp = readdir(dirp)))
if (dp) { if (dp) {
strcpy(name, dp->d_name); strcpy(name, dp->d_name);
@@ -3087,50 +3107,44 @@ static int get_version_array(char *dir, char *file)
/* /*
* This file can be regarded as a same file in Lisp sense. * This file can be regarded as a same file in Lisp sense.
*/ */
strcpy(VA.files[varray_index].name, dp->d_name); strcpy(svarray->name, dp->d_name);
if (*ver == '\0') { if (*ver == '\0') {
/* Versionless file */ /* Versionless file */
VA.files[varray_index].version_no = 0; svarray->version_no = 0;
} else { } else {
/* /*
* separate_version guarantees ver is a numeric string. * separator_version guarantees ver is a numeric
* string.
*/ */
VA.files[varray_index].version_no = strtoul(ver, (char **)NULL, 10); svarray->version_no = strtoul(ver, (char **)NULL, 10);
}
varray_index++;
if (varray_index >= VERSIONARRAYMAXLENGTH) {
*Lisp_errno = EIO;
return (0);
} else if (varray_index >= VA.allocated) {
VA.allocated += VERSIONARRAYCHUNKLENGTH;
VA.files = realloc(VA.files,
sizeof(*VA.files) * VA.allocated);
} }
svarray++;
} }
} }
/* /*
* The last entry of varray is indicated by setting LASTVERSIONARRAY into * The last entry of varray is indicated by setting LASTVERSIONARRAY into
* version_no field. * version_no field.
*/ */
VA.files[varray_index].version_no = LASTVERSIONARRAY; svarray->version_no = LASTVERSIONARRAY;
VA.lastUsed = varray_index;
/* /*
* If any files have been stored in VA.files, we store the name * If more than one files have been stored in varray, we store the name
* without version in the last marker entry. * without version in the last marker entry.
*
* NOTE: sorting "varray_index" entries will leave the LASTVERSIONARRAY item
* untouched by the sort, which is intentional.
*/ */
if (!NoFileP(VA.files)) { if (!NoFileP(varray)) {
strcpy(name, VA.files[0].name); strcpy(name, varray->name);
separate_version(name, ver, 1); separate_version(name, ver, 1);
strcpy(VA.files[varray_index].name, name); strcpy(svarray->name, name);
if (varray_index > 1) {
qsort(VA.files, varray_index, sizeof(*VA.files), compare_file_versions);
}
} }
/*
* Update cache information.
*/
/*
strcpy(cache->path, dir);
strcpy(cache->file, lcased_file);
cache->mtime = sbuf.st_mtime;
*/
TIMEOUT(closedir(dirp)); TIMEOUT(closedir(dirp));
return (1); return (1);
#endif /* DOS */ #endif /* DOS */
@@ -3162,7 +3176,7 @@ static int get_version_array(char *dir, char *file)
* to maintain the directory on which a file is being created. * to maintain the directory on which a file is being created.
*/ */
static int maintain_version(char *file, int forcep) static int maintain_version(char *file, FileName *varray, int forcep)
{ {
char dir[MAXPATHLEN], fname[MAXNAMLEN], ver[VERSIONLEN]; char dir[MAXPATHLEN], fname[MAXNAMLEN], ver[VERSIONLEN];
char old_file[MAXPATHLEN], vless[MAXPATHLEN]; char old_file[MAXPATHLEN], vless[MAXPATHLEN];
@@ -3170,14 +3184,17 @@ static int maintain_version(char *file, int forcep)
int rval, max_no; int rval, max_no;
FileName *entry; FileName *entry;
if (varray == (FileName *)NULL) {
if (unpack_filename(file, dir, fname, ver, 1) == 0) return (0); if (unpack_filename(file, dir, fname, ver, 1) == 0) return (0);
/* /*
* We have to make sure that dir is the existing directory. * We have to make sure that dir is the existing directory.
*/ */
if (true_name(dir) != -1) return (0); if (true_name(dir) != -1) return (0);
if (get_version_array(dir, fname) == 0) return (0); if (get_version_array(dir, fname, VersionArray, &VArrayInfo) == 0) return (0);
varray = VersionArray;
}
if (NoFileP(VA.files)) { if (NoFileP(varray)) {
/* /*
* We don't need to care about such case that there is no such file * We don't need to care about such case that there is no such file
* or an only versionless file exists. * or an only versionless file exists.
@@ -3185,14 +3202,14 @@ static int maintain_version(char *file, int forcep)
return (1); return (1);
} }
if (OnlyVersionlessP(VA.files)) { if (OnlyVersionlessP(varray)) {
if (forcep) { if (forcep) {
/* /*
* If forcep, we link the versionless file to the version * If forcep, we link the versionless file to the version
* 1 file. * 1 file.
*/ */
#ifndef DOS #ifndef DOS
get_versionless(VA.files, vless, dir); get_versionless(varray, vless, dir);
ConcNameAndVersion(vless, "1", fname); ConcNameAndVersion(vless, "1", fname);
TIMEOUT(rval = link(vless, fname)); TIMEOUT(rval = link(vless, fname));
if (rval == -1) { if (rval == -1) {
@@ -3209,13 +3226,13 @@ static int maintain_version(char *file, int forcep)
* exists. Thus, FindHighestVersion works fine from now on. * exists. Thus, FindHighestVersion works fine from now on.
*/ */
if (get_versionless(VA.files, vless, dir) == 0) { if (get_versionless(varray, vless, dir) == 0) {
/* /*
* There is not a versionless file, but at least one versioned file. * There is not a versionless file, but at least one versioned file.
* Thus, the thing we have to do is to link a versionless file * Thus, the thing we have to do is to link a versionless file
* to the existing highest versioned file. * to the existing highest versioned file.
*/ */
FindHighestVersion(VA.files, entry, max_no); FindHighestVersion(varray, entry, max_no);
ConcDirAndName(dir, entry->name, old_file); ConcDirAndName(dir, entry->name, old_file);
/* /*
* The versionless file should have the same case name as the old * The versionless file should have the same case name as the old
@@ -3234,15 +3251,15 @@ static int maintain_version(char *file, int forcep)
return (1); return (1);
} }
if (check_vless_link(vless, VA.files, old_file, &highest_p) == 0) return (0); if (check_vless_link(vless, varray, old_file, &highest_p) == 0) return (0);
if (*old_file == '\0') { if (*old_file == '\0') {
/* /*
* The versionless file is not linked to any file in VA.files. * The versionless file is not linked to any file in varray.
* Thus, we have to link the versionless file to the file which * Thus, we have to link the versionless file to the file which
* is versioned one higher than the existing highest version. * is versioned one higher than the existing highest version.
*/ */
FindHighestVersion(VA.files, entry, max_no); FindHighestVersion(varray, entry, max_no);
sprintf(ver, "%u", 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
@@ -3267,7 +3284,7 @@ static int maintain_version(char *file, int forcep)
return (1); return (1);
} else { } else {
/* /*
* Although the versionless file is linked to a file in VA.files, * Although the versionless file is linked to a file in varray,
* the file is not the highest versioned file. We have to unlink * the file is not the highest versioned file. We have to unlink
* the wrongly linked versionless file, and link the highest versioned * the wrongly linked versionless file, and link the highest versioned
* file to a versionless file. * file to a versionless file.
@@ -3277,7 +3294,7 @@ static int maintain_version(char *file, int forcep)
*Lisp_errno = errno; *Lisp_errno = errno;
return (0); return (0);
} }
FindHighestVersion(VA.files, entry, max_no); FindHighestVersion(varray, entry, max_no);
ConcDirAndName(dir, entry->name, old_file); ConcDirAndName(dir, entry->name, old_file);
/* /*
* The versionless file should have the same case name as the old * The versionless file should have the same case name as the old

View File

@@ -59,8 +59,8 @@ void make_dsp_instance(DspInterface dsp, char *lispbitmap, int width_hint, int h
} else if (VGA_p()) { } else if (VGA_p()) {
VGA_init(dsp, 0, 0, 0, depth_hint); VGA_init(dsp, 0, 0, 0, depth_hint);
} else { /* Can't set *ANY* video mode! */ } else { /* Can't set *ANY* video mode! */
(void)(void)fprintf(stderr, "No portable graphics mode supported by this host.\n"); (void)fprintf(stderr, "No portable graphics mode supported by this host.\n");
(void)(void)fprintf(stderr, "\n-Expected VESA or VGA.\n"); (void)fprintf(stderr, "\n-Expected VESA or VGA.\n");
exit(1); exit(1);
} }
break; break;
@@ -69,7 +69,7 @@ void make_dsp_instance(DspInterface dsp, char *lispbitmap, int width_hint, int h
#elif XWINDOW #elif XWINDOW
/* lispbitmap is 0 when we call X_init the first time. */ /* lispbitmap is 0 when we call X_init the first time. */
if (X_init(dsp, 0, LispDisplayRequestedWidth, LispDisplayRequestedHeight, depth_hint) == NULL) { if (X_init(dsp, 0, LispDisplayRequestedWidth, LispDisplayRequestedHeight, depth_hint) == NULL) {
(void)fprintf(stderr, "Can't open display."); fprintf(stderr, "Can't open display.");
exit(-1); exit(-1);
} }
#endif /* DOS | XWINDOW */ #endif /* DOS | XWINDOW */
@@ -87,7 +87,7 @@ void GenericReturnVoid(void *d) {(void)d; return; }
void GenericPanic(void *d) { void GenericPanic(void *d) {
(void)d; (void)d;
TPRINT(("Enter GenericPanic\n")); TPRINT(("Enter GenericPanic\n"));
(void)fprintf(stderr, "Panic! Call to uninitialized display slot!"); fprintf(stderr, "Panic! Call to uninitialized display slot!");
exit(0); exit(0);
} }

View File

@@ -45,7 +45,7 @@ LispPTR N_OP_findkey(LispPTR tos, int byte) {
#endif #endif
if (CURRENTFX->alink & 1) { /* slow case */ if (CURRENTFX->alink & 1) { /* slow case */
find_end = NativeAligned2FromStackOffset(CURRENTFX->blink - 4); find_end = (DLword *)NativeAligned2FromLAddr(STK_OFFSET | (CURRENTFX->blink - 4));
} else { /* Fast cae */ } else { /* Fast cae */
find_end = ((DLword *)CURRENTFX) - 2 - 4; find_end = ((DLword *)CURRENTFX) - 2 - 4;
} }

View File

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

View File

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

View File

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

View File

@@ -49,7 +49,6 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "gccodedefs.h" // for reclaimcodeblock #include "gccodedefs.h" // for reclaimcodeblock
#include "gcdata.h" // for DELREF, REC_GCLOOKUP #include "gcdata.h" // for DELREF, REC_GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcfinaldefs.h" // for arrayblockmerger, checkarrayblock, deleteblock #include "gcfinaldefs.h" // for arrayblockmerger, checkarrayblock, deleteblock
#include "lispemul.h" // for LispPTR, NIL, T, POINTERMASK, DLword, ATOM_T #include "lispemul.h" // for LispPTR, NIL, T, POINTERMASK, DLword, ATOM_T
#include "llstkdefs.h" // for decusecount68k #include "llstkdefs.h" // for decusecount68k
@@ -157,9 +156,11 @@ LispPTR findptrsbuffer(LispPTR ptr) {
while (LAddrFromNative(bptr) != NIL) { while (LAddrFromNative(bptr) != NIL) {
if (ptr == bptr->vmempage) if (ptr == bptr->vmempage)
return (LAddrFromNative(bptr)); return (LAddrFromNative(bptr));
else else {
if (bptr->sysnext & 0xF0000000) printf("findptrsbuffer: would have failed %p 0x%X\n", bptr, bptr->sysnext);
bptr = (struct buf *)NativeAligned4FromLAddr(bptr->sysnext); bptr = (struct buf *)NativeAligned4FromLAddr(bptr->sysnext);
} }
}
return (NIL); return (NIL);
} }
@@ -225,8 +226,9 @@ LispPTR checkarrayblock(LispPTR base, LispPTR free, LispPTR onfreelist) {
printarrayblock(base); printarrayblock(base);
error("ARRAYBLOCK Trailer INUSE bit set wrong\n"); error("ARRAYBLOCK Trailer INUSE bit set wrong\n");
} else if (!onfreelist || (bbase->arlen < MINARRAYBLOCKSIZE)) } else if (!onfreelist || (bbase->arlen < MINARRAYBLOCKSIZE))
return (NIL);
/* Remaining tests only for free list. */ /* Remaining tests only for free list. */
return (NIL);
bfwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->fwd); bfwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->fwd);
bbwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->bkwd); bbwd = (struct arrayblock *)NativeAligned4FromLAddr(bbase->bkwd);
if ((bbwd->fwd != base) || (bfwd->bkwd != base)) { if ((bbwd->fwd != base) || (bfwd->bkwd != base)) {
@@ -351,6 +353,7 @@ LispPTR makefreearrayblock(LispPTR block, DLword length) {
/* */ /* */
/* */ /* */
/************************************************************************/ /************************************************************************/
LispPTR arrayblockmerger(LispPTR base, LispPTR nbase) { LispPTR arrayblockmerger(LispPTR base, LispPTR nbase) {
DLword arlens, narlens, secondbite, minblocksize, shaveback; DLword arlens, narlens, secondbite, minblocksize, shaveback;
struct arrayblock *bbase, *bnbase; struct arrayblock *bbase, *bnbase;
@@ -359,23 +362,12 @@ LispPTR arrayblockmerger(LispPTR base, LispPTR nbase) {
arlens = bbase->arlen; arlens = bbase->arlen;
narlens = bnbase->arlen; narlens = bnbase->arlen;
secondbite = MAXARRAYBLOCKSIZE - arlens; secondbite = MAXARRAYBLOCKSIZE - arlens;
/* There are three cases for merging the blocks if (narlens > secondbite) {
* (1) the total size of the two blocks is less than max:
* merge into a single block
* (2) creating a max size block leaves a viable leftover block:
* move the boundary to make a max block and a leftover block
* (3) creating a max size block leaves a non-viable leftover block
* move the boundary to make a big block and a minimum size leftover block
*/
if (base + (2 * arlens) != nbase) {
error("Attempt to merge non-adjacent blocks in array space\n");
}
if (narlens > secondbite) { /* (2) or (3) */
arlens = MAXARRAYBLOCKSIZE; arlens = MAXARRAYBLOCKSIZE;
narlens = narlens - secondbite; narlens = narlens - secondbite;
minblocksize = minblocksize =
((*Hunk_word == ATOM_T) ? (ARRAYBLOCKOVERHEADCELLS + MAXCELLSPERHUNK) : MINARRAYBLOCKSIZE); ((*Hunk_word == ATOM_T) ? (ARRAYBLOCKOVERHEADCELLS + MAXCELLSPERHUNK) : MINARRAYBLOCKSIZE);
if (narlens < minblocksize) { /* (3) */ if (narlens < minblocksize) {
shaveback = narlens - minblocksize; shaveback = narlens - minblocksize;
narlens = minblocksize; narlens = minblocksize;
arlens += shaveback; arlens += shaveback;
@@ -399,10 +391,10 @@ LispPTR mergebackward(LispPTR base) {
LispPTR pbase; LispPTR pbase;
struct arrayblock *ptrailer; struct arrayblock *ptrailer;
ptrailer = (struct arrayblock *)NativeAligned4FromLAddr(base - ARRAYBLOCKTRAILERWORDS);
if (base == NIL) if (base == NIL)
return (NIL); return (NIL);
ptrailer = (struct arrayblock *)NativeAligned4FromLAddr(base - ARRAYBLOCKTRAILERWORDS); else if ((*ArrayMerging_word == NIL) ||
if ((*ArrayMerging_word == NIL) ||
((base == *ArraySpace_word) || ((base == *ArraySpace2_word) || (ptrailer->inuse == T)))) ((base == *ArraySpace_word) || ((base == *ArraySpace2_word) || (ptrailer->inuse == T))))
return (linkblock(base)); return (linkblock(base));
pbase = base - 2 * ptrailer->arlen; pbase = base - 2 * ptrailer->arlen;
@@ -422,18 +414,16 @@ LispPTR mergebackward(LispPTR base) {
LispPTR mergeforward(LispPTR base) { LispPTR mergeforward(LispPTR base) {
LispPTR nbase, nbinuse; LispPTR nbase, nbinuse;
struct arrayblock *bbase, *bnbase; struct arrayblock *bbase, *bnbase;
if (*ArrayMerging_word == NIL) return NIL;
if (base == NIL) return NIL;
if (checkarrayblock(base, T, T)) return NIL;
bbase = (struct arrayblock *)NativeAligned4FromLAddr(base); bbase = (struct arrayblock *)NativeAligned4FromLAddr(base);
nbase = base + 2 * (bbase->arlen); nbase = base + 2 * (bbase->arlen);
if (nbase == *ArrayFrLst_word || nbase == *ArrayFrLst2_word) return NIL;
bnbase = (struct arrayblock *)NativeAligned4FromLAddr(nbase); bnbase = (struct arrayblock *)NativeAligned4FromLAddr(nbase);
nbinuse = bnbase->inuse; if ((*ArrayMerging_word == NIL) ||
if (checkarrayblock(nbase, !nbinuse, NIL)) return NIL; ((base == NIL) ||
if (nbinuse) return (NIL); (checkarrayblock(base, T, T) ||
((nbase == *ArrayFrLst_word) ||
((nbase == *ArrayFrLst2_word) ||
(checkarrayblock(nbase, (!(nbinuse = bnbase->inuse)), NIL) || nbinuse))))))
return (NIL);
deleteblock(nbase); deleteblock(nbase);
deleteblock(base); deleteblock(base);
return (arrayblockmerger(base, nbase)); return (arrayblockmerger(base, nbase));
@@ -552,15 +542,15 @@ void printarrayblock(LispPTR base) {
printf(" Length: %d cells.\n\n", bbase->arlen); printf(" Length: %d cells.\n\n", bbase->arlen);
addr = ((LispPTR *)bbase) - 20; addr = ((LispPTR *)bbase) - 20;
for (; addr < (LispPTR *)bbase; addr++) printf("%16p %8x\n", (void *)addr, *addr); for (; addr < (LispPTR *)bbase; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf("%16p %8x <- array header\n", (void *)addr, *addr); printf("%p %8x <- array header\n", (void *)addr, *addr);
addr++; addr++;
for (; addr < (LispPTR *)bbase + 20; addr++) printf("%16p %8x\n", (void *)addr, *addr); for (; addr < (LispPTR *)bbase + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf(". . .\n"); printf(". . .\n");
addr = ((LispPTR *)btrailer) - 20; addr = ((LispPTR *)btrailer) - 20;
for (; addr < (LispPTR *)btrailer; addr++) printf("%16p %8x\n", (void *)addr, *addr); for (; addr < (LispPTR *)btrailer; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf("%16p %8x <- array trailer\n", (void *)addr, *addr); printf("%p %8x <- array trailer\n", (void *)addr, *addr);
addr++; addr++;
for (; addr < (LispPTR *)btrailer + 20; addr++) printf("%16p %8x\n", (void *)addr, *addr); for (; addr < (LispPTR *)btrailer + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -26,7 +26,6 @@
#include <sys/time.h> #include <sys/time.h>
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
/* if using inet_ntop you must #include <arpa/inet.h> */
#endif /* DOS */ #endif /* DOS */
#if (defined(OS5) || defined(__CYGWIN__)) && !defined(O_ASYNC) #if (defined(OS5) || defined(__CYGWIN__)) && !defined(O_ASYNC)
@@ -94,8 +93,7 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
LispStringToCString(nameConn, namestring, 100); LispStringToCString(nameConn, namestring, 100);
host = gethostbyname(namestring); host = gethostbyname(namestring);
if (!host) return (NIL); if (!host) return (NIL);
res = ntohl(*(in_addr_t *)host->h_addr); N_ARITH_SWITCH(ntohl(*(long *)host->h_addr));
N_ARITH_SWITCH(res);
break; break;
case TCPservicelookup: case TCPservicelookup:
@@ -109,20 +107,14 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
addr_class = LispNumToCInt(nameConn); addr_class = LispNumToCInt(nameConn);
protocol = LispNumToCInt(proto); protocol = LispNumToCInt(proto);
result = socket(addr_class, protocol, 0); result = socket(addr_class, protocol, 0);
#ifndef MAIKO_OS_HAIKU
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);
#else
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#endif
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid()); fcntl(result, F_SETOWN, getpid());
#endif
return (GetSmallp(result)); return (GetSmallp(result));
case TCPconnect: /* args: hostname or (fixp)address, socket# */ case TCPconnect: /* args: hostname or (fixp)address, socket# */
memset(&farend, 0, sizeof farend); memset(&farend, 0, sizeof farend);
N_GETNUMBER(nameConn, res, string_host); N_GETNUMBER(nameConn, res, string_host);
farend.sin_addr.s_addr = htonl(res); farend.sin_addr.s_addr = htons(res);
goto host_ok; goto host_ok;
string_host: string_host:
LispStringToCString(nameConn, namestring, 100); LispStringToCString(nameConn, namestring, 100);
@@ -139,9 +131,7 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
return (NIL); return (NIL);
} }
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid()); fcntl(result, F_SETOWN, getpid());
#endif
return (GetSmallp(result)); return (GetSmallp(result));
@@ -207,20 +197,13 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
sigset_t signals; sigset_t signals;
sigemptyset(&signals); sigemptyset(&signals);
#ifndef MAIKO_OS_HAIKU
sigaddset(&signals, SIGIO); sigaddset(&signals, SIGIO);
#endif
sigprocmask(SIG_BLOCK, &signals, NULL); sigprocmask(SIG_BLOCK, &signals, NULL);
#ifndef MAIKO_OS_HAIKU
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);
#else
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#endif
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid()); fcntl(result, F_SETOWN, getpid());
#endif
if (listen(result, 5) == -1) { if (listen(result, 5) == -1) {
perror("TCP Listen"); perror("TCP Listen");
close(result); close(result);
@@ -242,9 +225,8 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
return (NIL); return (NIL);
} }
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid()); fcntl(result, F_SETOWN, getpid());
#endif
return (GetSmallp(result)); return (GetSmallp(result));
case INETpeername: /* socket#, buffer for name string */ case INETpeername: /* socket#, buffer for name string */
@@ -277,14 +259,9 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
close(result); close(result);
return (NIL); return (NIL);
} }
#ifndef MAIKO_OS_HAIKU
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);
#else
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#endif
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid()); fcntl(result, F_SETOWN, getpid());
#endif
FD_SET(result, &LispIOFds); /* so we get interrupts */ FD_SET(result, &LispIOFds); /* so we get interrupts */
FD_SET(result, &LispReadFds); FD_SET(result, &LispReadFds);
DBPRINT(("LispIOFds = %p\n", (void *)&LispIOFds)); DBPRINT(("LispIOFds = %p\n", (void *)&LispIOFds));

View File

@@ -137,7 +137,7 @@ void clear_display(void) {
#else /* COLOR */ #else /* COLOR */
void clear_display(void) { void clear_display(void) {
DLword *word; short *word;
int w, h; int w, h;
if (MonoOrColor == MONO_SCREEN) { if (MonoOrColor == MONO_SCREEN) {
#ifndef DISPLAYBUFFER #ifndef DISPLAYBUFFER
@@ -150,7 +150,7 @@ void clear_display(void) {
0); 0);
#endif /* DISPLAYBUFFER */ #endif /* DISPLAYBUFFER */
} else { /* MonoOrColo is COLOR_SCREEN */ } else { /* MonoOrColo is COLOR_SCREEN */
word = ColorDisplayRegion68k; word = (short *)ColorDisplayRegion68k;
for (h = displayheight; (h--);) { for (h = displayheight; (h--);) {
for (w = DisplayRasterWidth * 8; (w--);) { *word++ = 0; } for (w = DisplayRasterWidth * 8; (w--);) { *word++ = 0; }
} /* end for(h) */ } /* end for(h) */

View File

@@ -375,6 +375,8 @@ static u_char *make_X_keymap(void) {
table[xcode - 7] = code; table[xcode - 7] = code;
} }
XFree(mapping); /* No locking required? */
#ifdef DEBUG #ifdef DEBUG
printf("\n\n\tXGetKeyboardMapping table\n\n"); printf("\n\n\tXGetKeyboardMapping table\n\n");
for (i = 0; i < codecount * symspercode; i += symspercode) { for (i = 0; i < codecount * symspercode; i += symspercode) {
@@ -392,8 +394,6 @@ static u_char *make_X_keymap(void) {
} }
#endif /* DEBUG */ #endif /* DEBUG */
XFree(mapping); /* No locking required? */
return (table); return (table);
} }

View File

@@ -34,11 +34,10 @@
#include "etherdefs.h" // for init_ifpage_ether #include "etherdefs.h" // for init_ifpage_ether
#include "gcarraydefs.h" // for get_package_atom #include "gcarraydefs.h" // for get_package_atom
#include "gcdata.h" // for ADDREF, GCLOOKUP #include "gcdata.h" // for ADDREF, GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO #include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO
#include "initsoutdefs.h" // for build_lisp_map, fixp_value, init_for_bitblt #include "initsoutdefs.h" // for build_lisp_map, fixp_value, init_for_bitblt
#include "iopage.h" // for IOPAGE #include "iopage.h" // for IOPAGE
#include "lispemul.h" // for LispPTR, DLword, NIL, BYTESPER_DLWORD, POINTERMASK #include "lispemul.h" // for LispPTR, DLword, NIL, BYTESPER_DLWORD
#include "lispmap.h" // for ATMHT_OFFSET, ATOMS_OFFSET, DEFS_OFFSET #include "lispmap.h" // for ATMHT_OFFSET, ATOMS_OFFSET, DEFS_OFFSET
#include "lspglob.h" // for InterfacePage, IOPage, AtomHT, Closure_Cac... #include "lspglob.h" // for InterfacePage, IOPage, AtomHT, Closure_Cac...
#include "lsptypes.h" // for GetDTD, TYPE_FIXP, TYPE_LISTP #include "lsptypes.h" // for GetDTD, TYPE_FIXP, TYPE_LISTP
@@ -125,7 +124,7 @@ void init_ifpage(unsigned sysout_size) {
new_lastvmem = (sysout_size * PAGES_IN_MBYTE) - 1; new_lastvmem = (sysout_size * PAGES_IN_MBYTE) - 1;
if ((!Storage_expanded) && (InterfacePage->dllastvmempage != new_lastvmem)) { if ((!Storage_expanded) && (InterfacePage->dllastvmempage != new_lastvmem)) {
(void)fprintf(stderr, "You can't expand VMEM\n"); fprintf(stderr, "You can't expand VMEM\n");
exit(-1); exit(-1);
} else { /* Set value which will be set to \\LASTVMEMFILEPAGE in LISP */ } else { /* Set value which will be set to \\LASTVMEMFILEPAGE in LISP */
InterfacePage->dllastvmempage = new_lastvmem; InterfacePage->dllastvmempage = new_lastvmem;
@@ -141,9 +140,9 @@ void init_ifpage(unsigned sysout_size) {
#endif /* BIGVM */ #endif /* BIGVM */
/* unfortunately, Lisp only looks at a 16 bit serial number */ /* unfortunately, Lisp only looks at a 16 bit serial number */
#if !defined(DOS) && !defined(MAIKO_OS_HAIKU) #ifndef DOS
InterfacePage->serialnumber = 0xffff & gethostid(); InterfacePage->serialnumber = 0xffff & gethostid();
#endif /* DOS MAIKO_OS_HAIKU */ #endif /* DOS */
/* get user name and stuff into vmem; this is the VMEM buffer; /* get user name and stuff into vmem; this is the VMEM buffer;
This is a BCPL string -- it starts with a length count. C strings This is a BCPL string -- it starts with a length count. C strings
@@ -406,9 +405,7 @@ void init_for_keyhandle(void) {
MOUSECHORDTICKS68k = MakeAtom68k("\\MOUSECHORDTICKS"); MOUSECHORDTICKS68k = MakeAtom68k("\\MOUSECHORDTICKS");
LASTUSERACTION68k = MakeAtom68k("\\LASTUSERACTION"); LASTUSERACTION68k = MakeAtom68k("\\LASTUSERACTION");
#ifndef INIT CLastUserActionCell68k = (LispPTR *)NativeAligned4FromLAddr(*LASTUSERACTION68k & 0xffffff);
CLastUserActionCell68k = (LispPTR *)NativeAligned4FromLAddr(*LASTUSERACTION68k & POINTERMASK);
#endif
DOBUFFEREDTRANSITION_index = MAKEATOM("\\DOBUFFEREDTRANSITIONS"); DOBUFFEREDTRANSITION_index = MAKEATOM("\\DOBUFFEREDTRANSITIONS");
INTERRUPTFRAME_index = MAKEATOM("\\INTERRUPTFRAME"); INTERRUPTFRAME_index = MAKEATOM("\\INTERRUPTFRAME");

View File

@@ -1,24 +0,0 @@
<!doctype html>
<!-- Based on https://github.com/timhutton/sdl-canvas-wasm/blob/main/index.html -->
<!-- html to set up WebAssembly module for Medley running in a browser -->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div style="text-align: center;">
<canvas id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<script type="text/javascript">
var width = 32*Math.trunc(Math.min(Math.max(window.innerWidth, 512), 1664)/32);
var height = Math.min(Math.max(window.innerHeight, 512), 1260);
var Module = {
preRun: [ function() {ENV.MEDLEYDIR = "{DSK}<medley>";} ],
arguments: ["medley/loadups/full.sysout","-sc", width+"x"+height, "-nh-host", "127.0.0.1"],
canvas: (function() { return document.getElementById('canvas'); })()
};
</script>
<script src="ldesdl.js"></script>
</body>
</html>

View File

@@ -93,7 +93,7 @@ int main(int argc, char *argv[]) {
for (i = 1; i < argc; i++) { for (i = 1; i < argc; i++) {
if ((strcmp(argv[i], "-d") == 0) || (strcmp(argv[i], "-display") == 0)) { if ((strcmp(argv[i], "-d") == 0) || (strcmp(argv[i], "-display") == 0)) {
if (i == argc - 1) { if (i == argc - 1) {
(void)fprintf(stderr, "Missing argument to -display option.\n"); fprintf(stderr, "Missing argument to -display option.\n");
exit(1); exit(1);
} }
displayName = argv[++i]; displayName = argv[++i];
@@ -138,7 +138,7 @@ int main(int argc, char *argv[]) {
filetorun = LDEX; filetorun = LDEX;
goto run; goto run;
} else { } else {
(void)fprintf(stderr, "Unable to open X11 display %s\n", fprintf(stderr, "Unable to open X11 display %s\n",
displayName ? displayName : "from DISPLAY"); displayName ? displayName : "from DISPLAY");
exit(1); exit(1);
} }
@@ -147,7 +147,7 @@ int main(int argc, char *argv[]) {
#ifdef USESUNSCREEN #ifdef USESUNSCREEN
if ((FrameBufferFd = open("/dev/fb", O_RDWR)) < 0) { if ((FrameBufferFd = open("/dev/fb", O_RDWR)) < 0) {
(void)fprintf(stderr, "lde: can't open FrameBuffer\n"); fprintf(stderr, "lde: can't open FrameBuffer\n");
exit(1); exit(1);
} }
if (ioctl(FrameBufferFd, FBIOGTYPE, &my_screen) < 0) { if (ioctl(FrameBufferFd, FBIOGTYPE, &my_screen) < 0) {
@@ -187,7 +187,7 @@ int main(int argc, char *argv[]) {
run: run:
if (filetorun == NULL) { if (filetorun == NULL) {
(void)fprintf(stderr, "Unable to determine what display program to run.\n"); fprintf(stderr, "Unable to determine what display program to run.\n");
exit(1); exit(1);
} }
@@ -201,7 +201,6 @@ int main(int argc, char *argv[]) {
} else { } else {
/* copy up to and including the final "/" in the path */ /* copy up to and including the final "/" in the path */
dirsepp = stpncpy(filetorunpath, argv[0], dirsepp + 1 - argv[0]); dirsepp = stpncpy(filetorunpath, argv[0], dirsepp + 1 - argv[0]);
/* dirsepp now points to the trailing null in the copy */ /* dirsepp now points to the trailing null in the copy */
strncpy(dirsepp, filetorun, PATH_MAX - (dirsepp - filetorunpath)); strncpy(dirsepp, filetorun, PATH_MAX - (dirsepp - filetorunpath));
argv[0] = filetorunpath; argv[0] = filetorunpath;

View File

@@ -15,10 +15,7 @@
#include <stdio.h> // for perror, fprintf, printf, stderr, sprintf #include <stdio.h> // for perror, fprintf, printf, stderr, sprintf
#include <stdlib.h> // for exit, free, malloc #include <stdlib.h> // for exit, free, malloc
#include <string.h> // for memset #include <string.h> // for memset
#include <sys/mman.h> // for mmap, MAP_FAILED #include <sys/mman.h> // for mmap
#ifndef MAP_FAILED
#define MAP_FAILED ((void *)-1)
#endif
#include <sys/stat.h> // for stat, fstat #include <sys/stat.h> // for stat, fstat
#include <sys/types.h> // for off_t #include <sys/types.h> // for off_t
#include <unistd.h> // for lseek, read, close, getpagesize #include <unistd.h> // for lseek, read, close, getpagesize
@@ -124,14 +121,14 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
*/ */
#ifndef NOVERSION #ifndef NOVERSION
if (ifpage.lversion < LVERSION) { if (ifpage.lversion < LVERSION) {
(void)fprintf(stderr, "Lisp VM is too old for this emulator.\n"); fprintf(stderr, "Lisp VM is too old for this emulator.\n");
(void)fprintf(stderr, "(version is %d, must be at least %d.)\n", ifpage.lversion, LVERSION); fprintf(stderr, "(version is %d, must be at least %d.)\n", ifpage.lversion, LVERSION);
exit(-1); exit(-1);
} }
if (ifpage.minbversion > MINBVERSION) { if (ifpage.minbversion > MINBVERSION) {
(void)fprintf(stderr, "Emulator is too old for this Lisp VM.\n"); fprintf(stderr, "Emulator is too old for this Lisp VM.\n");
(void)fprintf(stderr, "(version is %d, must be at least %d.)\n", MINBVERSION, ifpage.minbversion); fprintf(stderr, "(version is %d, must be at least %d.)\n", MINBVERSION, ifpage.minbversion);
exit(-1); exit(-1);
} }
#endif /* NOVERSION */ #endif /* NOVERSION */
@@ -160,9 +157,9 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
/* Hence we have to observe the display protocol. */ /* Hence we have to observe the display protocol. */
VESA_errorexit(tmp); VESA_errorexit(tmp);
#else #else
(void)fprintf(stderr, "sysout_loader: You can't specify the process size.\n"); fprintf(stderr, "sysout_loader: You can't specify the process size.\n");
(void)fprintf(stderr, "Because, secondary space is already used.\n"); fprintf(stderr, "Because, secondary space is already used.\n");
(void)fprintf(stderr, "(size is %d, you specified %d.)\n", ifpage.process_size, sys_size); fprintf(stderr, "(size is %d, you specified %d.)\n", ifpage.process_size, sys_size);
exit(-1); exit(-1);
#endif /* DOS */ #endif /* DOS */
} }
@@ -179,7 +176,7 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
lispworld_scratch = mmap(0, sys_size * MBYTE, PROT_READ|PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); lispworld_scratch = mmap(0, sys_size * MBYTE, PROT_READ|PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
if (lispworld_scratch == MAP_FAILED) { if (lispworld_scratch == MAP_FAILED) {
(void)fprintf(stderr, "sysout_loader: can't allocate Lisp %dMBytes VM \n", sys_size); fprintf(stderr, "sysout_loader: can't allocate Lisp %dMBytes VM \n", sys_size);
exit(-1); exit(-1);
} }

View File

@@ -25,9 +25,8 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "gcarraydefs.h" // for get_package_atom #include "gcarraydefs.h" // for get_package_atom
#include "gcdata.h" // for FRPLPTR #include "gcdata.h" // for FRPLPTR
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for LispPTR, state, CurrentStackPTR, NIL_PTR, NIL #include "lispemul.h" // for LispPTR, state, CurrentStackPTR, NIL_PTR, NIL
#include "lispmap.h" // for S_POSITIVE #include "lispmap.h" // for S_POSITIVE, STK_OFFSET
#include "loopsopsdefs.h" // for lcfuncall, LCFetchMethod, LCFetchMethodOrHelp #include "loopsopsdefs.h" // for lcfuncall, LCFetchMethod, LCFetchMethodOrHelp
#include "lspglob.h" #include "lspglob.h"
#include "lsptypes.h" // for GetDTD, GetTypeNumber, dtd, Listp, GETWORD #include "lsptypes.h" // for GetDTD, GetTypeNumber, dtd, Listp, GETWORD
@@ -359,7 +358,7 @@ LispPTR lcfuncall(unsigned int atom_index, int argnum, int bytenum)
CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */; CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */;
/* Setup IVar */ /* Setup IVar */
IVar = NativeAligned2FromStackOffset(CURRENTFX->nextblock); IVar = NativeAligned2FromLAddr((((LispPTR)(CURRENTFX->nextblock)) | STK_OFFSET));
/* Set PC to the Next Instruction and save into FX */ /* Set PC to the Next Instruction and save into FX */
CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum; CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum;

View File

@@ -229,11 +229,7 @@ int display_max = 65536 * 16 * 2;
/* diagnostic flag for sysout dumping */ /* diagnostic flag for sysout dumping */
extern unsigned maxpages; extern unsigned maxpages;
char sysout_name_cl[MAXPATHLEN] = "\0"; /* sysout name as per -sysout command line arg ; Set by read_Xoption, in the X version. */ char sysout_name[MAXPATHLEN]; /* Set by read_Xoption, in the X version. */
char sysout_name_xrm[MAXPATHLEN] = "\0"; /* sysout name as per X resource manager, if any */
char sysout_name_first_arg[MAXPATHLEN] = "\0"; /* sysout name as per 1st command line arg, if any */
char sysout_name[MAXPATHLEN] = "\0"; /* "final" sysout name chosen from above */
unsigned sysout_size = 0; /* ditto */ unsigned sysout_size = 0; /* ditto */
int flushing = FALSE; /* see dbprint.h if set, all debug/trace printing will call fflush(stdout) after each printf */ int flushing = FALSE; /* see dbprint.h if set, all debug/trace printing will call fflush(stdout) after each printf */
@@ -243,7 +239,7 @@ int flushing = FALSE; /* see dbprint.h if set, all debug/trace printing will cal
extern DspInterface currentdsp; extern DspInterface currentdsp;
#endif /* DOS || XWINDOW */ #endif /* DOS || XWINDOW */
#ifdef SDL #ifdef SDL
#include "sdldefs.h" /* for init_SDL */ extern int init_SDL(char*, int, int, int);
#endif #endif
extern const time_t MDate; extern const time_t MDate;
extern int nokbdflag; extern int nokbdflag;
@@ -288,8 +284,6 @@ const char *helpstring =
-info Print general info about the system\n\ -info Print general info about the system\n\
-help Print this message\n\ -help Print this message\n\
-pixelscale <n> The amount of pixels to show for one Medley screen pixel.\n\ -pixelscale <n> The amount of pixels to show for one Medley screen pixel.\n\
-fg/-foreground <color> Screen foreground color, default Black. X color name or #RRBBGG hex\n\
-bg/-background <color> Screen background color, default White. X color name or #RRBBGG hex\n\
-sc[reen] <w>x<h>] The Medley screen geometry\n\ -sc[reen] <w>x<h>] The Medley screen geometry\n\
-t <title> The window title\n\ -t <title> The window title\n\
-title <title> The window title\n"; -title <title> The window title\n";
@@ -318,21 +312,6 @@ const char *nethubHelpstring = "";
extern int insnsCountdownForTimerAsyncEmulation; extern int insnsCountdownForTimerAsyncEmulation;
#endif #endif
#if defined(XWINDOW) || defined(SDL)
char foregroundColorName[64] = {0};
extern char foregroundColorName[64];
char backgroundColorName[64] = {0};
extern char backgroundColorName[64];
#endif
char windowTitle[255] = "Medley";
extern char windowTitle[255];
int lispDisplayRequestedWidth = 1024;
extern int lispDisplayRequestedWidth;
int lispDisplayRequestedHeight = 768;
extern int lispDisplayRequestedHeight;
int pixelScale = 1;
extern int pixelScale;
/************************************************************************/ /************************************************************************/
/* */ /* */
/* M A I N E N T R Y P O I N T */ /* M A I N E N T R Y P O I N T */
@@ -347,6 +326,9 @@ int main(int argc, char *argv[])
extern int TIMER_INTERVAL; extern int TIMER_INTERVAL;
extern fd_set LispReadFds; extern fd_set LispReadFds;
long tmpint; long tmpint;
int width = 1024, height = 768;
int pixelscale = 1;
char *windowtitle = "Medley";
#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) {
@@ -356,24 +338,6 @@ int main(int argc, char *argv[])
} }
#endif /* MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE */ #endif /* MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE */
#ifdef PROFILE
moncontrol(0); /* initially stop sampling */
#endif /* PROFILE */
//
//
// Process Command Line Arguments
//
//
// First check if the first argument is a sysout name
// and save it away if it is in case the X windows
// arg processing changes argc/argv
if (argc > 1 && argv[1][0] != '-') {
strncpy(sysout_name_first_arg, argv[1], MAXPATHLEN);
}
#ifdef XWINDOW #ifdef XWINDOW
read_Xoption(&argc, argv); read_Xoption(&argc, argv);
#endif /* XWINDOW */ #endif /* XWINDOW */
@@ -381,6 +345,17 @@ int main(int argc, char *argv[])
save_argc = argc; save_argc = argc;
save_argv = argv; save_argv = argv;
#ifdef PROFILE
moncontrol(0); /* initially stop sampling */
#endif /* PROFILE */
/* Sysout is found as follows:
If the first argument doesn't begin with '-', assume it's the sysout
Look at the environment variable LDESRCESYSOUT if that fails
Look for ~/lisp.virtualmem if that fails
Barf and print the command line if tha fails
*/
i = 1; i = 1;
if (argv[i] && ((strcmp(argv[i], "-info") == 0) || (strcmp(argv[i], "-INFO") == 0))) { if (argv[i] && ((strcmp(argv[i], "-info") == 0) || (strcmp(argv[i], "-INFO") == 0))) {
@@ -389,38 +364,50 @@ int main(int argc, char *argv[])
} }
if (argv[i] && ((strcmp(argv[i], "-help") == 0) || (strcmp(argv[i], "-HELP") == 0))) { if (argv[i] && ((strcmp(argv[i], "-help") == 0) || (strcmp(argv[i], "-HELP") == 0))) {
(void)fprintf(stderr, "%s%s", helpstring, nethubHelpstring); fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
exit(0); exit(0);
} }
if (argc > 1 && argv[1][0] != '-') {
strncpy(sysout_name, argv[1], MAXPATHLEN);
i++;
} else if ((envname = getenv("LDESRCESYSOUT")) != NULL) {
strncpy(sysout_name, envname, MAXPATHLEN);
} else if ((envname = getenv("LDESOURCESYSOUT")) != NULL)
strncpy(sysout_name, envname, MAXPATHLEN);
else {
#ifdef DOS
strncpy(sysout_name, "lisp.vm", MAXPATHLEN);
#else
if ((envname = getenv("HOME")) != NULL) {
strncpy(sysout_name, envname, MAXPATHLEN);
strncat(sysout_name, "/lisp.virtualmem", MAXPATHLEN - 17);
}
#endif /* DOS */
}
if (access(sysout_name, R_OK)) {
perror("Couldn't find a sysout to run");
fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
exit(1);
}
/* OK, sysout name is now in sysout_name, and i is moved past a supplied name */
for (; i < argc; i += 1) { /* step by 1 in case of typo */ for (; i < argc; i += 1) { /* step by 1 in case of typo */
// NOTE: in the case of X Windows, some of the args being checked for in this loop
// have already been processed (and removed from argv) by the call to read_Xoption()
// above. (See readXoption() in xrdopt.c)
/* Check for -sysout arg */
if (!strcmp(argv[i], "-sysout")) {
if (argc > ++i) {
strncpy(sysout_name_cl, argv[i], MAXPATHLEN);
}
}
/* -t and -m are undocumented and somewhat dangerous... */ /* -t and -m are undocumented and somewhat dangerous... */
else if (!strcmp(argv[i], "-t")) { /**** timer interval ****/ if (!strcmp(argv[i], "-t")) { /**** timer interval ****/
if (argc > ++i) { if (argc > ++i) {
errno = 0; errno = 0;
tmpint = strtol(argv[i], (char **)NULL, 10); tmpint = strtol(argv[i], (char **)NULL, 10);
if (errno == 0 && tmpint > 0) { if (errno == 0 && tmpint > 0) {
TIMER_INTERVAL = tmpint; TIMER_INTERVAL = tmpint;
} else { } else {
(void)fprintf(stderr, "Bad value for -t (integer > 0)\n"); fprintf(stderr, "Bad value for -t (integer > 0)\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -t\n"); fprintf(stderr, "Missing argument after -t\n");
exit(1); exit(1);
} }
} }
@@ -432,11 +419,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) { if (errno == 0 && tmpint > 0) {
sysout_size = (unsigned)tmpint; sysout_size = (unsigned)tmpint;
} else { } else {
(void)fprintf(stderr, "Bad value for -m (integer > 0)\n"); fprintf(stderr, "Bad value for -m (integer > 0)\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -m\n"); fprintf(stderr, "Missing argument after -m\n");
exit(1); exit(1);
} }
} }
@@ -473,49 +460,36 @@ int main(int argc, char *argv[])
#ifdef SDL #ifdef SDL
else if ((strcmp(argv[i], "-sc") == 0) || (strcmp(argv[i], "-SC") == 0)) { else if ((strcmp(argv[i], "-sc") == 0) || (strcmp(argv[i], "-SC") == 0)) {
if (argc > ++i) { if (argc > ++i) {
int read = sscanf(argv[i], "%dx%d", &lispDisplayRequestedWidth, &lispDisplayRequestedHeight); int read = sscanf(argv[i], "%dx%d", &width, &height);
if(read != 2) { if(read != 2) {
(void)fprintf(stderr, "Could not parse -sc argument %s\n", argv[i]); fprintf(stderr, "Could not parse -sc argument %s\n", argv[i]);
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -sc\n"); fprintf(stderr, "Missing argument after -sc\n");
exit(1); exit(1);
} }
} else if ((strcmp(argv[i], "-pixelscale") == 0) || (strcmp(argv[i], "-PIXELSCALE") == 0)) { } else if ((strcmp(argv[i], "-pixelscale") == 0) || (strcmp(argv[i], "-PIXELSCALE") == 0)) {
if (argc > ++i) { if (argc > ++i) {
int read = sscanf(argv[i], "%d", &pixelScale); int read = sscanf(argv[i], "%d", &pixelscale);
if(read != 1) { if(read != 1) {
(void)fprintf(stderr, "Could not parse -pixelscale argument %s\n", argv[i]); fprintf(stderr, "Could not parse -pixelscale argument %s\n", argv[i]);
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -pixelscale\n"); fprintf(stderr, "Missing argument after -pixelscale\n");
exit(1); exit(1);
} }
} else if ((strcmp(argv[i], "-t") == 0) || (strcmp(argv[i], "-T") == 0) } else if ((strcmp(argv[i], "-t") == 0) || (strcmp(argv[i], "-T") == 0)
|| (strcmp(argv[i], "-title") == 0) || (strcmp(argv[i], "-TITLE") == 0)) { || (strcmp(argv[i], "-title") == 0) || (strcmp(argv[i], "-TITLE") == 0)) {
if (argc > ++i) { if (argc > ++i) {
strncpy(windowTitle, argv[i], sizeof(windowTitle) - 1); windowtitle = argv[i];
} else { } else {
(void)fprintf(stderr, "Missing argument after -title\n"); fprintf(stderr, "Missing argument after -title\n");
exit(1);
}
} else if (strcmp(argv[i], "-fg") == 0 || strcmp(argv[i], "-foreground") == 0) {
if (argc > ++i) {
strncpy(foregroundColorName, argv[i], sizeof(foregroundColorName) - 1);
} else {
(void)fprintf(stderr, "Missing argument after -fg/-foreground\n");
exit(1);
}
} else if (strcmp(argv[i], "-bg") == 0 || strcmp(argv[i], "-background") == 0) {
if (argc > ++i) {
strncpy(backgroundColorName, argv[i], sizeof(backgroundColorName) - 1);
} else {
(void)fprintf(stderr, "Missing argument after -bg/-background\n");
exit(1); exit(1);
} }
} }
#endif /* SDL */ #endif /* SDL */
/* Can only do this under SUNOs, for now */ /* Can only do this under SUNOs, for now */
else if (!strcmp(argv[i], "-E")) { /**** ethernet info ****/ else if (!strcmp(argv[i], "-E")) { /**** ethernet info ****/
@@ -537,7 +511,7 @@ int main(int argc, char *argv[])
ether_host[4] = b4; ether_host[4] = b4;
ether_host[5] = b5; ether_host[5] = b5;
} else { } else {
(void)fprintf(stderr, "Missing or bogus -E argument\n"); fprintf(stderr, "Missing or bogus -E argument\n");
ether_fd = -1; ether_fd = -1;
exit(1); exit(1);
} }
@@ -550,7 +524,7 @@ int main(int argc, char *argv[])
if (argc > ++i) { if (argc > ++i) {
setNethubHost(argv[i]); setNethubHost(argv[i]);
} else { } else {
(void)fprintf(stderr, "Missing argument after -nh-host\n"); fprintf(stderr, "Missing argument after -nh-host\n");
exit(1); exit(1);
} }
} }
@@ -561,11 +535,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) { if (errno == 0 && tmpint > 0) {
setNethubPort(tmpint); setNethubPort(tmpint);
} else { } else {
(void)fprintf(stderr, "Bad value for -nh-port\n"); fprintf(stderr, "Bad value for -nh-port\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -nh-port\n"); fprintf(stderr, "Missing argument after -nh-port\n");
exit(1); exit(1);
} }
} }
@@ -575,11 +549,11 @@ int main(int argc, char *argv[])
if (sscanf(argv[i], "%x-%x-%x-%x-%x-%x", &b0, &b1, &b2, &b3, &b4, &b5) == 6) { if (sscanf(argv[i], "%x-%x-%x-%x-%x-%x", &b0, &b1, &b2, &b3, &b4, &b5) == 6) {
setNethubMac(b0, b1, b2, b3, b4, b5); setNethubMac(b0, b1, b2, b3, b4, b5);
} else { } else {
(void)fprintf(stderr, "Invalid argument for -nh-mac\n"); fprintf(stderr, "Invalid argument for -nh-mac\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -nh-mac\n"); fprintf(stderr, "Missing argument after -nh-mac\n");
exit(1); exit(1);
} }
} }
@@ -590,11 +564,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint >= 0) { if (errno == 0 && tmpint >= 0) {
setNethubLogLevel(tmpint); setNethubLogLevel(tmpint);
} else { } else {
(void)fprintf(stderr, "Bad value for -nh-loglevel\n"); fprintf(stderr, "Bad value for -nh-loglevel\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -nh-loglevel\n"); fprintf(stderr, "Missing argument after -nh-loglevel\n");
exit(1); exit(1);
} }
} }
@@ -608,11 +582,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 1000) { if (errno == 0 && tmpint > 1000) {
insnsCountdownForTimerAsyncEmulation = tmpint; insnsCountdownForTimerAsyncEmulation = tmpint;
} else { } else {
(void)fprintf(stderr, "Bad value for -intr-emu-insns (integer > 1000)\n"); fprintf(stderr, "Bad value for -intr-emu-insns (integer > 1000)\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -intr-emu-insns\n"); fprintf(stderr, "Missing argument after -intr-emu-insns\n");
exit(1); exit(1);
} }
} }
@@ -626,65 +600,24 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) { if (errno == 0 && tmpint > 0) {
maxpages = (unsigned)tmpint; maxpages = (unsigned)tmpint;
} else { } else {
(void)fprintf(stderr, "Bad value for -xpages (integer > 0)\n"); fprintf(stderr, "Bad value for -xpages (integer > 0)\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -xpages\n"); fprintf(stderr, "Missing argument after -xpages\n");
exit(1); exit(1);
} }
} }
} }
//
// OK, now we can process the sysout_name
// Order of priority:
// 1. Value of -sysout command line arg
// 2. Value of the first command line arg
// 3. Value of LDESRCESYSOUT env variable
// 4. Value of LDESOURCESYSOUT env variable
// 5. Value as determined by X resource manager, if any
// 6. Value of $HOME/lisp.virtualmem (or lisp.vm for DOS)
//
if (sysout_name_cl[0] != '\0') { strncpy(sysout_name, sysout_name_cl, MAXPATHLEN); }
else if (sysout_name_first_arg[0] != '\0') { strncpy(sysout_name, sysout_name_first_arg, MAXPATHLEN); }
else if ((envname = getenv("LDESRCESYSOUT")) != NULL) { strncpy(sysout_name, envname, MAXPATHLEN); }
else if ((envname = getenv("LDESOURCESYSOUT")) != NULL) { strncpy(sysout_name, envname, MAXPATHLEN); }
else if (sysout_name_xrm[0] != '\0') { strncpy(sysout_name, sysout_name_xrm, MAXPATHLEN); }
else {
#ifdef DOS
strncpy(sysout_name, "lisp.vm", MAXPATHLEN);
#else
if ((envname = getenv("HOME")) != NULL) {
strncpy(sysout_name, envname, MAXPATHLEN);
strncat(sysout_name, "/lisp.virtualmem", MAXPATHLEN - 17);
}
#endif /* DOS */
}
if ((sysout_name[0] == '\0') || (access(sysout_name, R_OK))) {
perror("Couldn't find a sysout to run");
fprintf(stderr, "Looking for: %s\n", sysout_name);
(void)fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
exit(1);
}
/* OK, sysout name is now in sysout_name */
//
//
// End of command line arg processing
//
//
/* Sanity checks. */ /* Sanity checks. */
#ifdef DOS #ifdef DOS
probemouse(); /* See if the mouse is connected. */ probemouse(); /* See if the mouse is connected. */
#else #else
if (getuid() != geteuid()) { if (getuid() != geteuid()) {
(void)fprintf(stderr, "Effective user is not real user. Resetting uid\n"); fprintf(stderr, "Effective user is not real user. Resetting uid\n");
if (setuid(getuid()) == -1) { if (setuid(getuid()) == -1) {
(void)fprintf(stderr, "Unable to reset user id to real user id\n"); fprintf(stderr, "Unable to reset user id to real user id\n");
exit(1); exit(1);
} }
} }
@@ -708,7 +641,7 @@ int main(int argc, char *argv[])
if (FindUnixPipes()) /* must call the routine to allocate storage, */ if (FindUnixPipes()) /* must call the routine to allocate storage, */
{ /* in case we're re-starting a savevm w/open ptys */ { /* in case we're re-starting a savevm w/open ptys */
if (please_fork) (void)fprintf(stderr, "Failed to find UNIXCOMM file handles; no processes\n"); if (please_fork) fprintf(stderr, "Failed to find UNIXCOMM file handles; no processes\n");
} }
#endif /* DOS */ #endif /* DOS */
@@ -716,12 +649,13 @@ int main(int argc, char *argv[])
make_dsp_instance(currentdsp, 0, 0, 0, 1); /* All defaults the first time */ make_dsp_instance(currentdsp, 0, 0, 0, 1); /* All defaults the first time */
#endif /* DOS || XWINDOW */ #endif /* DOS || XWINDOW */
#if defined(SDL) #if defined(SDL)
init_SDL(windowTitle, lispDisplayRequestedWidth, lispDisplayRequestedHeight, pixelScale); init_SDL(windowtitle, width, height, pixelscale);
#endif /* SDL */ #endif /* SDL */
/* Load sysout to VM space and returns real sysout_size(not 0) */ /* Load sysout to VM space and returns real sysout_size(not 0) */
sysout_size = sysout_loader(sysout_name, sysout_size); sysout_size = sysout_loader(sysout_name, sysout_size);
build_lisp_map(); /* build up map */ build_lisp_map(); /* built up map */
init_ifpage(sysout_size); /* init interface page */ init_ifpage(sysout_size); /* init interface page */
init_iopage(); init_iopage();
init_miscstats(); init_miscstats();
@@ -731,7 +665,7 @@ int main(int argc, char *argv[])
/* file system directory enumeration stuff */ /* file system directory enumeration stuff */
if (!init_finfo()) { if (!init_finfo()) {
(void)fprintf(stderr, "Cannot allocate internal data.\n"); fprintf(stderr, "Cannot allocate internal data.\n");
exit(1); exit(1);
} }
#ifdef RS232 #ifdef RS232
@@ -793,9 +727,9 @@ void start_lisp(void) {
TopOfStack = 0; TopOfStack = 0;
Error_Exit = 0; Error_Exit = 0;
PVar = NativeAligned2FromStackOffset(InterfacePage->currentfxp) + FRAMESIZE; PVar = (DLword *)NativeAligned2FromLAddr(STK_OFFSET | InterfacePage->currentfxp) + FRAMESIZE;
freeptr = next68k = NativeAligned2FromStackOffset(CURRENTFX->nextblock); freeptr = next68k = NativeAligned2FromLAddr(STK_OFFSET | CURRENTFX->nextblock);
if (GETWORD(next68k) != STK_FSB_WORD) error("Starting Lisp: Next stack block isn't free!"); if (GETWORD(next68k) != STK_FSB_WORD) error("Starting Lisp: Next stack block isn't free!");

View File

@@ -32,7 +32,6 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "emlglob.h" #include "emlglob.h"
#include "gcdata.h" // for DELREF, GCLOOKUP #include "gcdata.h" // for DELREF, GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for LispPTR, DLword, NIL, POINTERMASK, state #include "lispemul.h" // for LispPTR, DLword, NIL, POINTERMASK, state
#include "lispmap.h" // for S_POSITIVE #include "lispmap.h" // for S_POSITIVE
#include "lspglob.h" #include "lspglob.h"
@@ -73,7 +72,7 @@ retry:
if (917505 == *(LispPTR *)ptr) error("N_OP_createcell E0001 error"); if (917505 == *(LispPTR *)ptr) error("N_OP_createcell E0001 error");
/* replace dtd_free with newcell's top DLword (it may keep next chain)*/ /* replace dtd_free with newcell's top DLword (it may keep next chain)*/
dtd68k->dtd_free = (*((LispPTR *)ptr)) & POINTERMASK; dtd68k->dtd_free = (*((LispPTR *)ptr)) & POINTERMASK;
if (dtd68k->dtd_free & 0x8000001) error("bad entry on free chain."); if (dtd68k->dtd_free & 0x8000001) error("bad entry on free chain(1).");
dtd68k->dtd_oldcnt++; dtd68k->dtd_oldcnt++;
@@ -85,7 +84,7 @@ retry:
return (tos); return (tos);
} else { } else {
dtd68k->dtd_free = initmdspage(alloc_mdspage(dtd68k->dtd_typeentry), dtd68k->dtd_size, NIL); dtd68k->dtd_free = initmdspage(alloc_mdspage(dtd68k->dtd_typeentry), dtd68k->dtd_size, NIL);
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain."); if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain(2).");
goto retry; goto retry;
} }
@@ -120,7 +119,7 @@ retry:
/* replace dtd_free with newcell's top DLword (it may keep next chain)*/ /* replace dtd_free with newcell's top DLword (it may keep next chain)*/
dtd68k->dtd_free = (*((LispPTR *)ptr)) & POINTERMASK; dtd68k->dtd_free = (*((LispPTR *)ptr)) & POINTERMASK;
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain."); if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain(3).");
#ifdef DTDDEBUG #ifdef DTDDEBUG
if ((dtd68k->dtd_free != 0) && (type != GetTypeNumber(dtd68k->dtd_free))) if ((dtd68k->dtd_free != 0) && (type != GetTypeNumber(dtd68k->dtd_free)))
@@ -145,7 +144,7 @@ retry:
} else { } else {
dtd68k->dtd_free = initmdspage(alloc_mdspage(dtd68k->dtd_typeentry), dtd68k->dtd_size, NIL); dtd68k->dtd_free = initmdspage(alloc_mdspage(dtd68k->dtd_typeentry), dtd68k->dtd_size, NIL);
if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain."); if (dtd68k->dtd_free & 0x8000000) error("bad entry on free chain(4).");
#ifdef DTDDEBUG #ifdef DTDDEBUG
check_dtd_chain(type); check_dtd_chain(type);

View File

@@ -35,7 +35,6 @@
#ifdef BIGVM #ifdef BIGVM
#define SWA_FNHEAD #define SWA_FNHEAD
#else #else
#include "byteswapdefs.h" // for swapx
#define SWA_FNHEAD swapx #define SWA_FNHEAD swapx
#endif /* BIGVM */ #endif /* BIGVM */

View File

@@ -25,8 +25,8 @@
/************************************************************************/ /************************************************************************/
void perrorn(char *s, int n) { void perrorn(char *s, int n) {
if (s != NULL && *s != '\0') { (void)fprintf(stderr, "%s: ", s); } if (s != NULL && *s != '\0') { fprintf(stderr, "%s: ", s); }
(void)fprintf(stderr, "%s\n", strerror(n)); fprintf(stderr, "%s\n", strerror(n));
} }
/************************************************************************/ /************************************************************************/
@@ -42,7 +42,7 @@ void err_mess(char *from, int no) {
int save_errno = errno; /* Save errno around OSMESSAGE_PRINT */ int save_errno = errno; /* Save errno around OSMESSAGE_PRINT */
OSMESSAGE_PRINT({ OSMESSAGE_PRINT({
(void)fprintf(stderr, "System call error: %s errno=%d ", from, no); fprintf(stderr, "System call error: %s errno=%d ", from, no);
perror(""); perror("");
}); });

View File

@@ -37,11 +37,9 @@
#include "gcarraydefs.h" #include "gcarraydefs.h"
#include "testtooldefs.h" #include "testtooldefs.h"
#include "lineblt8defs.h"
#include "lsthandldefs.h" #include "lsthandldefs.h"
#include "car-cdrdefs.h" #include "car-cdrdefs.h"
#include "keyeventdefs.h" #include "keyeventdefs.h"
#include "rawcolordefs.h"
#define IMIN(x, y) (((x) > (y)) ? (y) : (x)) #define IMIN(x, y) (((x) > (y)) ? (y) : (x))
#define IMAX(x, y) (((x) > (y)) ? (x) : (y)) #define IMAX(x, y) (((x) > (y)) ? (x) : (y))
@@ -74,15 +72,6 @@ LispPTR SLOWBLTCHAR_index;
return; \ return; \
} }
static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset,
BITMAP *dBM, DLword dXOffset, DLword dYOffset,
DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation);
static void ColorizeFont8_BIGBM(BITMAP *sBM, DLword sXOffset, DLword sYOffset,
BIGBM *dBM, DLword dXOffset, DLword dYOffset,
DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation);
/***********************************************************/ /***********************************************************/
/* /*
C_slowbltchar C_slowbltchar
@@ -313,7 +302,7 @@ void C_slowbltchar(LispPTR *args)
u_int ColorizedFont8CACHE[MAXFONTHEIGHT / BITSPERNIBBLE * MAXFONTWIDTH / BITSPERNIBBLE]; u_int ColorizedFont8CACHE[MAXFONTHEIGHT / BITSPERNIBBLE * MAXFONTWIDTH / BITSPERNIBBLE];
static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1, void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation) LispPTR sourcetype, LispPTR operation)
{ {
DLword *nbase; DLword *nbase;
@@ -323,10 +312,10 @@ static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP
sYOffset = sBM->bmheight - (sYOffset + height); sYOffset = sBM->bmheight - (sYOffset + height);
dYOffset = dBM->bmheight - (dYOffset + height); dYOffset = dBM->bmheight - (dYOffset + height);
nbase = NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset); nbase = (DLword *)NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset);
dbase = (u_char *)NativeAligned2FromLAddr(dBM->bmbase) + (dBM->bmrasterwidth * dYOffset); (DLword *)dbase = (DLword *)NativeAligned2FromLAddr(dBM->bmbase) + (dBM->bmrasterwidth * dYOffset);
for (i = 0, dbase += dXOffset; /* 8bpp */ for (i = 0, dbase += dXOffset; /* 8bpp */
i < height; i++, nbase += sBM->bmrasterwidth, dbase += dBM->bmrasterwidth * BYTESPER_DLWORD) { i < height; i++, nbase += sBM->bmrasterwidth, ((DLword *)dbase) += dBM->bmrasterwidth) {
lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation); lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation);
} /* for end */ } /* for end */
@@ -343,7 +332,7 @@ static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP
/* */ /* */
/************************************************************************/ /************************************************************************/
static void ColorizeFont8_BIGBM(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BIGBM *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1, void ColorizeFont8_BIGBM(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BIGBM *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation) LispPTR sourcetype, LispPTR operation)
{ {
DLword *nbase; DLword *nbase;
@@ -386,13 +375,14 @@ loop:
dest_h = dest_fragbottom - (dest_fragtop + dest_yoffset); dest_h = dest_fragbottom - (dest_fragtop + dest_yoffset);
} /* end if */ } /* end if */
dbase = (u_char *)NativeAligned2FromLAddr(dest_frag->bmbase) + (dest_frag->bmrasterwidth * dest_yoffset); dbase =
nbase = NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset); (DLword *)NativeAligned2FromLAddr(dest_frag->bmbase) + (dest_frag->bmrasterwidth * dest_yoffset);
nbase = (DLword *)NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset);
sYOffset += (DLword)dest_h; /* next src yoffset */ sYOffset += (DLword)dest_h; /* next src yoffset */
for (i = 0, dbase += dXOffset; i < dest_h; for (i = 0, dbase += dXOffset; i < dest_h;
i++, nbase += sBM->bmrasterwidth, dbase += dest_frag->bmrasterwidth * BYTESPER_DLWORD) { i++, nbase += sBM->bmrasterwidth, ((DLword *)dbase) += dest_frag->bmrasterwidth) {
lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation); lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation);
} }
@@ -419,14 +409,14 @@ loop:
/* */ /* */
/************************************************************************/ /************************************************************************/
static void newColorizeFont8(PILOTBBT *pbt, u_char backcolor, u_char forecolor, LispPTR srctype, LispPTR ope) void newColorizeFont8(PILOTBBT *pbt, u_char backcolor, u_char forecolor, LispPTR srctype, LispPTR ope)
{ {
DLword *nbase; DLword *nbase;
u_char *dbase; u_char *dbase;
int i; int i;
nbase = NativeAligned2FromLAddr((pbt->pbtsourcehi << 16) | (pbt->pbtsourcelo)); nbase = (DLword *)NativeAligned2FromLAddr((pbt->pbtsourcehi << 16) | (pbt->pbtsourcelo));
dbase = (u_char *)NativeAligned2FromLAddr((pbt->pbtdesthi << 16) | (pbt->pbtdestlo)); (DLword *)dbase = (DLword *)NativeAligned2FromLAddr((pbt->pbtdesthi << 16) | (pbt->pbtdestlo));
dbase += pbt->pbtdestbit; dbase += pbt->pbtdestbit;
for (i = 0; i < pbt->pbtheight; for (i = 0; i < pbt->pbtheight;
i++, nbase += pbt->pbtsourcebpl / 16, dbase += pbt->pbtdestbpl / 8) { i++, nbase += pbt->pbtsourcebpl / 16, dbase += pbt->pbtdestbpl / 8) {
@@ -504,7 +494,7 @@ void Uncolorize_Bitmap(LispPTR args[])
if ((x & 0xF) != 0) *(d_base++) = word; if ((x & 0xF) != 0) *(d_base++) = word;
if (y != (s_height - 1)) { s_base += s_rasterwidth * BYTESPER_DLWORD; } /* end if( y ) */ if (y != (s_height - 1)) { (DLword *)s_base += s_rasterwidth; } /* end if( y ) */
} /* end for( y ) */ } /* end for( y ) */
@@ -542,11 +532,11 @@ LispPTR Colorize_Bitmap(LispPTR args[])
s_base = (DLword *)NativeAligned2FromLAddr(s_bitmap->bmbase) + s_base = (DLword *)NativeAligned2FromLAddr(s_bitmap->bmbase) +
s_bitmap->bmrasterwidth * (s_bitmap->bmheight - (s_bottom + height)); s_bitmap->bmrasterwidth * (s_bitmap->bmheight - (s_bottom + height));
d_base = (u_char *)NativeAligned2FromLAddr(d_bitmap->bmbase) + (DLword *)d_base = (DLword *)NativeAligned2FromLAddr(d_bitmap->bmbase) +
d_bitmap->bmrasterwidth * (d_bitmap->bmheight - (d_bottom + height)); d_bitmap->bmrasterwidth * (d_bitmap->bmheight - (d_bottom + height));
for (i = 0, d_base += d_left; i < height; for (i = 0, d_base += d_left; i < height;
i++, s_base += s_bitmap->bmrasterwidth, d_base += d_bitmap->bmrasterwidth * BYTESPER_DLWORD) { i++, s_base += s_bitmap->bmrasterwidth, (DLword *)d_base += d_bitmap->bmrasterwidth) {
lineBlt8(s_base, s_left, d_base, width, (u_char)color0, (u_char)color1, INPUT_atom, lineBlt8(s_base, s_left, d_base, width, (u_char)color0, (u_char)color1, INPUT_atom,
REPLACE_atom); REPLACE_atom);

View File

@@ -129,7 +129,7 @@ void contextsw(DLword fxnum, DLword bytenum, DLword flags)
Midpunt(fxnum); /* exchanging FX */ Midpunt(fxnum); /* exchanging FX */
next68k = NativeAligned2FromStackOffset(CURRENTFX->nextblock); next68k = (DLword *)NativeAligned2FromLAddr(STK_OFFSET | CURRENTFX->nextblock);
if (GETWORD(next68k) != STK_FSB_WORD) error("contextsw(): MP9316"); if (GETWORD(next68k) != STK_FSB_WORD) error("contextsw(): MP9316");
freeptr = next68k; freeptr = next68k;

View File

@@ -29,11 +29,6 @@
#include "lspglob.h" #include "lspglob.h"
#include "lsptypes.h" // for Listp #include "lsptypes.h" // for Listp
#include "rplconsdefs.h" // for N_OP_rplcons #include "rplconsdefs.h" // for N_OP_rplcons
#ifndef NEWCDRCODING
#include "gcdata.h"
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "address.h"
#endif
/***************************************************/ /***************************************************/

949
src/sdl.c

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -64,11 +64,6 @@
#include "uutilsdefs.h" // for suspend_lisp, check_unix_password, unix_fu... #include "uutilsdefs.h" // for suspend_lisp, check_unix_password, unix_fu...
#include "vmemsavedefs.h" // for lisp_finish, vmem_save0 #include "vmemsavedefs.h" // for lisp_finish, vmem_save0
#ifdef COLOR
#include "rawcolordefs.h"
#include "llcolordefs.h"
#endif
extern LispPTR *PENDINGINTERRUPT68k; extern LispPTR *PENDINGINTERRUPT68k;
/***********************************************************/ /***********************************************************/

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