Subject: Stack Depth requirements for CP/M 2.2 CBIOS
From: "ROBO5.8" <robo58 at optonline.net>
Date: Fri, 30 Jan 2009 19:08:49 -0500
To: "'General Discussion: On-Topic Posts Only'" <cctech at
classiccmp.org>
Hello,
I have rewritten my old systems CP/M 2.2 CBIOS to add an IDE Drive.
I've run into a problem that has me stumped. Everything works as long as I
don't try and copy or assemble a large Assembly file (>80KB).
I will be going along fine and then out of nowhere I will see CP/M request
access to Drive "T". My debug info says SELDSK is requesting Drive 0FF00h.
Ok this is easy. CP/M 2.x (2.2 nominal) can only address 16 logical drives
so that's limitation one. Each drive is limited to 8Mb (65525sectors*128bytes).
If you use one of the CP/M like imperoved work a likes this is less an issue
and logical drives can be much larger (up to 1gb).
I have added debug code to all the CBIOS routines so
that they report what
they are doing to the console (slow but nice).
I've gone through my code many times and tested each routine via an embedded
debug monitor. I believe I have added every CP/M 2.2 patch (1-6 and 9)that
is specific to the CBIOS including those dealing with Blocking/Deblocking.
Good but likely not the problem itself.
In the back of my mind I kept wondering if I was exceeding CP/M's Stack
Depth. I can find no information on the web or in my doc's that specifies
what the maximum Stack usage is for a CBIOS.
This does not could like a stack size issue. That tends to be very static
for any disk size.
Do any of you have any thoughts on my Stack Question?
Are there other
issues with Blocking/Deblocking that become visible with large Disk Drives,
and that are not covered in any of the published DRI patches?
Wrong plase to look.
Likely areas of breakage:
More than 16 drives
Alloc storage areas inadaquately sized or overlapping
BIOS local variables being trashed.
Bios logic in error (deblock, sector addressing other??)
Allison
Thanks for your assistance.
Robo