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

Compare commits

...

83 Commits

Author SHA1 Message Date
Nick Briggs
85c4ebf0ac Merge branch 'master' of github.com:Interlisp/maiko 2021-09-03 16:47:02 -07:00
Nick Briggs
7284e19b32 Suppress clang-tidy warnings for uses of bzero()
The only uses of bzero() in the maiko sources come about because it is used in the macOS
definition of the FD_ZERO() macro in sys/select.h.  Suppress the warning by including
   -clang-analyzer-security.insecureAPI.bzero
in the clang-tidy list of checks.  This may well have been replaced by a memset()
call in more up-to-date macOS releases.
2021-09-03 16:39:29 -07:00
Nick Briggs
0de1b1438b Left shift is undefined if left argument is negative (#454) (#393) 2021-09-03 12:46:21 -07:00
Nick Briggs
740f012254 Eliminate URaid access to uninitialized pointer when saving post-crash VM image
Old code attempted to save the display region through an uninitialized pointer
which occurs nowhere else in the system.  Removed the save.
2021-09-02 15:14:32 -07:00
Nick Briggs
377a6f3f47 Rewrite keyboard and async I/O handling to improve performance and reduce dependency on async I/O signals (#392)
* Rewrite keyboard and async I/O handling to improve performance and reduce dependency on async I/O signals

Replaces the SIGIO handler, which used to process X events in the interrupt context, with
a stub routine that sets a flag to signal processing is required.
Actual event processing is moved to the main dispatch loop where Lisp periodic interrupts
are handled.

Removes the X connection file descriptor from the set of fds contributing to SIGIO events
and moves the processing of X events to where the Lisp periodic interrupt is handled in
the main dispatch loop.  This code is already guarded by a check for XPending() so can
be called regardless of whether any file descriptors are known to be ready.

Actual processing of async I/O events and X events are handled by procedures
process_io_events() and process_Xevents() respectively.  For the most part these are
a renaming of getsignaldata() and getXsignaldata().

The Lisp periodic timer (VTALRM) was set to operate with a 25000 us period (40 Hz),
but on modern hardware it is possible to run this timer with a period of 10000 us (100 Hz)

Incidentally, a bug was noted (and fixed) in the X event handling code for motion events:
Mouse motion without any keyboard activity should not add an entry to the keyboard event
ring buffer as these events do not represent a key state change.
Since the ring buffer is of limited size, when it is filled new events are ignored
until the buffered events are processed.  This resulted in the loss of a key/mouse button
transition (up or down) if the mouse was moved about "too much" between keyboard events.

A few incidental cleanups were also made:
  - KBDEventFlg initialization fixed (wrong semantic type)
  - Event_Req renamed to IO_Signalled (more appropriate name)
  - int_io_open() sets up process (self) to handle SIGIO generated by O_ASYNC operations
  - LOCK_X_EVENTS turned off since X library calls can no longer happen in an interrupt context

* Use of O_ASYNC must depend on the symbol being defined (looking at you, Cygwin)

* Add SA_RESTART flag to sigaction for SIGVTALRM periodic interrupt

* LOCK_X_UPDATE is no longer needed and should not be defined by default for Solaris in version.h
2021-09-02 12:42:51 -07:00
Nick Briggs
c07618f55c Do not attempt to use ether_fd as valid fd if it is -1. Closes medley #450 2021-09-02 10:35:10 -07:00
Nick Briggs
dbbb59b30b Add clang-tidy to CMakeLists.txt -- run it at compile time if it is found at cmake configuration time 2021-08-29 13:39:07 -07:00
Nick Briggs
e957e331c4 Lock X updates for all systems and lock around X cleanup at exit (#391)
* Lock X updates for all systems and lock around X cleanup at exit

All systems which could generate I/O interrupts on the X file descriptor need
to have locking enabled, or there is a high probability that the X library
will deadlock. This requirement may be removed in the future with restructuring
of the way that the interrupt driven I/O is handled.

Ensure that the appropriate XLOCK/XUNLOCK is done around the X window
closing code.

* Also lock X updates when building with CMake.
2021-08-26 16:29:10 -07:00
Nick Briggs
934a86fbb5 Remove Create_N_Set_Cell() which is unused since native code is not supported. 2021-08-24 12:05:17 -07:00
Nick Briggs
28ea238807 Check for flags in argv[1..n] not argv[0..n] 2021-08-23 21:15:23 -07:00
Nick Briggs
81c36341ef Fully initialize XImage ScreenBitmap with XInitImage() before using it. 2021-08-22 18:23:41 -07:00
Nick Briggs
6cad51735f Fix errors preventing the use of -DDTDDEBUG for mkcell.c (#389) 2021-08-11 11:37:15 -07:00
Nick Briggs
c33386ef44 Remove code for unsupported Sun display configurations (#388)
* Remove code for unsupported Sun display configurations

Initial cleanup removing all code that was #ifdef'd for SUNDISPLAY.
Other SunWindows dependent code may also be removeable

* prropstyle will never be defined with no SunWindows support and therefore no pixrect code

* Remove code that is ifndef NOPIXRECT, since pixrects are part of the obsolete Sun windows code.

There are still traces of pixrect dependent code that could be removed.
2021-08-10 16:31:59 -07:00
Nick Briggs
588e804a2f Merge branch 'master' of github.com:Interlisp/maiko 2021-08-09 13:15:04 -07:00
Nick Briggs
c56cbb2a91 Add missing include of <time.h> to initsout.c 2021-08-09 12:30:34 -07:00
Tim Hawes
ef31b3fe0b Additional Makefiles for FreeBSD amd64, Raspberry Pi (#387)
* Add makefiles for FreeBSD amd64 and aarch64

* Add appropriate comments in new makefiles

* Add makefile-init files for the new FreeBSD archs
2021-08-08 14:59:15 -07:00
Nick Briggs
ea8d31f590 Set up git workflow to build a maiko docker image with multi-architecture support
On pushes to master: builds images for x86_64, Apple M1, and ARMv7
architectures based on Ubuntu Focal release.  This builds only the
regular lde/ldex and does NOT build the ldeinit, so these are not
suitable for doing a loadup from scratch.

Commit based on https://github.com/stumbo/maiko/tree/gitHubBuild
2021-07-31 11:34:27 -07:00
Nick Briggs
093fb9a3d5 Merge branch 'master' of github.com:Interlisp/maiko 2021-07-30 18:30:05 -07:00
Nick Briggs
b53620852a Clean up makefile fragments for FreeBSD on 386
* Add LOCK_X_UPDATES
* Increase optimization level to -O2 and adjust -g option
* Add makefile-init-freebsd.386 in order to do loadups
2021-07-30 17:46:35 -07:00
Nick Briggs
13163c6772 Add build directory to .gitignore so typical cmake build doesn't generate git changes 2021-07-30 17:25:00 -07:00
Nick Briggs
9e179e66f2 Call getXsignaldata() with XLocked set
getXsignaldata() can call additional Xlib procedures which could generate an I/O
interrupt.  To avoid deadlocks in Xlib, ensure that XLocked is set when
getXsignaldata() is called.
2021-07-08 15:18:41 -07:00
Nick Briggs
084d69c6e8 Comment out build-pi in workflows because the RPi system is not online at this time. 2021-07-06 20:21:03 -07:00
Nick Briggs
40e18e6da0 Remove unnecessary XLOCK/XUNLOCK around calls to bitblt_to_screen/clipping_Xbitblt in getXsignaldata() 2021-07-06 20:15:35 -07:00
Nick Briggs
9ed46e6b69 Integer variables referenced from a signal handler (XLocked, XNeedSignal) should be type sig_atomic_t 2021-07-05 14:19:23 -07:00
Nick Briggs
934b15b63b Correct declaration mismatch for Event_Req between xc.c and other (correct) sites 2021-07-05 14:10:38 -07:00
Nick Briggs
2de44247b5 Include byteswapdefs.h for swapx() and byte_swap_code_block() 2021-07-05 14:03:02 -07:00
Nick Briggs
ef6a6554ac Remove SIGPOLL usage (#385)
* Remove unnecessary calls to XLOCK/XUNLOCK

The X methods called by flush_display_region() and flush_display_lineregion() handle the
locking/unlocking, therefore it is unnecessary to invoke the locking here.

* Remove explict signals when doing XUNLOCK()

Call getXsignaldata() directly if a signal happened while X code
was locked, instead of generating a signal and then handling it.

Some macros and functions needed to pass the DspInterface instead of
extracting the X display and window and passing those so that the
correct structure was available for the XUNLOCK() call.
2021-06-27 19:02:02 -07:00
Nick Briggs
1c47bf5df0 Fix the FastRetCALL macro to use do {} while (0) style (#384) 2021-06-17 13:21:00 -07:00
Nick Briggs
f42671022f Remove outdated hand-optimized assembler support for gcc on 386 (#379) 2021-05-29 17:32:32 -07:00
Nick Briggs
2122f095e8 Simplify OPFN/OPFNX macros by removing hand expansion of 1, 2, N bindings (#383)
The OPFN and OPFNX macros had been coded with a hand expansion of a loop
pushing values on the stack to separately handle the cases of 1, 2, and
more values.  This actually lead to larger, likely slower, and certainly
less obvious code.
2021-05-18 16:35:21 -07:00
Abe Jellinek
91fe7d51f9 Correct Medley GitHub link in README (#380) 2021-04-14 09:38:11 -07:00
Nick Briggs
a5410ef93d Cleanup USE_DPLI usage (#378)
Until now, the only differentiation between using DLPI and using NIT for
the ethernet interface was expressed as a function of USE_DLPI.

This commit makes explicit when code is for the DLPI interface or the NIT
interface, with USE_DLPI and USE_NIT.  This is setup for using the BPF
interface to the ethernet as an alternative.
2021-04-07 20:51:28 -07:00
Abe Jellinek
5ce292ed32 Command line: fix potential buffer overruns in argument/env variable handling (#375)
* Fix buffer overrun vulnerability: use strncpy

read_Xoption uses a char buffer defined in main.c with length
MAXPATHLEN, aka PATH_MAX in POSIX. Unfortunately it was using strcpy to
copy from the command-line arguments (via argv) and the environment (via
getenv) without any bounds checking whatsoever. This could very easily
cause an overflow.

It's unlikely that a user will want to provide a path longer than
PATH_MAX-1 (a generous 1023 bytes on my machine). If they try, we should
stop them from causing any damage.

* Use strlcpy instead of strncpy

Thanks to Nick Briggs for the suggestion. It would be best to use
sizeof(sysout_name) instead of hardcoding a reference to the PATH_MAX
constant, but unfortunately sysout_name is an extern in xrdopt.c and so
the compiler doesn't know its size. I don't want to mess with that
coupling in this commit, because I assume there was a reason for doing
it that way rather than putting sysout_name in a header; I'll keep the
scope of the changes here small.

* Revert "Use strlcpy instead of strncpy"

Ah. This is not great. Turns out strlcpy is a nonstandard BSD extension
with its own set of problems
[https://en.wikibooks.org/wiki/C_Programming/C_Reference/nonstandard/strlcpy]
that we may be best served by avoiding. On Linux, it's only accessible
through libbsd, and we have no other reason (as far as I can tell) to
require that. Unless we want to provide our own strlcpy implementation,
we should stick with strncpy. It's far safer than what was there before
and doesn't present any edge cases in this scenario that are apparent to
me.
2021-04-05 14:43:37 -07:00
Nick Briggs
081e2288ff Enable X mouse buttons 6 and 7 for horizontal scrolling. (#367) 2021-03-29 14:03:14 -07:00
Nick Briggs
c4873d0ff8 Improvements to package/atom access in the sysout from maiko C code (#372)
* Display atom name in error message if get_package_atom() fails

* Various fixes to package/atom handling in testtool.c

Remove S_TOPVAL and S_MAKEATOM which only existed to deal with an old issue
with dbx where you supposedly couldn't enter a string with "\" in it.

Remove countchar(), which is functionally identical to  strlen(), and adjust
code that used it.

Adjust return type of MAKEATOM() to be the LispPTR that it should be, instead of int.

Limit find_package_from_name() to examining only the number of entries that are
present in the *PACKAGE-FROM-INDEX* array, instead of walking off the end.

MakeAtom68k() now drops into uraid() if asked to look up an atom that does not exist
(Make... is a misnomer, it will never *make* the atom, only lookup an existing
one)
2021-03-29 14:01:10 -07:00
Nick Briggs
01a8948a7d Rename _curXXX structures to curXXX to avoid leading underscore (#376) 2021-03-29 12:34:32 -07:00
Nick Briggs
36ccd9a5f5 warning: macro argument should be enclosed in parentheses [bugprone-macro-parentheses] (#374)
Except where the expansion would be syntactically invalid,
for example "goto macroarg;" detection of which is a bug in clang-tidy,
so warn it off with a NOLINT...(bugprone-macro-parentheses)
2021-03-20 16:31:23 -07:00
Larry Masinter
f6da80f8b3 add makefile-init-linux.x86_64 (#373) 2021-03-18 15:45:02 -07:00
Nick Briggs
be4d4c771e Fix printf format warnings in testtool.c (#369)
Conversion of PC output from octal to hexadecimal will be handled separately as there are multiple places that this change needs to take place.
2021-03-18 15:40:02 -07:00
Nick Briggs
d025ff0101 Add makefile fragment for INIT processing for macOS on x86_64 (#371) 2021-03-15 20:52:45 -07:00
Larry Masinter
22ae23552c Update README.md for simplified Mac instructions (#370)
* Update README.md

* update (new M1)
2021-03-03 17:17:04 -08:00
Nick Briggs
082bd15542 Add makefile fragment for armv7l systems that self-identify as aarch64 instead (#368)
Closes #361
2021-02-24 19:24:19 -08:00
Nick Briggs
c6a74b2516 XrmParseCommand and XrmMergeDatabases depend on destination database being initialized. (#366) 2021-02-23 01:45:43 +00:00
Bruce Mitchener
d8e063bf02 tidy: Remove last caddr_t. (#365)
This cast isn't needed here and `caddr_t` is obsolete / not POSIX.
2021-02-22 09:45:07 -08:00
Bruce Mitchener
0129b50127 tidy: xrdopt. (#364)
* Remove unused `print_lispusage()`.
* Make some globals into function locals.
* Make the options table into a `static`. It can't be `const`
  because `XrmParseCommand` wants a mutable pointer.
* Remove unused `homeDB`.
* Stop using `caddr_t`, use `XPointer`. `caddr_t` is not POSIX
  and never made it past old obsolete BSD code.
2021-02-22 09:44:43 -08:00
Bruce Mitchener
a64a06466c tidy: initdsp: Remove some unused globals. (#363) 2021-02-22 09:44:21 -08:00
Nick Briggs
12ef73a794 Merge pull request #362 from waywardmonkeys/cleanup-find-available-pty
tidy: FindAvailablePty.
2021-02-21 22:35:12 -08:00
Bruce Mitchener
ddb1c9f717 tidy: FindAvailablePty.
* Remove unused `Master` argument.
* Update documentation.
* Remove unused `MasterFD` variable in caller.
* Remove `slot` variable in caller and use `Master` in each case.
* Make `FindAvailablePty` a static function.
2021-02-22 11:54:51 +07:00
Nick Briggs
923f472a8f Merge pull request #360 from Interlisp/fixups-for-INIT-handling
Improve process for building ldeinit
2021-02-18 20:29:58 -08:00
Nick Briggs
aa32c8347b Improve process of building ldeinit to allow for different options on different OSs 2021-02-18 11:12:14 -08:00
Nick Briggs
966a0bd7e0 Move default target out of makefile-tail to more specific makefile fragments
The default targets differ depending on the display type and whether networking
is configured in or not, so it's more appropriate in the individual fragments
2021-02-18 10:33:30 -08:00
Nick Briggs
e317c37f03 Move OSARCHDIR defn from makefile-tail to makefile-header 2021-02-18 09:17:56 -08:00
Nick Briggs
31927cd255 Clean up missing include file when compiling for INIT (#359)
* Compiling for INIT requires an extra include file vs normal.

* Compiling for INIT often includes tracing which also requires additional includes
2021-02-17 11:35:33 -08:00
Nick Briggs
747b8e468e Merge pull request #357 from Interlisp/update-makefile-tail-dependencies
Update dependencies in makefile-tail
2021-02-15 18:57:45 -08:00
Nick Briggs
ef7149e8e4 Cleanup whitespace issues 2021-02-15 16:47:14 -08:00
Nick Briggs
64c04b5e2d Update dependencies in makefile-tail
Dependencies for all object files created during default compilation are updated
based on compiler generated, non-system, headers used.
2021-02-15 16:25:40 -08:00
Nick Briggs
1043a80d1f Remove unnecessary (re)definitions of TRUE/FALSE (#356) 2021-02-14 16:47:04 -08:00
Nick Briggs
c60b522012 Files should explicitly include the definitions they directly depend on (#355)
... start by fixing the include files and the fallout in C source from
removing includes not directly needed by headers that previously included
them.
2021-02-13 21:41:31 -08:00
Nick Briggs
f019d3ddc2 Compiling with ethernet support requires etherdefs.h in certain places (#354) 2021-02-13 17:22:27 -08:00
Bruce Mitchener
64957b508d Fix some unused variable warnings. (#352)
Also removes a prototype that wasn't needed.
2021-02-13 09:14:12 -08:00
Nick Briggs
1116ee7b60 Fix missing includes in ldeether.c (#351) 2021-02-13 09:07:21 -08:00
Nick Briggs
3a55f1d132 Missing include of sys/select.h in tty.c (closes Interlisp/medley#186) (#353)
(fix confirmed by original issue reporter)
2021-02-13 16:41:20 +00:00
Nick Briggs
f2ac050e8e Prevent duplicate printing of info lines in response to -info option (#349)
The X options parser printed the info lines as well as the main options handler.
Add mention of the -info option in the -help usage information.

Fixes Interlisp/medley#41
2021-02-12 08:06:43 -08:00
Nick Briggs
6fe94fd655 Merge pull request #350 from Interlisp/ldsout-heap-fptovp
Allocate fptovp temporary table in heap
2021-02-12 08:05:20 -08:00
Nick Briggs
0d7dcc24bd Minor formatting revisions. 2021-02-11 23:35:38 -08:00
Nick Briggs
2a71f330b5 Allocate fptovp table from heap and release it when done 2021-02-11 23:24:25 -08:00
Bruce Mitchener
694d9b08c6 Update more header include guards. (#348)
Some of these didn't have include guards, some  used old names
for them. Now they follow the current convention.
2021-02-11 10:42:07 -08:00
Bruce Mitchener
d1e0e006da Remove some of the outdated compile-flags entries. (#347)
These are no longer referenced in code.
2021-02-11 18:29:31 +00:00
Nick Briggs
1fc0d28167 Fix extra semicolon warnings (#345)
"warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning" [-Wextra-semi-stmt]
occurred 254 times in xc.c when warnings were turned up.

Review this commit with "git diff -w ..." to make it easier to see changes other than indentation caused by
the addition of do { ... } while (0) around many macro definition bodies.
2021-02-10 20:33:54 -08:00
Nick Briggs
7274e16b24 Reformat (with clang-format 10.0) some header files (#344)
...in preparation for editing macro definitions to wrap in do {} while (0)
or other adjustment to make them complete statements without unnecessary
semicolons.

This programmatic reformatting should not introduce any functional changes.
2021-02-10 16:44:37 -08:00
Nick Briggs
c9a0d441c4 Cleanup timer leftovers (#341)
* Remove unnecessary variables and calls during itimer setup.

* Variable referenced from signal handler should be volatile and sig_atomic_t
2021-02-10 13:58:40 -08:00
Larry Masinter
3ae9d558b1 fix the darwin.arm64 to use xquartz config (#342) 2021-02-10 21:36:05 +00:00
Bruce Mitchener
015972c05c Remove Cldeetr.c. (#340)
This was like `ldeether`, but for SunOS4 with a color display. It
isn't needed any longer as on Solaris, we have `ldeether`, no color
display, and that code already works, unlike this one.
2021-02-09 23:14:51 -08:00
Bruce Mitchener
b21aeecf4c Remove cdrom&cdaudio support code. (#339)
This is not used in Medley (the MISCN-TABLE-LIST doesn't include
the required constants), nor does anything use or reference this
code. It also won't compile as it needs some routines that are
missing from our code.
2021-02-09 20:38:08 -08:00
Bruce Mitchener
78943073c3 Favor C99 inline over __inline__. (#337) 2021-02-08 19:11:31 -08:00
Bruce Mitchener
c19b184820 Remove GetNumber. (#338)
This isn't used and if it were, it wouldn't compile. It calls
`ufn`, which doesn't get compiled in either (unless `C_ONLY`
is defined, which it isn't, and if it were, that wouldn't
compile either due to a missing `StkLim0`).

A subsequent PR will remove `ufn` and related code.
2021-02-09 03:10:38 +00:00
Bruce Mitchener
ec95bb7a51 Remove OEXT from makefile system. (#336)
This was originally here to make something in the Apollo toolchain
happy, but it hasn't been needed in ages, and was inconsistently
applied.
2021-02-09 02:48:09 +00:00
Nick Briggs
2aacca596b Fix the unixfork/unixcomm code to deal with pid over 65535 (#333)
* ForkUnixShell() can be a static procedure

* Restructure SAFEREAD() to be a little clearer

* Convert unixjob type field defines to an enum and fix related unhandled switch cases.

* Use local declaration of loop variables in for-loop, removing register attributes

* Restructure SAFEREAD() to be a little clearer

* Send and receive 2 additional bytes for pid.

* Prefer standard C99 "inline" over "__inline__" for SAFEREAD
2021-02-08 18:26:56 -08:00
Nick Briggs
d482cc461c Address older versions of C compiler which don't have __BYTE_ORDER__ (#335)
* Address older versions of C compiler which don't have __BYTE_ORDER__

* Checking for __GNUC__ is not sufficient to determine if builtins are available.

* Add makefile fragment for 32-bit PowerPC on Mac OSX build, and ignore the build directories.

* Add comment describing use of __BIG/LITTLE_ENDIAN__ definition
2021-02-06 20:51:42 -08:00
Nick Briggs
9957f5c305 Cleanup EVAL macro definition (#334)
Reformat and make use of PTRMASK & swapx() as appropriate.
It's likely that nnewframe() could be reworked to avoid needing
to unconditionally swapx() the result and, like native_newframe()
return the appropriate value as the result.
2021-02-05 00:20:26 +00:00
Bruce Mitchener
f0a53302ce Fix compilation with MAIKO_HANDLE_CONSOLE_MESSAGES. (#332)
* Switch from sgtty over to termios. All of the various
  separate values that were copied individually before
  can now be done at once.
* Fix compilation error with missing `&`.
* Fix compilation error with missing return value.

I haven't tested that this works as I don't know how to do that,
but at least it compiles now.
2021-02-01 06:42:39 +00:00
Bruce Mitchener
275c5b9c13 Clean up MAIKO_HANDLE_CONSOLE_MESSAGES some. (#331)
* `LOGINT` is only useful when `MAIKO_HANDLE_CONSOLE_MESSAGES`
  is set.
* Only define some variables if `MAIKO_HANDLE_CONSOLE_MESSAGES`
  is set. Flag them as static.
* Remove setting `LOGINT` from the build system as it isn't
  needed because we aren't handling console messages.
2021-01-31 21:22:13 -08:00
Nick Briggs
261069f131 Detect byte order from preprocessor definition (#330)
Rather than having to specify or omit -DBYTESWAP in the Makefile
fragment for each system we can detect whether the system requires
byte swapping  based on the __BYTE_ORDER__ C preprocessor definition.

Update CMakeLists.txt to account for this as well.
2021-01-31 16:56:35 -08:00
252 changed files with 4693 additions and 6881 deletions

View File

@@ -21,14 +21,17 @@ jobs:
working-directory: bin
run: ./makeright x
build-pi:
runs-on: [self-hosted, linux, ARM]
if: ${{ github.repository == 'Interlisp/maiko' }}
steps:
- uses: actions/checkout@v2
- name: Build
working-directory: bin
run: ./makeright x
#
# Commented out because the RPi is not online at this time (6 July 2021)
#
# build-pi:
# runs-on: [self-hosted, linux, ARM]
# if: ${{ github.repository == 'Interlisp/maiko' }}
# steps:
# - uses: actions/checkout@v2
# - name: Build
# working-directory: bin
# run: ./makeright x
build-cmake:
runs-on: ${{ matrix.os }}

84
.github/workflows/buildDocker.yml vendored Normal file
View File

@@ -0,0 +1,84 @@
# based on https://blog.oddbit.com/post/2020-09-25-building-multi-architecture-im/
---
# Interlisp workflow to build a Docker Image that supports multiple architectures
name: 'Build Maiko Docker image'
# Run this workflow on push to master
# Other branches can be added it needed.
on:
push:
branches:
- master
# Jobs that are run as part of this workflow.
jobs:
# Job to build the docker image
# see: https://github.com/docker/build-push-action
docker:
runs-on: ubuntu-latest
steps:
# Checkout the branch
- name: Checkout
uses: actions/checkout@v2
# Setup some environment variables
- name: Prepare
id: prep
run: |
# Name of the Docker Image.
DOCKER_IMAGE=interlisp/${GITHUB_REPOSITORY#*/}
VERSION=latest
SHORTREF=${GITHUB_SHA::8}
## Do we want to use tags and or versions
# If this is git tag, use the tag name as a docker tag
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/v}
fi
TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${SHORTREF}"
# If the VERSION looks like a version number, assume that
# this is the most recent version of the image and also
# tag it 'latest'.
if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
TAGS="$TAGS,${DOCKER_IMAGE}:latest"
fi
# Set output parameters.
echo ::set-output name=tags::${TAGS}
echo ::set-output name=docker_image::${DOCKER_IMAGE}
echo ::set-output name=build_time::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
# Setup the Docker Machine Emulation environment.
- name: Set up QEMU
uses: docker/setup-qemu-action@master
with:
platforms: all
# Setup the Docker Buildx funtion
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
# Login into DockerHub - required to store the created image
- name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# Start the Docker Build using the Dockerfile in the repository we
# checked out.
- name: Build
uses: docker/build-push-action@v2
with:
builder: ${{ steps.buildx.outputs.name }}
build-args: BUILD_DATE=${{ steps.prep.outputs.build_time }}
context: .
file: ./Dockerfile
# Platforms - Sepecify the platforms to include in the build
# linux/amd64 -- Standard x86_64
# linux/arm64 -- Apple M1
# linux/arm/v7 -- Raspberry pi
platforms: linux/amd64,linux/arm64,linux/arm/v7
# Push the result to DockerHub
push: true
# tags to assign to the Docker image
tags: ${{ steps.prep.outputs.tags }}

3
.gitignore vendored
View File

@@ -5,8 +5,11 @@
\#*#
.DS_Store
# build directories
build/**
*.386-x/**
*.386/**
*.ppc-x/**
*.ppc/**
*.sparc-x/**
*.sparc/**
*.x86_64-x/**

View File

@@ -16,6 +16,19 @@ IF(CMAKE_C_COMPILER_ID MATCHES "SunPro")
SET(CMAKE_C_FLAGS "-fno-strict-aliasing ${CMAKE_C_FLAGS}")
ENDIF()
find_program(
CLANG_TIDY_EXE
NAMES "clang-tidy" "clang-tidy12" "clang-tidy11" "clang-tidy10"
DOC "Path to clang-tidy executable"
)
IF (CLANG_TIDY_EXE)
# There are many many warnings for strcpy instances to deal with,
# but suppress it for now so that other issues are more obvious
#
SET(CMAKE_C_CLANG_TIDY ${CLANG_TIDY_EXE} -checks=-*,cert-*,clang-analyzer-security.*,-clang-analyzer-security.insecureAPI.strcpy,-clang-analyzer-security.insecureAPI.bzero -header-filter=.*)
ENDIF()
INCLUDE(CheckLibraryExists)
CHECK_LIBRARY_EXISTS(m fmod "" NEED_LIB_M)
IF(NEED_LIB_M)
@@ -26,12 +39,6 @@ SET(MAIKO_DEFINITIONS
"-DRELEASE=351"
)
IF(UNIX)
LIST(APPEND MAIKO_DEFINITIONS
"-DLOGINT"
)
ENDIF()
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
IF(MAIKO_DISPLAY_X11)
FIND_PACKAGE(X11 REQUIRED)
@@ -65,19 +72,6 @@ IF(MAIKO_DISPLAY_X11)
)
ENDIF()
IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR
CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" OR
CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" OR
CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" OR
CMAKE_SYSTEM_PROCESSOR STREQUAL "i386" OR
CMAKE_SYSTEM_PROCESSOR STREQUAL "i686" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "arm.*" OR
CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
LIST(APPEND MAIKO_DEFINITIONS
"-DBYTESWAP"
)
ENDIF()
IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
LIST(APPEND MAIKO_DEFINITIONS
"-DOS5"
@@ -95,10 +89,7 @@ ENDIF()
# These don't build on Linux. Some are for SunOS and DOS. Others ... ?
SET(BAD_SRCS
src/atom.c
src/cdaudio.c
src/cdrom.c
src/chatter.c
src/Cldeetr.c
src/codeconv.c
src/codetbl.c
src/doscomm.c
@@ -252,7 +243,6 @@ SET(MAIKO_HDRS
inc/bltdefs.h
inc/byteswapdefs.h
inc/car-cdrdefs.h
inc/cdrom.h
inc/cell.h
inc/chardevdefs.h
inc/commondefs.h

18
Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM ubuntu:focal
ARG BUILD_DATE
LABEL name="Maiko"
LABEL description="Virtual machine for Interlisp Medley"
LABEL url="https://github.com/Interlisp/maiko"
LABEL build-time=$BUILD_DATE
ARG TARGETPLATFORM
RUN apt-get update && apt-get install -y make clang libx11-dev gcc x11vnc xvfb
COPY --chown=nonroot:nonroot . /app/maiko
RUN rm -rf /app/maiko/linux*
WORKDIR /app/maiko/bin
RUN ./makeright x
RUN rm -rf /app/maiko/inc /app/maiko/include /app/maiko/src

View File

@@ -4,9 +4,9 @@ Maiko is the implementation of the Medley Interlisp virtual machine, for a
byte-coded Lisp instruction set and some low-level functions for
connecting with Lisp for access to display (via X11) and disk etc.
Newcomers should check out the [Medley Interlisp Introduction](https://github.com/Interlisp/medley/wiki/Medley-Interlisp-Introduction).
For an overview, see [Medley Interlisp Introduction](https://github.com/Interlisp/medley/wiki/Medley-Interlisp-Introduction).
See [the Medley repository](https://github.org/Interlisp/medley) for
See [the Medley repository](https://github.com/Interlisp/medley) for
* [Issues](https://github.com/Interlisp/medley/issues) (note that maiko issues are there too)
* [Discussions](https://github.com/Interlisp/medley/discussions) (Q&A, announcements, etc)
* [Medley's README](https://github.com/Interlisp/medley/blob/master/README.md)
@@ -33,18 +33,17 @@ $ cd maiko/bin
$ ./makeright x
```
* The build will (attempt to) detect the OS-type and cpu-type. It will build binaries `lde` and `ldex` in `../ostype.cputype` (with .o files in `..ostype.cputype-x`. For example, Linux on a 64-bit x86 will use `linux.x86_64`, while MacOS 11 on (new) Mac will use `darwin.arm64`.
* If you prefer using `gcc` over `clang`, you will need to edit the makefile fragment for your configuration (`makefile-ostype.cputype-x1) and comment out the line (with a #) that defines `CC` for `clang` and uncomment the line (delete the #) for the line that defines `CC` for `gcc`.
* There is a cmake configuration (TBD)
* The build will (attempt to) detect the OS-type and cpu-type. It will build binaries `lde` and `ldex` in `../ostype.cputype` (with .o files in `..ostype.cputype-x`. For example, Linux on a 64-bit x86 will use `linux.x86_64`, while MacOS 11 on a (new M1) Mac will use `darwin.aarch64`.
* If you prefer using `gcc` over `clang`, you will need to edit the makefile fragment for your configuration (`makefile-ostype.cputype-x`) and comment out the line (with a #) that defines `CC` for `clang` and uncomment the line (delete the #) for the line that defines `CC` for `gcc`.
* There is a cmake configuration (TBD To Be Described here).
### Building For MacOS
* Running on MacOS requires an X server, and building on a Mac requires X client libraries.
An X-server for x86 MacOS (and X11 client libraries) can be freely obtained at https://www.xquartz.org/
For the new arm64 MacOS 11, you'll need https://x.org which you can get via MacPorts or Brew.
An X-server for MacOS (and X11 client libraries) can be freely obtained at https://www.xquartz.org/releases
### Building for Windows 10
Windows 10 currently requires "Docker for Desktop" or WSL2 -- basically a Linux virtual machine -- and a (Windows X-server).
Windows 10 currently requires "Docker for Desktop" or WSL2 and a (Windows X-server).
See [Medley's README](https://github.com/Interlisp/medley/blob/master/README.md) for more.

View File

@@ -18,8 +18,6 @@ NOPIXRECT Used to suppress pixrect/pixwin options when they're not
AIX True if compiling for AIX
sparc True if we're compiling on a SPARC machine.
mc68020 True if we're compiling on a Motorola 680x0 machine.
sun3 We're compiling for a Sun-3.
NOASM If true, suppress any attempt to include assembler
versions of things in the emulator. In 'lispemul.c',
@@ -54,8 +52,6 @@ PROFILE If true, the profiling control code is enabled. You must
CHECK
FSBCHECK If true, you see a trace of large free stack blocks when
the stack is manipulated; was used for debugging stack code.
FSMESSAGE If true, prints a message telling you about the hard links
it makes (in support of version numbering), as it makes them.
WINDOW
INIT Used when compiling an emulator to build a loadup. Use it
@@ -119,13 +115,7 @@ FLTINT If true, use the floating-point exception interrupts to detect
the condition code from each operation. For SPARCs, it's not
clear that the interrupt trick works, because of code re-
arrangement by the C compiler.
BUFFER Used (apparently) only in testdisplay.c to decide if it should
read the sysout directly, or buffer each page.
IFPAGE_DEFINED Used in .h files to prevent redefinition of Interface page.
IOPAGE_DEFINED " for IO page definition.
NOWAY Used to dike out C definitions of RPLACA and RPLACD in the
file car-cdrmacro.h
XWINDOW True if compiling for an X-windows emulator.
BIGATOMS True if this emulator will support 3-byte symbols, instead of
@@ -138,5 +128,4 @@ bitbltsub.c:#ifdef GETBASE
testdisplay.c:#ifdef NOTUSED
uraid.c:#ifdef ETHERINT
bitblt.c:#ifndef COLOR
bitbltsub.c:#ifndef prropstyle
lispmap.h:#ifdef MEDLEY

View File

@@ -5,7 +5,7 @@ OEXT = .o
#For debugging
OPTFLAGS = -g
FPFLAGS =
DFLAGS = -DKBINT -DFLTINT -DNOASM -DOS4 -DI386 -DBYTESWAP -DCHECK -DLOGINT -DSUNDISPLAY
DFLAGS = -DKBINT -DFLTINT -DNOASM -DOS4 -DI386 -DCHECK -DLOGINT -DSUNDISPLAY
LDFLAGS = -lsuntool -lsunwindow -lpixrect -lc -lm
INLINE = $(SRCDIR)disp386i.il

View File

@@ -6,7 +6,7 @@ OEXT = .o
OPTFLAGS = -O
DISPOPTFLAGS = -O
FPFLAGS =
DFLAGS = -DKBINT -DOS4 -DI386 -DBYTESWAP -DCHECK -DLOGINT -DDISPLAYBUFFER -DSUNDISPLAY -DNEWBITBLT -DOPDISP
DFLAGS = -DKBINT -DOS4 -DI386 -DCHECK -DLOGINT -DDISPLAYBUFFER -DSUNDISPLAY -DNEWBITBLT -DOPDISP
LDFLAGS = -lsuntool -lsunwindow -lpixrect -lc -lm
INLINE = $(SRCDIR)disp386i.il
BITBLTFILE=$(OBJECTDIR)bitblt386i.o

View File

@@ -5,7 +5,7 @@ OEXT = .o
#For debugging
OPTFLAGS = -g
FPFLAGS =
DFLAGS = -DKBINT -DFLTINT -DNOASM -DOS4 -DI386 -DBYTESWAP -DCHECK -DLOGINT -DSUNDISPLAY
DFLAGS = -DKBINT -DFLTINT -DNOASM -DOS4 -DI386 -DCHECK -DLOGINT -DSUNDISPLAY
LDFLAGS = -lsuntool -lsunwindow -lpixrect -lc -lm
INLINE = $(SRCDIR)disp386i.il

View File

@@ -6,7 +6,7 @@ OEXT = .o
OPTFLAGS = -O -traditional
DISPOPTFLAGS = -O -traditional
FPFLAGS =
DFLAGS = -DKBINT -DOS4 -DI386 -DBYTESWAP -DCHECK -DLOGINT -DDISPLAYBUFFER -DSUNDISPLAY -DNEWBITBLT -DOPDISP
DFLAGS = -DKBINT -DOS4 -DI386 -DCHECK -DLOGINT -DDISPLAYBUFFER -DSUNDISPLAY -DNEWBITBLT -DOPDISP
LDFLAGS = -lsuntool -lsunwindow -lpixrect -lc -lm
INLINE = $(SRCDIR)disp386i.il
BITBLTFILE=$(OBJECTDIR)bitblt386i.o

View File

@@ -16,15 +16,13 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = -DBYTESWAP -DLOGINT $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -1,7 +1,6 @@
# Options for MacOS, x86 processor, X windows
CC = clang -m32 $(CLANG_CFLAGS)
OEXT=.o
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
@@ -19,9 +18,8 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) \
-DBYTESWAP -DLOGINT $(XFLAGS) \
-DRELEASE=351 -DSTACKCHECK -DFSBCHECK -DPCTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
-DRELEASE=351 # -DSTACKCHECK -DFSBCHECK -DPCTRACE
LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -1,7 +1,6 @@
# Options for MacOS, x86 processor, X windows
CC = clang $(CLANG_CFLAGS)
OEXT=.o
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
@@ -14,17 +13,15 @@ XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -I/opt/local/include -DXWINDOW
XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O1 -g
OPTFLAGS = -O2
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) \
-DBYTESWAP -DLOGINT $(XFLAGS) \
-DRELEASE=351
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/opt/local/lib -lX11 -lm
LDELDFLAGS = -L/opt/local/lib -lX11 -lm
LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
OBJECTDIR = ../$(RELEASENAME)/

29
bin/makefile-darwin.ppc-x Normal file
View File

@@ -0,0 +1,29 @@
# Options for MacOS, x86 processor, X windows
CC = cc $(GCC_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/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
-DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -1,7 +1,6 @@
# Options for MacOS, x86 processor, X windows
CC = clang -m64 $(CLANG_CFLAGS)
OEXT=.o
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
@@ -19,9 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O1 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) \
-DBYTESWAP -DLOGINT $(XFLAGS) \
-DRELEASE=351
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -6,7 +6,7 @@ ADMINFILES = makefile mkvdate.c
LPFILES = lpmain.obj lpread.obj lpsolve.obj lpwrite.obj lpdual.obj lptran.obj
CFLAGS = -DDOS -DBYTESWAP -DKBINT -DNOPIXRECT \
CFLAGS = -DDOS -DKBINT -DNOPIXRECT \
-DNOVERSION -DLPSOLVE -g
LDFLAGS = -g graphics.lib binmode.lib mouse.lib

View File

@@ -15,16 +15,13 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -I/usr/local/include -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O1 -gdwarf-2
DFLAGS = -DBYTESWAP -DLOGINT $(XFLAGS) \
-DRELEASE=351
OPTFLAGS = -O2 -g
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -0,0 +1,27 @@
# Options for FreeBSD, ARMv7 and X-Windows
CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

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

View File

@@ -32,3 +32,5 @@ LDFLAGS =
LDELDFLAGS =
LDEETHERLDFLAGS =
# OSARCHDIR is the os/architecture dir, where executables all go.
OSARCHDIR = ../$(OSARCHNAME)/

View File

@@ -1,7 +1,6 @@
# Options for MacOS, x86 processor, X windows, for INIT processing
CC = clang -m32 $(CLANG_CFLAGS)
OEXT=.o
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
@@ -18,12 +17,12 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g
DFLAGS = -DBYTESWAP -DLOGINT $(XFLAGS) \
-DRELEASE=351 -DNOVERSION -DINIT -DTRACE -DOPTRACE
DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11/lib -lX11 -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -0,0 +1,28 @@
# Options for MacOS, aarch64 processor, X windows, for INIT processing
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 = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O0 -g3
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -0,0 +1,28 @@
# Options for MacOS, x86_64 processor, X windows, for INIT processing
CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O0 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -0,0 +1,27 @@
# Options for FreeBSD, Intel 386/486 and X Windows
CC = clang -m32 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O0 for init
OPTFLAGS = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldeinit

View File

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

View File

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

View File

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

View File

@@ -18,26 +18,22 @@
# Options for SPARC under Solaris-2 operating system, X windows.
CC = gcc
CC = cc -m32 $(DEVSTUDIO_CFLAGS)
XFILES = $(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xrdopt.o \
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xwinman.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)kbdif.o \
$(OBJECTDIR)xinit.o
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -DXWINDOW
XFLAGS = -DXWINDOW -I/usr/openwin/include
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -g for MAKEINIT, as it needs debugging often.
OPTFLAGS = -g3 -O
OPTFLAGS = -g3 -O0
# Set any debugging options in DEBUGFLAGS. E.g., to enable stack
# checking, use -DSTACKCHECK; to enable the fn-call-time stack
@@ -45,9 +41,7 @@ OPTFLAGS = -g3 -O
DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
MACHINEFLAGS = -DOS5 -DUSE_DLPI \
-I$(OPENWINHOME)/include \
-DLOGINT -DLOCK_X_UPDATES
MACHINEFLAGS = -DOS5 -DUSE_DLPI
# The LDEINIT wants to have NOVERSION set, so we don't hang up on
# any change-over in versions.
@@ -59,12 +53,12 @@ DFLAGS = -DINIT \
-DNOVERSION -DRELEASE=351
LDFLAGS = -R$(OPENWINHOME)/lib -L$(OPENWINHOME)/lib -lX11 -lc -lm -lsocket -lnsl
LDELDFLAGS = -R$(OPENWINHOME)/lib -L$(OPENWINHOME)/lib -lX11 -lc -lm -lsocket -lnsl
LDFLAGS = -lX11 -lc -lm -lsocket -lnsl
LDELDFLAGS = -lX11 -lc -lm -lsocket -lnsl
LDEETHERLDFLAGS = -lc -lm -lsocket -lnsl
DLPIFILES = $(OBJECTDIR)dlpi.o
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldeether
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -15,15 +15,13 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = -DBYTESWAP -DLOGINT $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -0,0 +1,27 @@
# Options for Linux, ARMv7 and X-Window
CC = gcc $(GCC_CFLAGS)
#CC = clang $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -15,15 +15,13 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = -DBYTESWAP -DLOGINT $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -16,15 +16,13 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = -DBYTESWAP -DLOGINT $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -15,15 +15,13 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -I/usr/X11R6/include -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = -DBYTESWAP -DLOGINT $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -24,8 +24,6 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g
@@ -37,8 +35,7 @@ DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \
-DOS5 -DBYTESWAP -DLOGINT \
-DLOCK_X_UPDATES \
-DOS5 \
-DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
@@ -49,4 +46,4 @@ DLPIFILES = # $(OBJECTDIR)dlpi.o
OBJECTDIR = ../$(RELEASENAME)/
default: ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldeether
default: ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldeether ../$(OSARCHNAME)/ldex

View File

@@ -24,8 +24,6 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
@@ -38,8 +36,6 @@ DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \
-DOS5 -DUSE_DLPI \
-DBYTESWAP -DLOGINT \
-DLOCK_X_UPDATES \
-I$(OPENWINHOME)/include \
-DRELEASE=210
@@ -51,4 +47,4 @@ DLPIFILES = $(OBJECTDIR)dlpi.o
OBJECTDIR = ../$(RELEASENAME)/
default: ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldeether
default: ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldeether ../$(OSARCHNAME)/ldex

View File

@@ -31,8 +31,6 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
@@ -42,7 +40,7 @@ OPTFLAGS = -O2 -g3
DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
MACHINEFLAGS = -DOS5 -DUSE_DLPI -DLOGINT -DLOCK_X_UPDATES
MACHINEFLAGS = -DOS5 -DUSE_DLPI
DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \
@@ -57,4 +55,4 @@ DLPIFILES = $(OBJECTDIR)dlpi.o
OBJECTDIR = ../$(RELEASENAME)/
default: ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldeether
default: ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldeether ../$(OSARCHNAME)/ldex

View File

@@ -24,8 +24,6 @@ XFILES = $(OBJECTDIR)xmkicon.o \
XFLAGS = -DXWINDOW
# This is to make the %$#@! Apollo cc happy
OEXT = .o
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g
@@ -37,8 +35,7 @@ DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \
-DOS5 -DBYTESWAP -DLOGINT \
-DLOCK_X_UPDATES \
-DOS5 \
-DUSE_DLPI \
-DRELEASE=351
@@ -50,4 +47,4 @@ DLPIFILES = $(OBJECTDIR)dlpi.o
OBJECTDIR = ../$(RELEASENAME)/
default: ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldeether
default: ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldeether ../$(OSARCHNAME)/ldex

File diff suppressed because it is too large Load Diff

View File

@@ -59,7 +59,7 @@ osversion=`osversion`
echo "making so far for ${osversion} on ${architecture}."
case "$display" in
init) display=single
releasename=init.${architecture}
releasename=init-${osversion}.${architecture}
ldename=ldeinit
;;
single) releasename=${osversion}.${architecture}

View File

@@ -77,7 +77,7 @@ typedef struct
, White_Pixel ); \
XLOCK; \
XFlush( display ); \
XUNLOCK; \
XUNLOCK( display ); \
(child_win)->parent = parent_win; \
if( (child_win)->after_create ) \
((child_win)->after_create)(parent_win,child_win);\
@@ -96,7 +96,7 @@ typedef struct
, (window)->width \
, (window)->height ); \
XFlush( display ); \
XUNLOCK; \
XUNLOCK( display ); \
if( (window)->after_resize ) \
((window)->after_resize)( window ); \
} \
@@ -106,7 +106,7 @@ typedef struct
XLOCK; \
XDefineCursor( display, (window)->win, *(mycursor) ); \
XFlush( display ); \
XUNLOCK; \
XUNLOCK( display ); \
(window)->cursor = mycursor; \
}

View File

@@ -1,3 +1,6 @@
#ifndef XKEYMAP_H
#define XKEYMAP_H 1
/* $Id: XKeymap.h,v 1.2 1999/01/03 02:05:48 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved
*/
@@ -252,3 +255,5 @@ int generic_X_keymap[] = {
-1, -1, -1};
#endif /* XWINDOW */
#endif

View File

@@ -29,8 +29,8 @@
/**********************************************************************/
/* NOTE: These MACRO should be used for the pointers in LISP SYSOUT */
#define LLSH(datum , n) ((datum )<< n)
#define LRSH(datum , n) ((datum) >> n)
#define LLSH(datum, n) ((datum) << (n))
#define LRSH(datum, n) ((datum) >> (n))
#define HILOC(ptr) (LRSH(((unsigned int)(ptr) & SEGMASK),16))
#define LOLOC(ptr) ((unsigned int)(ptr) & 0x0ffff)

View File

@@ -48,7 +48,7 @@
/* translate LispPage to 68k address */
#define Addr68k_from_LPAGE(Lisp_page) (Addr68k_from_LADDR((Lisp_page << 8) ))
#define Addr68k_from_LPAGE(Lisp_page) (Addr68k_from_LADDR(((Lisp_page) << 8) ))

View File

@@ -1,5 +1,6 @@
#ifndef ALLOCMDSDEFS_H
#define ALLOCMDSDEFS_H 1
#include "lispemul.h" /* for LispPTR, DLword */
LispPTR initmdspage(register LispPTR *base, register DLword size, register LispPTR prev);
LispPTR *alloc_mdspage(register short int type);
#endif

View File

@@ -1,10 +1,6 @@
#ifndef ARITH_H
#define ARITH_H 1
/* $Id: arith.h,v 1.2 1999/01/03 02:05:52 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/* $Id: arith.h,v 1.2 1999/01/03 02:05:52 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
@@ -13,188 +9,157 @@
/* */
/************************************************************************/
#define MAX_SMALL 65535 /* == 0x0000FFFF */
#define MIN_SMALL (-65536) /* == 0xFFFF0000 */
#define MAX_SMALL 65535 /* == 0x0000FFFF */
#define MIN_SMALL -65536 /* == 0xFFFF0000 */
#define MAX_FIXP 2147483647 /* == 0x7FFFFFFF */
#define MIN_FIXP -2147483648 /* == 0x80000000 */
#define GetSmalldata(x) (((SEGMASK & x)==S_POSITIVE) ? (0xFFFF & x) : (((SEGMASK & x)==S_NEGATIVE) ? (0xFFFF0000 | x) : error("Not smallp address")))
#define GetSmallp(x) ((0xFFFF0000 & x) ? (((0xFFFF0000 & x)==0xFFFF0000) ? (S_NEGATIVE | (0xFFFF & x)) : error("Not Smallp data") ) : (S_POSITIVE | (0xFFFF & x)))
/* arg sour is Lisp address, arg dest is a box to store the number */
#define GetNumber(sour, dest){ \
switch(SEGMASK & sour){\
case S_POSITIVE: \
dest = 0xFFFF & sour; \
break; \
case S_NEGATIVE: \
dest = 0xFFFF0000 | sour; \
break; \
default: \
if(GetTypeNumber( sour ) != TYPE_FIXP){ \
ufn(0xFF & (*PC)); \
return; \
} \
dest = *((int *)Addr68k_from_LADDR(sour)); \
} \
}
#define MAX_FIXP 2147483647 /* == 0x7FFFFFFF */
#define MIN_FIXP (-2147483648) /* == 0x80000000 */
#define GetSmalldata(x) \
(((SEGMASK & (x)) == S_POSITIVE) \
? (0xFFFF & (x)) \
: (((SEGMASK & (x)) == S_NEGATIVE) ? (0xFFFF0000 | (x)) : error("Not smallp address")))
#define GetSmallp(x) \
((0xFFFF0000 & (x)) ? (((0xFFFF0000 & (x)) == 0xFFFF0000) ? (S_NEGATIVE | (0xFFFF & (x))) \
: error("Not Smallp data")) \
: (S_POSITIVE | (0xFFFF & (x))))
#define FIXP_VALUE(dest) *((int *)Addr68k_from_LADDR(dest))
#define FLOATP_VALUE(dest) *((float *)Addr68k_from_LADDR(dest))
#define N_GETNUMBER(sour, dest, label) \
{ dest = sour; /* access memory once */ \
switch(SEGMASK & dest){ \
case S_POSITIVE: \
dest = 0xFFFF & (dest); \
break; \
case S_NEGATIVE: \
dest = 0xFFFF0000 | (dest); \
break; \
default: \
if (GetTypeNumber( dest ) != TYPE_FIXP) \
{ goto label; } \
dest = FIXP_VALUE(dest); \
} \
}
#define N_GETNUMBER(sour, dest, label) \
do { \
(dest) = (sour); /* access memory once */ \
switch (SEGMASK & (dest)) { \
case S_POSITIVE: (dest) = 0xFFFF & (dest); break; \
case S_NEGATIVE: (dest) = 0xFFFF0000 | (dest); break; \
default: \
/* NOLINTNEXTLINE(bugprone-macro-parentheses) */ \
if (GetTypeNumber(dest) != TYPE_FIXP) goto label; \
(dest) = FIXP_VALUE(dest); \
} \
} while (0)
#define N_IGETNUMBER(sour, dest, label) \
{ dest = sour; /* access memory once */ \
switch(SEGMASK & dest){ \
case S_POSITIVE: \
dest = 0xFFFF & dest; \
break; \
case S_NEGATIVE: \
dest = 0xFFFF0000 | dest; \
break; \
default: \
switch (GetTypeNumber( dest )) { \
case TYPE_FIXP: \
dest = FIXP_VALUE(dest); \
break; \
case TYPE_FLOATP: \
{register float temp; \
temp = FLOATP_VALUE(dest) ; \
if ( (temp > ((float) 0x7fffffff)) || \
(temp < ((float) 0x80000000)) ) \
goto label; \
dest = (int) temp; \
} \
break; \
default: goto label; \
} \
break; \
} \
}
#define ARITH_SWITCH(arg, result) \
switch((int) arg & 0xFFFF0000){ \
case 0: \
result = (S_POSITIVE | (int) arg); \
break; \
case 0xFFFF0000: \
result = (S_NEGATIVE | (0xFFFF & (int) arg)); \
break; \
default:{register LispPTR *wordp; \
/* arg is FIXP, call createcell */ \
wordp = (LispPTR *) createcell68k(TYPE_FIXP); \
*((int *)wordp) = (int) arg; \
result = (LADDR_from_68k(wordp)); \
break; \
} \
}
#define N_IGETNUMBER(sour, dest, label) \
do { \
(dest) = (sour); /* access memory once */ \
switch (SEGMASK & (dest)) { \
case S_POSITIVE: (dest) = 0xFFFF & (dest); break; \
case S_NEGATIVE: (dest) = 0xFFFF0000 | (dest); break; \
default: \
switch (GetTypeNumber(dest)) { \
case TYPE_FIXP: (dest) = FIXP_VALUE(dest); break; \
case TYPE_FLOATP: { \
register float temp; \
temp = FLOATP_VALUE(dest); \
/* NOLINTNEXTLINE(bugprone-macro-parentheses) */ \
if ((temp > ((float)0x7fffffff)) || (temp < ((float)0x80000000))) goto label; \
(dest) = (int)temp; \
} break; \
default: goto label; /* NOLINT(bugprone-macro-parentheses) */ \
} \
break; \
} \
} while (0)
#define ARITH_SWITCH(arg, result) \
do { \
switch ((int)(arg) & 0xFFFF0000) { \
case 0: (result) = (S_POSITIVE | (int)(arg)); break; \
case 0xFFFF0000: (result) = (S_NEGATIVE | (0xFFFF & (int)(arg))); break; \
default: { \
register LispPTR *wordp; \
/* arg is FIXP, call createcell */ \
wordp = (LispPTR *)createcell68k(TYPE_FIXP); \
*((int *)wordp) = (int)(arg); \
(result) = (LADDR_from_68k(wordp)); \
break; \
} \
} \
} while (0)
/* *******
NEED to See if this is faster than the N_ARITH_SWITCH macro
NEED to See if this is faster than the N_ARITH_SWITCH macro
if( (MIN_FIXP <= result) && (result <= MAX_FIXP) ){
if(0 <= result){
if(result <= MAX_SMALL)
return(S_POSITIVE | result);
else{
wordp = createcell68k(TYPE_FIXP);
*((unsigned int *)wordp) = result;
return(LADDR_from_68k(wordp));
}
}else{
if(MIN_SMALL <= result)
return(S_NEGATIVE | (0xFFFF & result));
else{
wordp = createcell68k(TYPE_FIXP);
*((unsigned int *)wordp) = result;
return(LADDR_from_68k(wordp));
}
}/
}
if( (MIN_FIXP <= result) && (result <= MAX_FIXP) ){
if(0 <= result){
if(result <= MAX_SMALL)
return(S_POSITIVE | result);
else{
wordp = createcell68k(TYPE_FIXP);
*((unsigned int *)wordp) = result;
return(LADDR_from_68k(wordp));
}
}else{
if(MIN_SMALL <= result)
return(S_NEGATIVE | (0xFFFF & result));
else{
wordp = createcell68k(TYPE_FIXP);
*((unsigned int *)wordp) = result;
return(LADDR_from_68k(wordp));
}
}/
}
****** */
#define N_ARITH_SWITCH(arg) \
do { \
switch ((arg) & 0xFFFF0000) { \
case 0: return (S_POSITIVE | (arg)); \
case 0xFFFF0000: return (S_NEGATIVE | (0xFFFF & (arg))); \
default: { \
register LispPTR *fixpp; \
/* arg is FIXP, call createcell */ \
fixpp = (LispPTR *)createcell68k(TYPE_FIXP); \
*((int *)fixpp) = arg; \
return (LADDR_from_68k(fixpp)); \
} \
} \
} while (0)
#define N_IARITH_BODY_2(a, tos, op) \
do { \
register int arg1, arg2; \
\
N_IGETNUMBER(a, arg1, do_ufn); \
N_IGETNUMBER(tos, arg2, do_ufn); \
\
arg1 = arg1 op arg2; \
\
N_ARITH_SWITCH(arg1); \
\
do_ufn: \
ERROR_EXIT(tos); \
} while (0)
#define N_ARITH_SWITCH(arg) \
switch(arg & 0xFFFF0000){ \
case 0: \
return(S_POSITIVE | arg); \
case 0xFFFF0000: \
return(S_NEGATIVE | (0xFFFF & arg)); \
default:{register LispPTR *fixpp; \
/* arg is FIXP, call createcell */ \
fixpp = (LispPTR *) createcell68k(TYPE_FIXP); \
*((int *)fixpp) = arg; \
return(LADDR_from_68k(fixpp)); \
} \
}
#define N_IARITH_BODY_2(a, tos, op) \
{ \
register int arg1,arg2; \
\
N_IGETNUMBER( a, arg1, do_ufn); \
N_IGETNUMBER( tos, arg2, do_ufn); \
\
arg1 = arg1 op arg2; \
\
N_ARITH_SWITCH(arg1); \
\
do_ufn: ERROR_EXIT(tos); \
}
#define N_ARITH_BODY_1(a, n, op) \
{ \
register int arg1; \
\
N_GETNUMBER( a, arg1, do_ufn); \
\
arg1 = arg1 op n; \
\
N_ARITH_SWITCH(arg1); \
\
do_ufn: ERROR_EXIT(a); \
}
#define N_ARITH_BODY_1_UNSIGNED(a, n, op) \
{ \
register unsigned int arg1; \
\
N_GETNUMBER( a, arg1, do_ufn); \
\
arg1 = arg1 op n; \
\
N_ARITH_SWITCH(arg1); \
\
do_ufn: ERROR_EXIT(a); \
}
#define N_ARITH_BODY_1(a, n, op) \
do { \
register int arg1; \
\
N_GETNUMBER(a, arg1, do_ufn); \
\
arg1 = arg1 op n; \
\
N_ARITH_SWITCH(arg1); \
\
do_ufn: \
ERROR_EXIT(a); \
} while (0)
#define N_ARITH_BODY_1_UNSIGNED(a, n, op) \
do { \
register unsigned int arg1; \
\
N_GETNUMBER(a, arg1, do_ufn); \
\
arg1 = arg1 op n; \
\
N_ARITH_SWITCH(arg1); \
\
do_ufn: \
ERROR_EXIT(a); \
} while (0)
#endif /* ARITH_H */

View File

@@ -1,5 +1,6 @@
#ifndef ARITH2DEFS_H
#define ARITH2DEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_plus2(int tosm1, int tos);
LispPTR N_OP_iplus2(int tosm1, int tos);
LispPTR N_OP_difference(int tosm1, int tos);

View File

@@ -1,5 +1,6 @@
#ifndef ARITH3DEFS_H
#define ARITH3DEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_makenumber(int tosm1, int tos);
LispPTR N_OP_boxiplus(register int a, int tos);
LispPTR N_OP_boxidiff(register int a, int tos);

View File

@@ -2,9 +2,6 @@
#define ARRAY_H 1
/* $Id: array.h,v 1.2 1999/01/03 02:05:53 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-92 Venue. All Rights Reserved. */
@@ -12,6 +9,9 @@
/* */
/************************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */
#include "version.h" /* for BIGVM */
#ifndef BYTESWAP
/********************************/
/* Normal byte-order version */

View File

@@ -1,5 +1,6 @@
#ifndef ARRAY2DEFS_H
#define ARRAY2DEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_misc4(register LispPTR data, register LispPTR base, register LispPTR typenumber,
register LispPTR inx, int alpha);
#endif

View File

@@ -1,4 +1,5 @@
#ifndef ARRAY3DEFS_H
#define ARRAY3DEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_aref1(register LispPTR arrayarg, register LispPTR inx);
#endif

View File

@@ -1,4 +1,5 @@
#ifndef ARRAY4DEFS_H
#define ARRAY4DEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_aset1(register LispPTR data, LispPTR arrayarg, register int inx);
#endif

View File

@@ -1,4 +1,5 @@
#ifndef ARRAY5DEFS_H
#define ARRAY5DEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_aref2(LispPTR arrayarg, LispPTR inx0, LispPTR inx1);
#endif

View File

@@ -1,4 +1,5 @@
#ifndef ARRAY6DEFS_H
#define ARRAY6DEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_aset2(register LispPTR data, LispPTR arrayarg, LispPTR inx0, LispPTR inx1);
#endif

View File

@@ -1,4 +1,5 @@
#ifndef ARRAYDEFS_H
#define ARRAYDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_misc3(LispPTR baseL, LispPTR typenumber, LispPTR inx, int alpha);
#endif

View File

@@ -140,7 +140,7 @@
#define B_src_word_in_postloop src32lbit >= dst32lbit
/* VARIABLES */
#define F_num_loop ((dst32lbit + w) >> 5) - 1
#define F_num_loop (((dst32lbit + w) >> 5) - 1)
#define B_num_loop ((w - dst32rbit - 1) > 0) ? ((w - dst32rbit - 1) >> 5) : 0
#define F_preloop_mask ((dst32lbit) ? (~(0xFFFFFFFF << (32 - dst32lbit))) : 0xFFFFFFFF)
#define F_postloop_mask 0xFFFFFFFF << (31 - dst32rbit)

View File

@@ -1,34 +1,19 @@
#ifndef BBTSUBDEFS_H
#define BBTSUBDEFS_H 1
/***** Don't use PixRect code on 386i for now *****/
/***** -or on any machine that doesn't support it (HP, e.g.) *****/
/********************************************************/
/* */
/* prropstyle is DEFINED when we want to use */
/* pixrect versions of the operations in this */
/* file, and UNDEFINED, when we want to use */
/* Don Charnley's bitblt code to do them. */
/* Don Charnley's bitblt code */
/* */
/********************************************************/
#if defined(SUNDISPLAY) && \
!defined(NOPIXRECT) && \
!defined(NEWBITBLT)
#define prropstyle 1
#endif
#include "lispemul.h" /* for LispPTR, DLword */
void bitbltsub(LispPTR *argv);
LispPTR n_new_cursorin(DLword *baseaddr, int dx, int dy, int w, int h);
LispPTR bitblt_bitmap(LispPTR *args);
LispPTR bitshade_bitmap(LispPTR *args);
#ifndef prropstyle
void bltchar(LispPTR *args);
void newbltchar(LispPTR *args);
#else
LispPTR bltchar(LispPTR *args);
LispPTR newbltchar(LispPTR *args);
#endif
void ccfuncall(unsigned int atom_index, int argnum, int bytenum);
void tedit_bltchar(LispPTR *args);

View File

@@ -1,4 +1,5 @@
#ifndef BINDEFS_H
#define BINDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_bin(register int tos);
#endif

View File

@@ -1,5 +1,6 @@
#ifndef BINDSDEFS_H
#define BINDSDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR *N_OP_bind(register LispPTR *stack_pointer, register LispPTR tos, int byte1, int byte2);
LispPTR *N_OP_unbind(register LispPTR *stack_pointer);
LispPTR *N_OP_dunbind(register LispPTR *stack_pointer, register LispPTR tos);

View File

@@ -10,8 +10,6 @@
*
*/
/************************************************************************/
/* */
/* Copyright 1989, 1990 Venue, Fuji Xerox Co., Ltd, Xerox Corp. */
@@ -20,8 +18,7 @@
/* Agreement dated 18-August-1989 for support of Medley. */
/* */
/************************************************************************/
#include "lispemul.h" /* for DLword */
#define REPLACE 0
#define PAINT 2
@@ -30,16 +27,16 @@
#define ERROR PIX_SRC
#define PixOperation( SRCTYPE, OPERATION ) \
( SRCTYPE == ERASE ? \
(OPERATION == REPLACE ? PIX_NOT(PIX_SRC) : \
(OPERATION == PAINT ? PIX_NOT(PIX_SRC) | PIX_DST : \
(OPERATION == ERASE ? PIX_NOT(PIX_SRC) & PIX_DST : \
(OPERATION == INVERT ? PIX_NOT(PIX_SRC) ^ PIX_DST : ERROR)))) : \
( (SRCTYPE) == ERASE ? \
((OPERATION) == REPLACE ? PIX_NOT(PIX_SRC) : \
((OPERATION) == PAINT ? PIX_NOT(PIX_SRC) | PIX_DST : \
((OPERATION) == ERASE ? PIX_NOT(PIX_SRC) & PIX_DST : \
((OPERATION) == INVERT ? PIX_NOT(PIX_SRC) ^ PIX_DST : ERROR)))) : \
/* SRCTYPE == INPUT */ \
(OPERATION == REPLACE ? PIX_SRC : \
(OPERATION == PAINT ? PIX_SRC | PIX_DST : \
(OPERATION == ERASE ? PIX_SRC & PIX_DST : \
(OPERATION == INVERT ? PIX_SRC ^ PIX_DST : ERROR)))))
((OPERATION) == REPLACE ? PIX_SRC : \
((OPERATION) == PAINT ? PIX_SRC | PIX_DST : \
((OPERATION) == ERASE ? PIX_SRC & PIX_DST : \
((OPERATION) == INVERT ? PIX_SRC ^ PIX_DST : ERROR)))))
extern DLword *EmMouseX68K, *EmMouseY68K;
@@ -57,13 +54,6 @@ extern int DisplayRasterWidth;
#define ShowCursor { (currentdsp->mouse_visible)(IOPage68K->dlmousex, \
IOPage68K->dlmousey); }
#elif defined(SUNDISPLAY) && defined(OLD_CURSOR)
extern struct winlock DisplayLockArea;
#define HideCursor \
ioctl( LispWindowFd, WINLOCKSCREEN, &DisplayLockArea)
#define ShowCursor \
ioctl( LispWindowFd, WINUNLOCKSCREEN, &DisplayLockArea)
#else
extern DLword *EmCursorX68K,*EmCursorY68K;
#define HideCursor { taking_mouse_down();}

View File

@@ -1,5 +1,6 @@
#ifndef BITBLTDEFS_H
#define BITBLTDEFS_H 1
#include "lispemul.h" /* for LispPTR, DLword */
LispPTR N_OP_pilotbitblt(LispPTR pilot_bt_tbl,int tos);
int cursorin(DLword addrhi, DLword addrlo, int w, int h, int backward);
#endif

View File

@@ -1,5 +1,6 @@
#ifndef BLTDEFS_H
#define BLTDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_blt(LispPTR destptr, LispPTR sourceptr, register LispPTR wordcount);
#endif

View File

@@ -1,6 +1,7 @@
#ifndef CAR_CDRDEFS_H
#define CAR_CDRDEFS_H 1
#include "cell.h"
#include "cell.h" /* for ConsCell */
#include "lispemul.h" /* for LispPTR */
LispPTR car(register LispPTR datum);
LispPTR cdr(register LispPTR datum);
LispPTR rplaca(register LispPTR x, register LispPTR y);

View File

@@ -1,144 +0,0 @@
/* $Id: cdrom.h,v 1.2 1999/01/03 02:05:54 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/***********************************
file: cdrom_audio.h
***********************************/
/* function number for CD audio functions */
#define CD_OPEN 1
#define CD_CLOSE 2
#define CD_READ 3
#define CD_DISK_INFO 4
#define CD_TRACK_INFO 5
#define CD_START 6
#define CD_STOP 7
#define CD_PLAY 8
#define CD_Q_READ 9
#define CD_PAUSE 10
#define CD_RESUME 11
#define CD_VOLUME 12
#define CD_EJECT 13
/* function numbers for CD-ROM */
#define CDROM_INIT_DRV 1
#define CDROM_KEN_INT 2
#define CDROM_CHOSAKU 3
#define CDROM_MIKANA 4
#define CDROM_MIKANAT 5
#define CDROM_HYOKI 6
#define CDROM_HYOKIT 7
#define CDROM_EIJI 8
#define CDROM_EIJIT 9
#define CDROM_SUJI 10
#define CDROM_SUJIT 11
#define CDROM_ZENKANA 12
#define CDROM_ZENKANAT 13
#define CDROM_ZENKANJ 14
#define CDROM_ZENKANJT 15
#define CDROM_ZENEIJI 16
#define CDROM_ZENEIJIIT 17
#define CDROM_KOHKANA 18
#define CDROM_KOHKANAT 19
#define CDROM_KOHKANJ 20
#define CDROM_KOHKANJT 21
#define CDROM_KOHEIJI 22
#define CDROM_KOHEIJIT 23
#define CDROM_ZUHAN 24
#define CDROM_JYOKEN 25
#define CDROM_JYOKENT 26
#define CDROM_MENU 27
#define CDROM_AUDIOST 28
#define CDROM_AUDIOED 29
#define CDROM_AUDIOQ_GET 30
#define CDROM_GAIJI 31
#define CDROM_ZENGO 32
#define CDROM_KEIZOKU 33
#define CDROM_SYURYO 34
typedef unsigned char BYTE;
typedef unsigned long DWORD;
/*
extern DWORD CDred_lbn();
extern void CDlbn_red();
extern int CDopen();
extern int CDclose();
extern int CDread();
extern int CDdisk_info();
extern int CDtrack_info();
extern int CDstart();
extern int CDstop();
extern int CDplay();
extern int CDqread();
extern int CDpause();
extern int CDresume();
extern int CDvolume();
extern int CDeject();
*/
#define LispStringToCString(Lisp, C, MaxLen) \
{ \
OneDArray *arrayp; \
char *base, *dp; \
short *sbase; \
int i, length; \
arrayp = (OneDArray *)(Addr68k_from_LADDR(Lisp)); \
length = min(MaxLen, arrayp->totalsize); \
switch(arrayp->typenumber) \
{ \
case THIN_CHAR_TYPENUMBER: \
base = ((char *)(Addr68k_from_LADDR(arrayp->base))) \
+ ((int)(arrayp->offset)); \
strncpy(C, base, length); \
C[length] = '\0'; \
break; \
\
case FAT_CHAR_TYPENUMBER: \
sbase = ((short *)(Addr68k_from_LADDR(arrayp->base))) \
+ ((int)(arrayp->offset)); \
for(i=0,dp=C;i<(length);i++) \
*dp++ = (char)(*sbase++); \
*dp = '\0'; \
break; \
default: \
error("LispStringToCString can not handle\n"); \
} \
}
#define LispStringToCString2(Lisp, C, MaxLen) \
{ \
OneDArray *arrayp; \
char *base, *dp; \
short *sbase; \
int i, length; \
arrayp = (OneDArray *)(Addr68k_from_LADDR(Lisp)); \
length = min(MaxLen, arrayp->totalsize); \
switch(arrayp->typenumber) \
{ \
case THIN_CHAR_TYPENUMBER: \
base = ((char *)(Addr68k_from_LADDR(arrayp->base))) \
+ ((int)(arrayp->offset)); \
strncpy(C, base, length); \
C[length] = '\0'; \
break; \
\
case FAT_CHAR_TYPENUMBER: \
sbase = ((short *)(Addr68k_from_LADDR(arrayp->base))) \
+ ((int)(arrayp->offset)); \
for(i=0,dp=C;i<(length);i++) { \
*dp++ = (char)(*sbase / 256 ); \
*dp++ = (char)(*sbase % 256 ); \
sbase++; \
} \
*dp = '\0'; \
break; \
default: \
error("LispStringToCString can not handle\n"); \
} \
}
#define min(a, b) ((a <= b)?a:b)

View File

@@ -20,6 +20,8 @@
*/
/**********************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */
#include "version.h" /* for BIGVM, NEWCDRCODING, BIGATOMS */
/* CONS CELL (LISTP) definitions moved to lispemulater.h */
@@ -27,7 +29,7 @@
/* On 68010,68000 This Macro does not effect */
#ifdef NEWCDRCODING
#define CARFIELD(x) ((int)x & 0x0fffffff)
#define CARFIELD(x) ((int)(x) & 0x0fffffff)
/* CDR-Codes defs */
#define CDR_ONPAGE 8
@@ -122,7 +124,7 @@ typedef struct freec {
#endif /* BYTESWAP */
#define FREECONS(page, offset) ((freecons *)((DLword *)page + offset))
#define FREECONS(page, offset) ((freecons *)((DLword *)(page) + (offset)))
/************************************************************************/
/* */
@@ -373,20 +375,20 @@ struct cadr_cell {
#else
/* Good for old LITATOMS and new NEW-ATOMs */
#define GetDEFCELL68k(index) \
(((index & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_DEFN_OFFSET) \
#define GetDEFCELL68k(index) \
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_DEFN_OFFSET) \
: GetDEFCELLlitatom(index))
#define GetVALCELL68k(index) \
(((index & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_VALUE_OFFSET) \
#define GetVALCELL68k(index) \
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_VALUE_OFFSET) \
: GetVALCELLlitatom(index))
#define GetPnameCell(index) \
(((index & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PNAME_OFFSET) \
#define GetPnameCell(index) \
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PNAME_OFFSET) \
: GetPnameCelllitatom(index))
#define GetPropCell(index) \
(((index & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PLIST_OFFSET) \
#define GetPropCell(index) \
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PLIST_OFFSET) \
: GetPropCelllitatom(index))
/* Good only for old-style LITATOMS */
@@ -418,6 +420,6 @@ struct cadr_cell {
if (GetTypeNumber(parm) != TYPE_LISTP) { \
ERROR_EXIT(tos); \
} else \
dest = cadr(parm); \
(dest) = cadr(parm); \
}
#endif

View File

@@ -1,5 +1,6 @@
#ifndef CHARDEVDEFS_H
#define CHARDEVDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR CHAR_openfile(LispPTR *args);
LispPTR CHAR_closefile(LispPTR *args);
LispPTR CHAR_ioctl(LispPTR *args);

View File

@@ -1,6 +1,6 @@
#ifndef CONSPAGEDEFS_H
#define CONSPAGEDEFS_H 1
#include "cell.h"
#include "lispemul.h" /* for LispPTR */
struct conspage *next_conspage(void);
LispPTR N_OP_cons(register int cons_car, register int cons_cdr);
LispPTR cons(LispPTR cons_car, LispPTR cons_cdr);

View File

@@ -1,6 +1,7 @@
#ifndef DBGTOOLDEFS_H
#define DBGTOOLDEFS_H 1
#include "stack.h"
#include "lispemul.h" /* for LispPTR, DLword */
#include "stack.h" /* frameex1, fnhead, FX */
LispPTR get_ivar_name(struct frameex1 *fx_addr68k, DLword offset, int *localivar);
LispPTR get_pvar_name(struct frameex1 *fx_addr68k, DLword offset);
LispPTR get_fn_fvar_name(struct fnhead *fnobj, DLword offset);

View File

@@ -2,16 +2,13 @@
#define DEBUG_H 1
/* $Id: debug.h,v 1.2 1999/01/03 02:05:56 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-92 Venue. All Rights Reserved. */
/* Manufactured in the United States of America. */
/* */
/************************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */
#ifndef BYTESWAP
/************************************************/

View File

@@ -1,7 +1,7 @@
#ifndef DEVIF_H
#define DEVIF_H 1
/* $Id: devif.h,v 1.2 1999/01/03 02:05:57 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989, 1990, 1990, 1991, 1992, 1993, 1994, 1995 Venue. */
@@ -9,10 +9,7 @@
/* Manufactured in the United States of America. */
/* */
/************************************************************************/
#ifndef __DEVIF__
#define __DEVIF__ 1
#include "lispemul.h" /* for LispPTR, DLword */
typedef void (*PFV)(); /* Pointer to Function returning Void */
typedef int (*PFI)(); /* Pointer to Function returning Int */
@@ -25,7 +22,6 @@ typedef unsigned long (*PFUL)(); /* Pointer to Function returning an unsigned lo
#include <X11/Xlib.h>
#endif /* XWINDOW */
typedef struct
{
short type; /* Type of event */
@@ -268,14 +264,15 @@ typedef struct
#ifdef XWINDOW
#define DefineCursor(display, window, mycursor) { \
XLOCK;\
XDefineCursor( display, window, *(mycursor) );\
XUNLOCK;\
}
#define DefineCursor(dsp, window, mycursor) \
do { \
XLOCK; \
XDefineCursor((dsp)->display_id, window, *(mycursor) ); \
XUNLOCK(dsp); \
} while (0)
#endif /* XWINDOW */
#define OUTER_SB_WIDTH(dsp) (dsp->ScrollBarWidth + 2*(dsp->InternalBorderWidth))
#define OUTER_SB_WIDTH(dsp) ((dsp)->ScrollBarWidth + 2*((dsp)->InternalBorderWidth))
#ifndef min
#define min( a, b ) (((a)<(b))?(a):(b))
@@ -289,16 +286,8 @@ typedef struct
#define mid(a, b, c) max( min( b, max( a, c ), min( a, max( b, c ))))
#endif /* mid */
#ifndef FALSE
#define FALSE 0
#endif /* FALSE */
#ifndef TRUE
#define TRUE !FALSE
#endif /* TRUE */
#define MINKEYEVENT 2 /* leave 2 words for read,write offsets */
#define NUMBEROFKEYEVENTS 383
#endif /* __DEVIF__ */
#endif

View File

@@ -1,5 +1,6 @@
#ifndef DIRDEFS_H
#define DIRDEFS_H 1
#include "lispemul.h" /* for LispPTR */
#ifdef DOS
int make_old_version(char *old, char *file);
#endif

View File

@@ -1,19 +1,19 @@
#ifndef DISPLAY_H
#define DISPLAY_H 1
/* $Id: display.h,v 1.2 1999/01/03 02:05:57 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-94 Venue. All Rights Reserved. */
/* Manufactured in the United States of America. */
/* */
/************************************************************************/
#include "lispemul.h" /* for DLword */
#include "version.h" /* for UNSIGNED */
#define BCPLDISPLAY stdout
#define CURSORWIDTH 16
#define CURSORHEIGHT 16
@@ -66,8 +66,8 @@ extern DLword *DISP_MAX_Address;
extern DLword *DisplayRegion68k;
#define in_display_segment(baseaddr) \
(((DisplayRegion68k <= baseaddr) && \
(baseaddr <=DISP_MAX_Address)) ? T :NIL )
(((DisplayRegion68k <= (baseaddr)) && \
((baseaddr) <= DISP_MAX_Address)) ? T : NIL )
#endif
#ifdef XWINDOW
@@ -82,3 +82,5 @@ void flush_display_ptrregion(DLword *ybase, UNSIGNED bitoffset, UNSIGNED w, UNSI
#ifdef BYTESWAP
void byte_swapped_displayregion(int x, int y, int w, int h);
#endif
#endif

View File

@@ -1,5 +1,6 @@
#ifndef DLPIDEFS_H
#define DLPIDEFS_H 1
#include <sys/types.h> /* for u_char, u_long */
int setup_dlpi_dev(char *device);
void flush_dlpi(int fd);
int dlpi_devtype(int fd);

View File

@@ -1,4 +1,5 @@
#ifndef DRAWDEFS_H
#define DRAWDEFS_H 1
#include "lispemul.h" /* for LispPTR */
int N_OP_drawline(LispPTR ptr, int curbit, int xsize, int width, int ysize, int op, int delta, int numx, int numy);
#endif

View File

@@ -1,5 +1,6 @@
#ifndef DSKDEFS_H
#define DSKDEFS_H 1
#include "lispemul.h" /* for LispPTR */
#ifdef DOS
void separate_host(char *lfname, char *host, char *drive);
#else

View File

@@ -2,19 +2,14 @@
#define DSPDATA_H 1
/* $Id: dspdata.h,v 1.2 1999/01/03 02:05:58 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-92 Venue. All Rights Reserved. */
/* Manufactured in the United States of America. */
/* */
/************************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */
#include "version.h" /* for BIGVM */
#ifndef BYTESWAP
/******************************************************/

View File

@@ -1,5 +1,6 @@
#ifndef DSPSUBRSDEFS_H
#define DSPSUBRSDEFS_H 1
#include "lispemul.h" /* for LispPTR */
void DSP_dspbout(LispPTR *args);
void DSP_showdisplay(LispPTR *args);
LispPTR DSP_VideoColor(LispPTR *args);

View File

@@ -1,5 +1,6 @@
#ifndef EQFDEFS_H
#define EQFDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_clequal(register int arg1, register int arg2);
LispPTR N_OP_eqlop(register int arg1, register int arg2);
LispPTR N_OP_equal(register int arg1, register int arg2);

View File

@@ -2,17 +2,13 @@
#define ETHER_H 1
/* $Id: ether.h,v 1.2 1999/01/03 02:05:59 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-92 Venue. All Rights Reserved. */
/* Manufactured in the United States of America. */
/* */
/************************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */
#ifndef BYTESWAP

View File

@@ -1,5 +1,6 @@
#ifndef ETHERDEFS_H
#define ETHERDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR ether_suspend(LispPTR args[]);
LispPTR ether_resume(LispPTR args[]);
LispPTR ether_ctrlr(LispPTR args[]);

View File

@@ -1,4 +1,5 @@
#ifndef FINDKEYDEFS_H
#define FINDKEYDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_findkey(register LispPTR tos, register int byte);
#endif

View File

@@ -1,6 +1,6 @@
#ifndef FOREIGNDEFS_H
#define FOREIGNDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR call_c_fn(LispPTR *args);
LispPTR smashing_c_fn(LispPTR *args);
int Mdld_link(LispPTR *args);
@@ -14,5 +14,4 @@ int c_malloc(LispPTR *args);
int c_free(LispPTR *args);
int put_c_basebyte(LispPTR *args);
int get_c_basebyte(LispPTR *args);
#endif /* FOREIGNDEFS_H */

View File

@@ -1,5 +1,6 @@
#ifndef FPDEFS_H
#define FPDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_fplus2(LispPTR parg1, LispPTR parg2);
LispPTR N_OP_fdifference(LispPTR parg1, LispPTR parg2);
LispPTR N_OP_ftimes2(LispPTR parg1, LispPTR parg2);

View File

@@ -1,5 +1,7 @@
#ifndef FVARDEFS_H
#define FVARDEFS_H 1
#include "lispemul.h" /* for LispPTR, DLword */
#include "stack.h" /* for fnhead, frameex1 */
LispPTR N_OP_fvarn(register int n);
LispPTR N_OP_stkscan(LispPTR tos);
LispPTR N_OP_fvar_(register LispPTR tos, register int n);

View File

@@ -1,5 +1,6 @@
#ifndef GCARRAYDEFS_H
#define GCARRAYDEFS_H 1
#include "lispemul.h" /* for LispPTR, DLword */
LispPTR aref1(LispPTR array, int index);
LispPTR find_symbol(const char *char_base, DLword offset, DLword length, LispPTR hashtbl, DLword fatp, DLword lispp);
LispPTR get_package_atom(const char *char_base, DLword charlen, const char *packname, DLword packlen, int externalp);

View File

@@ -1,5 +1,6 @@
#ifndef GCCODEDEFS_H
#define GCCODEDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR map_code_pointers(LispPTR codeblock, short int casep);
LispPTR remimplicitkeyhash(LispPTR item, LispPTR ik_hash_table);
LispPTR reclaimcodeblock(LispPTR codebase);

View File

@@ -2,8 +2,6 @@
#define GCDATA_H 1
/* $Id: gc.h,v 1.3 2001/12/24 01:08:57 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-94 Venue. All Rights Reserved. */
@@ -19,6 +17,9 @@
*/
/**********************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */
#include "version.h" /* for USHORT */
#define ADDREF 0 /* for gclookup routine. */
#define DELREF 1 /* for gclookup routine. */
#define STKREF 2 /* for gclookup routine. */
@@ -47,7 +48,7 @@
/* IncAllocCnt is called only when *Reclaim_cnt_word != NIL */
#define IncAllocCnt(n) {\
if ((*Reclaim_cnt_word -= n) <= S_POSITIVE) {\
if ((*Reclaim_cnt_word -= (n)) <= S_POSITIVE) { \
/* time for GC */\
Irq_Stk_Check = Irq_Stk_End = 0;\
*Reclaim_cnt_word = S_POSITIVE;\
@@ -56,35 +57,35 @@
/* DecAllocCnt only called when *Reclaim_cnt_word != NIL */
#define DecAllocCnt(n) { *Reclaim_cnt_word += n; }
#define DecAllocCnt(n) { *Reclaim_cnt_word += (n); }
#define FreeLink(link) {\
GETGC(link) = 0;\
GETGC(link+1) = GETGC(HTcoll);\
GETGC(HTcoll) = (link - HTcoll);\
#define FreeLink(link) { \
GETGC(link) = 0; \
GETGC((link)+1) = GETGC(HTcoll); \
GETGC(HTcoll) = ((link) - HTcoll); \
}
/* Given the contents of an HTMAIN or HTCOLL entry,
get the link pointer (i.e., turn off the low bit) */
#define GetLinkptr(entry) (entry & 0x0fffffffe)
#define GetLinkptr(entry) ((entry) & 0x0fffffffe)
#define DelLink(link, prev, entry) { \
if (prev != (GCENTRY *)0) \
if ((prev) != (GCENTRY *)0) \
{ \
GETGC((GCENTRY *)prev + 1) = GETGC((GCENTRY *)link + 1); \
GETGC((GCENTRY *)(prev) + 1) = GETGC((GCENTRY *)(link) + 1); \
} \
else \
{ \
GETGC((GCENTRY *)entry) = GETGC((GCENTRY *)link + 1) | 1; \
GETGC((GCENTRY *)(entry)) = GETGC((GCENTRY *)(link) + 1) | 1; \
} \
FreeLink((GCENTRY *)link); \
link = (GCENTRY *)(HTcoll + GetLinkptr(GETGC((GCENTRY *)entry))); \
if (GETGC((GCENTRY *)link + 1) == 0) \
FreeLink((GCENTRY *)(link)); \
(link) = (GCENTRY *)(HTcoll + GetLinkptr(GETGC((GCENTRY *)(entry)))); \
if (GETGC((GCENTRY *)(link) + 1) == 0) \
{ \
GETGC((GCENTRY *)entry) = GETGC((GCENTRY *)link); \
FreeLink((GCENTRY *)link); \
GETGC((GCENTRY *)(entry)) = GETGC((GCENTRY *)(link)); \
FreeLink((GCENTRY *)(link)); \
} \
}
@@ -103,18 +104,18 @@
#define GCLOOKUPV(ptr, case, val) { \
if (RefCntP(ptr)) { \
if (*Reclaim_cnt_word != NIL) \
val = htfind(ptr, case); \
(val) = htfind((ptr), (case)); \
else \
val = rec_htfind(ptr, case); \
} else val = NIL; \
(val) = rec_htfind((ptr), (case)); \
} else (val) = NIL; \
}
#define REC_GCLOOKUP(ptr, case) { if (RefCntP(ptr)) rec_htfind(ptr, case); }
#define REC_GCLOOKUPV(ptr, case, val) { \
if (RefCntP(ptr)) \
val = rec_htfind(ptr, case); \
(val) = rec_htfind((ptr), (case)); \
else \
val = NIL; \
(val) = NIL; \
}
#define FRPLPTR(old , new) { \

View File

@@ -1,5 +1,6 @@
#ifndef GCFINALDEFS_H
#define GCFINALDEFS_H 1
#include "lispemul.h" /* for LispPTR, DLword */
void printarrayblock(LispPTR base);
int integerlength(unsigned int n);
LispPTR findptrsbuffer(LispPTR ptr);

View File

@@ -1,5 +1,6 @@
#ifndef GCHTFINDDEFS_H
#define GCHTFINDDEFS_H 1
#include "lispemul.h" /* for LispPTR, DLword */
void enter_big_reference_count(LispPTR ptr);
void modify_big_reference_count(LispPTR *entry, DLword casep, LispPTR ptr);
LispPTR htfind(LispPTR ptr, int casep);

View File

@@ -1,5 +1,6 @@
#ifndef GCMAIN3DEFS_H
#define GCMAIN3DEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR gcmapscan(void);
LispPTR gcmapscan(void);
LispPTR gcmapunscan(void);

View File

@@ -1,5 +1,6 @@
#ifndef GCOFLOWDEFS_H
#define GCOFLOWDEFS_H 1
#include "lispemul.h" /* for DLword */
DLword gc_handleoverflow(DLword arg);
DLword gcmaptable(DLword arg);
#endif

View File

@@ -1,5 +1,6 @@
#ifndef GCRCELLDEFS_H
#define GCRCELLDEFS_H 1
#include "lispemul.h" /* for LispPTR */
void freelistcell(LispPTR cell);
LispPTR gcreccell(LispPTR cell);
void freelistcell(LispPTR cell);

View File

@@ -1,5 +1,6 @@
#ifndef GCSCANDEFS_H
#define GCSCANDEFS_H 1
#include "lispemul.h" /* for DLword */
DLword gcscan1(register int probe);
DLword gcscan2(register int probe);
#endif

View File

@@ -1,5 +1,6 @@
#ifndef GVAR2DEFS_H
#define GVAR2DEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR N_OP_gvar_(register LispPTR tos, unsigned int atom_index);
LispPTR N_OP_rplptr(register LispPTR tos_m_1, register LispPTR tos, unsigned int alpha);
#endif

View File

@@ -1,5 +1,6 @@
#ifndef HARDRTNDEFS_H
#define HARDRTNDEFS_H 1
#include "stack.h" /* for FX */
int slowreturn(void);
void incusecount68k(FX *fx68k);
#endif

View File

@@ -1,19 +1,16 @@
#ifndef IFPAGE_H
#define IFPAGE_H 1
/* $Id: ifpage.h,v 1.2 1999/01/03 02:06:01 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/************************************************************************/
/* */
/* (C) Copyright 1989-92 Venue. All Rights Reserved. */
/* Manufactured in the United States of America. */
/* */
/************************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */
#include "version.h" /* for BIGVM */
#ifndef IFPAGE_DEFINED
#define IFPAGE_DEFINED (1)
#define IFPAGE_KEYVAL 0x15e3
#ifndef BYTESWAP
#ifdef BIGVM

View File

@@ -1,4 +1,5 @@
#ifndef INETDEFS_H
#define INETDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, LispPTR bufaddr, LispPTR maxlen);
#endif

View File

@@ -1,5 +1,7 @@
#ifndef INITDSPDEFS_H
#define INITDSPDEFS_H 1
#include "lispemul.h" /* for DLword */
#include "version.h" /* for UNSIGNED */
void init_cursor(void);
void set_cursor(void);
void clear_display(void);

View File

@@ -1,5 +1,6 @@
#ifndef INITSOUTDEFS_H
#define INITSOUTDEFS_H 1
#include "lispemul.h" /* for LispPTR */
LispPTR *fixp_value(LispPTR *ptr);
void init_ifpage(int sysout_size);
void init_iopage(void);

1942
inc/inlineC.h Executable file → Normal file

File diff suppressed because it is too large Load Diff

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