Procedure can be static as it is only used within this file
Uses consistent naming (_np) for native pointer equivalents of Lisp
addresses, and better matches Lisp implementation naming of variables.
Improve readability by reducing if/else nesting with early outs in
exceptional cases. Still equivalent to the original Lisp version.
Adds comments with a little explanation of what the code is doing.
Procedure can be static void as there was only an unused constant result.
Uses consistent naming (_np) for native pointer equivalents of Lisp
addresses, and better matches Lisp implementation naming of variables.
Adds comments with a little explanation of what the code is doing.
To fix Issue#2164, create infrastructure to compile Maiko for Windows System for Linux v1 as a separate OS from Linux
Created makefile-wsl1-* files as well as makefile-init-wsl1-* files. Modified bin/osversion to detect wsl1 as a special case of linux so that the wsl1 makefiles would be selected appropriately by makeright.
Did not make CMAKE changes for WSL1.
Changed Build Release workflow (via changes to Dockerfile-maiko) to build wsl1 versions of lde, ldex, ldesdl and ldeinit for x86_64 and aarch64. These are now included in the release tars.
With additional Medley calls to KEYACTION (below), they should work in TTYIN (i.e., XCL and Interlisp EXECs).
I didn't try TEDIT.
They are unrecognized in SEDIT. (In any case, their use there probably is pretty restricted by the nature of SEDIT.)
(KEYACTION 'KEYPAD8 '(("Meta,^" 56 NOLOCKSHIFT) . IGNORE))
(KEYACTION 'KEYPAD6 '(("Meta,>" 54 NOLOCKSHIFT) . IGNORE))
(KEYACTION 'KEYPAD4 '(("Meta,<" 52 NOLOCKSHIFT) . IGNORE))
(KEYACTION 'KEYPAD2 '(("Meta,^J" 50 NOLOCKSHIFT) . IGNORE))
Unify the LispDisplayRequested... and lispDisplayRequested...
variables from the SDL and X11 display modules.
Move the storage definitions for LispDisplayRequested... to main.c
leaving external references in the modules that utilize them.
The implementation of various JUMP opcodes tried to use a common tail
that did a POP and branched to the next opcode. While the extra gotos
probably aren't harmful, neither are they beneficial to code size or speed.
* Update buildRelease workflow to use sdl2-2.30.11 on MacOS
* In buildRelease workflow, update Macos build for SDL to use -DMAIKO_DISPLAY_SDL=2 instead of =ON
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.
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.
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.
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.
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.
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.
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.