debugger
ZXNet echo conference «real.speccy»
From George Valnin → To All 22 August 2000
As I understand it, people are very accustomed to STS and will be reluctant to switch to a new debugger, if at all... Can I make the same interface as the
STS, adding some information to the free screen space (alternative
registers, clock counter...), but faster, bug-free and with more
capabilities?...
In general I'm interested in the opinion of ZX coders and all interested parties.
This message was sent to ZX.SPECTRUM, CODE.ZX, REAL.SPECCY, ZXNET.SOFT.
I also ask you to pass this letter to all the ZX coders you know who do not have FIDO or
ZXNet.
Suggestions, criticism, condolences, facts, etc. I accept:
From George Valnin → To All 22 August 2000
Two years ago I started writing a debugger for ZX. It was intended as a debugger for
debugging your programs. I made a disassembler (without assembly, i.e., a mnemonic into the code, since changes when debugging a program are usually made to the source code and it is reassembled), debugging, and an interface. I wrote it for about 4-5
weeks, then abandoned it. I haven’t approached the Spectrum for more than a year due to lack
of time... :( Now I have time and I thought that maybe it’s worth
making a debugger after all?
Features and capabilities of my debugger:
1) When scrolling up page by page, my debugger scrolls exactly one screen
(22 lines), and line by line always one command. STS, on the other hand, scrolls by 22 bytes, and line by line is generally somehow buggy...
2) Unlike STS, it correctly executes all commands (including LDIR,
LDDR...)
3) During debugging: counting cycles, various checks - on DI during HALT, several
unconditional breakpoints, stopping when entering a memory area,
stopping by condition, areas of instant (non-debugging) execution, CALL
instant execution, etc. In general, you can screw up a lot here...
4) Fast tracing - 35 times faster than STS's. Although it can be done faster
(at first it was written 60 times faster, but it took up about 2 times more
memory). But this is only with the most necessary checks.As
practice shows, such speed (which is 35 or more times faster) is not needed at all,
so it might be better to do less of any checks and bells and whistles at the expense of
speed?
5) Interface 64 characters. On the screen:
On the left - registers and pairs PC, SP, IX, IY, IR, BC, DE, HL, AF, BC', DE', HL', AF';
interrupt mode IM1/IM 2 and on/off; clock counter (up to 99999999, i.e. 30 minutes
of work in real (non-traceable) mode); interrupt call address in
IM2 mode (provided that it is on the #FF bus);
In the middle is a disassembler of the ADDRESS-CODE-MNEMONY format.
On the right is the bit state of registers BC, DE, HL, AF, IX, IY; hexadecimal
memory dump 4*10 format ADDRESS-CODES-ASCII; 6 bytes stack; bank number and its
bit state.
Maybe there is something superfluous here or, on the contrary, something is missing...
6) Occupies 9KB + screen 7KB = one memory bank, like STS.
7) ...
As I understand, people are very accustomed to STS and will be reluctant to switch to a new debugger
if at all... Can make the same interface as
STS, adding on free space on the screen some information (alternative
registers, clock counter...), but faster, bug-free and with more
opportunities?...
In general, I am interested in the opinion of ZX coders and all interested parties.
This message was sent to ZX.SPECTRUM, CODE.ZX, REAL.SPECCY, ZXNET.SOFT.
I also ask you to pass this onletter to all known ZX coders who do not have FIDO or
ZXNet.
Suggestions, criticism, condolences, facts, etc. I accept:
FIDO: 2:5020/2065.944
ZXNet: 500:95/468.8
Internet: gpv...@mail.ru
ICQ: 55017428
Regards, George aka -=GPV=-.
From Mihail Obuhov → To All 23 August 2000
Somehow Tuesday August 23, 2000 at 02:54:46 there was a conflict
George Valnin and All were arguing about the debugger
GV> Two years ago I started writing a debugger for the ZX. It
GV> was conceived as a debugger for debugging your programs. I
GV> made a disassembler (without assembly, i.e. mnemonics in
GV> code because changes when debugging a program are usually
GV> made to the source and it is reassembled), debugging,
GV> interface. I wrote it for about 4-5 weeks, then abandoned it.
GV> I haven’t approached the Spectrum for more than a year due to lack of
GV> time... :( Now I have time and I thought that maybe
GV> it’s worth making a debugger after all?
Of course it is, and with such characteristics it’s nice that people
are returning to our beloved Spectrum!
Mick/DPL E-mail: mick...@mail.ru
From Alexander Shashkevich → To All 24 August 2000
Worth it. STS has not been updated for a long time and is already becoming outdated.
...skip...
GV> 4) Fast tracing - 35 times faster than STS's. Although
GV> can be done faster
It is not possible, but it is necessary...
GV> (at first it was written 60 times faster, but it took up
GV> about 2 times more memory). But this is only with the most necessary checks. As practice shows, such
GV> speed (which is 35 or more times faster) is not needed at all
GV>, so it might be better to do less of any
GV> checks and bells and whistles at the expense of speed?
Preferably without damage.
GV> 5) Interface 64 characters. On the screen:
GV> On the left - registers and pairs PC, SP, IX, IY, IR, BC, DE, HL, AF,
GV> BC', DE', HL', AF';
It is advisable to insert a couple of lines to view the contents of the stack. Otherwise, it is not
convenient (that is, it is not yet implemented) to view the contents of the stack.
GV> interrupt mode IM1/IM 2 and on/off; clock counter (up to
GV> 99999999 i.e. 30 minutes of operation in real
GV> (non-traceable) mode); interrupt call address in
GV> IM2 mode (provided that it is on the #FF bus);
GV> In the middle is a disassembler of the ADDRESS-CODE-MNEMONY format.
GV> On the right is the bit state of registers BC, DE, HL, AF, IX, IY;
GV> hexadecimal memory dump 4*10 format
GV> ADDRESS-CODES-ASCII; 6 bytes stack; bank number and its
GV>bit state. Maybe there is something superfluous here, or vice versa
GV> something is missing...
Is there support for Russian/Latin? It would be nice to add a small text viewer and (if
possible) an editor.
GV> 6) Occupies 9KB + 7KB screen = one memory bank, like STS.
You need the ability to print in bank 7 if the debugger is in any other (naturally at the expense of print speed). Completely correct trdos tracing.
And a new feature that is not in STS. I was once digging through one protection and
I came across the following code:
.....
halt
label dec sp
dec sp
pop de
ld a,(hl)
xor d
xor e
ld (hl),a
......
If such code is passed using ss+z, then the halt command will be issued from
resident and to the stack will put the return address in the resident, and not in the label, and then
then the error pops up in the code and is xored incorrectly.
GV> As I understand, people are very accustomed to STS and will be reluctant to switch to the new
GV> debugger, if at all
GV>...
People are not fools, they want to work on something good. There will be.
GV> Can it make the same interface as STS, adding to
GV> free screen space some information
GV> (alternative registers, clock counter...), but
GV> is faster, bug-free and with more capabilities?...
The interface is an interface, and you need more capabilities than sts (not the currentplan
information display) otherwise the debugger is not needed.
Priest^Energy Minds
[TEAM Marinka][TEAM FREEDOM][prie...@mail.ru][TEAM LightWave]
... Energy Minds from Freedom. We are Sinclair's generation.
From Kirill Frolov → To All 25 August 2000
AS> If you pass this code using ss+z, then the halt command will be
AS> produced from the resident and the return address will be placed on the stack in the
AS> resident, and not in the label, and then the error pops up in the code and is displayed
AS> incorrectly.
So I wrote - you need an EMULATING debugger, it should do all the commands
emulate rather than run on the processor.
From Dmitry Lomov → To All 28 August 2000
AS>> xored incorrectly.
KF> So I wrote - you need an EMULATED debugger, it should emulate all commands
KF>, and not run on the processor.
in fact, this is not necessary. It's easier to run commands that can't lead
to fatal results and emulate the rest. I did this when I wrote my own debugger in ~94 ;) it’s even saved somewhere, it even works. I then
even removed one of their protections (there was a 48th car, and there was no sts yet).
All the best.
Dmitry.
... LD..X-TRADE... [ZX] [Quake]
From Kirill Frolov → To All 28 August 2000
DL> this is not really necessary. It’s easier to run commands that cannot
DL> lead to fatal results, and emulate the rest.
Which cannot lead just to be emulated.
And any commands that work with external (in relation to the processor)
memory (ports) must be emulated, and they are the most complex.
From George Valnin → To All 29 August 2000
AS> You need the ability to print in the 7th bank if the debugger is in any other
AS> (naturally at the expense of printing speed).
This can only be done through a resident and will be slower... Why?
AS> Completely correct
AS> tracing
AS> trdos.
This is questionable... why would a system programmer or demomaker
debug TRDOS?
AS> And a new feature that is not in STS. I was once digging through one
AS> protection and came across the following code:
AS> .....
AS> halt
AS> label dec sp
AS> dec sp
AS> pop de
AS> ld a,(hl)
AS> xor d
AS> xor e
AS> ld (hl),a
AS> ......
AS> If you pass such a code using ss+z, then the halt command will be issued
AS> from the resident and the return address will be placed on the stack in the resident, and not in the
AS> label, and then the error pops up in the code and is displayed incorrectly.
I told you that STS is a buggy debugger (more like a bugger ;) ). HALT I will
emulate.
From George Valnin → To All 29 August 2000
26 Aug 00 01:12, Kirill Frolov -> George Valnin:
KF> And just like in the shadow service - dump for hl, de, bc, ix, iy !
KF> Everything won’t fit on the screen, you need to do it like in a turbo debugger,
KF> to
KF> you could open different windows to suit your taste and move them around the screen.
Is this really necessary?
KF> So I wrote - you need an EMULATING debugger, it should
KF> emulate all commands
KF>, and not run on the processor.
What's the point, for example, in emulating the ADD HL,DE command? You only need to emulate
commands that may be executed incorrectly under certain conditions.
Regards, George.
From Andrey Roska → To All 29 August 2000
KF> So I wrote - you need an EMULATED debugger, it should
KF> emulate all commands, and not run on the processor.
What does EMULATED mean? How are you going to emulate the HALT command?
And in general, it seems to me that you need a debugger to work _correctly :)))
Otherwise STS has outlived its usefulness, may Stalker not be offended by me :)
Best wishes, D.J.Dron !
From Alexander Shashkevich → To All 30 August 2000
KF>> emulate, and not run on the processor.
GV> What is the point, for example, of emulating the ADD HL,DE command?
GV> You should only emulate commands that can
GV> be executed incorrectly under some conditions.
You better tell us how you process critical commands...
From Alexander Shashkevich → To All 30 August 2000
AS>> different (naturally at the expense of printing speed).
GV> This can only be done through a resident and will be
GV> slower... Why?
Nada. :) A bunch of programs have appeared that take up all 128 memory, but the 2nd
screen is left untouched, and they don’t hesitate to put the code in the 1st screen. And then
having loaded the sts into the 7th page, it starts to get wildly annoying when, every time you switch
a bank, you catch this thing and send it to the 512 memory. :) By the way, it would be nice
to provide the ability to automatically add a number to the current bank,
which will switch to 256/512 memory (for particularly voracious programs). In
STS, the most depressing feature is this: STS never(!) catches which bank
the traced program turned on if you set a breakpoint and run it
will be executed. At the moment of entering the STS through a breakpoint, it simply stupidly
shows
the bank that it showed before the launch. This must be done as an obligation.
AS>> Completely correct trdos tracing.
GV> This is in question... why would a system programmer or
GV> demo maker debug TRDOS?
Why do we finally need to debug something????? What kind of stupid questions are these? Now a lot of
defenses pass their code through DOS (no matter how stupid it is on the part of the defender).
STS in the DOS ROM if it encounters the following code
LD HL,#2000
LD A,(HL)
then itwill not place the contents of the DOS ROM from cell #2000 into A. He'll just take it from the basic ROM... Well, what kind of debugger will you get if some kind of defense uses a similar trick to destroy a huge block? Or do I
want to write a new trdos ROM? I will be able to debug it completely and conveniently when it is in its rightful place, i.e. from address #0000...
Are you convinced? Yes, and I would also like to properly debug calls to trdos ports...
AS>> label, well, further in the code the error pops up and is displayed
AS>> incorrectly.
GV> I told you that STS is a buggy debugger (more like a bugger ;) ).
GV> HALT I will emulate.
Excellent. What about LDIR in this code?
LABEL LD HL,LABEL
PUSH HL
POP DE
INC DE
LD BC,#FFFF
LD (HL),0
LDIR
RET
STS in step mode simply clears all memory... :(
From George Valnin → To All 31 August 2000
DL>> can lead to fatal results, and emulate
DL>> the rest.
KF> Which cannot lead just simply and emulate.
Why is this necessary? Isn’t it easier to just execute them?
KF> And any commands for working with external (in relation to the processor)
KF> memory (ports) must be emulated, and they are the most complex.
Commands for working with external memory, too, not all need to be emulated.
Very few commands need to be emulated.
Regards, George.
From George Valnin → To All 31 August 2000
KF>> commands
KF>> should emulate, and not run on the processor.
AR> What does EMULATED mean? How will you emulate the HALT command
AR> ?
What is HALT? :) This is NOP, PC=PC-1. Of course, you can emulate... is it necessary?
AR> And in general, it seems to me that we need a debugger so that _correctly_
AR> works
AR> :))) Otherwise, STS has become obsolete, may Stalker not be offended by me :)
My debugger will correctly execute all commands, and with HALT the subroutine
will be executed by Z80 or traced - at the user's choice.
And Naturally, clock cycles during control transfer will not be counted. :)
Sincerely, George.
From Eugene Palenock → To All 31 August 2000
GV> What is HALT? :) This is NOP, PC=PC-1. Of course, you can emulate... but
GV> is it necessary?
From George Valnin → To All 31 August 2000
GV>> is it possible... but is it necessary?
EP> It is necessary. Only on ZX debuggers this is not realistic.
EP> Suppose the program is 100% calculated in clock cycles, and somewhere it
EP> does
EP> HALT, and then works with the R register... And then what?
From Eugene Palenock → To All 31 August 2000
01 Sep 00 01:22, George Valnin -> Eugene Palenock:
GV>>> What is HALT? :) This is NOP, PC=PC-1. Of course,
GV>>> you can emulate... but is it necessary?
EP>> It is necessary. Only on ZX debuggers this is not realistic.
EP>> Suppose the program is 100% calculated in clock cycles, and somewhere it
EP>> does HALT, and then works with the R register... And then what?
GV> What confuses you? Explain.
I once wrote a level editor (more precisely, immortality ;) for King's Bounty II (the one with color graphics and in Russian - there was another absolutely
different one)... And there the protection of these shipments was precisely related to HALT and a cycle like
LD A,R: XOR A,(HL): LD (HL),A
Regards, Evgeniy.
From Dmitry Lomov → To All 1 September 2000
GV>> is it possible... but is it necessary?
EP> It is necessary. Only on ZX debuggers this is not realistic.
EP> Suppose the program is 100% calculated in cycles, and somewhere it does
EP> HALT, and then works with the R register... And then what?
this will only work on the machine of the person who wrote this software ;)
it is never known how many clock cycles are in the computer.
From George Valnin → To All 1 September 2000
EP> I once wrote a level editor (more precisely, immortality ;) for King's
EP> Bounty
EP> II (the one with color graphics and in Russian - there was another
EP> completely different)... And there the protection of these shipments was precisely connected with
EP> HALT and a cycle like LD A,R: XOR A,(HL): LD (HL),A
So you haven’t explained the main thing yet - why can’t this be emulated on the ZX? :)
Sincerely, George.
From Kirill Frolov → To All 1 September 2000
GV>> is it possible... but is it necessary?
EP> It is necessary. Only on ZX debuggers this is not possible.
Why is it not possible? Well, it’s real...
From Alexander Shashkevich → To All 1 September 2000
Nonsense. Complete stop of the processor. If you don’t believe me, then think about what’s happening according to
DI:HALT... And according to your words, it turns out that if you slip something
other than NOP into the processor at this time, it will work again?
GV>> PC=PC-1.
=8-( ) Is it that it starts working towards reducing addresses??? In my opinion
you need to read more books. :(
EP> It is necessary. Only on ZX debuggers this is not realistic.
EP> Suppose the program is 100% calculated in clock cycles, and somewhere
EP> it does HALT, and then works with the R register... And
EP> what then?
??? You increase R by one after you encounter HALT. You call
the interrupt handling procedure (at When debugging, it’s stupid to wait for an interrupt, you just need to
CALL the INT handler) and after the call, take readings from R...
From Kirill Frolov → To All 2 September 2000
EP>> does HALT, and then works with the R register... And then what?
DL> it will only work on the machine of the person who wrote this software ;)
DL> it is never known how many cycles are in the inte.
You are wrong. Everything there works within some range. There are such
protections, like from SoftStar, I picked them myself.
From Kirill Frolov → To All 2 September 2000
30 Aug 00 19:59, Alexander Shashkevich wrote to George Valnin:
AS> slower. Well, sometimes it happens! I once encountered a protection
AS> that controlled itself (it did a pseudo CRC of its own
AS> body and a clogged block, after which it used this CRC for
AS> decompression and for each clogged byte it recalculated itself
AS> again and again) and there was no way to put a breakpoint there and
AS> I had to leave the STS for a couple of hours so that it could trace the matter. More
AS> any questions about speed? :)
Usually there is a very serious hole in such protections - it is enough to trace
open a few bytes after this procedure and stick a breakpoint there,
and then do JP.
AS> You too. :) You better share how you achieved such a speed?
You better ask Stalker how he achieved such brakes!
AS> In STS, the most depressing feature is this: STS never(!) catches
AS> which bank the traced program turned on if you set a breakpoint
AS> and launched it, it will be executed. At the moment of entering the STS through the breakpoint
AS> it simply stupidly shows the bank that it showed before
AS> launch. This must be done as an obligation.
This has always been the case in the shadow service. MOA programs sometimes make you happy...
AS> Athen in words I and ChV2 are already finishing writing. :))
Will ChV2 be released immediately after the release of ZF-9?
Everyone has seen the Alfa version of ChV2...
AS> I hope not a little? :))))
And also for AY-music to play during interruptions.
From George Valnin → To All 2 September 2000
EP>> does HALT, and then works with the R register... And then what?
DL> it will only work on the machine of the person who wrote this software ;)
DL> it is never known how many clock cycles are in the int.
You can, of course, choose the number of clock cycles in the int. But on wait machines
you will have to emulate it too, and this is not very easy. In general, I think that this
is not necessary at all.
And what, I wonder, is it more convenient to perform an interrupt during debugging - after
a number of cycles, commands, etc.?
Regards, George.
From George Valnin → To All 2 September 2000
GV>> What is the point, for example, of emulating the ADD HL,DE command?
GV>> You only need to emulate commands that can
GV>> be executed incorrectly under some conditions.
From George Valnin → To All 2 September 2000
AS> Are there at least some beta...alpha versions? Otherwise, in words, I and ChV2 are already
AS> finishing writing. :))
AS> PS: you also need a fast search (so that you can search across pages), a fast
AS> fill, a fast replace. To make it easy to substitute the mark
AS> printer instead of the address for any ASMA (it is desirable that the delivery of the
AS> kit include such printers for the most popular ASMS). It would be nice to have a setting for disk work such as on which tracks, how many
AS> sectors, what length they are and what numbers they have... Moreover, for drives
AS> A and B there are separate settings, otherwise if you need to write disk A
AS> from a non-standard B to trdos... You will hesitate to use the keyboard. :) I hope not a little?
AS> :))))
AS> Priest^Energy Minds
AS> [TEAM Marinka][TEAM FREEDOM][prie...@mail.ru][TEAM LightWave]
AS> ... Energy Minds from Freedom. We are Sinclair's generation.
AS> --- ZX-Spectrum MED Lara Croft 4.40 - its my choice!!!
AS> * Origin: The Gates attacked you! (2:467/81.19)
Sincerely, George.
From Yuri Potapov → To All 2 September 2000
Once Thu 31 Aug 2000 at 10:18:05 George and Kirill were arguing about the debugger
GV> Commands for working with external memory also do not need to be emulated
GV>.
GV> Very few commands need to be emulated.
And weakly emulate magnetic tape :)
▒▒▓▓▓ ▄▀█▀▀▀ ▓▓▓▒▒░░░ Sincerely yours, Yuri /I \
▒▓▓▓ ▐▌▀█▀ ▓▓▓▓▓▓▒▒▒░░░░ Jerri / Alien Factory \ZX/
From Yuri Potapov → To All 2 September 2000
EP> then it works with the R register... And then what?
joker yes
then the author will have this program (protection) work
and others will break it or erase it and that’s it...
From Yuri Potapov → To All 2 September 2000
Once Fri 1 Sep 2000 at 00:23:01 Eugene and George were arguing about the topic of debugger
EP> another)... And there the protection of these shipments was precisely connected with
EP> HALT and a cycle like
EP> LD A,R: XOR A,(HL): LD (HL),A
and the register R where overloaded?
From George Valnin → To All 2 September 2000
AS> Are there at least some beta...alpha versions? Otherwise, in words, I and ChV2 are already
AS> finishing writing. :))
I wrote that it already exists. I'll quickly finish the rest because... I know what and how
to do, but first I need to fully develop the concept... at least
try. :)
AS> PS: you also need a fast search (so that you can search through the pages),
AS> fast
AS> fill, fast replace.
It will be.
AS> To make it easy to substitute the mark
AS> stamper instead of the address for any ASMA (it is desirable that the delivery of the
AS> kit
AS> include such stampers for the most popular ASmov).
It will be.
AS> It would be nice to have a setting for disk operation such as on which tracks
AS> how many
AS> sectors, what length they are and what numbers they have... Moreover, for drives
AS> A and B the settings are separate, otherwise if you need to write disk A
AS> from non-standard B to trdos...
What does non-standard mean?
AS> You will swing your keyboard to work. :) I hope not a little?
AS> :))))
Normal. :)
Sincerely,George.
From Max Shashkin → To All 2 September 2000
Once Fri 1 Sep 2000 at 04:38:33 there was a conflict
Dmitry Lomov and Eugene Palenock were arguing about the debugger
I decided to add some heat to this dialogue
DL> it will only work on the machine of the person who wrote this software ;)
DL> it is never known how many cycles there are in the computer.
it’s possible done using the settings
With best wishes, Max Shashkin aka Shaitan/Stars of Keladan.
From Moderator of REAL.SPECCY → To All 3 September 2000
KF> You're wrong. Everything there works within some range. There are such
^^^^^^^^^^^^^(1) ^^^^^^^^(2)
KF> protections, from SoftStar it seems, I picked them myself.
^^^^^(3)
Hmmm... The unsubstantiated statement (1), supported by absolutely accurate, I would even say, reference data (2) and (3)... ;)
I will take action. We need to get rid of information garbage.
If you think you are right, justify it.
[I ZX] [Team Sashki-rulez] [Team Guardian] [Team Kelly]
Hasta la vista.
Tim Kelly
... tim_...@mail.ru 500:622/1@zxnet http://timkelly.newmail.ru
From Eugene Palenock → To All 5 September 2000
05 Sep 00 07:31, George Valnin -> Eugene Palenock:
GV>>> This will not work.
EP>> Are there any arguments?
GV> Where is the memory entry?
Forgot ;)
GV> And why do you need LDIR?
For a delay so that the entire encryption cycle of the bank gets several interrupts
Regards, Evgeniy.
From Eugene Palenock → To All 5 September 2000
KF>>>> such protections, from SoftStar, I think, I picked them myself.
GV>>> What about wait machines?
EP>> HALT is actually synchronization via the video controller, WAIT
EP>> won’t hurt here
EP>> What if you think about it?
It won’t work if it’s protecting the program itself, and if so to protect, for example,
shipments on a specific machine - what is the problem?
The appearance of WAIT is completely the same in each new cycle of screen re-rendering
- and HALT allows you to start the program every time at the same moment of
screen output.
Regards, Evgeniy.
From Kirill Frolov → To All 5 September 2000
* Forwarded by Kirill Frolov (2:5030/827.2)
* Area : CODE.ZX (Encoders on the Spectrum)
* From : Aleksey Malov, 500:8362/1.3 (03 Sep 00 20:39)
* To : George Valnin
* Subj : debugger
==============================================================================
Greetings, George!
Thu 31 Aug 2000 at 02:59:37 George Valnin and Aleksey Malov talked
on the topic of debugger.
GV> LDIR performs how much LDI in a loop is slow. You just need to do a few checks before executing the
GV> command, and then a few more... :)
Well, at least that's it. However, it may happen that ldir will/will not have time to erase the interrupt table before the interrupt arrives, and the program can check this. In general, you can come up with all sorts of perversions.
Happy, George! Vivid/Brainwave^X-Project was with you.
[ZX] [Sailor Moon]
-+- Lara Croft for $4.50.
+ Origin: Forest... (500:8362/1.3)
============================================================================================================
Immediately click on RESET, All!
Here's another idea. Also protection tied to INT.
From Dmitry Naboka → To All 5 September 2000
AS> leave the STS for a couple of hours so that he can handle this matter. Will there be any more questions
AS> regarding
AS> about speed? :)
Damn, this is a debugger, not a cracker!
Why did you get to the bottom of these protections? It is done in order
to make it more pleasant and convenient to _debug_ and not to hack
programs
AS> Why do we finally need to debug something????? What kind of stupid questions are these? Now
AS> a lot of
AS> defenses pass their code through DOS (no matter how stupid it may be on the part of
AS> the defender).
Well, here we go again;\
╥ ╥│ ╥ ╥ ,│, ╔╦╗╥ ╥╔╡╞═╗╔═╗╔═╡╥ ╥ ,│, Powered __
║│║╠═╗║│║ ─╬─ ║║║╚═╣╚═╗ ║╠═╝║ ╚═╣ ─╬─ by __/ /
╚╩╝╚═╝╚╩╝ '│` ╨│╨╞═╝╞═╝ ╨╚═╡╨╞═══╝ '│` Amiga \_\/
From Dmitriy Nesmachny → To All 5 September 2000
DN>> Really? And if you run the test before this, how many cycles
DN>> are there in
DN>> int
DN>> on
DN>> _this_ machine? Yes, and provide for an error + - how many
DN>> cycles?
GV> What other error?
Well damn, the length of the int is different on different cars? And are there white cars? So
the number of cycles will jump from machine to machine within a certain
range. Not on time, because the interruption is on the scorpion and the pentagon?
With respect, Dmitriy.
From Dmitriy Nesmachny → To All 5 September 2000
EP> WAIT won't hurt here.
No, well, the picture won't shake, that's a fact ;-) but the number of clock cycles in the inte
will be different, R will have different values on different output machines. There
you have to somehow cunningly come out and somehow compensate for this difference, although right now
I don’t really imagine how.
With respect, Dmitriy.
From Dmitriy Nesmachny → To All 5 September 2000
Monday 4 Sep 2000 13:52:04, Eugene Palenock -> Yuri Potapov:
EP> It is not at all necessary to protect the program itself in this way. It is possible
EP> for example to protect shipments. ;Processing IM 2
EP> EI
EP> RET
EP> ;"Protecting" data at addresses C000h..FFFFh
EP> EI
EP> LD HL,#C000
EP> LD A,L
EP> LD R,A
EP> M1 LD A,R
EP> XOR A,(HL)
This what? XOR A: LD (HL),A ?
EP> INC HL
EP> XOR A
EP> CP H
EP> PUSH AF,BC,DE,HL
EP> LD HL,0
EP> LD DE,1
EP> LD BC,#500
EP> LDIR
EP> POP HL,DE,BC,AF
EP> JP Z,M1
Are you shifting everything from address #FB00 by one to higher addresses? Why?
Sincerely, Dmitriy.
From George Valnin → To All 6 September 2000
04 Sep 00 12:07, Kirill Frolov -> Yuri Potapov:
YP>> and where was register R overloaded?
KF> There’s no need. The XOR operation is reversible, the main thing is that
KF> the number of cycles
KF> is even.
Did you understand what you said?
From Kirill Frolov → To All 6 September 2000
04 Sep 00 09:58, George Valnin wrote to Kirill Frolov:
GV>>> And how, interestingly, is it more convenient to perform an interrupt during debugging
GV>>> - after a number of clock cycles, commands, etc.?
KF>> Look at how this is done in emulators...
GV> Wow. Say so.
There is a counter that shows how many ticks have passed since the beginning
of the frame interruption.
From Kirill Frolov → To All 6 September 2000
04 Sep 00 09:57, George Valnin wrote to Kirill Frolov:
AS>>>> .....
AS>>>> halt
AS>>>> label dec sp
AS>>>> dec sp
AS>>>> pop de
AS>>>> ld a,(hl)
AS>>>> xor d
AS>>>> xor e
AS>>>> ld (hl),a
AS>>>> ......
From Kirill Frolov → To All 6 September 2000
KF>> You're wrong. Everything there works within some range. There are
KF>> such protections, from SoftStar, I think, I picked them myself.
GV> And wait machines?
From Kirill Frolov → To All 6 September 2000
04 Sep 00 15:36, Yuri Potapov wrote to Kirill Frolov:
KF>> Will ChV2 be released immediately after the release of ZF-9?
KF>> Everyone has seen the Alfa version of ChV2...
YP> It won’t come out Mednonogov returned the money :(
Do you think that Will ZF-9 be released?
From George Valnin → To All 6 September 2000
EP> For a delay so that the entire encryption cycle of the bank gets
EP> several
EP> interruptions
2 minutes with your aldir will quarrel... :)))
Sincerely, George aka -=GPV=-.
From George Valnin → To All 6 September 2000
04 Sep 00 13:32, Yuri Potapov -> George Valnin:
GV>> In general, I make a debugger for debugging my programs, and not for
GV>> crack.
YP> Well, here you are wrong, debuggers are made for debugging
YP> and I can debug not the current compiled source code
YP> but also an already completed program
But you won’t quack it?
YP> let’s say I made a program
Let’s propose... :)
YP> checked - it works
Already good. :)
YP> compiled, recorded, uploaded - it works
Is it really still working? ;)
YP> installed xorka - it works :)
Hero! ;). :)
YP> and you need Xorka from impudent, prying eyes :)
Do you have something to protect? ;)
YP> or I wrote a driver for trdos, but damn, I forgot
YP> addresses for accessing trdos ports, what do you want to do
YP> if your trdos debugger doesn’t want to see point-blank
You need to write such things down on a piece of paper. And if you _already_ wrote the driver, then
why do you need addresses?
YP> this is also debugging
VG will you also debug?;)
From Andrey Roska → To All 6 September 2000
-+# Hi, Kirill Frolov! #+-
On Thursday August 31, 2000, at 07:36, Kirill Frolov wrote to Andrey Roska:
AR>> How long does your turbo debugger take? Isn't it 16 KB? ;)
KF> 490 kb.
He-he-he :)))
KF>>> So I wrote - you need an EMULATED debugger, it should emulate all commands
KF>>> and not run it on the processor.
AR>> What does EMULATED mean? How will you emulate the HALT command?
KF> Wait until an emulated interrupt
KF> occurs in the emulated timer or until the emulated reset or emulated magic is activated.
FAQ ??? Didn't you write because you were stoned? ;) Or maybe I'm stoned :)))
AR>> And in general, it seems to me that we need a debugger to work _correctly
AR> >: ))) Otherwise, STS has outlived its usefulness, may Stalker not be offended by me :)
KF> That's why we need a spec emulsion on a spec.
Except on the Sprinter... By the way, you can do _hardware_ on it make
the coolest debugger, or I was dreaming, or it’s already there, or I had a cool
idea :)
Best wishes, D.J. Dron !
From George Valnin → To All 6 September 2000
EP>> PUSH AF,BC,DE,HL
EP>> LD HL,0
EP>> LD DE,1
EP>> LD BC,#500
EP>> LDIR
EP>> POP HL,DE,BC,AF
EP>> JP Z,M1
From George Valnin → To All 7 September 2000
DN> Damn, this is a debugger, not a cracker!
I tell them the same thing - they don’t listen...
DN> Why did they get to the bottom of these protections?
Just like little children... ;)
DN> It’s done in order
DN> to make it more pleasant and convenient to _debug_ and not hack
DN> programs
It looks like now it will be possible to hack...
From Dmitry Naboka → To All 7 September 2000
AS> =8-( ) Is it that he is starting to work towards reducing addresses???
AS> In my
AS> you need to read more books. :(
Everything he says is correct. What happens on the halt command:
nop
jr $-1
thus waiting for an interrupt. However, register R is adjusted
more.
AS> interrupt handling procedure (when debugging it’s stupid to wait for an interrupt,
AS> you need just
AS> CALL the INT handler) and after the call you take readings from R...
This call can mess up the resident and cause the page to be clicked.
Although, there must be a choice - execution or tracing (of the
interrupt handler).
From Dmitriy Nesmachny → To All 7 September 2000
EP>>> PUSH AF,BC,DE,HL
EP>>> LD HL,0
EP>>> LD DE,1
EP>>> LD BC,#500
EP>>> LDIR
EP>>> POP HL,DE,BC,AF
EP>>> JP Z,M1
DN>> Here What do you mean, from address #FB00 everything is one to high
From Kirill Frolov → To All 7 September 2000
YP>>> where was register R overloaded?
KF>> There’s no need. The XOR operation is reversible, the main thing is that the
KF>> number of cycles
KF>> is even.
From George Valnin → To All 8 September 2000
KF> dec sp
KF> dec sp
KF> pop de
KF> Now the contents of the stack by (sp-2) on the label label will be corrupted.
What does it mean “You will have to not use the stack of the program being debugged at all”?
Did I really mean to?
From Alexander Shashkevich → To All 8 September 2000
*Hi-ho,* _/George!/_
Seeing 04 Sep 00 20:03 a letter from you, I went and drank beer and sat down to cook
an answer for you. And it happened on 08 Sep 00 at 15:09:
GV>>> What is HALT? :) This is NOP,
AS>> Nonsense. Complete stop of the processor. If you don’t believe it, then think about what
AS>> happens according to DI:HALT... And according to your words, it turns out that if the processor
AS>> at this time slips something other than NOP, it will work again?
GV> Firstly, not a complete stop of the processor, but the execution of a 4-cycle command
GV> type NOP.
For some reason it doesn’t seem so to me...
GV> Secondly, with DI HALT the interruption will simply never come
how will it not come? Even as soon as it arrives, the current percent will not respond to it.
GV> and NOP will be executed until RESET.
What does “execute” mean? After all, if the processor is performing something, then it must read the command. Where does he read nop from then?
GV> It can be interrupted by NMI, by the way.
Thanks for saying that I didn’t know.
GV>>>> PC=PC-1.
From Kirill Frolov → To All 8 September 2000
06 Sep 00 10:39, George Valnin wrote to Kirill Frolov:
GV> Did you understand what you said?
No.
From Kirill Frolov → To All 8 September 2000
EP>> several interruptions
GV> He will quarrel with your leader for 2 minutes... :)))
Encrypting shipment is generally a crazy idea!
Well, why might this be needed? You just need to protect
it from changes.
From Alexander Shashkevich → To All 8 September 2000
DN> Damn, this is a debugger, not a cracker!
In short, what the hell. let everyone use STS.
DN> What did you get to the bottom of these protections? It is done in order
DN> to make it more pleasant and convenient to _debug_ and not hack
DN> programs
what if I need to debug my protection?
*Cya!* Sincerely, Priest^Energy Minds
[I ZX]
[/Energy Minds Team/] [/Freedom Team/] [/X-Project Team/] [/Beer Rulez/]
... e-mail: [_mid...@usa.com_]^[_mid...@mail.ru_]
From Dmitry Naboka → To All 8 September 2000
DN> Are you shifting everything from address #FB00 by one to the higher addresses
DN>? Why?
Where do you see the shift here? And where did #FB00 come from? This is LDIR,
not LDDR.
A delay is performed here (ROM->ROM transfer). Only this dirty trick will spoil the page if instead of ROM a RAM page is connected... And to prevent this from happening, you need to make HL and DE
equal to each other.
From Kirill Frolov → To All 8 September 2000
AR> Unless on the Sprinter... By the way, you can make it in _hardware_
AR> the coolest debugger, or I was dreaming, or it’s already there,
AR> or I came up with a cool idea :)
A hardware debugger is really smoking...
From Kirill Frolov → To All 8 September 2000
GV> What does "You will have to not use the stack of the program being debugged
GV> mean"? Was I going to?
I don’t know.
From Alexander Shashkevich → To All 9 September 2000
DN>> hacking programs
GV> Looks like now it will be possible to hack...
In short, people, let’s figure it out and put an end to whether the debugger
needs full-fledged hacking capabilities or not.
So, in order.
1) Why do you need a debugger?
- so that you can trace any code of your own, and not only
programs. We must accept it as a fact that if the author does it only to
debug “his” programs, then who can guarantee that tomorrow I won’t write a program of my own that will make this debugger choke?
2) A debugger that cannot trace the most ordinary code (and the pro
doesn’t care about the protection or we’ll fix our bug) accordingly, no need.
Therefore, Georgy decide: either if you have already started doing it, then make a completely
normal debugger for which (as well as for the processor) it should be the same as if it
traces protection or our code, or it is no longer a full-fledged debugger that will not be popular among the people
and accordingly, with your reasonable approach
you yourself will come to the conclusion that such a debugger (which is unknown where he will refuse
to work due to the fact that the working conditions will be close to those used in protection)
the people do not need it. :)
... Energy Minds from Freedom. We are Sinclair's generation.
From Alexander Shashkevich → To All 9 September 2000
AS>> with R...
DN> This call can ruin both the resident and the page
DN> click.
Correct. He does what he wants. So you can kill an STS resident.
DN> Although, there must be a choice - execution or tracing
DN> (interrupt handler).
And no one is against it.
Priest^Energy Minds
[TEAM Marinka][TEAM FREEDOM][prie...@mail.ru][TEAM LightWave]
From Yuri Potapov → To All 9 September 2000
Somehow Tue Sep 5, 2000 at 10:21:48 pm Dmitry and Alexander were arguing about the debugger
AS>> side
AS>> protecting).
DN> Well, protection again;\
What is the difference between a debugger and a cracker?
And how can people learn ACM? current picking, breaking other people's programs!
But sometimes this is vital
somehow the branded game Project-X came to me
but didn’t even start
just reset and that’s it
I had to climb inside
I found this design
ld a,(#0008)
cp #18
jp nz,#0000
well isn’t it disgusting?
▒▒▓▓▓ ▄▀█▀▀▀ ▓▓▓▒▒░░░ Sincerely yours, Yuri /I \
▒▓▓▓ ▐▌▀█▀ ▓▓▓▓▓▓▒▒▒░░░░ Jerri / Alien Factory \ZX/
From Yuri Potapov → To All 9 September 2000
Once Wed 6 Sep 2000 at 17:03:47 George and Yuri were arguing about the debugger
YP>> and Xorka is needed from impudent, prying eyes :)
GV> Do you have anything to protect? ;)
Well, yes, your name is in the copyright, otherwise in our city
there is a person who likes to write his names into other people's prog discs as a doctor
GV> Such things need to be written down on a piece of paper. And if you _already_
GV> wrote a driver, then
GV> why do you need addresses?
So while I wrote the driver 20 times via STS in trdos, I looked at
addresses :)
GV> Are you going to debug VG too? ;)
no, but when you have one push less than necessary
the driver from trdos will not return
From George Valnin → To All 9 September 2000
AS> What does “execute” mean? After all, if the processor is performing something,
AS> then it
AS> must read the command from the wrong side. Where does it read nop from then?
Prots probably (this can be checked) reads the HALT command. And I don’t know how the HALT program is implemented inside
and hardly anyone else, but
I told you the result.
From George Valnin → To All 9 September 2000
DN>> What did you get to the bottom of these protections? It is done in order
DN>> to make it more pleasant and convenient to _debug_ and not to hack
DN>> programs
From George Valnin → To All 9 September 2000
YP> What is the difference between a debugger and a cracker?
A debugger is for debugging, and a cracker is for cracking. It's not 1995 and people are no longer obsessed with defense, except for special ones...
YP> And how can people study ASM? current picking, breaking other people's programs!
Not only.
From Dmitry Naboka → To All 10 September 2000
DN> No, well, the picture won’t shake, that’s a fact ;-) but the number of cycles
DN> in the inte will be different, R will have different values on different machines according to the
DN> output. There you need to somehow cunningly... and somehow compensate for this difference, although now I don’t really imagine how.
Yeah, the funny thing is that the difference between cars can be quite brutal... For example, the slowest car I’ve seen
was about 62,000 cycles (all according to Jemmini Commander), and the most fast
was about 130,000 cycles (yes, a turbo machine)...
P.S. Is it even necessary? IMHO, it's all fingers...
P.P.S. And I’m generally for open source ;)
From Dmitry Naboka → To All 11 September 2000
AS> in short, what the heck. let everyone use sts.
And “nada” for more convenient debugging
AS> what if I need to debug my protection?
But then read your answer ;)
From Sergey Selev → To All 11 September 2000
One day on Sunday, September 10, 2000, Dmitry Naboka spoke with Dmitriy Nesmachny
about the debugger...
DN> brutal... For example, the slowest car that I
DN> saw
DN> was about 62000 cycles (all according to Jemmini Commander), and
And you should have seen my computer without a common field. 55552 cycles. :)
██▓▓▓▒▒▒░░░ Sergey aka Cyber from Cobra Software.
█▓▓▓▒▒▒░░░ 500:322/62 500:322/67.16
... [I ZX] [Beer] [Storm] [Turbo Commander] [ZXNet] [FidoNet] [Offspring]
From Kirill Frolov → To All 11 September 2000
06 Sep 00 14:43, Sergey Kulkov wrote to Eugene Palenock:
SK> You can also trace the interrupt handler...
You can’t. STS does not have a clock counter.
From Kirill Frolov → To All 11 September 2000
10 Sep 00 14:49, Dmitry Naboka wrote to Dmitriy Nesmachny:
DN> P.S. Is it even necessary? IMHO, it's all fingers...
It's necessary. So that it is.
DN> P.P.S. And I'm generally for open source ;)
Me too.
From Yuri Potapov → To All 12 September 2000
▒▒▓▓▓ ▄▀█▀▀▀ ▓▓▓▒▒░░ Sincerely yours, Yuri /I \
▓▓▓▓ ▓▓▓▓▓▓▒▒░░░░ Jerri / Alien Factory \ZX/
From Dmitriy Nesmachny → To All 12 September 2000
Friday 8 Sep 2000 16:56:08, Dmitry Naboka -> Dmitriy Nesmachny:
DN> Where do you see the shift here? And where did #FB00 come from? This is
DN> LDIR,
DN> and not LDDR.
DN> Here a delay is performed (ROM->ROM transfer). Only
DN> this dirty trick will spoil the page if instead of ROM a
DN> page of RAM is connected... And to prevent this from happening, you need to make HL and DE
DN> equal to each other.
Damn, well, I was wrong, guess what, I noticed when the letter had already left. I have already apologized as much as possible? :-)))
Sincerely, Dmitriy.
From Alexander Shashkevich → To All 13 September 2000
DN> And "nada" for more convenient debugging
For debugging what??? Your programs? Which I know like the 5 fingers of my own and can you even work in them? For _your_ people, the sts is enough. And for strangers - hacking works! And for hacking, everyone is screaming here, you don’t need to do a subject... So why the hell do you need this subject then?
From George Valnin → To All 16 September 2000
12 Sep 00 23:39, Yuri Potapov -> George Valnin:
GV>> Not only.
YP> Okay, how did you study Asm. Share your experience
At first I read all sorts of books/magazines. I quickly abandoned the matter. I started doing my own thing (small procedures), while at the same time I was surfing (usually spying on something) in other programs. When I understood and remembered all the commands, I began to do everything myself...
From George Valnin → To All 17 September 2000
I argued with people for a long time and just thought about what kind of debugger
should be made. And I came to the conclusion that it should be convenient both for debugging
your programs and for hacking, i.e. must be able to debug any code.
To do this, he will be indestructible, will be able to correctly debug TR-DOS (meaning
reading commands from memory in the area #0000-#3FFF), will be able to sit in any
page.
But, probably, in this situation, another bank will be involved.
From Yuri Potapov → To All 19 September 2000
GV> At first I read all sorts of books/magazines. This is a quick thing
^^^^^^^^^^^^ everyone started with this
GV> abandoned it. I started doing something on my own
GV> (small procedures), at the same time I was climbing
GV> (usually spying
GV> on something) in other programs. When I understood all the commands and
^^^^^^^^^^^^^^^^^^^^ I think these were other people's programs ;)
GV> I remembered and began to do everything
GV> myself...
EVERYONE studies ACM like this: they read, watch someone else's and only then
write their own. And as far as I remember in 93-94, on disc
versions of games they installed different intrusions with protections
and the protections have to be picked ;)
But this is true, time has passed, but the habits remain :(
From Valerij Kozhevnikoff → To All 19 September 2000
17 Sep 00 21:56, George Valnin -> All:
GV> I argued with people for a long time and just thought about what kind of
GV> debugger should be made. And I came to the conclusion that it
GV> should be convenient both for debugging your programs and for
GV> hacking, i.e. must be able to debug any code. To do this, it will be
GV> indestructible, will be able to correctly debug TR-DOS (meaning
GV> commands for reading from memory in the area #0000-#3FFF), will be able to sit in
GV> any page.
Can you make 64 characters in 512x192 mode? It will be just cool!
This 12k screen eats almost a whole can, well, to hell with it, for such a thing
it’s not a pity. The printing procedure is the same as for 32, only the addresses are different.
The expected memory layout is probably this: the 7th bank will contain the screen,
fonts, printer, GUI, etc., the main
part of the subject will be in any other bank (optional). So?
Yes, I wouldn’t forget about the cache, some of the procedures (the same typewriter and fonts with a gui)
can be placed there.
GV> But, probably, in this situation, another
GV> bank will be involved.
For God’s sake.
WBR, Jason.
[Team Obituary][Team Friday 13th][Team Evil Maniacs][Team Huge Axes]
From Kirill Frolov → To All 19 September 2000
17 Sep 00 21:56, George Valnin wrote to All:
GV> both for debugging your programs and for hacking, i.e. must be able
GV> to debug any code. To do this, it will be indestructible, will be able
GV> to correctly debug TR-DOS (meaning commands for reading from memory in the
GV> area #0000-#3FFF), will be able to sit in any page.
But it will not be possible to debug isdos and cpu/m :-(
From Kirill Frolov → To All 20 September 2000
19 Sep 00 23:54, Valerij Kozhevnikoff wrote to George Valnin:
VK> Will you make 64 characters in 512x192 mode? It will be just cool!
And another 56 in 384x304 mode!
VK> This 12k screen eats up - almost a whole can, well, to hell with it, for
VK> it’s not a pity for such a thing. The printing procedure is the same as for 32, only
VK> the familiarity addresses are different. The expected memory layout is probably this:
VK> in the 7th bank there will be a screen, fonts, typing, GUI, etc., in any
VK> other bank (optional) the main part of the subject will sit. So?
Not so. In the 7th bank, if there is a screen there, there remains 4kb of free
space.
The printing machine will only fit there, not very quickly with one font.
VK> Yes, I wouldn’t forget about the cache, some of the procedures (the same printing machine and
VK> fonts with a guide) can be placed there.
I’ve created a diagram here - any bank in any place, in total 1 small circuit diagram...
From Alexandr Shashkevich → To All 21 September 2000
Hello, George!
Sunday September 17, 2000 20:56, George Valnin -> All:
GV> I argued with people for a long time and just thought about what kind of
GV> debugger should be made. And I came to the conclusion that it should be convenient
GV> both for debugging your programs and for hacking, i.e. must be able
GV> to debug any code. To do this, it will be unkillable, will be able to correctly
GV> debug TR-DOS (meaning commands for reading from memory in the area
GV> #0000-#3FFF), will be able to sit in any page.
GV> But, probably, in this situation, another bank will be involved.
Do you really decide to do this? debugger for _spec_? And then he got it right from the very beginning, then he doesn’t know how to do this, then he doesn’t know how to do something else, as if you’re not writing on spec...
/_Priest^Energy Minds/_
_[Team Marinka][Team Spectrum][Team FREEDOM][Team LightWave]_
... Energy Minds... Step in future...
From Roman Tutkevich → To All 1 November 2000
this was a very decisive step on your part... :)
*Cya!* Sincerely, Midi^Energy Minds
[I ZX]
[/Energy Minds Team/] [/Freedom Team/] [/X-Project Team/] [/Beer Rulezъ/]
... e-mail: [/*mid...@usa.com*/]^[/*mid...@mail.ru*/] _/ICQ: 91856284/_