vs emulators
ZXNet echo conference «code.zx»
From Kirill Frolov → To Oleg Grigoriev 30 July 2000
Press RESET immediately, Oleg!
29 Jul 00 20:31, Oleg Grigoriev wrote to Kirill Frolov:
KF>> As always, no universal anti-emulation solution
KF>> does not exist. The OUTI command does not change anything as it is not supposed to,
KF>> only emulators are buggy - some forget to install N, others
KF>> for some reason they change H... :-( You can only prepare a program
KF>> from all possible commands and test how correctly it works
KF>> processor.
OG> // I already saw this somewhere...
OG> has my craft stopped catching emuls? maybe there is something wrong with your PC? :-)
I tested the OUTI command. Your craft catches everything ok!
It’s just that every emulator has at least one bug in processor emulation,
can be tested using several (about a dozen) commands purely
by processor. VGshki is not in the bourgeois specs.
And my momed burned out and /5 is down - dupes are quite possible.
From Aleksey Malov → To Kirill Frolov 2 August 2000
Greetings, Kirill!
Fri 28 Jul 2000 at 21:54:28 Kirill Frolov and All were talking
on the topic against emulators.
KF> As always, no universal anti-emulation solution
KF> does not exist. The OUTI command does not change anything as it is not supposed to,
There's no need for you to pervert. I wrote an emulator recognizer that
absolutely don’t care about any peripherals like AY-3-8910(12), VG93. Recognized
the following emulators:
X128, Yudinovsky, Shalaevsky and the vaunted R80. Less advanced emulators
will be recognized by definition.
It contains only 3 simple tests:
1. Checks how the PV flag is set if, at the time the command is executed, ld a,i
an interruption will occur.
2. Checks whether the processor responds to a maskable interrupt while executing
long chain of commands ei.
3. The meanest test. It will be passed by the emulator only if it
will not pass the second test, and will not be passed by the emulator if it
will pass the second test. Based on the following property:
If the ei command disables interrupts for the duration of the next command, then when
executing the sequence of commands
ei
ld a,i
the PV flag will signal that interrupts are enabled. On a real Z80
Tests 2 and 3 will be passed, on the emulator - only one of them, which is what we need
will come in handy.
Congratulations, Kirill!
Vivid/Brainwave^X-Project was with you.
From Aleksey Malov → To Kirill Frolov 23 August 2000
Greetings, Kirill!
Fri 18 Aug 2000 at 01:50:14 Kirill Frolov and Aleksey Malov were talking
on the topic against emulators.
KF> That is, if the emulator responds to an interruption on a long chain ei,
KF> will he pass the third test?
The second and third tests are designed so that under any (!) at the moment
Only one of them will work as an emulator. Both tests will run on a real z80.
On “correct” emulators like R80, it will pass the test with the ei chain, but will not pass
test with ei:ld a,i ;) On stupid emulators the test with EI:ld a,i will pass, but not
will pass the test with the ei command chain. This is the whole meanness of my test ;)
AM>> are allowed. On a real Z80, tests 2 and 3 will be passed, on
AM>> emulator - only one of them, which will be useful to us.
KF> But nothing is clear here. How does it work?
I myself don’t know how IT works, but _IT WORKS_ and successfully!!!
Launch and check, but it recognizes R80, ZX-EMUL, X128, UKV, Shalaev's emul.
Congratulations, Kirill!
Vivid/Brainwave^X-Project was with you.