Skip to content

dos.library: the path packets ixemul.library sends, and Info() - #198

Merged
sidick merged 2 commits into
sidick:mainfrom
codewiz:ixemul-packets
Oct 23, 2026
Merged

sidick merged 2 commits into
sidick:mainfrom
codewiz:ixemul-packets

Conversation

@codewiz

@codewiz codewiz commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Fixes #196. Stacked on #197 (GetDeviceProc returning the packet port), whose commit this branch includes: merge #197 first, or this one alone.

With both, an ixemul.library 80.1 program runs a full round of file operations: #196's fileio.c passes all 21 checks (mkdir, open/create, read/write/lseek, fstat, ftruncate, O_APPEND, O_EXCL, ENOENT, rename, opendir/readdir, unlink, rmdir) on --cpu 68000 and --cpu 68020, with and without --sanitize. Before: 20 of 21 failed.

Changes

  • handle_fs_packet answers the path actions ixemul sends, each over the code of the matching dos.library call, with the path resolved from the parent lock and BSTR name as ACTION_LOCATE_OBJECT already does (combine_lock_path):
    • ACTION_CREATE_DIR, ACTION_DELETE_OBJECT, ACTION_RENAME_OBJECT, ACTION_MAKE_LINK (hard and soft): DosState::create_dir/delete_file/rename/make_link_*
    • ACTION_SET_PROTECT, ACTION_SET_DATE: the work of the SetProtection/SetFileDate handlers, moved into dosprotect::set_protection and dossetfiledate::set_file_date so both paths share it
    • ACTION_SET_OWNER: succeeds for an existing object (host volumes have no Amiga owner), ERROR_OBJECT_NOT_FOUND otherwise
    • ACTION_SET_FILE_SIZE: DosState::set_file_size, as ACTION_SEEK does seek
    • ACTION_DISK_INFO: the same InfoData DoPkt fills
    • ACTION_WAIT_CHAR: no character, as WaitForChar
  • An unknown action replies Res1 = DOSFALSE instead of -1, which a caller of a boolean action read as success (ixemul's mkdir() returned 0 without creating anything).
  • dos.library/Info(), which ixemul calls when it resolves a path through /: fills the same InfoData, returns DOSTRUE.

Test plan

🤖 Generated with Claude Code

codewiz and others added 2 commits October 23, 2026 15:28
…Port

ixemul.library sends every path operation to dvp_Port and fails with
ERROR_OBJECT_NOT_FOUND when it is NULL; locks and handles already name
the port sidick#191 answers packets on.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
CREATE_DIR, DELETE_OBJECT, RENAME_OBJECT, SET_PROTECT, SET_DATE,
SET_OWNER, MAKE_LINK, SET_FILE_SIZE, DISK_INFO and WAIT_CHAR, over the
code of the matching dos.library calls; an unknown action now replies
DOSFALSE, which no boolean caller mistakes for success.

Fixes sidick#196.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@sidick
sidick merged commit 396bb43 into sidick:main Oct 23, 2026
9 checks passed
@codewiz
codewiz deleted the ixemul-packets branch October 23, 2026 15:14
@sidick sidick mentioned this pull request Oct 23, 2026
4 tasks done
sidick added a commit that referenced this pull request Oct 23, 2026
Fills in the 0.13 changelog: ixemul.library's full path-based file
I/O (GetDeviceProc's dvp_Port, the path packet actions, and Info())
from #197/#198, Supervisor()'s real exception frame unblocking nested
library calls from #199, the dl_TimeReq clock() fix from #194, the
remaining AllocDosObject types (DOS_STDPKT/DOS_CLI) from #187, and
#200's new_lock leak fix. Also documents these in
Supported-Libraries.md (expanded packet-action list, Supervisor's
RTE-anywhere support, dl_TimeReq).

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ixemul programs: unknown DOS packets reply as success, and the path actions are missing

2 participants