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

Compare commits

...

69 Commits

Author SHA1 Message Date
Nick Briggs
e61d0f2e6c Correct {DSK} versioned file cache failures (#526)
A missing check for the applicability of a versioned file cache
caused loadups to fail in the case where the modification timestamp
of a directory and its parent were identical, and the file being
looked up had the same name (when lowercased) as the directory it was
contained within. E.g., looking up TEDIT in library/tedit/ where
the modification times of library and library/tedit were identical.

The inode number of the directory containing the file must be the
same as the inode number of the directory the cache was built from.
2025-01-26 18:38:25 -08:00
Nick Briggs
3c4d9f5393 Modifies LISPFINISH subr to use 2nd argument, if present, for exit status (#525)
Redesign of exit status handling, instead of overloading the FAST flag
of (LOGOUT fast), add an optional 2nd argument, EXITSTATUS.

Retains compatability, with behavior unchanged, between new emulator
and older sysouts which do not pass the second argument to LISPFINISH.

Newer sysouts, which pass the 2nd argument, will continue to work with
older emulators though will not get the exit status set.
2025-01-20 12:24:44 -08:00
Nick Briggs
31bb14b9d7 Modifies Lisp exit subr to permit passing an exit status code (#524)
These changes add (LOGOUT <number>) to the traditional
(LOGOUT) and (LOGOUT T) calls.  If an integer <number> is provided
it will be used as the exit status code, while NIL and T result
in an EXIT_SUCCESS.

If the argument passed is none of NIL, T, or a number, the exit
status code will be a generic EXIT_FAILURE (typically 1).

(LOGOUT) and (LOGOUT T) virtual memory behavior is unaffected.
When a <number> is passed Lisp will exit without saving the
virtual memory state, as is the case for (LOGOUT T), although
this behavior is determined by Lisp rather than the Maiko emulator.
2025-01-16 09:57:01 -08:00
Nick Briggs
f23a43f1a0 Merge pull request #522 from Interlisp/nhb-dspbout-and-showdisplay
Improves behavior of display subrs DSPBOUT and SHOWDISPLAY
2024-12-22 14:10:37 -08:00
Nick Briggs
e251f26816 Improves behavior of display subrs DSPBOUT and SHOWDISPLAY
DSPBOUT is called to output a single character to the "BCPL display",
which is the system text output rather than the bitmapped display.
Under maiko, this is mapped to "stdout". Interlisp-D uses CR as the EOL
character, but that is not appropriate for output to standard output
so CR is translated to LF here.  Standard output is buffered, but there
is no indication of when the output should be flushed, so flush on every
character, since this is a low frequency operation.

SHOWDISPLAY is called to switch between the "BCPL display" and the
bitmapped display.  The current display subsystems are not hooked up
to this subr, but this is a potential place to hook display size changes
in the future, so the code is updated to indicate the parameters passed
in and to set/reset the display initialization state variable.
2024-12-18 12:40:29 -08:00
Nick Briggs
51045b402f Merge pull request #521 from Interlisp/nhb-print-maiko-git-version
Adds MaikoGitVersion to information printed with -info option
2024-12-17 11:22:43 -08:00
Nick Briggs
e6c972a62a Merge pull request #520 from Interlisp/nhb-shadowed-timer-option
Replaces shadowed "-t <interval>" with "-timer <interval>"
2024-12-17 11:22:20 -08:00
Nick Briggs
31ad2f2169 Adds MaikoGitVersion to information printed with -info option 2024-12-16 20:13:05 -08:00
Nick Briggs
66721ccc1c Replaces shadowed "-t <interval>" with "-timer <interval>"
At some point option "-t" was introduced as an abbreviation for
"-title" but "-t" was already in use, though undocumented, for overriding
the timer interval.  This commit changes the command line timer option
to "-timer" and adds "timer" to the options that are processed from
the X11 resources.
2024-12-16 19:59:03 -08:00
Nick Briggs
b13a35e16e Merge pull request #519 from Interlisp/nhb-fix-sdl-display-bitmap-flushing
Fix display bitmap flushing on modification when using SDL display subsystem
2024-12-15 09:25:29 -08:00
Nick Briggs
55d8504060 Corrects interaction of BITMAPBIT with buffered display bitmap
Two problems fixed:
  * only in the case of a software cursor is it necessary to check if
  the bit being altered is within the region of the display covered by
  the cursor, and if it is, the cursor must be hidden before operating
  on the screen bitmap
  * SDL as well as X requires modifications to the screen bitmap be
  flushed to the actual display.
2024-12-14 13:22:44 -08:00
Nick Briggs
ecdab720f2 Missing call to flush_display_lineregion() for SDL in PILOTBITBLT
When the target for a PILOTBITBLT operation is the display bitmap,
and the display bitmap is not memory-mapped from the actual display,
the display subsystem needs to be notified to flush the Lisp display
bitmap to the display so that changes are immediately visible.
The mechanism was present for X11 displays but needed to be implemented
for SDL displays.
2024-12-14 12:57:24 -08:00
Nick Briggs
249efce565 Adds comments regarding init_cursor() purpose in initdsp.c 2024-12-03 15:40:37 -08:00
Nick Briggs
1de2e3e954 Update README.md to be slightly more accurate. 2024-12-02 13:57:24 -08:00
Nick Briggs
a2f62159e9 Merge pull request #518 from Interlisp/cmakelists-ldeinit-solaris
Updates CMakeLists.txt to add Solaris specific OS5 define to ldeint build
2024-11-24 08:08:49 -08:00
Nick Briggs
b2a22a8ac8 Updates CMakeLists.txt to add Solaris specific define to ldeint build 2024-11-24 02:45:50 -05:00
Nick Briggs
89b2b4f866 Merge pull request #517 from Interlisp/improve-cmake-vdate-depends
Improve cmake vdate depends
2024-11-20 12:14:09 -08:00
Nick Briggs
96046c01f0 Adds MaikoGitVersion string to vdate.o
The variable MaikoGitVersion will contain a git revision from the head of the source tree
along with an indication if the status was "dirty".  If git is not present on the system
or the directory that the build happened in was not under git control the version will be
"none".
2024-11-20 11:18:41 -08:00
Nick Briggs
578b26547a Updates CMakeLists.txt to avoid recreating vdate.c if nothing has changed
Creating vdate.c/vdate.o should not be done unconditionally.  It is only
necessary to recreate it if one of the input files has changed.
2024-11-19 15:20:44 -08:00
Nick Briggs
13cbc33da3 Merge pull request #516 from Interlisp/include-file-reorganization
Include file reorganization (part 1)
2024-11-11 10:26:05 -08:00
Nick Briggs
baeec1b957 Renames bitblt.h to bbtmacro.h and updates all uses 2024-11-07 12:39:55 -08:00
Nick Briggs
99550aaa7c Renames return.h to retmacro.h and updates all uses 2024-11-06 13:31:46 -08:00
Nick Briggs
99601ede75 Removes incorrect dependency on osmsg.h and renames it to osmsgprint.h 2024-11-05 14:57:00 -08:00
Nick Briggs
4f3cb4d326 Removes ether.h and merges Lisp interface structs into lsptypes.h 2024-11-05 14:24:36 -08:00
Nick Briggs
b98e1612d1 Removes tty.h and merges #defines (all local) and Lisp interface structs into tty.c 2024-11-05 14:07:16 -08:00
Nick Briggs
fe71946f82 Removes vmemsave.h and merges #defines (all local, mostly unused) into vmemsave.c 2024-11-05 14:02:27 -08:00
Nick Briggs
c332c71a3e Removes unreferenced xscroll.h (dup of xscrolldefs.h) 2024-11-05 13:56:08 -08:00
Nick Briggs
cea720feb2 Remove tabs embedded in strings used for formatting output (#515)
Files gcfinal.c and testool.c both contain literal TAB characters embedded
in printf() format strings in an attempt to align output.
The output formatting depends on the user's simulated tab settings and
therefore may not produce the expected results.

The output formatting is rewritten to make tab characters unnecessary.
2024-10-31 13:36:31 -07:00
Nick Briggs
a3f3775c0a Add missing includes and include file if compiling with COLOR defined.
File rawcolordefs.h was completely missing.
Both llcolordefs.h and rawcolordefs.h must be included in subr.c if -DCOLOR
Make newColorizeFont8() local to rawcolor.c
2024-10-22 10:13:00 -07:00
Nick Briggs
d2d4f18ade Correct error message when debug frame extension limit exceeded 2024-10-22 09:56:06 -07:00
Nick Briggs
c3b7d1707d Switch X11 options to use shared windowTitle and cleanup icon title variable name 2024-10-18 16:21:58 -07:00
Nick Briggs
532731b716 Cleanup options variables, spelling errors, declarations
Options for requested width, height, and pixel scaling and window title can
be shared between display subsystems.

Include correct header for local sdl function definitions rather than
manually duplicating a reference for init_SDL().

Correct a typo in comments on build_lisp_map().
2024-10-18 16:07:46 -07:00
Nick Briggs
29e5b374fe Update CMakeLists.txt to suggested syntax for SDL projects. 2024-10-17 14:26:16 -07:00
Nick Briggs
0c7b1cccd4 Merge pull request #514 from Interlisp/cleanup-USHORT-bitfields
Remove USHORT and direct "unsigned short" uses in struct bitfields
2024-10-15 19:27:13 -07:00
Nick Briggs
fae5c4956e Cleanup in the "version array" handling in the {DSK} device (#513)
* Remove useless VersionArray parameter in maintain_version()

The 2nd argument, FileName *varray, is only ever NULL, so
remove it and simplify the code.

* Remove useless and unused VersionArray cache mechanism

* Simplify setting of file times on file close

The futimes(fd, ...) function allows changing the times of a file with
reference to an open file descriptor which allows us to avoid trying to
find a pathname by which utimes(path, ...) would operate on the inode
corresponding to the fd we have just closed.

* Remove unnecessary temporary variable for VersionArray

* In get_version_array() do not mix array and pointer access to VersionArray

* Improve {DSK} device handling of files with many versions

Somewhat dynamically allocate the version array storage, in chunks of
VERSIONARRAYCHUNKLENGTH (currently 200) allowing for up to
VERSIONARRAYMAXLENGTH (currently 2000) entries before reporting an
error. These numbers could be adjusted, or the limit could be removed.

Sorts the version array in descending order of version number to
improve the performance of check_vless_link() which stats every file
in the version array until it finds one linked to the versionless name
(which should be the highest version).  Sorting, and tracking the
number of active entries, also allows for future optimization of other
operations that currently walk through the version array.

* futimens() appears more widely available than futimes() - so use it

* Rework caching of version array for files

While enumerating the entries in a directory is relatively fast,
on some systems (macOS) stat() of a file is slow.
While there is not general agreement on the name in the stat structure
of the timespec field for the modification time, POSIX specifies it
as "st_mtim", and it is possible to #define st_mtim to be the
system-specific name in "version.h" (macOS: st_mtimespec).

* FindHighestVersion can make use of sorted order of filename/version cache

Since the list of filename and versions is maintained in descending order
by version number (see get_version_array) the highest version is trivially
located at index 0 of the filename array.
2024-10-14 14:15:02 -07:00
Nick Briggs
86ba485c3e Replace "unsigned short" use for bit-fields with DLword
Where bit-fields are defined in a structure that represents a Lisp
DLword object the DLword type is now used as the base type instead of
"unsigned short".
2024-10-14 13:17:26 -07:00
Nick Briggs
b88ea87fa8 Remove USHORT definition and replace uses with DLword
USHORT unnecessarily duplicates the DLword type that represents a
single Lisp 16-bit word.
2024-10-14 12:57:02 -07:00
Nick Briggs
91e0cea9d5 Fix #1826 - emulator crash when too many versions of a file in a directory (#512)
* Fix #1826 - emulator crash  when too many versions of a file in a directory

This is a preliminary fix to avoid a system crash (bus error/seg fault) when
operating on a file with too many versions present in the directory.

Initial fix is to report an error (EIO, SIMPLE-DEVICE-ERROR) when doing
an operation that would result in an out-of-bounds access in the emulator.

* Add comment noting that the DOS get_version_array code comes first.
2024-09-16 17:47:48 -07:00
Nick Briggs
4ad14fa832 Allow choice of foreground and background colors for Medley X11/SDL display (#511)
* Allow choice of foreground and background colors for Medley X11 display

lde/ldex Accepts -fg/-foreground <color> and -bg/-background <color>,
or the corresponding X resources ldex*foreground and ldex*background
to specify the colors that will represent the monochrome Medley display
pixels.

* Extend screen foreground/background color selection to SDL display subsystem (ldesdl)
2024-09-09 12:56:18 -07:00
Nick Briggs
aa4df518a1 Release 201 corrections (#510)
* Fix compilation for maiko version 201

Version 201 does not have BIGVM, so SWA_FNHEAD requires swapx
which is defined in byteswapdefs.h

* Fix compilation for maiko version 201

Version 201 did not have NEWCDRCODING, so the implementation of
N_OP_rplcons requires definitions from gcdata.h and address.h

* Set up makeright etc. to allow for easier compilation of alternate versions

The makeright script and the makefile-* slices it depends are modified
to allow easily specifying the RELEASE version number of the Maiko emulator
to be built.  The default version remains 351, but can be changed with e.g.

RELEASE=201 ./makeright x

The object directories and executables are NOT named with the version.

* Remove unnecessary include of gcdata.h from bbtsub.c

* Users of gcdata.h should include gchtfinddefs.h explicitly if they use gcdata.h macros

* Correct modify_big_reference_count entry parameter type to reflect dependence on GCENTRY size differences between releases

* Add MAIKO_RELEASE to CMake options for building
2024-09-01 16:26:30 -07:00
Nick Briggs
5c9b5ef4ec Ignore mouse motion events when the window does not have keyboard focus (#509) 2024-08-21 20:59:37 -07:00
Nick Briggs
3ef7d2d68e Fixing mismatched type declaration avoids cast from DLword* to short* 2024-05-29 16:52:29 -07:00
Nick Briggs
68c74e4e79 Add support for setting cursor color to ldex (X11 display) (#508)
The cursor (foreground) color can be set with the
    -cursorColor x11-color-spec
option to ldex or any front-end that passes the options through to ldex.
For example:
     lde ... -cursorColor red
     lde ... -cursorColor '#A020F0'
     ./run-medley -cursorColor RED -g 1200x700 -sc 1200x700 -noscroll

Alternatively, the color may be specified with the ldex*cursorColor resource
(in ~/.Xresources, or other such X11 resource databases that are loaded by
the X11 server)

The command line option will override the X11 resource option.
2024-05-23 09:52:22 -07:00
Nick Briggs
c765ca5cc8 Update SDL dependent code and makefile segments to prepare for SDL3 (#497)
* Update SDL dependent code and makefile segments to prepare for SDL3

Many APIs have changed between SDL2 and SDL3.  This update adds
preprocessor conditionals to adapt the Maiko SDL code to allow selection of
the SDL major version (2 or 3) from the -DSDL=n define.

The SDL3 implementation is currently available as a preview release, 3.1.0, at
   https://github.com/libsdl-org/SDL/releases/tag/prerelease-3.1.0

* Add updates for makefile-haiku.x86_64-sdl to prepare for SDL3

* Allow makeright to accept sdl3 as display type to ease SDL3 experiments

* Update CMakeLists.txt for SDL3 library

 * Replaces configuration option -DMAIKO_DISPLAY_SDL=ON/OFF with
   -DMAIKO_DISPLAY_SDL=OFF/2/3
 * Replaces PUBLIC definitions with PRIVATE definitions on targets since
   we are not exporting definitions outside this local compilation
 * Update messages to indicate which version of SDL is being configured
 * Add fixup for SDL3.xcframework on macOS to compensate for missing
   RPATH specification (CMake issue 25998)
2024-05-21 12:07:13 -07:00
Nick Briggs
3ac46abc5c Implement the "B hexaddr" command to print array block (#506)
The array block printer was already documented, but not implemented.
Clean up with IncludeWhatYouUse, to document why particular includes
are present.
2024-05-20 15:12:38 -07:00
Nick Briggs
613ffd8aca Update .gitignore to ignore 386-sdl build directory (#507) 2024-05-20 15:10:38 -07:00
Nick Briggs
db5d5a31e7 Add -rpath /Library/Frameworks to accommodate newer macOS releases (#505)
On or before macOS Ventura's release, defaulting the @rpath to
include /Library/Frameworks stopped.  Since we expect the SDL2
framework to be installed there we must add a -rpath option.
This should be backwards compatible with older macOS releases.
(verified on Catalina but nothing older)
2024-05-19 23:39:00 -07:00
Nick Briggs
4becc6ad93 Not all systems define MAP_FAILED for the return value from failing mmap() (#502) 2024-05-13 15:37:53 -07:00
Frank Halasz
40a1a8dcd2 Rationalize the processing of command line args for the sysout. Fixes Issue#1703 (#503)
* Rationalize the processing of command line args for the sysout.  Remove most of the redundancy between what is done for sysout arg processing in xrdopt.c versus main.c.  Move all of the decision making about what sysout_name to use until all args have been processed (both in xrdpopt and main).  This is done in main, where the prioritization and checking is done in one place rather than spread in several places in xrdopt and main.     //  Order of priority:
628   //    1. Value of -sysout command line arg
629   //    2. Value of the first command line arg
630   //    3. Value of LDESRCESYSOUT env variable
631   //    4. Value of LDESOURCESYSOUT env variable
632   //    5. Value as determined by X resource manager, if any
633   //    6. Value of /home/frank/lisp.virtualmem (or lisp.vm for DOS)

* In main.c moved check for sysout as first arg to before the call to read_Xoption.  This will ensure that we always check the 'true' first argument even when read_Xoption modifies argv.
2024-05-13 15:36:33 -07:00
Frank Halasz
fd16058ca7 Merge pull request #504 from Interlisp/fgh_fix-cygwin-github-build
Fix Cygwin github builds:  Issue#1705
2024-05-10 14:31:50 -07:00
Frank Halasz
1426386830 In buildRelease.yml, change site for cygwin download to https:/mirrors.kernel.org since old gatech site is now deprecated. 2024-05-10 14:19:12 -07:00
Nick Briggs
de361e0258 IPv4 host network addresses convert with htonl() not htons() (#501) 2024-05-06 22:57:39 -07:00
Nick Briggs
3979cdd60d Update config.guess, config.sub to current GNU versions (#500) 2024-05-06 22:57:16 -07:00
Frank Halasz
6c6b01f99c Merge pull request #499 from Interlisp/fgh_buildRelease_MacOS_fix
In buildRelease workflow, MacOS job - fix issue with uninstall of casks that have not actually been installed
2024-05-06 16:41:23 -07:00
Frank Halasz
143c0f67cf In buildRelease workflow, MacOS job - fix issue with uninstall of casks that have not actually been installed. result of changes to github runner in MacOS-lastest 2024-05-06 16:12:59 -07:00
Nick Briggs
c391641691 Eliminate warnings for ignored fprintf() result when printing messages to stderr 2024-04-24 11:41:46 -07:00
Nick Briggs
38862ddb08 Ignore snprintf() result where OK to do so, convert sprintf() to snprintf() 2024-04-23 21:49:38 -07:00
Nick Briggs
8d34f0869a Problem with directory caching, #1661, disable until it is solved. 2024-04-13 11:12:10 -07:00
Anarchos
e2e2c7e394 Haiku OS port (#485)
* Haiku OS port
* haiku with X11 backend
* haiku has stpncpy
* Haiku is not Linux.
* X not stable enough on Haiku
* Haiku : settimeofday is a no-op
* Haiku : no need to define settimeofday at all (pointed by nbriggs)

---------

Signed-off-by: Anarchos <sylvain_kerjean@hotmail.com>
2024-04-10 20:14:46 -07:00
Nick Briggs
2e86450fad Improve the file lookup performance for {DSK} files (#498)
The directory caching for file lookup on {DSK} was disabled due to a
bug in SunOS - this is no longer relevant, so the cache can be reenabled.
2024-04-03 21:10:54 -07:00
Nick Briggs
400ccab637 exit with non-zero status if unable to open sysout or... (#496) 2024-03-31 09:55:26 -07:00
Nick Briggs
95f4ac8167 Update UNIX-GETPARM to return values for OSNAME and ARCH (#495)
Calls to UNIX-GETPARM with argument "OSNAME" or "ARCH" now return
values derived from the compile-time settings in inc/maiko/platform.h

The current return values are
OSNAME:
    "macOS"
    "Cygwin"
    "DragonFly BSD"
    "FreeBSD"
    "Linux"
    "NetBSD"
    "OpenBSD"
    "AmigaOS 3"
    "Solaris"
    "Windows"
    "Emscripten"
ARCH:
    "WebAssembly"
    "x86_64"
    "arm"
    "arm64"
    "x86"
    "PowerPC"
    "RISC-V"
    "SPARC"
    "Motorola68K"
2024-03-25 15:26:31 -07:00
Nick Briggs
40f6488ee4 Merge pull request #494 from Interlisp/color-code-cleanup
Color code cleanup
2024-03-19 21:09:44 -07:00
Nick Briggs
3c3fc94246 Clean up rawcolor code so it at least compiles without error 2024-03-19 09:10:29 -07:00
Nick Briggs
559ba779b2 Missing definition for taking_mouse_up() 2024-03-19 09:09:36 -07:00
Nick Briggs
afd6cf4b80 Merge pull request #493 from Interlisp/stack-debug-01
Cleanup of stack-related code
2024-03-18 16:30:06 -07:00
Nick Briggs
68baf6fb30 Use ...FromStackOffset functions where appropriate
Rather than adding/or-ing the STK_OFFSET constant into a stack offset
to convert it to a pointer in general Lisp memory and then converting
from that to a native address... use the functions specifically
present to do those conversions with embedded checks on stack offset
validity.
2024-03-07 10:45:38 -08:00
Nick Briggs
939c23c03b Additional check for bad stack offset calculation
Pointer difference calculations on an inappropriate stack pointer could
result in a negative offset, not just an offset that is too large to fit
in 16 bits.  Complain if either case occurs.
2024-03-07 10:01:19 -08:00
Nick Briggs
55591557b6 Clarify the expected size/packing of bit fields in stack structures
While packing is not guaranteed, and most compilers will combine
adjacent bit fields regardless of the alignment requirements of the
datatype that is being divided, here we can be clearer that we
expect packing into 16-bit fields and we do not require (and must not
have) 32-bit alignment of the collections of bitfields.
2024-03-07 09:30:59 -08:00
133 changed files with 3191 additions and 1718 deletions

View File

@@ -290,13 +290,13 @@ jobs:
# Uninstall exisitng X11 stuff preconfigured on runner then install correct X11 dependencies
- name: Unistall X components already on the runner
run: |
brew uninstall --ignore-dependencies libxft
brew uninstall --ignore-dependencies libxrender
brew uninstall --ignore-dependencies libxext
brew uninstall --ignore-dependencies libx11
brew uninstall --ignore-dependencies xorgproto
brew uninstall --ignore-dependencies libxdmcp
brew uninstall --ignore-dependencies libxau
brew uninstall --ignore-dependencies --force libxft
brew uninstall --ignore-dependencies --force libxrender
brew uninstall --ignore-dependencies --force libxext
brew uninstall --ignore-dependencies --force libx11
brew uninstall --ignore-dependencies --force xorgproto
brew uninstall --ignore-dependencies --force libxdmcp
brew uninstall --ignore-dependencies --force libxau
- name: Install X11 dependencies on MacOS
env:
@@ -412,7 +412,7 @@ jobs:
run: |
wget https://cygwin.com/setup-x86_64.exe -OutFile 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", "http://www.gtlib.gatech.edu/pub/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", "https://mirrors.kernel.org/sourceware/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'
# Retrieve SDL2 and install in cygwin

1
.gitignore vendored
View File

@@ -10,6 +10,7 @@ cmake-build-*/**
.idea/
*.m68k-x/**
*.m68k/**
*.386-sdl/**
*.386-x/**
*.386/**
*.ppc-x/**

View File

@@ -37,16 +37,21 @@ IF(NEED_LIB_M)
SET(MAIKO_LIBRARIES m)
ENDIF()
SET (MAIKO_RELEASE 351 CACHE STRING "Release version to build. Release: 115, 200, 201, 210, 300, 350, 351")
SET_PROPERTY(CACHE MAIKO_RELEASE PROPERTY STRINGS 115 200 201 210 300 350 351)
MESSAGE("-- Configured for release ${MAIKO_RELEASE}")
SET(MAIKO_DEFINITIONS
"-DRELEASE=351"
"-DRELEASE=${MAIKO_RELEASE}"
)
SET(MAIKO_INIT_DEFINITIONS
"-DRELEASE=351" "-DINIT" "-DNOVERSION"
"-DRELEASE=${MAIKO_RELEASE}" "-DINIT" "-DNOVERSION"
)
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
OPTION(MAIKO_DISPLAY_SDL "Use SDL for display." OFF)
SET(MAIKO_DISPLAY_SDL OFF CACHE STRING "Use SDL for display. Version: OFF, 2, 3")
SET_PROPERTY(CACHE MAIKO_DISPLAY_SDL PROPERTY STRINGS OFF 2 3)
IF(MAIKO_DISPLAY_X11)
FIND_PACKAGE(X11 REQUIRED)
@@ -75,25 +80,39 @@ IF(MAIKO_DISPLAY_X11)
inc/xmkicondefs.h
inc/xrdoptdefs.h
inc/xscrolldefs.h
inc/xscroll.h
inc/xwinmandefs.h
)
MESSAGE("-- Configured for X11 display")
ENDIF()
IF(MAIKO_DISPLAY_SDL)
FIND_PACKAGE(SDL2 REQUIRED)
IF(MAIKO_DISPLAY_SDL STREQUAL "2")
FIND_PACKAGE(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)
SET(MAIKO_DISPLAY_SDL_DEFINITIONS
"-DSDL"
"-DSDL=2"
)
SET(MAIKO_DISPLAY_SDL_LIBRARIES ${SDL2_LIBRARIES})
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS SDL2::Headers)
SET(MAIKO_DISPLAY_SDL_LIBRARIES SDL2::SDL2)
SET(MAIKO_DISPLAY_SDL_SRCS
src/sdl.c
)
SET(MAIKO_DISPLAY_SDL_HDRS
inc/sdldefs.h
)
MESSAGE("-- Configured for SDL display")
MESSAGE("-- Configured for SDL2 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()
# according to: https://cmake.org/pipermail/cmake/2016-October/064342.html
@@ -122,6 +141,9 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
LIST(APPEND MAIKO_DEFINITIONS
"-DOS5"
)
LIST(APPEND MAIKO_INIT_DEFINITIONS
"-DOS5"
)
ENDIF()
IF(APPLE)
@@ -272,7 +294,7 @@ SET(MAIKO_HDRS
inc/bindefs.h
inc/bindsdefs.h
inc/bitbltdefs.h
inc/bitblt.h
inc/bbtmacro.h
inc/bltdefs.h
inc/byteswapdefs.h
inc/car-cdrdefs.h
@@ -297,7 +319,6 @@ SET(MAIKO_HDRS
inc/emlglob.h
inc/eqfdefs.h
inc/etherdefs.h
inc/ether.h
inc/fast_dsp.h
inc/findkeydefs.h
inc/foreigndefs.h
@@ -376,14 +397,14 @@ SET(MAIKO_HDRS
inc/opcodes.h
inc/os.h
inc/osmsgdefs.h
inc/osmsg.h
inc/osmsgprint.h
inc/perrnodefs.h
inc/picture.h
inc/pilotbbt.h
inc/print.h
inc/rawrs232c.h
inc/retmacro.h
inc/returndefs.h
inc/return.h
inc/rpcdefs.h
inc/rplconsdefs.h
inc/rs232c.h
@@ -401,7 +422,6 @@ SET(MAIKO_HDRS
inc/tos1defs.h
inc/tosfns.h
inc/tosret.h
inc/tty.h
inc/typeofdefs.h
inc/ubf1defs.h
inc/ubf2defs.h
@@ -417,34 +437,33 @@ SET(MAIKO_HDRS
inc/vars3defs.h
inc/version.h
inc/vmemsavedefs.h
inc/vmemsave.h
inc/xcdefs.h
inc/z2defs.h
)
ADD_CUSTOM_TARGET(gen-vdate
ADD_CUSTOM_COMMAND(OUTPUT vdate.c
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bin/mkvdate > vdate.c
BYPRODUCTS vdate.c
DEPENDS ${MAIKO_SRCS} ${MAIKO_HDRS} ${MAIKO_DISPLAY_X11_SRCS} ${MAIKO_DISPLAY_X11_HDRS} ${MAIKO_DISPLAY_SDL_SRCS} ${MAIKO_DISPLAY_SDL_HDRS}
)
ADD_EXECUTABLE(lde src/ldeboot.c src/unixfork.c)
TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(lde PUBLIC inc)
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(lde PRIVATE inc)
IF(MAIKO_DISPLAY_X11)
# Tell it that the X11 launcher is available.
TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DISPLAY_X11_DEFINITIONS})
# This is needed so that it can call XOpenDisplay.
TARGET_LINK_LIBRARIES(lde X11::X11)
ENDIF()
IF(MAIKO_DISPLAY_SDL)
# Tell it that the SDL launcher is available.
TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_SDL_DEFINITIONS})
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DISPLAY_SDL_DEFINITIONS})
ENDIF()
ADD_EXECUTABLE(ldeether src/ldeether.c src/dlpi.c)
TARGET_COMPILE_DEFINITIONS(ldeether PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldeether PUBLIC inc)
TARGET_COMPILE_DEFINITIONS(ldeether PRIVATE ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldeether PRIVATE inc)
IF(MAIKO_DISPLAY_X11)
ADD_EXECUTABLE(ldex
@@ -455,8 +474,8 @@ IF(MAIKO_DISPLAY_X11)
${MAIKO_DISPLAY_X11_SRCS}
${MAIKO_DISPLAY_X11_HDRS}
)
TARGET_COMPILE_DEFINITIONS(ldex PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldex PUBLIC inc)
TARGET_COMPILE_DEFINITIONS(ldex PRIVATE ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldex PRIVATE inc)
TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
ADD_EXECUTABLE(ldeinit
@@ -467,8 +486,8 @@ IF(MAIKO_DISPLAY_X11)
${MAIKO_DISPLAY_X11_SRCS}
${MAIKO_DISPLAY_X11_HDRS}
)
TARGET_COMPILE_DEFINITIONS(ldeinit PUBLIC ${MAIKO_INIT_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldeinit PUBLIC inc)
TARGET_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()
@@ -481,20 +500,32 @@ IF(MAIKO_DISPLAY_SDL)
${MAIKO_DISPLAY_SDL_SRCS}
${MAIKO_DISPLAY_SDL_HDRS}
)
TARGET_COMPILE_DEFINITIONS(ldesdl PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_SDL_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldesdl PUBLIC inc)
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE ${SDL2_INCLUDE_DIRS})
TARGET_COMPILE_DEFINITIONS(ldesdl PRIVATE ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_SDL_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE inc)
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE ${MAIKO_DISPLAY_SDL_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})
ENDIF()
ADD_EXECUTABLE(mkvdate src/mkvdate.c)
TARGET_COMPILE_DEFINITIONS(mkvdate PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(mkvdate PUBLIC inc)
TARGET_COMPILE_DEFINITIONS(mkvdate PRIVATE ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(mkvdate PRIVATE inc)
ADD_EXECUTABLE(setsout src/setsout.c src/byteswap.c)
TARGET_COMPILE_DEFINITIONS(setsout PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(setsout PUBLIC inc)
TARGET_COMPILE_DEFINITIONS(setsout PRIVATE ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(setsout PRIVATE inc)
ADD_EXECUTABLE(tstsout src/tstsout.c src/byteswap.c)
TARGET_COMPILE_DEFINITIONS(tstsout PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(tstsout PUBLIC inc)
TARGET_COMPILE_DEFINITIONS(tstsout PRIVATE ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(tstsout PRIVATE inc)

View File

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

1239
bin/config.guess vendored

File diff suppressed because it is too large Load Diff

310
bin/config.sub vendored
View File

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

View File

@@ -5,11 +5,17 @@ CC = gcc -m64 $(GCC_CFLAGS) -I/usr/local/include
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 = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -lm -L/usr/local/lib -lSDL2
#

View File

@@ -18,7 +18,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -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
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
-DRELEASE=351 # -DSTACKCHECK -DFSBCHECK -DPCTRACE
-DRELEASE=$(RELEASE) # -DSTACKCHECK -DFSBCHECK -DPCTRACE
LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -4,14 +4,21 @@ CC = clang -target aarch64-apple-darwin $(CLANG_CFLAGS)
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 = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -F /Library/Frameworks -framework SDL2
LDFLAGS = -rpath /Library/Frameworks -F /Library/Frameworks -framework SDL2
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/

View File

@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -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
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
-DRELEASE=351
-DRELEASE=$(RELEASE)
LDFLAGS = -L/usr/X11/lib -lX11 -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lm

View File

@@ -2,16 +2,22 @@
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
SDLFLAGS = -DSDL -F /Library/Frameworks
SDLFLAGS = -DSDL=2 -F /Library/Frameworks
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -F /Library/Frameworks -framework SDL2
LDFLAGS = -rpath /Library/Frameworks -F /Library/Frameworks -framework SDL2
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/

View File

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

View File

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

View File

@@ -4,11 +4,17 @@ CC = emcc $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
XFLAGS = -DSDL -sUSE_SDL=2
#
# 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=351 -DMAIKO_ENABLE_NETHUB
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DMAIKO_ENABLE_NETHUB
MEDLEY?=../../medley
SYSOUT?=$(MEDLEY)/loadups/full.sysout

View File

@@ -4,11 +4,17 @@ CC = emcc $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
XFLAGS = -DSDL -sUSE_SDL=2
#
# 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=351 -DMAIKO_ENABLE_NETHUB
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DMAIKO_ENABLE_NETHUB
MEDLEY?=../../medley
SYSOUT?=$(MEDLEY)/loadups/full.sysout

View File

@@ -4,11 +4,17 @@ CC = clang -m32 $(CLANG_CFLAGS)
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 = -O2 -g
DFLAGS = $(SDLFLAGS) -DRELEASE=351
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -L/usr/local/lib -lSDL2 -lm
LDELDFLAGS =

View File

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

View File

@@ -4,11 +4,17 @@ CC = clang -m64 $(CLANG_CFLAGS)
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 = -O2 -g
DFLAGS = $(SDLFLAGS) -DRELEASE=351
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -L/usr/local/lib -lSDL2 -lm
LDELDFLAGS =

View File

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

View File

@@ -4,11 +4,17 @@ CC = clang -m64 $(CLANG_CFLAGS)
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 = -O2 -g
DFLAGS = $(SDLFLAGS) -DRELEASE=351
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -L/usr/local/lib -lSDL2 -lm
LDELDFLAGS =

View File

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

View File

@@ -0,0 +1,25 @@
# 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 = -O0 -g
DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -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 = -O0 -g3
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -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 = -O0 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -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 = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -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 = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -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 = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -19,7 +19,7 @@ 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
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -19,7 +19,7 @@ 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
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -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 = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm

View File

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

View File

@@ -5,11 +5,17 @@ CC = gcc -m32 $(GCC_CFLAGS)
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 = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -lm -lSDL2
LDELDFLAGS =

View File

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

View File

@@ -5,11 +5,17 @@ CC = gcc $(GCC_CFLAGS)
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 = -O2 -g3
DFLAGS = $(SDLFLAGS) -DRELEASE=351
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -lSDL2 -lm
LDELDFLAGS =

View File

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

View File

@@ -5,11 +5,17 @@ CC = gcc $(GCC_CFLAGS)
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 = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -lm -lSDL2
LDELDFLAGS =

View File

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

View File

@@ -5,11 +5,17 @@ CC = gcc -m64 $(GCC_CFLAGS)
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 = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -lm -lSDL2
LDELDFLAGS =

View File

@@ -18,7 +18,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -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 = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=351
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE)
LDFLAGS = -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) \
$(DEBUGFLAGS) \
-DOS5 \
-DRELEASE=351
-DRELEASE=$(RELEASE)
LDFLAGS = -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) \
$(DEBUGFLAGS) \
$(MACHINEFLAGS) \
-DRELEASE=351
-DRELEASE=$(RELEASE)
LDFLAGS = -lX11 -lc -lm -lsocket -lnsl
LDELDFLAGS = -lX11 -lc -lm -lsocket -lnsl

View File

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

View File

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

View File

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

View File

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

View File

@@ -12,6 +12,7 @@ case "$os" in
*-*-openbsd*) echo openbsd ;;
*-*-freebsd*) echo freebsd ;;
*-*-cygwin*) echo cygwin ;;
*-*-haiku*) echo haiku ;;
esac
### Don't leave the variable set.
unset os

View File

@@ -63,8 +63,8 @@ static inline DLword StackOffsetFromNative(void *SAddr)
{
/* Stack offsets are expressed as an offset in DLwords from the stack base */
ptrdiff_t hoffset = (DLword *)SAddr - Stackspace;
if (hoffset > 0xffff) {
printf("Stack offset is too large: 0x%tx\n", hoffset);
if (hoffset > 0xffff || hoffset < 0) {
printf("Stack offset is out of range: 0x%tx\n", hoffset);
}
return (DLword)hoffset;
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -4,6 +4,7 @@
void process_io_events(void);
void kb_trans(u_short keycode, u_short upflg);
void taking_mouse_down(void);
void taking_mouse_up(int newx, int newy);
void copy_cursor(int newx, int newy);
void cursor_hidden_bitmap(int x, int y);
#endif

View File

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

View File

@@ -499,7 +499,8 @@ do { \
#define MAXVERSION 999999999
#define LASTVERSIONARRAY ((unsigned) -1)
#define VERSIONARRAYLENGTH 200
#define VERSIONARRAYCHUNKLENGTH 200
#define VERSIONARRAYMAXLENGTH 2000
#define NoFileP(varray) \
(((varray)->version_no == LASTVERSIONARRAY)? 1 : 0)

View File

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

View File

@@ -166,6 +166,12 @@
# define MAIKO_ARCH_DETECTED 1
#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__
* Older GNU C (ca. 4.0.1) provides __BIG_ENDIAN__/__LITTLE_ENDIAN__
*/

View File

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

View File

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

8
inc/rawcolordefs.h Normal file
View File

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

View File

@@ -1,12 +1,12 @@
#ifndef RETURN_H
#define RETURN_H 1
#ifndef RETMACRO_H
#define RETMACRO_H 1
/* $Id: return.h,v 1.2 1999/01/03 02:06:22 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
/**************************************************************/
/*
File Name : return.h
File Name : retmacro.h (was return.h)
Desc. : Macros for return,contextsw
Written by : Takeshi Shimizu
@@ -37,7 +37,7 @@
#define FastRetCALL \
do { \
/* Get IVar from Returnee's IVAR offset slot(BF) */ \
IVar = NativeAligned2FromLAddr(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
IVar = NativeAligned2FromStackOffset(GETWORD((DLword *)CURRENTFX - 1)); \
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \
FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \
/* Get PC from Returnee's pc slot in FX */ \
@@ -47,7 +47,7 @@
#define FastRetCALL \
do { \
/* Get IVar from Returnee's IVAR offset slot(BF) */ \
IVar = NativeAligned2FromLAddr(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
IVar = NativeAligned2FromStackOffset(GETWORD((DLword *)CURRENTFX - 1)); \
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \
FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \
/* Get PC from Returnee's pc slot in FX */ \
@@ -111,4 +111,4 @@
S_CHECK( EndSTKP > CurrentStackPTR, \
"End of stack isn't beyond current stk pointer."); \
} while (0)
#endif /* RETURN_H */
#endif /* RETMACRO_H */

View File

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

View File

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

View File

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

View File

@@ -227,9 +227,6 @@ typedef unsigned char u_char;
typedef unsigned long u_int;
typedef unsigned short u_short;
#undef UNALIGNED_FETCH_OK
typedef unsigned USHORT;
#else
typedef unsigned short USHORT;
#endif /* DOS */
/****************************************************************/
@@ -237,6 +234,14 @@ typedef unsigned short USHORT;
/* --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 */

View File

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

View File

@@ -4,5 +4,5 @@
int lispstringP(LispPTR Lisp);
LispPTR vmem_save(char *sysout_file_name);
LispPTR vmem_save0(LispPTR *args);
void lisp_finish(void);
void lisp_finish(int exit_status);
#endif

View File

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

View File

@@ -47,9 +47,8 @@
#include "address.h"
#include "arith.h"
#include "stack.h"
#include "return.h"
#include "retmacro.h"
#include "cell.h"
#include "gcdata.h"
#include "bbtsubdefs.h"
#include "car-cdrdefs.h"
@@ -61,7 +60,7 @@
#include "returndefs.h"
#include "bb.h"
#include "bitblt.h"
#include "bbtmacro.h"
#include "pilotbbt.h"
#include "dspdata.h"
#include "display.h"
@@ -1664,7 +1663,7 @@ void ccfuncall(unsigned int atom_index, int argnum, int bytenum)
CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */;
/* Setup IVar */ /* XXX: is it really only 2-byte aligned? */
IVar = NativeAligned2FromLAddr((((LispPTR)(CURRENTFX->nextblock)) | STK_OFFSET));
IVar = NativeAligned2FromStackOffset(CURRENTFX->nextblock);
/* Set PC to the Next Instruction and save into FX */
CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

424
src/dsk.c
View File

@@ -13,7 +13,7 @@
#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 <stddef.h> // for ptrdiff_t
#include <stdlib.h> // for strtoul
#include <stdlib.h> // for strtoul, qsort
#include <string.h> // for strcpy, strcmp, strlen, strncpy, strchr
#include <sys/stat.h> // for stat, fstat, mkdir, S_ISREG, st_atime, chmod
#include <sys/types.h> // for ino_t, time_t, off_t
@@ -38,12 +38,13 @@
#include <pwd.h> // for getpwuid, passwd
#include <sys/param.h> // for MAXPATHLEN
#include <sys/statvfs.h> // for statvfs
#include <sys/time.h> // for timeval, utimes
#include <sys/time.h> // for timeval, utimes, futimens
#else
#include <direct.h>
#include <dos.h>
#include <time.h>
#include <io.h>
#include <search.h> // for qsort(?)
#define MAXPATHLEN _MAX_PATH
#define MAXNAMLEM _MAX_PATH
#define alarm(x) 0
@@ -57,25 +58,32 @@ typedef struct filename_entry {
unsigned version_no;
} FileName;
typedef struct current_varray {
char path[MAXPATHLEN]; /* pathname of directory */
char file[MAXPATHLEN]; /* file name (down cased name) */
time_t mtime;
} CurrentVArray;
static FileName VersionArray[VERSIONARRAYLENGTH];
static CurrentVArray VArrayInfo;
/*
* VA, a structure representing the file names and version numbers
* that were present in a directory at a particular moment in time.
* The {DSK} device presents a case-insensitive (to Medley) but
* case-preserving (to the host) file system. The VA (Version Array)
*/
static struct {
char name[MAXPATHLEN]; /* lowercase unversioned file name */
ino_t dir_ino; /* inode of the directory */
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 make_directory(char *dir);
static int maintain_version(char *file, FileName *varray, int forcep);
static int maintain_version(char *file, 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 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_oldest(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_version_array(char *dir, char *file, FileName *varray, CurrentVArray *cache);
static int get_version_array(char *dir, char *file);
#ifdef DOS
static void separate_drive(char *lfname, char *drive)
@@ -367,24 +375,24 @@ LispPTR COM_openfile(LispPTR *args)
if (dskp) {
if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL);
if (true_name(dir) != -1) return (0);
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
if (get_version_array(dir, name) == 0) return (NIL);
ConcNameAndVersion(name, ver, file);
switch (args[1]) {
case RECOG_OLD:
if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
if (get_old(dir, VA.files, file, name) == 0) return (NIL);
break;
case RECOG_OLDEST:
if (get_oldest(dir, VersionArray, file, name) == 0) return (NIL);
if (get_oldest(dir, VA.files, file, name) == 0) return (NIL);
break;
case RECOG_NEW:
if (get_new(dir, VersionArray, file, name) == 0) return (NIL);
if (get_new(dir, VA.files, file, name) == 0) return (NIL);
break;
case RECOG_OLD_NEW:
if (get_old_new(dir, VersionArray, file, name) == 0) return (NIL);
if (get_old_new(dir, VA.files, file, name) == 0) return (NIL);
break;
default: return (NIL);
@@ -439,7 +447,7 @@ LispPTR COM_openfile(LispPTR *args)
* Actually we are creating a new file. We have to
* maintain a version status.
*/
if (maintain_version(file, (FileName *)NULL, 1) == 0) {
if (maintain_version(file, 1) == 0) {
TIMEOUT(rval = close(fd));
*Lisp_errno = errno;
return (NIL);
@@ -485,7 +493,7 @@ LispPTR COM_openfile(LispPTR *args)
* the entirely newly created file, versionless file, should not
* be linked to any file.
*/
if (maintain_version(file, (FileName *)NULL, 0) == 0) {
if (maintain_version(file, 0) == 0) {
TIMEOUT(close(fd));
*Lisp_errno = errno;
return (NIL);
@@ -670,7 +678,7 @@ LispPTR COM_closefile(LispPTR *args)
*Lisp_errno = errno;
return (NIL);
}
#ifndef DOS
#ifndef DOS /* effectively NEVER, since we're in an ifdef DOS */
TIMEOUT(rval = utimes(file, time));
if (rval != 0) {
*Lisp_errno = errno;
@@ -681,13 +689,9 @@ LispPTR COM_closefile(LispPTR *args)
int fd, fatp, dskp, rval;
time_t cdate;
char lfname[MAXPATHLEN + 5], host[MAXNAMLEN];
char file[MAXPATHLEN], dir[MAXPATHLEN], name[MAXNAMLEN + 1];
char ver[VERSIONLEN];
DIR *dirp;
struct dirent *dp;
char file[MAXPATHLEN];
struct stat sbuf;
struct timeval time[2];
ino_t ino;
struct timespec timesp[2];
ERRSETJMP(NIL);
Lisp_errno = (int *)NativeAligned4FromLAddr(args[3]);
@@ -752,60 +756,24 @@ LispPTR COM_closefile(LispPTR *args)
}
}
if (!unpack_filename(file, dir, name, ver, 1)) return (NIL);
/* introduction of futimens() allows us to set the times on an open
* 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;
timesp[1].tv_sec = (long)ToUnixTime(cdate);
timesp[1].tv_nsec = 0L;
/*
* There is a very troublesome problem here. The file name Lisp
* recognizes is not always the same as the name which COM_openfile
* used to open the file. Sometimes COM_openfile uses the versionless
* file name to open a file, although Lisp always recognizes with
* *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) {
*Lisp_errno = errno;
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));
if (rval == -1) {
TIMEOUT(rval = futimens(fd, timesp));
if (rval != 0) {
*Lisp_errno = errno;
return (NIL);
}
TIMEOUT(rval = utimes(file, time));
if (rval != 0) {
TIMEOUT(rval = close(fd));
if (rval == -1) {
*Lisp_errno = errno;
return (NIL);
}
@@ -918,10 +886,10 @@ LispPTR DSK_getfilename(LispPTR *args)
* Recognizing a file on DSK device needs the version information.
* We gather version information in a version array first.
*/
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
if (get_version_array(dir, name) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname);
if (get_old(dir, VersionArray, aname, vname) == 0) return (NIL);
if (get_old(dir, VA.files, aname, vname) == 0) return (NIL);
if ((rval = true_name(aname)) == 0) return (NIL);
if (rval == -1) {
@@ -958,10 +926,10 @@ LispPTR DSK_getfilename(LispPTR *args)
strcpy(vname, dir);
dirp = 1;
} else {
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
if (get_version_array(dir, name) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname);
if (get_oldest(dir, VersionArray, aname, vname) == 0) return (NIL);
if (get_oldest(dir, VA.files, aname, vname) == 0) return (NIL);
if ((rval = true_name(aname)) == 0) return (NIL);
if (rval == -1) {
@@ -1007,10 +975,10 @@ LispPTR DSK_getfilename(LispPTR *args)
* Here, dir is an existing directory. We have to perform
* "new" recognition with the version information.
*/
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
if (get_version_array(dir, name) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname);
if (get_new(dir, VersionArray, aname, vname) == 0) return (NIL);
if (get_new(dir, VA.files, aname, vname) == 0) return (NIL);
dirp = 0;
}
}
@@ -1033,10 +1001,10 @@ LispPTR DSK_getfilename(LispPTR *args)
strcpy(vname, aname);
dirp = 1;
} else {
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
if (get_version_array(dir, name) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname);
if (get_old_new(dir, VersionArray, aname, vname) == 0) return (NIL);
if (get_old_new(dir, VA.files, aname, vname) == 0) return (NIL);
dirp = 0;
}
}
@@ -1132,7 +1100,6 @@ LispPTR DSK_deletefile(LispPTR *args)
char file[MAXPATHLEN], fbuf[MAXPATHLEN], vless[MAXPATHLEN];
char dir[MAXPATHLEN], ver[VERSIONLEN];
int rval, fatp;
FileName *varray;
#ifdef DOS
char drive[1], rawname[MAXNAMLEN];
int extlen; /* len of extension, for making backup filename */
@@ -1160,10 +1127,9 @@ LispPTR DSK_deletefile(LispPTR *args)
#endif
if (unpack_filename(file, dir, fbuf, ver, 1) == 0) return (NIL);
if (get_version_array(dir, fbuf, VersionArray, &VArrayInfo) == 0) return (NIL);
varray = VersionArray;
if (get_version_array(dir, fbuf) == 0) return (NIL);
if (NoFileP(varray))
if (NoFileP(VA.files))
return (NIL); /*
* If the specified file is deleted from
* outside of Lisp during the last time
@@ -1178,9 +1144,9 @@ LispPTR DSK_deletefile(LispPTR *args)
*/
ConcNameAndVersion(fbuf, ver, file);
if (get_oldest(dir, varray, file, fbuf) == 0) return (NIL);
if (get_oldest(dir, VA.files, file, fbuf) == 0) return (NIL);
if (get_versionless(varray, vless, dir) == 0) {
if (get_versionless(VA.files, vless, dir) == 0) {
/*
* There is no versionless file. All we have to do is to simply
* try to unlink the specified file.
@@ -1199,7 +1165,7 @@ LispPTR DSK_deletefile(LispPTR *args)
* file is linked will destroy the consistency of the version status.
*/
if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) return (NIL);
if (strcmp(file, vless) == 0 || strcmp(file, fbuf) == 0) {
if (*fbuf != '\0') {
@@ -1220,12 +1186,12 @@ LispPTR DSK_deletefile(LispPTR *args)
/*
* Finally, we have to maintain the version status.
*/
if (maintain_version(vless, (FileName *)NULL, 0) == 0) return (NIL);
if (maintain_version(vless, 0) == 0) return (NIL);
return (ATOM_T);
} else {
/*
* Although the versionfile is specified, it is not linked
* to any file in varray. We should not maintain the version
* to any file in VA.files. We should not maintain the version
* status after deleting the versionless file, because
* we cannot say whether the versionless file is actually under
* control of the Medley DSK file system or not.
@@ -1280,7 +1246,6 @@ LispPTR DSK_renamefile(LispPTR *args)
char dir[MAXPATHLEN], ver[VERSIONLEN];
int rval, fatp;
int need_maintain_flg;
FileName *varray;
#ifdef DOS
char drive1[1], drive2[1];
int extlen1, extlen2; /* len of extension */
@@ -1331,10 +1296,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* We maintain the destination to handle the link damaged case correctly.
*/
ConcDirAndName(dir, fbuf, dst);
if (maintain_version(dst, (FileName *)NULL, 0) == 0) return (NIL);
if (maintain_version(dst, 0) == 0) return (NIL);
if (get_version_array(dir, fbuf, VersionArray, &VArrayInfo) == 0) return (NIL);
varray = VersionArray;
if (get_version_array(dir, fbuf) == 0) return (NIL);
/*
* Although the file should have been recognized with "new" mode in Lisp
@@ -1343,7 +1307,7 @@ LispPTR DSK_renamefile(LispPTR *args)
*/
ConcNameAndVersion(fbuf, ver, dst);
if (get_new(dir, varray, dst, fbuf) == 0) return (NIL);
if (get_new(dir, VA.files, dst, fbuf) == 0) return (NIL);
/*
* At this point, there are three cases for the destination. If there is
@@ -1353,9 +1317,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* "real" destination file is the file to which the versionless file is linked,
* we have to unlink the versionless file.
*/
if (!NoFileP(varray)) {
if (OnlyVersionlessP(varray)) {
get_versionless(varray, vless, dir);
if (!NoFileP(VA.files)) {
if (OnlyVersionlessP(VA.files)) {
get_versionless(VA.files, vless, dir);
if (strcmp(dst, vless) != 0) {
ConcNameAndVersion(vless, "1", fbuf);
TIMEOUT(rval = rename(vless, fbuf));
@@ -1369,8 +1333,8 @@ LispPTR DSK_renamefile(LispPTR *args)
* We are sure that the versionless file is linked to one of
* the higher versioned file here.
*/
get_versionless(varray, vless, dir);
if (check_vless_link(vless, varray, fbuf, &rval) == 0) { return (NIL); }
get_versionless(VA.files, vless, dir);
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) { return (NIL); }
if (strcmp(dst, fbuf) == 0) {
TIMEOUT(rval = unlink(vless));
if (rval == -1) {
@@ -1382,9 +1346,9 @@ LispPTR DSK_renamefile(LispPTR *args)
}
if (unpack_filename(src, dir, fbuf, ver, 1) == 0) return (NIL);
if (get_version_array(dir, fbuf, varray, &VArrayInfo) == 0) return (NIL);
if (get_version_array(dir, fbuf) == 0) return (NIL);
if (NoFileP(varray))
if (NoFileP(VA.files))
return (NIL); /*
* If the specified file is deleted from
* outside of Lisp during the last time
@@ -1398,9 +1362,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* of it.
*/
ConcNameAndVersion(fbuf, ver, src);
if (get_old(dir, varray, src, fbuf) == 0) return (NIL);
if (get_old(dir, VA.files, src, fbuf) == 0) return (NIL);
if (get_versionless(varray, vless, dir) == 0) {
if (get_versionless(VA.files, vless, dir) == 0) {
/*
* There is no versionless file. All we have to do is to simply
* try to rename the specified file.
@@ -1413,7 +1377,7 @@ LispPTR DSK_renamefile(LispPTR *args)
* versionless file is linked will destroy the consistency of the
* version status.
*/
if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) return (NIL);
if (strcmp(src, vless) == 0 && *fbuf != '\0') {
/*
@@ -1458,9 +1422,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* is on.
*/
if (maintain_version(dst, (FileName *)NULL, 0) == 0) return (NIL);
if (maintain_version(dst, 0) == 0) return (NIL);
if (need_maintain_flg) {
if (maintain_version(src, (FileName *)NULL, 0) == 0) return (NIL);
if (maintain_version(src, 0) == 0) return (NIL);
}
return (ATOM_T);
@@ -1658,9 +1622,9 @@ LispPTR COM_getfileinfo(LispPTR *args)
*/
strcpy(file, dir);
} else {
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
if (get_version_array(dir, name) == 0) return (NIL);
ConcNameAndVersion(name, ver, file);
if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
if (get_old(dir, VA.files, file, name) == 0) return (NIL);
}
}
@@ -1847,9 +1811,9 @@ LispPTR COM_setfileinfo(LispPTR *args)
if (dskp) {
if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL);
if (true_name(dir) != -1) return (0);
if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
if (get_version_array(dir, name) == 0) return (NIL);
ConcNameAndVersion(name, ver, file);
if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
if (get_old(dir, VA.files, file, name) == 0) return (NIL);
}
switch (args[1]) {
@@ -2803,34 +2767,26 @@ static int make_directory(char *dir)
* and highest version number respectively.
*
* Description:
* Finds the highest versioned entry in varray.
*
* Find the highest versioned entry in varray. Varray has to include at least
* one versioned file, that is varray has to satisfy (!NoFileP(varray) &&
* !OnlyVersionlessP(varray)).
*
* Preconditions:
* Varray must include at least one versioned file, satisfying the condition:
* (!NoFileP(varray) && !OnlyVersionlessP(varray))
* Varray must be sorted from highest to lowest version
*/
#ifdef DOS
#define FindHighestVersion(varray, mentry, max_no) \
do { \
FileName *centry; \
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)
do { \
(max_no) = varray[0].version_no; \
(mentry) = &varray[0]; \
} while (0)
#else
#define FindHighestVersion(varray, mentry, max_no) \
do { \
FileName *centry; \
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)
do { \
(max_no) = varray[0].version_no; \
(mentry) = &varray[0]; \
} while (0)
#endif /* DOS */
/*
@@ -2917,6 +2873,19 @@ static int make_directory(char *dir)
} \
} 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 */
@@ -2928,7 +2897,6 @@ static int make_directory(char *dir)
/* guarantee that the directory exists. */
/* file File name, optionally including a (unix) version */
/* 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 */
/* VARRAY. DIR's case must match existing directory's, but */
@@ -2938,15 +2906,15 @@ static int make_directory(char *dir)
/* */
/************************************************************************/
static int get_version_array(char *dir, char *file, FileName *varray, CurrentVArray *cache)
static int get_version_array(char *dir, char *file)
{
#ifdef DOS
/* DOS version-array builder */
char lcased_file[MAXPATHLEN];
char old_file[MAXPATHLEN];
char name[MAXNAMLEN];
char ver[VERSIONLEN];
FileName *svarray;
int varray_index = 0;
struct find_t dirp;
struct direct *dp;
int rval, drive = 0, isslash = 0;
@@ -2987,14 +2955,12 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
make_old_version(old_file, lcased_file);
svarray = varray;
TIMEOUT(res = _dos_findfirst(old_file, _A_NORMAL | _A_SUBDIR, &dirp));
if (res == 0) {
strcpy(name, dirp.name);
strcpy(svarray->name, name);
svarray->version_no = 0;
svarray++;
strcpy(VA.files[varray_index].name, name);
VA.files[varray_index].version_no = 0;
varray_index++;
}
/*******************************/
@@ -3013,34 +2979,48 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
separate_version(name, ver, 1);
DOWNCASE(name);
strcpy(svarray->name, dirp.name);
strcpy(VA.files[varray_index].name, dirp.name);
if (*ver == '\0') {
/* Versionless file */
svarray->version_no = 1;
VA.files[varray_index].version_no = 1;
} else {
/*
* separator_version guarantees ver is a numeric
* string.
* separate_version guarantees ver is a numeric string.
*/
svarray->version_no = strtoul(ver, (char **)NULL, 10);
VA.files[varray_index].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 VA.files is indicated by setting LASTVERSIONARRAY into
* version_no field.
*/
svarray->version_no = LASTVERSIONARRAY;
VA.files[varray_index].version_no = LASTVERSIONARRAY;
VA.lastUsed = varray_index;
/*
* If more than one files have been stored in varray, we store the name
* If any files have been stored in VA.files, we store the name
* 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(varray)) {
strcpy(name, varray->name);
if (!NoFileP(VA.files)) {
strcpy(name, VA.files[0].name);
separate_version(name, ver, 1);
strcpy(svarray->name, name);
strcpy(VA.files[varray_index].name, name);
if (varray_index > 1) {
qsort(VA.files, varray_index, sizeof(*VA.files), compare_file_versions);
}
}
return (1);
@@ -3050,13 +3030,11 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
char lcased_file[MAXNAMLEN];
char name[MAXNAMLEN];
char ver[VERSIONLEN];
FileName *svarray;
int varray_index = 0;
DIR *dirp;
struct dirent *dp;
/* Used in commented out code below:
int rval;
struct stat sbuf;
*/
/*
* First of all, prepare a lower cased file name for the case insensitive
@@ -3066,30 +3044,29 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
separate_version(lcased_file, ver, 1);
DOWNCASE(lcased_file);
/*
TIMEOUT(rval = stat(dir, &sbuf));
if (rval == -1) {
*Lisp_errno = errno;
return(0);
}
*/
/*
* If the cached version array is still valid, we can return immediately.
/* 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).
*/
/*
* 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.
*/
TIMEOUT(rval = stat(dir, &sbuf));
if (rval == -1) {
*Lisp_errno = errno;
return(0);
}
if (sbuf.st_ino == VA.dir_ino &&
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.dir_ino = sbuf.st_ino;
VA.lastMTime = sbuf.st_mtim;
strcpy(VA.name, lcased_file);
}
/*
if ((sbuf.st_mtime == cache->mtime) && strcmp(dir, cache->path) == 0
&& strcmp(lcased_file, cache->file) == 0) return(1);
*/
errno = 0;
TIMEOUT0(dirp = opendir(dir));
if (dirp == NULL) {
@@ -3097,7 +3074,13 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
return (0);
}
for (S_TOUT(dp = readdir(dirp)), svarray = varray; dp != NULL || errno == EINTR;
/* There is no initialization call for the local file system, so we
* 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)))
if (dp) {
strcpy(name, dp->d_name);
@@ -3107,44 +3090,50 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
/*
* This file can be regarded as a same file in Lisp sense.
*/
strcpy(svarray->name, dp->d_name);
strcpy(VA.files[varray_index].name, dp->d_name);
if (*ver == '\0') {
/* Versionless file */
svarray->version_no = 0;
VA.files[varray_index].version_no = 0;
} else {
/*
* separator_version guarantees ver is a numeric
* string.
* separate_version guarantees ver is a numeric string.
*/
svarray->version_no = strtoul(ver, (char **)NULL, 10);
VA.files[varray_index].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
* version_no field.
*/
svarray->version_no = LASTVERSIONARRAY;
VA.files[varray_index].version_no = LASTVERSIONARRAY;
VA.lastUsed = varray_index;
/*
* If more than one files have been stored in varray, we store the name
* If any files have been stored in VA.files, we store the name
* 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(varray)) {
strcpy(name, varray->name);
if (!NoFileP(VA.files)) {
strcpy(name, VA.files[0].name);
separate_version(name, ver, 1);
strcpy(svarray->name, name);
strcpy(VA.files[varray_index].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));
return (1);
#endif /* DOS */
@@ -3176,7 +3165,7 @@ static int get_version_array(char *dir, char *file, FileName *varray, CurrentVAr
* to maintain the directory on which a file is being created.
*/
static int maintain_version(char *file, FileName *varray, int forcep)
static int maintain_version(char *file, int forcep)
{
char dir[MAXPATHLEN], fname[MAXNAMLEN], ver[VERSIONLEN];
char old_file[MAXPATHLEN], vless[MAXPATHLEN];
@@ -3184,17 +3173,14 @@ static int maintain_version(char *file, FileName *varray, int forcep)
int rval, max_no;
FileName *entry;
if (varray == (FileName *)NULL) {
if (unpack_filename(file, dir, fname, ver, 1) == 0) return (0);
/*
* We have to make sure that dir is the existing directory.
*/
if (true_name(dir) != -1) return (0);
if (get_version_array(dir, fname, VersionArray, &VArrayInfo) == 0) return (0);
varray = VersionArray;
}
if (unpack_filename(file, dir, fname, ver, 1) == 0) return (0);
/*
* We have to make sure that dir is the existing directory.
*/
if (true_name(dir) != -1) return (0);
if (get_version_array(dir, fname) == 0) return (0);
if (NoFileP(varray)) {
if (NoFileP(VA.files)) {
/*
* We don't need to care about such case that there is no such file
* or an only versionless file exists.
@@ -3202,14 +3188,14 @@ static int maintain_version(char *file, FileName *varray, int forcep)
return (1);
}
if (OnlyVersionlessP(varray)) {
if (OnlyVersionlessP(VA.files)) {
if (forcep) {
/*
* If forcep, we link the versionless file to the version
* 1 file.
*/
#ifndef DOS
get_versionless(varray, vless, dir);
get_versionless(VA.files, vless, dir);
ConcNameAndVersion(vless, "1", fname);
TIMEOUT(rval = link(vless, fname));
if (rval == -1) {
@@ -3226,13 +3212,13 @@ static int maintain_version(char *file, FileName *varray, int forcep)
* exists. Thus, FindHighestVersion works fine from now on.
*/
if (get_versionless(varray, vless, dir) == 0) {
if (get_versionless(VA.files, vless, dir) == 0) {
/*
* 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
* to the existing highest versioned file.
*/
FindHighestVersion(varray, entry, max_no);
FindHighestVersion(VA.files, entry, max_no);
ConcDirAndName(dir, entry->name, old_file);
/*
* The versionless file should have the same case name as the old
@@ -3251,15 +3237,15 @@ static int maintain_version(char *file, FileName *varray, int forcep)
return (1);
}
if (check_vless_link(vless, varray, old_file, &highest_p) == 0) return (0);
if (check_vless_link(vless, VA.files, old_file, &highest_p) == 0) return (0);
if (*old_file == '\0') {
/*
* The versionless file is not linked to any file in varray.
* The versionless file is not linked to any file in VA.files.
* Thus, we have to link the versionless file to the file which
* is versioned one higher than the existing highest version.
*/
FindHighestVersion(varray, entry, max_no);
FindHighestVersion(VA.files, entry, max_no);
sprintf(ver, "%u", max_no + 1);
/*
* The old file should have the same case name as the versionless
@@ -3284,7 +3270,7 @@ static int maintain_version(char *file, FileName *varray, int forcep)
return (1);
} else {
/*
* Although the versionless file is linked to a file in varray,
* Although the versionless file is linked to a file in VA.files,
* the file is not the highest versioned file. We have to unlink
* the wrongly linked versionless file, and link the highest versioned
* file to a versionless file.
@@ -3294,7 +3280,7 @@ static int maintain_version(char *file, FileName *varray, int forcep)
*Lisp_errno = errno;
return (0);
}
FindHighestVersion(varray, entry, max_no);
FindHighestVersion(VA.files, entry, max_no);
ConcDirAndName(dir, entry->name, old_file);
/*
* 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()) {
VGA_init(dsp, 0, 0, 0, depth_hint);
} else { /* Can't set *ANY* video mode! */
(void)fprintf(stderr, "No portable graphics mode supported by this host.\n");
(void)fprintf(stderr, "\n-Expected VESA or VGA.\n");
(void)(void)fprintf(stderr, "No portable graphics mode supported by this host.\n");
(void)(void)fprintf(stderr, "\n-Expected VESA or VGA.\n");
exit(1);
}
break;
@@ -69,7 +69,7 @@ void make_dsp_instance(DspInterface dsp, char *lispbitmap, int width_hint, int h
#elif XWINDOW
/* lispbitmap is 0 when we call X_init the first time. */
if (X_init(dsp, 0, LispDisplayRequestedWidth, LispDisplayRequestedHeight, depth_hint) == NULL) {
fprintf(stderr, "Can't open display.");
(void)fprintf(stderr, "Can't open display.");
exit(-1);
}
#endif /* DOS | XWINDOW */
@@ -87,7 +87,7 @@ void GenericReturnVoid(void *d) {(void)d; return; }
void GenericPanic(void *d) {
(void)d;
TPRINT(("Enter GenericPanic\n"));
fprintf(stderr, "Panic! Call to uninitialized display slot!");
(void)fprintf(stderr, "Panic! Call to uninitialized display slot!");
exit(0);
}

View File

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

View File

@@ -31,7 +31,6 @@
#include "lsptypes.h"
#include "lspglob.h"
#include "adr68k.h"
#include "ether.h"
#include "dbprint.h"
#include "etherdefs.h"
#include "ifpage.h"

View File

@@ -71,7 +71,6 @@
#include "lsptypes.h"
#include "lspglob.h"
#include "adr68k.h"
#include "ether.h"
#include "dbprint.h"
#include "etherdefs.h"
#include "ifpage.h"

View File

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

View File

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

View File

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

View File

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

View File

@@ -49,6 +49,7 @@
#include "commondefs.h" // for error
#include "gccodedefs.h" // for reclaimcodeblock
#include "gcdata.h" // for DELREF, REC_GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcfinaldefs.h" // for arrayblockmerger, checkarrayblock, deleteblock
#include "lispemul.h" // for LispPTR, NIL, T, POINTERMASK, DLword, ATOM_T
#include "llstkdefs.h" // for decusecount68k
@@ -551,15 +552,15 @@ void printarrayblock(LispPTR base) {
printf(" Length: %d cells.\n\n", bbase->arlen);
addr = ((LispPTR *)bbase) - 20;
for (; addr < (LispPTR *)bbase; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf("%p %8x <- array header\n", (void *)addr, *addr);
for (; addr < (LispPTR *)bbase; addr++) printf("%16p %8x\n", (void *)addr, *addr);
printf("%16p %8x <- array header\n", (void *)addr, *addr);
addr++;
for (; addr < (LispPTR *)bbase + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
for (; addr < (LispPTR *)bbase + 20; addr++) printf("%16p %8x\n", (void *)addr, *addr);
printf(". . .\n");
addr = ((LispPTR *)btrailer) - 20;
for (; addr < (LispPTR *)btrailer; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf("%p %8x <- array trailer\n", (void *)addr, *addr);
for (; addr < (LispPTR *)btrailer; addr++) printf("%16p %8x\n", (void *)addr, *addr);
printf("%16p %8x <- array trailer\n", (void *)addr, *addr);
addr++;
for (; addr < (LispPTR *)btrailer + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
for (; addr < (LispPTR *)btrailer + 20; addr++) printf("%16p %8x\n", (void *)addr, *addr);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -98,6 +98,11 @@ extern int *Xdisplay; /* DAANGER -jarl nilsson 27-apr-92 */
/************************************************************************/
void init_cursor(void) {
/* init_cursor sets up any OS/hardware that is necessary
* for the rest of the display system to get a cursor displayed.
* For display subsystems like X11 or SDL there's nothing to do
* Originally this did work for memory mapped Sun display boards
*/
}
/************************************************************************/
@@ -137,7 +142,7 @@ void clear_display(void) {
#else /* COLOR */
void clear_display(void) {
short *word;
DLword *word;
int w, h;
if (MonoOrColor == MONO_SCREEN) {
#ifndef DISPLAYBUFFER
@@ -150,7 +155,7 @@ void clear_display(void) {
0);
#endif /* DISPLAYBUFFER */
} else { /* MonoOrColo is COLOR_SCREEN */
word = (short *)ColorDisplayRegion68k;
word = ColorDisplayRegion68k;
for (h = displayheight; (h--);) {
for (w = DisplayRasterWidth * 8; (w--);) { *word++ = 0; }
} /* end for(h) */

View File

@@ -34,6 +34,7 @@
#include "etherdefs.h" // for init_ifpage_ether
#include "gcarraydefs.h" // for get_package_atom
#include "gcdata.h" // for ADDREF, GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO
#include "initsoutdefs.h" // for build_lisp_map, fixp_value, init_for_bitblt
#include "iopage.h" // for IOPAGE
@@ -124,7 +125,7 @@ void init_ifpage(unsigned sysout_size) {
new_lastvmem = (sysout_size * PAGES_IN_MBYTE) - 1;
if ((!Storage_expanded) && (InterfacePage->dllastvmempage != new_lastvmem)) {
fprintf(stderr, "You can't expand VMEM\n");
(void)fprintf(stderr, "You can't expand VMEM\n");
exit(-1);
} else { /* Set value which will be set to \\LASTVMEMFILEPAGE in LISP */
InterfacePage->dllastvmempage = new_lastvmem;
@@ -140,9 +141,9 @@ void init_ifpage(unsigned sysout_size) {
#endif /* BIGVM */
/* unfortunately, Lisp only looks at a 16 bit serial number */
#ifndef DOS
#if !defined(DOS) && !defined(MAIKO_OS_HAIKU)
InterfacePage->serialnumber = 0xffff & gethostid();
#endif /* DOS */
#endif /* DOS MAIKO_OS_HAIKU */
/* 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

View File

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

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