1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-03-02 17:54:38 +00:00
Commit Graph

918 Commits

Author SHA1 Message Date
Nick Briggs
55209aa7e7 Adds size of output parameter to lisppathname() and replaces various strcpy() with strlcpy() 2025-08-16 18:56:55 -07:00
Nick Briggs
dfb820cc62 Replace sprintf() with snprintf() 2025-08-16 18:56:55 -07:00
Nick Briggs
11b81f6c17 Replaces all calls to sprintf() with snprintf() in ufs.c 2025-08-16 18:56:55 -07:00
Nick Briggs
9557ae8f5b Updates unixpathname() signature to include output string length, replace strcpy with strlcpy 2025-08-16 18:56:55 -07:00
Nick Briggs
d1f7361429 Replaces strcat() with strlcat() in dsk.c 2025-08-16 18:56:55 -07:00
Nick Briggs
4c6aef8fd4 Replaces all strcpy() by strlcpy() in dsk.c 2025-08-16 18:56:55 -07:00
Nick Briggs
409617b506 Adds destination size to conc_... functions and switch to strlcpy/strlcat 2025-08-16 18:56:55 -07:00
Nick Briggs
6a550b4ca3 Replaces ConcNameAndVersion and ConcDirAndName macros with functions
Replaces ConcNameAndVersion and ConcDirAndName macros with
conc_name_and_version and conc_dir_and_name functions respectively,
moves the definitions from locfile.h to dsk.c, and adds them to
dskdefs.h for use by other source files.
2025-08-16 18:56:55 -07:00
Nick Briggs
c9e2759666 Replaces magic number with value calculated from appropriate constant 2025-07-29 19:59:03 -07:00
Nick Briggs
9960010129 Adds handling of strings with indirect headers for URaid object printing 2025-07-28 16:09:10 -07:00
Nick Briggs
ce20b3520e Replaces magic number 2 with BYTESPER_DLWORD in calculation of buffer size. 2025-07-26 22:11:44 -07:00
Nick Briggs
c4752e6caa Makes vmemsave.c lispstringP implementation local and updates header file accordingly 2025-07-26 17:54:17 -07:00
Nick Briggs
78dfa9b243 Adds warning note to lisp2c.c LispStringToCStr regarding endianness sensitivity 2025-07-26 17:47:24 -07:00
Nick Briggs
afe40004b8 Removes unnecessary dependency on lisp2c from kbdsubrs.c 2025-07-26 17:43:14 -07:00
Nick Briggs
5343b12991 Eliminates nul at end of Lisp string since Lisp strings are not nul terminated 2025-07-25 18:39:53 -07:00
Nick Briggs
a0e703678c Replaces (expanded) lisp string base access pattern with STRING_BASE macro 2025-07-25 17:52:34 -07:00
Nick Briggs
364bc1f31c Removes StrNCpyFromLispToC(), renames StrNCpyFromCToLisp to MemCpyToLispFromNative
Removes StrNCpyFromLispToC and the single use of it in
LispStringToCString in the BYTESWAP implementation case.

Rename StrNCpyFromCToLisp, which does NOT follow "strncpy" semantics,
to be MemCpyToLispFromNative, where the types in the name match the
types of the arguments, and the semantics (and argument order) are
those of the C library "memcpy".
2025-07-25 14:12:30 -07:00
Nick Briggs
01d21b0a44 Revert integerlength() to pure (but more efficient) C as glibc does not provide fls() 2025-07-22 09:43:49 -07:00
Nick Briggs
3569e54524 Uses consistent naming (_np) for native pointer equivalents of Lisp addresses in GC aref1 2025-07-20 10:48:20 -07:00
Nick Briggs
b75e66d91c Renames struct buf to struct buffer to match corresponding Lisp datatype name 2025-07-19 23:19:19 -07:00
Nick Briggs
0e2cda2328 Cleans up releasingvmempage implementation
Uses consistent naming (_np) for native pointer equivalents of Lisp
    addresses
2025-07-19 22:44:27 -07:00
Nick Briggs
c58336f813 Cleans up checkarrayblock implementation
Uses consistent naming (_np) for native pointer equivalents of Lisp
    addresses
  Ensures non-zero return value if arrayblock fails check
2025-07-19 18:11:43 -07:00
Nick Briggs
f2bf026b07 Adds URaid F command to print array block free list heads 2025-07-19 17:50:55 -07:00
Nick Briggs
3fad090a6c Cleans up printarrayblock implementation
Uses consistent naming (_np) for native pointer equivalents of Lisp
    addresses
2025-07-19 17:34:52 -07:00
Nick Briggs
812e296fe8 Cleans up reclaimarrayblock implementation
Uses consistent naming (_np) for native pointer equivalents of Lisp
    addresses
  Adds comments regarding the parameter passed to reclaimarrayblock
2025-07-19 15:41:50 -07:00
Nick Briggs
7c7da4cd0c Cleans up mergeforward implementation
Uses consistent naming (_np) for native pointer equivalents of Lisp
    addresses
2025-07-19 13:19:27 -07:00
Nick Briggs
f375519dbc Cleans up mergebackward implementation
Uses consistent naming (_np) for native pointer equivalents of Lisp
    addresses
  Adds comments with a little explanation of what the code is doing
2025-07-19 12:35:02 -07:00
Nick Briggs
2c46a9473a Cleans up and makes static arrayblockmerger implementation
Uses consistent naming (_np) for native pointer equivalents of Lisp
    addresses
2025-07-19 12:29:33 -07:00
Nick Briggs
93b3a709c9 Cleans up makefreearrayblock implementation
Uses consistent naming (_np) for native pointer equivalents of Lisp
    addresses
  Adds comments regarding use of WORDPTR macro to hide BYTESWAP setting
2025-07-19 12:11:11 -07:00
Nick Briggs
31fcfb36ca Cleans up linkblock implementation to increase clarity
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.
2025-07-19 11:49:30 -07:00
Nick Briggs
1f18779eb8 Cleans up deleteblock implementation to increase clarity
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.
2025-07-18 10:09:41 -07:00
Nick Briggs
357336b5f1 Rewrites (and makes static) findptrsbuffer to avoid multiple conversions between Lisp and native pointers 2025-07-18 09:12:43 -07:00
Nick Briggs
1ffd1ba7cb Replaces integerlength(n) implementation with call to fls(n) and makes it static 2025-07-17 18:52:15 -07:00
Nick Briggs
0a6f8ac72b Replaces scaling factor 2 for array length offsets by DLWORDSPER_CELL as that is what it represents. 2025-07-17 18:46:57 -07:00
Nick Briggs
c8dc63d418 Clean up display related variable names differing only in case (#529)
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.
2025-02-02 16:31:43 -08:00
Nick Briggs
511a1b523e Eliminate extra gotos in common branch tail code (#528)
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.
2025-01-30 11:07:29 -08:00
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
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
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
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
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