cj7hawk
Veteran Member
Hi All,
So I've hit yet another problem - How should the CP/M Warm Boot sequence occur?
Cold boot is no problem, and warm boot presently runs via the BIOS which redirects to the CCP, but it all goes a bit funny when I start randomly switching BDOS and CCP on the fly between the ones I wrote and the DR originals.
And I'm having trouble figuring out if there's supposed to be anything within CP/M that supports this - as it can lead to crashes when it reboots at the end of running a program.
I can swap out the BDOS, but the DR BDOS is about 512K bigger, so where I made sure by FDOS always starts at F000, while the DR BDOS starts at somewhere around ED00 IIRC.
Meanwhile my CCP kicks in at D000, while the DR CCP starts at E500.
This leads to problems with the warm boot vectors when I switch CCP or BDOS on the fly. Switching is no problem, and switching back I just cold boot, but when I have a warm boot then the vectors are all messed up. CP/M seems to ignore BIOS+0 as a vector, and the BIOS has no idea where the BDOS or CCP is.
Were there any conventions to relocate a warm boot vector to a specific location in CP/M? eg, like the BDOS vector at 0005 ?
Or was the likelihood of someone replacing the BDOS/CCP so low that it was always addressed with patching or source code changes?
David.
So I've hit yet another problem - How should the CP/M Warm Boot sequence occur?
Cold boot is no problem, and warm boot presently runs via the BIOS which redirects to the CCP, but it all goes a bit funny when I start randomly switching BDOS and CCP on the fly between the ones I wrote and the DR originals.
And I'm having trouble figuring out if there's supposed to be anything within CP/M that supports this - as it can lead to crashes when it reboots at the end of running a program.
I can swap out the BDOS, but the DR BDOS is about 512K bigger, so where I made sure by FDOS always starts at F000, while the DR BDOS starts at somewhere around ED00 IIRC.
Meanwhile my CCP kicks in at D000, while the DR CCP starts at E500.
This leads to problems with the warm boot vectors when I switch CCP or BDOS on the fly. Switching is no problem, and switching back I just cold boot, but when I have a warm boot then the vectors are all messed up. CP/M seems to ignore BIOS+0 as a vector, and the BIOS has no idea where the BDOS or CCP is.
Were there any conventions to relocate a warm boot vector to a specific location in CP/M? eg, like the BDOS vector at 0005 ?
Or was the likelihood of someone replacing the BDOS/CCP so low that it was always addressed with patching or source code changes?
David.