[net.micro.cpm] CP/M and the CCP

cem@Ucb-Vax.ARPA (10/24/84)

Hello world, I have a very specific query for a few select individuals.
I am finishing up my BIOS and was optimizing the Warm Boot code, when I
remembered I was reading in the entire CCP and BDOS when I warm booted.
This was because Andy Johnson-Laird says in his book on Bios programming
that some programs will overwrite the BDOS too. Unfortunately, to 
accomplish this feat of reading in the BDOS I also reinitialize the BIOS
jump table (the CCP and BDOS don't fit into an even number of 1024 Byte
sectors, after you subtract the 25 128 byte sectors on the first track.)
I know that the BYE program really dislikes having the BIOS table, and 
specifically the warm boot vector overwritten, and since I could save
much code by only reading in the CCP the Question I pose is as follows :

Do you know of 1 or more useful programs that expect the warm boot to
reload the BDOS as well as the CCP?

Thanks in advance, a reply of "Yes, FOO.COM" is sufficent but more
elaboration is encouraged.
-- 
-- Chuck                                    - - - D I S C L A I M E R - - - 
{ihnp4,fortune}!dual\                     All opinions expressed herein are my
        {proper,idi}-> !intelca!cem       own and not those of my employer, my
 {ucbvax,hao}!hplabs/                     friends, or my avocado plant. :-}
                             ARPAnet    : "hplabs!intelca!cem"@Berkeley

W8SDZ@Simtel20.ARPA (10/26/84)

From:  Keith Petersen <W8SDZ@Simtel20.ARPA>

Yes, MEMR2.COM the memory test program from Lifeboat Associates uses
only the BIOS, overwrites CCP & BDOS.

You can get around the problem by reading in as much of the CCP & BDOS
as possible to the normal address where they're to execute, then
switch the load address to below CCP and read in the rest of BDOS up
to but not including the BIOS jump table.  Then move the code up to
where it belongs.  The address you use for this temporary area is not
critical - it could just as easily be 100h, 900h, 1000h or any
convenient area so long as you don't overwrite the CCP.
--Keith

oacb2@ut-ngp.UUCP (oacb2) (11/02/84)

> You can get around the problem by reading in as much of the CCP & BDOS
> as possible to the normal address where they're to execute, then
> switch the load address to below CCP and read in the rest of BDOS up
> to but not including the BIOS jump table.  Then move the code up to
> where it belongs.  The address you use for this temporary area is not
> critical - it could just as easily be 100h, 900h, 1000h or any
> convenient area so long as you don't overwrite the CCP.

I give up.  How is the "save" command going to work if you overwrite
location 100h?  (answer: badly)  :-)

Much better to read it into the buffer that the BIOS must use for deblocking.
-- 

	Mike Rubenstein, OACB, UT Medical Branch, Galveston TX 77550

notes@okstate.UUCP (11/02/84)

From:  decvax!decwrl!amd!intelca!cem@UCB-VAX

Hello world, I have a very specific query for a few select individuals.
I am finishing up my BIOS and was optimizing the Warm Boot code, when I
remembered I was reading in the entire CCP and BDOS when I warm booted.
This was because Andy Johnson-Laird says in his book on Bios programming
that some programs will overwrite the BDOS too. Unfortunately, to 
accomplish this feat of reading in the BDOS I also reinitialize the BIOS
jump table (the CCP and BDOS don't fit into an even number of 1024 Byte
sectors, after you subtract the 25 128 byte sectors on the first track.)
I know that the BYE program really dislikes having the BIOS table, and 
specifically the warm boot vector overwritten, and since I could save
much code by only reading in the CCP the Question I pose is as follows :

Do you know of 1 or more useful programs that expect the warm boot to
reload the BDOS as well as the CCP?

Thanks in advance, a reply of "Yes, FOO.COM" is sufficent but more
elaboration is encouraged.
-- 
-- Chuck                                    - - - D I S C L A I M E R - - - 
{ihnp4,fortune}!dual\                     All opinions expressed herein are my
        {proper,idi}-> !intelca!cem       own and not those of my employer, my
 {ucbvax,hao}!hplabs/                     friends, or my avocado plant. :-}
                             ARPAnet    : "hplabs!intelca!cem"@Berkeley

cem@intelca.UUCP (Chuck McManis) (11/05/84)

Well several people have replied to the original question of 
"Do any programs overwrite the CCP and if so which ones ?"
The purpose of which was to determine if my BIOS needed to read in
the CCP and the BDOS on warm boot or just the CCP.

And the answer seems to be yes, a couple of memory test programs. 

One person suggested that MBASIC might also overwrite the BDOS however I
have not found that to be the case on my system. One other person suggested
that by reloading the BDOS you reinitialized certain variables, such as
the R/O flag on changed diskettes, however this to was found not to be the
case as a ^C to the prompt will reset the flags, as well as a call to the
BDOS Reset System (BDOS Code 0).  Therefore, for now at least, I will continue
to run with warmboot reloading the CCP only (I have a nice memtest in the
boot ROM). If I have any problems I will post them. I originally suspected
Turbo Pascal of overwriting the BDOS but found out that this is not the case
usually. What happens is Turbo *Hard Codes* the top of memory address into
your compiled code, so if you run a program that was compiled on a system
with more memory it will *Overwrite your BDOS* This is totally not nice
and a Bug report has been submitted to them. Other than that it seems safe
to load the CCP only. If anyone knows any different PLEASE tell me, I
have not tried all of the software available :-) and therefore can't
make this a blatantly true statement. 

p.s. I have an old version of a FORTH compiler that zapped the BDOS and
     used only the BIOS to write very strange disk formats, Since I
     am now using F83 this too is not a problem.

-- 
-- Chuck                                    - - - D I S C L A I M E R - - - 
{ihnp4,fortune}!dual\                     All opinions expressed herein are my
        {proper,idi}-> !intelca!cem       own and not those of my employer, my
 {ucbvax,hao}!hplabs/                     friends, or my avocado plant. :-}
                             ARPAnet    : "hplabs!intelca!cem"@Berkeley