x80_files
Transfer files between host and guest, list visible guest files, show open handles, and resolve file paths without running code. Direction is explicit in each operation to avoid editing the wrong copy.
Instructions
Move files between the host and a guest, list what the guest can see, show what it has open right now, and answer "where would A:FOO.TXT come from?" without running anything. The direction is in the op name, not in a flag, because the single most common agent failure in this domain is editing a host copy of a file instead of the one the guest can see.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | to_guest = host -> guest. from_guest = guest -> host. handles = what the guest has open right now. resolve = dry-run name resolution, runs nothing. | |
| via | No | sandbox: cpmemu/dosiz host-directory passthrough, instant. hostfile: HBIOS 0xE1-0xEA via R8/W8 (romwbw) or INT E0h via R.COM/W.COM (emu88) - byte-granular, no image surgery. image: cpm_disk.py with the pinned diskdef, requires the machine stopped or the disk flushed. | auto |
| hash | No | ||
| drive | No | CP/M profiles accept A-P; DOS profiles accept C-Z. The legal set per profile is in x80_profiles; an out-of-range letter returns isError naming the profile's actual drive set. | |
| files | No | op:'to_guest' only. | |
| names | No | op:'from_guest'/'list': guest names or globs. Omit to take everything created since the machine started. | |
| since | No | op:'list': filter to files created or modified since that point. Answers the question no emulator in the family reports today. | never |
| handle | No | A live machine from x80_open. Mutually exclusive with `sandbox`. | |
| max_kb | No | ||
| console | No | op:'handles' on mpm2: only handles owned by the process attached to this console. | |
| sandbox | No | A sandbox path returned by a batch verb with keep_sandbox:true, or by a dead machine's handle_expired error. Mutually exclusive with `handle`. | |
| export_to | No | op:'from_guest': host directory to write into. | |
| overwrite | No | op:'to_guest': required true to replace an existing guest file. There is no elicitation; this returns isError instead of asking. | |
| resolve_name | No | op:'resolve': the guest name to resolve, e.g. A:FOO.TXT. | |
| return_content | No | inline_if_under_kb | |
| idempotency_key | No | A client-supplied nonce, not a hash of these arguments. Supply it only to make a retry safe; two deliberate identical calls without a key are two calls. | |
| resolve_for_write | No | op:'resolve': resolution differs by direction. On cpm-hosted a *.EXT config mapping routes a READ but does NOT route a BDOS 22 Make, which lands in the drive directory or the cwd under a lowercased 8.3 name. |