I understand your dilemma, and I'd tend to agree with you... Reliability is important. I do hope to be able to achieve both reliability AND some nice-to-have functionality.
Over the past couple of days I've spent a significant amount of time tracing all the IP232 handling of 0xff bytes through Vice and tcpser, and then of tcpser's NVT handling of 0xff bytes, and then verifying and double-checking that byte-for-byte, every single character that Image BBS was sending out of it's emulated modem was being correctly passed through and interpreted by the virtual modem in a second instance of Vice and that those bytes were being correctly passed into the emulated terminal (CCGMS 2021). Despite all this, I was still unable to get multi-Punter downloads to work from Image 3.0 to CCGMS 2021. CCGMS would get the filename and then sit there doing nothing -- all the while IMAGE is sending GOO over and over again indefinitely. Oddly enough, if I hit C= in CCGMS to "Abort" the transfer, it would then switch to the receiving screen, appear to start actually exchanging bytes - but all blocks turned out bad. Also it was worth noting that
I confirmed again that byte-for-byte, the data being exchanged was 100% accurate.
On a whim I decided to try a single download instead of multi, and low and behold it worked just fine! In fact, while Image is trying to send multiple files, if in CCGMS I treat each one as a manual download, it works just fine also. (Albeit more tedious).
The prudent thing for me to do at this point would be to learn myself up on the Punter protocol itself, but my gut feeling at the moment is that my problem may now be something to do with either the way Image is initiating the multi-download transfer OR the way CCGMS is responding to the multi-download transfer, and at this stage I'm leaning towards CCGMS since it just feels buggy - having to hit "abort" in order to start the transfer, etc. I am going to try another couple of terminals, probably Novaterm and maybe Handyterm on an emulated userport modem, and see how they fare with these same tests. I will report back with the findings, but we are SOOOO CLOSE!
Incidentally, while I thought the hurdle would be trying to compile for Windows on Linux, it turned out that the real challenge was not that part - that was
relatively straight forward, but where I've really had a go of it has been getting the compiled executables to actually run on Windows! Technically I suppose they do in fact run, only they don't seem to actually
do anything - whether starting from a command prompt or double-clicking on the icon I get the spinny thing (hourglass cursor) for a moment or two and then nothing. No errors, no messages, but no friendly blue 38,911 Basic Bytes Free either.
I wondered if my build environment was too old (it was quite old to be honest) so I spun up a Fedora 36 LXC container, installed all the requisite cross-compilation [stuff] and tried building it there. I haven't yet had a change to test those new .exe's on Windows 10 but I will do that later on today. I am highly optimistic though. I'll try to post a complete walk-through of the process too if anyone is interested.
... I just had CCGMS crash outright (went back to blue screen, "READY." prompt) but then another thought occurred to me - I am running both instances of Vice with a RAMLink, and the other day I discovered that I couldn't even start Handyterm with the RAMLink "plugged in". I should probably try - at least the terminal tests - with just the stock '64 to see if that makes any difference.
... It didn't. At least not with CCGMS 2021. What is still odd is that it appears the characters which are sent from Image look, in each emulation window, different when trying a Multi-Download. When I do a single Punter download, the two start blocks look identical, and that's how I know right away it is going to work.
This is what I see when trying to start a Punter multi-file transfer from Image 3.0 to CCGMS 2021:
This is what I see when trying to start a Punter single file transfer from Image 3.0 to CCGMS 2021:
If those two start blocks align, the transfer is going to succeed:
Again - I have confirmed that byte-for-byte, the data being exchanged between the two virtual modems is identical in both directions.
Let's test a different terminal - Let's see what Novaterm does when I try to do a multi-file download from Image:
Well gosh darn diddly ding dong CRAP! Novaterm happily downloaded all the files in multi-Punter mode without so much as a hiccup. It was CCGMS 2021 that was doing something funny!
I've now tested and confirmed: Multi-Punter uploads and downloads work perfectly with Novaterm 9.6c to and from Image 3.0 now, so maybe I'll try the same thing with Image Term itself to make sure it's happy with the "connection" also, since that's probably as close to doing a network transfer as I can simulate without actually joining the NISSA network, but it looks like my modifications to Vice and tcpser have fixed the file transfer issue in both directions.
