Programmers
© Alexander Mayorov, 1996.
About Bugs in SHADOW SERVICE MONITOR
For many times, vlzamyvaya with
Scorpion all kinds of protection, I ran across
to "glyuchok, but somehow it was lazy with it
understand. Then one day, putting all
the case, I "caught" the bug.
The thing that working with the register <R>
in skorpionovskom monitor not implemented
absolutely correct!
Through this all "ksorki" Register with <R> need to go
completely or trace mode or in real time. And you can not part
ottrassirovat the monitor, while the rest continue to perform
in real-time.
Just want to say that this bug is present on all versions of
skorpoina what I could find. A version of these:
Normal ROM: v2.7b, v2.95
ProfPZU: v3.42, v3.92
Now specifically about the bug:
"Buggy" command LD R, A and LD A, R.
Write ma-vermillion program from:
----------------------------
DI
LD A, # 00
LD R, A
and obtain the following results:
- When performing this programmki
mode trace <R> will:
in the STS - R = # 00, as it should be
in MONITOR - R = # 01 - glitch!
-In real time:
(Ie put a breakpoint after LD R, A)
in the STS - R = # 00, as expected
in MONITOR - R = # 02, better than nowhere!
And now, a team of LD A, R:
------------------------
STS: After you run the battery, as well as in the case <R>
will find the value of the register before the regeneration
team plus two. (Which corresponds to reference data)
MONITOR: After the command register contents <R> increase by
two, but the battery will register value before the command <R>
PLUS ONE! (Ie One unit LESS what should be)
If someone does not understand vysheskazanogo,
then look below narisovanuyu plate:
the command LD A, R
Register R Battery
to team # 00 with no difference
in the STS-e # 02 # 02
in MONITOR-e # 02 # 01
In my view everything is clear ...
I hope that you have already guessed why
"Ksorki" normally take place in the
trace, despite these errors, but
any case, try to explain:
Initially, the register <R> sent some
number. Due to an error, there (in the case
<R>) Is the number plus one. Then,
when the number of <R> sent to the battery, it gets there
DECREASE One unit, and since (-1) + (+1) = 0, all there seems
to be and in order. But if the middle "ksorki" you
tired of clicking on "True Video" or tired of waiting (SLOW
...) and you're putting a breakpoint, run the program in real
time, then ...
Another valid point:
If you log in shadow businesses by Magik-y or
by breakpoint-in you will see the register <R>
certain number (eg # 25), do not believe my eyes! There must be
a number on TWO LESS! And so that was a <R>
what we need, say shadow businesses "r = r-2".
But do not forget that the 7-bit should not be changed.
"What does this do we do?" - You ask.
On this there are several answers:
1) Do not break into programs with the help of shadow
businesses.
2) Wait, what if this bug fix ...
3) The hacking programs to adjust the register value <R>. Ie at
the entrance of shadow businesses reduce <R> at One unit can
engage and tracing. And before you leave shadow businesses must
again reduce <R> at One unit.
That such things ...
P.S. Perhaps I am wrong somewhere! Check
all by yourself!
P.P.S. As you see, not only in ZxNews are glitches ... :)
Sincerely, * MAS * from Omega group.
__________________________