hharte / ez80_cpm

CP/M 3.0 for the Zilog eZ80
Other
7 stars 0 forks source link

Too much of TPA gets eaten away by BDOS+BIOS+buffers #3

Open pawosm-arm opened 1 year ago

pawosm-arm commented 1 year ago

Somehow I got used to CP/M3 systems offering 61K TPA. Sadly this port offers much less than that. In effect, bigger programs cannot be load or they cannot work with bigger data files (e.g. BASIC interpreter cannot even load RPED.BAS program). It feels like a shame since this machine is fast and resourceful, with potential to provide a good retro-CP/M3 experience.

In the CPM30.zdsproj file (and also some other files, BTW, which one would be the one to make an impact?) I can read the following:

LOCATE BDOS AT (LOWADDR OF RAM) + $0CD00
LOCATE BIOS AT TOP OF BDOS + 1

The 0xCD00 address seems drastically low for BDOS...

Further on I can read:

MAXLENGTH CCP_SEG $0C00
MAXLENGTH BDOS $2100
MAXLENGTH BIOS $0E00

I assume 0xCD00 was chosen to accommodate BDOS (0x2100 in assumed max size), BIOS (0xE00 in assumed max size) and 1kB for OS buffer. All of them seems like overkill. Can I trim any of those values safely? How can I determine how much of the BDOS/BIOS max size can be reduced? And what about 1kB buffer above BIOS, how much of it is actually being used?

hharte commented 1 year ago

Thank you for the feedback, unfortunately I last worked in this many years ago, and don’t recall the details now. Originally, I think I was planning to rewrite the BIOS to make use of the native ez80 ADL mode to locate the bulk of the CBIOS above 64K.

pawosm-arm commented 1 year ago

Yeah, I was wondering if broader use of ADL would help. I do realize this code is from ages ago, but I was hoping you remember something about its design principles.