OK, this is going to get weird. The tl;dr of it is that I'm wondering if >there's a tool to create self-decompressing (like what upx does) binaries >for CP/M-80 (i.e., a CP/M executable cruncher).
I've been working on porting some games to a system (Nabu) that runs CP/M >3.1 - the call at 5 is to $BA06. (There are two other unofficial ports of >CP/M, both of 2.2, and one of them I'll probably need to figure out the >equivalent value; the other I don't care about.)[...]
For one of them, I've been working on trying to expand it from the source >version's (MSX) 76 levels to the full 150. I don't think there's memory
to have all 150 and still enough room to load the program from CP/M.
But I was wondering about whether, using an executable cruncher, I could
try to include the whole set of 150.
Steve Nickolas <usotsuki@buric.co> writes:
OK, this is going to get weird. The tl;dr of it is that I'm wondering if
there's a tool to create self-decompressing (like what upx does) binaries
for CP/M-80 (i.e., a CP/M executable cruncher).
PopCom! is one such.
Apparently I've lost track of where CP/M archive mirrors are these days,
but you can download a copy, and documentation in Japanese (looks like Shift-JIS encoding), from
https://www.asahi-net.or.jp/~am9y-mn/fswlist.htm
I've been working on porting some games to a system (Nabu) that runs CP/M[...]
3.1 - the call at 5 is to $BA06. (There are two other unofficial ports of >> CP/M, both of 2.2, and one of them I'll probably need to figure out the
equivalent value; the other I don't care about.)
For one of them, I've been working on trying to expand it from the source
version's (MSX) 76 levels to the full 150. I don't think there's memory
to have all 150 and still enough room to load the program from CP/M.
But I was wondering about whether, using an executable cruncher, I could
try to include the whole set of 150.
I'm not sure how much PopCom will help you increase your maximum program
size on your CP/M 3.1 system, though?
(Disclaimer: I only ever used a banked 3.1 system with loads of memory,
so I had a massive TPA and never had to understand any of this stuff properly. So I may have misunderstood. Also I haven't thought about any
of this for a very long time.)
Other tidbits machine-translated from POPCOM.DOC, in case they avoid
wasting your time:
"PopCom! can be used with CP/M of 47K or more (TPA 42K or more).
However, a CPU equivalent to Z80 or higher is required."
"It also uses only the minimum amount of memory required for
decompression, so if the source programme is one that does not destroy
CCP, the compressed programme will also work without destroying CCP in
most cases."
It looks like your TPA is 46.25 kbyte or thereabouts, so I guess PopCom
will work on your system.
Just tested it - had to go into an actual CP/M environment, but that was >fine - crunched the game I was working on (Lode Runner btw) and tried it, >and it worked.
Steve Nickolas <usotsuki@buric.co> writes:
Just tested it - had to go into an actual CP/M environment, but that was
fine - crunched the game I was working on (Lode Runner btw) and tried it,
and it worked.
\o/
Re running in actual CP/M environment: for what it's worth, I find that utilities like PMEXT run fine under zxcc, which means I can conveniently
run them in my host (Linux) environment. https://www.seasip.info/Unix/Zxcc/index.html
POPCOM may work this way too. (In a quick test, it seemed to basically
work, although there was a "cpmredir: Corrupt FCB" glitch on exit.)
Steve Nickolas <usotsuki@buric.co> writes:
Re running in actual CP/M environment: for what it's worth, I find that utilities like PMEXT run fine under zxcc, which means I can conveniently
run them in my host (Linux) environment. https://www.seasip.info/Unix/Zxcc/index.html
POPCOM may work this way too. (In a quick test, it seemed to basically
work, although there was a "cpmredir: Corrupt FCB" glitch on exit.)
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 65 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 00:54:18 |
| Calls: | 862 |
| Files: | 1,311 |
| D/L today: |
10 files (20,373K bytes) |
| Messages: | 264,187 |