crj wrote:This would also require a culture of APIs that let people mount virtual discs to specific drive numbers, and subsequently dismount them.
As with any virtual disk access system, such as *SDCDISC on GoSSD, *DIN on the system that uses *DIN. I quite like the syntax of *MOUNT drivenum filename
and if the service ROM sees the *MOUNT command with more than one parameter it ignores it and allows the MOS to pass it to the filing system to be implemented as the normal filing system command.
crj wrote:I'm guessing you wrote the specifications for those OSWORDs rather than merely transcribing them to the wiki?
No, Acorn wrote them. &76 and &77 were cloned from the hardware OSWORDs for use with RAMFS with the identical parameters so an image call is identical to a hardware call.
crj wrote:It feels as though the spec should be tightened to distinguish between drive not present (simply pass the call on for someone else to handle) and media not present (return an error).
Drive not present (somebody else handle) -> don't claim the OSWORD, as with any other service call
Media not present (return an error) -> claim the OSWORD and return an error. Specifically, OSWORD &77 return result=&1E (disk or drive not present), OSWORD &76 return (I think) result=&02 (drive door open).
crj wrote:OSWORD &B0 doesn't seem to support multiple drives at all?
Yes it does. GoMMC/GoSDC implements it as each drive as an offset into the image, but there is absolutely nothing to stop an OSWORD &B0 driver translating that offset into a specification for individual images. For example, instead of &40000+x being drive 1 within a single selected image file, &40000+x is offset x into the image file selected for drive 1.
crj wrote:I also feel it would be helpful if the call was made for all disc numbers, not just ones lacking native support in DFS/ADFS. Someone might well want to cover their physical drive 0 with a virtual drive 0.
OSWORD &B0 IS
made for all drives, as the patched filing systems have no concept of physical drives, all access goes via OSWORD &B0, with - in the default setup - the GoMMC/GoSDC ROM claiming the call. Just use the appropriate patched filing system and a different support ROM that responds to OSWORD &B0, and provides commands - as GoMMC/GoSDC do - to specify what the OSWORD &B0 call translates to. For example, *SDCDisc GAMES1 results in OSWORD &B0 accessing the image file GAMES1 on the SDC card.