From: utzoo!decvax!ucbvax!C70:info-cpm
Newsgroups: fa.info-cpm
Title: DDT bug
Article-I.D.: ucb.1219
Posted: Sat May 29 01:20:31 1982
Received: Sun May 30 01:29:37 1982

>From RGF@Mit-Mc Sat May 29 01:20:19 1982
Aha!  It is indeed the JNZ $  that confuses DDT.  The reason (and  the
reason for DRs reluctance to fix it) is the way that DDT (and DCON, by
the way) does tracing: immediately before control is passed to the
instruction @PC, a breakpoint is set at the location immediately after
that instruction and, if the instruction is such that the program
counter may change (jump, call or return - conditional) a second breakpoint
is set at the second possible location.  Now in the case of JXX $, both
locations are "$", and the PC stays where it is, regardless of the
result of the Z flag.  

I've tried other combinations of conditional jump (JZ and JNZ) and could
find no bug -- look in the file MC:CPM;JNZTES ASM -- therefore, I must
now assume that the only case this bug occurs in is "JXX $".  Why would
anyone ever code "JXX $"? (unless you want your program to die if the
condition is true...)

At any rate, the only possible fix would be for DDT and DCON to fully
simulate conditional jumps, rather than run in real-time as is
done now.  This would be a major change to make for such an obscure bug,
and who could question DR (or the author of DCON) for being reluctant
to waste that much effort?

			--Ron Fowler