"CP/M compatible" vs. "MS-DOS Compatible" machines?

Jim Battle frustum at pacbell.net
Thu Jan 31 02:01:43 CST 2008


Holger Veit wrote:
...
> The interrupt and DMA handling was also lousy thanks to DR abusing some 
> 8080 and even worse Z80 RST vector locations for the BDOS and CCP 
> buffers and FCBs.  ...

That is one thing I always wondered about.  CP/M has "CALL 0005H" as the 
BIOS entry point.  Why didn't they map it to 0008H instead?  Considering 
that code space was at a premium, saving two bytes off of every BIOS 
call would have been an obvious optimization, I would have thought.

On the other hand, I never wrote any 8080 code that used RST, so maybe 
there is some gotcha that I don't know about.

Anyone have opinions why it was done with CALL 0005H instead?

The only thing I can come up with is that DR might have entertained, 
early on, making CP/M relocatable to different addresses (eg, some 
vendor wants an OS that lives in high memory).  In the process of 
patching all the code for the high addresses, substituting "CALL 0FF05H" 
instead of "CALL 0005H" is trivial, but substituting "CALL 0FF05H" for 
"RST 1" would be a problem.  Yes, one could require such systems to have 
a "ORG 0005H / JMP 0FF05H" vector.  I'm grasping at straws here.



More information about the cctalk mailing list