I've been able to reproduce a problem reported to me by e-mail.
It concerns the failure of the TESTBIOS.C program when run under the Digital Research CP/M-3 banked BDOS.
TESTBIOS does not fail when using Simeon Cran's replacement ZPM3 BDOS.
The TESTBIOS program uses the library bios() routine to invoke the XMOVE and MOVE routines in the BIOS to copy a string. It has the following sequence -
bios(29,0x0101);
bios(25,sizeof src, src, dst);
puts(dst);
I added some debugging messages into the BIOS XMOVE and MOVE routines. This reveals that the DRI BDOS is doing an additional call to MOVE in between the two bios() calls -
A>MOVE(00EA,0DF4,F72A)
testbios
MOVE(000A,F72A,0DF4)
MOVE(0080,0DF6,F72E)
MOVE(0024,F7AF,0DD0)
MOVE(0010,0DA2,F74E)
MOVE(0024,0DAD,F72A)
MOVE(0021,F72A,0DAD)
A:TESTBIOS COM
MOVE(0080,0081,F72E)
MOVE(0024,F7AF,0DD0)
MOVE(0080,0B1E,F72E)
MOVE(0024,F7AF,0DD0)
MOVE(0024,F290,F72A)
MOVE(0024,F2C0,F72A)
XMOVE(02,01)
MOVE(0080,0000,3300)
XMOVE(02,01)
MOVE(0080,0080,3380)
MOVE(0024,F292,F72A)
Z3ENV is not established. (This is not an error.)
Press a key: MOVE(0024,2FFB,F72A)
rc = 0061, character = MOVE(0024,2FFB,F72A)
aMOVE(0024,2FFB,F72A)
The next message should say "Did this work?"
MOVE(0024,2FFB,F72A)
XMOVE(01,01)
MOVE(0024,2FFB,F72A) <-- this MOVE causes the issue
MOVE(000F,2E2D,3396)
MOVE(0010,0080,F74E)
MOVE(0024,FC72,F72A)
MOVE(0021,F72A,FC72)
MOVE(0024,FC72,F72A)
XMOVE(02,01)
MOVE(0080,0600,0D00)
MOVE(0024,0D6A,F72A)
MOVE(0024,0392,F72A)
MOVE(0100,605C,5F5C)
A>MOVE(00EA,0DF4,F72A)
A>testbios
A:TESTBIOS COM
XMOVE(02,01)
MOVE(0080,0000,3300)
XMOVE(02,01)
MOVE(0080,0080,3380)
Z3ENV is not established. (This is not an error.)
Press a key: rc = 0061, character = a
The next message should say "Did this work?"
XMOVE(01,01)
MOVE(000F,2E2D,3396)
Did this work?
XMOVE(02,01)
MOVE(0080,0600,0D00)
A>
What this suggests to me is there is a problem with trying to call the BIOS XMOVE/MOVE routines using the BDOS function 50 (direct BIOS call) using the Digital Research banked BDOS.
A quick google search doesn't show this as a "known" issue - but others may be aware of it.
I can reproduce this problem running DRI CP/M plus under SIMH AltairZ80 emulation and on my Z280RC system.