ZX-News #07
06 октября 1996 |
|
Programmers - On the bug in Shadow Service Monitor'e (Scorpio)
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. __________________________
Other articles:
Similar articles:
В этот день... 21 November