commanderx16 / x16-emulator

Emulator for the Commander X16 8-bit computer
383 stars 60 forks source link

Add host support for CMDR-CBMDOS's seekable read/write files #435

Closed davidgiven closed 1 year ago

davidgiven commented 1 year ago

This adds host filesystem support for M-mode files, which support arbitrary read/writes, and the SD2IEC form of the P command which allows seeking within them.

One thing I'm uncertain about: I had to hack around CR termination of the P command because it takes binary arguments, and terminating the command on a $0d would cause odd results if one of the parameters was $0d.

I feel like the right thing to do here is to change the command parsing stuff to only execute commands on an UNLSN, but I don't know whether that's actually valid. I can't find any formal specification of how DOS commands work. Would this be safe?

mist64 commented 1 year ago

I feel like the right thing to do here is to change the command parsing stuff to only execute commands on an UNLSN, but I don't know whether that's actually valid. I can't find any formal specification of how DOS commands work. Would this be safe?

There has never been a formal specification. I tried to compile all sourced into one document here: https://www.pagetable.com/?p=1038 but it doesn't answer this question either.

The "correct" behavior here would of course be to match the one in the DOS code in the x16-rom. I looked at it again, and it seems it only takes commands on UNLSN.

fachat commented 1 year ago

This is what I do in my XD2031 firmware - execute cmd_handler() only on UNLISTEN. This has in tests shown to give results similar to CBM DOS, but tests are surely not complete.

https://github.com/fachat/XD2031/blob/master/firmware/bus.c

HTH André

Am 24. Oktober 2022 17:07:51 schrieb Michael Steil @.***>:

I feel like the right thing to do here is to change the command parsing stuff to only execute commands on an UNLSN, but I don't know whether that's actually valid. I can't find any formal specification of how DOS commands work. Would this be safe?

There has never been a formal specification. I tried to compile all sourced into one document here: https://www.pagetable.com/?p=1038 but it doesn't answer this question either.

The "correct" behavior here would of course be to match the one in the DOS code in the x16-rom.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.

davidgiven commented 1 year ago

Thanks!