Closed snhirsch closed 1 year ago
My guess is that CP/M is attempting to delete a file that it does not have permissions to delete on the host system. If an NHACP "FILE-DELETE" request comes back with an error, I think the default response it to warm boot. Is this also on NNS?
I took a quick shot at using ZCPR1 as the CCP. It's assembling without errors but gets into a loop at boot. nabud reports this over and over:
INFO: stext_file_open: [/dev/ttyUSB0] Opening 'A0/CPM22.SYS'
INFO: stext_file_open: [/dev/ttyUSB0] Opening 'A0/FONT.GRB'
INFO: stext_file_open: [/dev/ttyUSB0] Opening 'A0/CPM22.SYS'
INFO: stext_file_open: [/dev/ttyUSB0] Opening 'A0/FONT.GRB'
...
Is there something you needed to do with the DRI CCP code in order to get it working on the NABU? I have a feeling this porting chore would be simpler on an emulator as opposed to connecting up my Z80 ICE to real hardware. What environment are you using for emulation?
Here's the source for ZCPR1 and my quick hack to merge it with CPM22.asm. zcpr17.zip hacked_cpm22.zip
Caught a typo in my CP/M merge. This one still doesn't boot, but no loop - just hangs. Progress of a sort! hacked_cpm22.zip
For emulation, I usually use NABU MAME. It provides a very capable debugging environment, easy configuration, and (mostly) accurate emulation.
There shouldn't be too much tweaking that needs to happen to drop in a new CCP. As long as no high-memory buffers are used, it should be compatible right out of the box. The only thing I would watch out for is the inbuff
command buffer area. The cold boot hook will try to modify it at startup to enable INIT.COM to run. You may also run into issues with SUBMIT files later down the line.
I think I'll look into getting ZCPR1 working tonight as well. ZCPR3 may be interesting to eventually port, but it also has a decently large memory footprint and some Ishkur configurations are already quite big (NFS + FDC is like 11kb, IIRC).
Found the problem! I was assuming an even page location for fbase:. It's working fine now and, not surprisingly, era *.*
is now working. zcpr1_cpm22.zip
ZCPR3 won't require porting since it's been superceeded by NZCOM. The latter is basically a universal ZCPR3 that self-installs. I'll pull the files together in my Dropbox area and drop you a PM.
Awesome!
I'll have to do more research into ZCPR / NZCOM / Z-System. CP/M itself was long obsolete by the time I came around, so all of this is very new to me.
Some of the critical documentation for Z-System is difficult to find, mostly the developer related documentation. I have almost everything in paper form and have scanned some to PDF. Let me know if you are having trouble finding anything.
I need to do a lot cleanup on that ZCPR1 merge, but I think the proof of concept is there. If I have time this weekend I'm planning (for my own edification) to see what it would take to build and link with the zmac and ld80 tools. May be more trouble than it's worth, but for years I used M80/L80 tools to build systems natively. Should be doable with cross-tools now. Best part is that Peter Philips (author) is a super nice guy and very responsive to technical questions and bug reports.
Being able to build the system on actual hardware would be pretty cool. I was originally planning on being able to do just that, but the increasing source code complexity has locked me into using ZASM for a awhile.
Oh yea, found that ERA *.* bug in the vanilla CCP. I should be more careful when converting source code to lower case... Closing the issue.
Thanks for the update! Building on native hardware should be straightforward. That's how everything was done "back in the day". Nice part is that zmac/ld80 is near 100% compatible with M80/L80. If we get a piecewise (individual module assemble with linker phase) build working with cross-tools it will almost certainly transfer to the real metal. I'll let you know how my experiments go.
I can delete files by specifying their exact name and/or wildcarding only one of name and extension. If I enter
era *.*
it asks me "All?". I enter 'Y' and it immediately warm-boots back to the prompt with no action taken.