debugger

ZXNet echo conference «code.zx»

From George Valnin To All 23 August 2000

Hello All! 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. mnemonics in the code because changes when debugging a program are usually made in source code and it is reassembled), debugging, interface. I wrote it somewhere 4-5 weeks, then gave up. I haven’t been able to access the Spectrum for over a year due to lack of time... :( Now I have time and I thought that maybe it’s worth it after all make a debugger? Features and capabilities of my debugger: 1) When scrolling up page by page, my debugger scrolls exactly one screen (22 lines), and always line by line for one command. STS flips by 22 bytes, and line by line it's kind of buggy... 2) Unlike STS, it correctly executes all commands (including LDIR, LDDR...) 3) During debugging: clock counting, various checks - on DI with HALT, several unconditional breakpoints, stopping when entering a memory area, conditional stop, instantaneous (non-debugging) execution areas, 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 about 2 times more memory). But this is only with the most necessary checks. As shownpractice, such speed (which is 35 or more times faster) is not at all necessary, therefore, it might be better to do less of any checks and bells and whistles to the detriment 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

From Kirill Frolov To George Valnin 24 August 2000

Press RESET immediately, George! 23 Aug 00 02:54, George Valnin wrote to All: GV> 1) When scrolling up page by page, my debugger scrolls exactly by GV> one screen (22 lines), and always line by line for one command. STS GV> scrolls by 22 bytes, but line by line is generally somehow buggy... You cannot go back exactly one command; there are multi-byte commands. That's why STS twitches 1 byte at a time. GV> 2) Unlike STS, it correctly executes all commands (including GV> LDIR, LDDR...) How does STS perform them??? Everything works for me in STS6.2. GV> 3) When debugging: counting cycles ^^^^^^^^^^^^^^ Plus or minus unknown how much, as in STS5.1 or normal? GV> (non-debug) execution, CALL instant execution, etc. In general GV> there is a lot to be done here... I wish I could write a full-fledged Z80 emulator... GV> 5) Interface 64 characters. On the screen: Won't you break your eyes? Then the 512x192 mode must be turned on. GV> 6 bytes of stack; This is not enough! Especially when debugging a C program! GV> As I understand it, people are very accustomed to STS and the new debugger GV> they will be reluctant to transfer, if at all... Can do GV> the same interface as STS, adding to the free space of the screen It’s better to have the same interface as the turbo debugger on IBM-PC. It may be unusual for spektrumists at first, but in general it’s possible to work faster and more convenient. It would just be nice to have a command line. GV> In general, I'm interested in opinions Demu - to the studio! My opinion is that the Spectrum needs another hacking-tool like a dog fifth leg. STS or shadow service is quite sufficient. Another thing is the debugger, namely a _debugger_, capable of debugging programs with labels or at the level source code. There is no such thing on the Spectrum yet, and whoever makes it it will be possible to erect a monument.

From Kirill Frolov To Eugene Stahov 26 August 2000

Hемедленно нажми на RESET, Eugene! 25 Aug 00 12:16, Eugene Stahov wrote to Kirill Frolov: KF>>>> Ровно на одну команду назад отойти нельзя, команды и KF>>>> многобайтные бывают. Поэтому STS и деpгается по 1 байту. ES>>> Можно, с вероятностью около 90-95%. У меня STD (теневой отладчик ES>>> на KF>> Пpогpамма не pаботает с веpоятностями. Она или pаботает или ES> Вот, выковырял из сорцов: ES> === Cut === ES> PRIOR: DB 5,4,4,6; ES> DB 8,3,4,5; ES> DB 8,8,2,4; ES> DB 8,8,8,1; ES> === Cut === ES> алгоритм: ES> 1) определяем длины команд по адресам adr-1,adr-2,adr-3,adr-4 ES> 2) берем из таблицы PRIOR 4 числа: ES> строка = отступ назад, ES> столбец = длина команды ES> 3) находим минимальное число ES> 4) номер строки, в которой было это число := ИСКОМЫЙ ОТСТУП HАЗАД Я только не понимаю зачем это нужно. Вполне логично было бы всегда отступать назад по 1 байту -- ты ведь не знаешь с какого места пpоцессоp будет начинать исполнять эту пpогpамму. KF>>>> А STS их как выполняет??? У меня всё pаботает в STS6.2. ES>>> В защитах наезжающий на себя LDIR должен останавливаться, а при ES>>> STS поимеем ресет. KF>> А надо это? Лдиp вообще должен быть пошаговый, по 1 байту. ES> У меня 2 режима - быстрый и пошаговый. Выбирается в настройках Имхо такие вещи должны пpосто выполняться pазными кнопками <ШАГ> и . KF>> Хочешь сказать, что pасколол зетник, как флаги он выставляет? ES> Hу часть флагов мне сам зетник и выставляет, а часть пришлось ES> пораскалывать. Кста, часть данных периодически берется из эх. ES> Hапример, последний тест на эмуль подтвердит, что его эмулируют ;) Hужен вообще полностью виpтуальный спектpум, чтобы можно было пpоходить любую защиту пpивязанную к таймеpу, ВГшке... KF>> 64 чего, глаза? ES> :) 64 символа в строке. Предпочитаю информативность. Только буковки в матpице 3x8 никак не смотpятся. Hадо pежим 512x192. KF>> Какое железо? ES> Кворум 256-1024. Сидит в залоченой вышке, открывающейся по NMI :) ES> Также по NMI подключается системный банк ROM, детектит наличие STD и ES> передаёт ему управление. Тот перелопачивает память, отрубает ROM, и ES> хакер делает свои грязные ;) дела. Хотя расположение страниц меняется, ES> для человека это незаметно. По NMI анализируется: - текущая страница ES> (програмно), - номер экрана (аппаратно) - активность TR-DOS ES> (програмно) - AY, затем глушится. (програмно) По выходу всё ES> восстанавливается. Как я понял, никаких таких extra-features в квоpуме нет и всё это с легкостью пеpеносится на обычный спек, исключая только вход по NMI. KF>> Скpиншот в SCR давай. Каpтинки кpасивые :-) ES>>> Пока что STD есть именно hacking tool. Размер ~80КБ - интерфейс ES>>> = палка о 2х концах :( KF>> 80кб это что? Код??? :-( ) ES> и код, и фонт, и таблички, и т.д Всё pавно многовато :-/ ES>>> Поддержка меток будет в следующей версии. KF>> Tut только такая замоpочка -- чтобы поддеpжать метки их надо KF>> считать из файла. А откуда его взять на спектpуме? Hи KF>> ассемблеpа нет такого, ни сpедств для хpанения этого файла :-( ES> Во-первых, метки остаются после ассемблирования в памяти. В какой памяти? Hоpмальный ассемблеp всё пишет в файл. И каждый pаз ассемблиpовать? ES> Во-вторых, в любом случае надо их импортировать. Есть устоявшиеся стандаpты на файлы со списками меток. ES> В третьих, их можно и записать после ассемблирования В момент ассемблиpования. Ты не уловил самую главную мысль -- чтобы дебагеp мог pаботать с файлами нужны сpедства хpанения этих файлов. TR-DOS таковым не является :-( Hу можно конечно весь ввод-вывод вынести в отдельный модуль... Почитай нижезаююченный файлик и подумай насколько легче было бы pазмещать пpогpамму с отладчиком в памяти: === Cut === begin 644 ZXMMU.ZIP M4$L#!!0``H`(`*^Q&2G`O%>U<@D``/<6```)````6EA-354N5%A4M5A;;Q3) M%7Y'XC^4>++1N)D>SWAL1XMV8X=FU%H%E M&Z-H(^U+3<^47>Y+]0.<_'LCB^=;>]-AGCT?Z#?*>J;[ZM+`5&PE1WG3K? MN7>=<_X MY"SD..RI(-H_2(3#=]C5CWY;8RN+##$?W$DO,1) M`ZD&ZCI]C;[6VDFXH-FM@L2L"EN`8A-P5CMA@JA>F+$Z`);]+F3WA=9C+ M>,1<:@"%CE*[T$700_?B3@&8Q+F*QG[*C_)4E?X$"F8!YV3@B!THI$+) M(N!XSL#E!PES8$FFL#0DJPT5"I"`:"?3)9M]CC@X[:9!T>>AD-Q(E@=N'# MM>8E[$!H:[>)BSTX%;B;)J#:",0;V#X>$D+7X4$P``%6NFD!V^D8!U8>D& ML$/GOX@9+'K&IY+MCA1N0^-_GI/D&W=7/38%.#(2#H..;@.$LA3/5)IB,,NE+YHD]UI.QQREN`$-K MRX)X)A<>*/+F#GN;R)U#X1T;;0&_.53IA)F-R8!"$<.]@0#9&;L2#D):U^Y M,LO2R.&N/X3HFR9:M"E0C4/KR(4X%?DAO$:$&;J]3H9[,D.`!.Q$R(&8P_^ M=><2`%(I'LDGH%#YB0#%&5.>"^RK(#NXAD3D).Y]*RGMB3VPY/E*/%YC4` M="6D8ZU6:VUI"MH%J;^?R,@7'B(-O+#Q:,6V+3;'P0^B!-)#-D'00;Z'4R:= MATCGPY5#)OO@D9>8-*BQ#4XADQYDU292B2,Z.ODA'SS152N.0I&U5)#UO"'53-88QU&2C7 M8FO<6Q1BMJ_QK5$I(M@N"V[J<._DV*S$H$N@^<2"KX5D<>%Z1EJ`[7 M.!NQ0K%HV!NULEIFLXX$&)([!)QT4:$'B"4'&=2!M@(0=5@[E)[J]J@>`^DH M-1*#?3P_-GOM1I%8R%B++;[Y/@,SP`J68C)$RB`<=#J8A'CRK6EA>GL:;;9 M9F-C2`Y54EA.-1608CCN=?A!J[L"[A(H57,(O6(Q]`=.;KT1Y1+GX1J#L M1BC'@!'@D"9J5[LS5@JE.Z&($F3_A'L)Z$^,Q5AV0^2!B_.S]=JL79MMU&:; M;$^&@ZQX6-!K,@NE*=+/'$%L1C+6E1H^QW&=U?A8:?&1IH5[+]08HGN?]G3Q MJ.8@WDT9WJ3!80F18GGI^??#N07V9&7QT=KJTZ4%8_ICOV_[_==]_7MA7D2J M1]&JTYIYY)[)#1DEPVMW>KWG_6G['YGV+C6XR0$KB.LE<8.(&X;8WNI/]0WQ5$%KE[3C1#MN:!M;_79&VSY%W2V0 M:]KQK?Y$1MO,:#^R2QGL)@AOUC/-GA44);)-R#?M*L4_[FEW%A2DQWY"L4( M@N+2U.B)$E516J5^9.CYXW*4KNB3I//V$8JJ?VTR_K6?G$:1O7_9[[R#/]S M"@6C^'JXVI@XMG_TQLT])@^EW79*KX4(S,W1DUYRTO< MRNKRYZL+2TL/5Y_W_Q;0-C5_#M*KY=XMOO`[]A M8!H5_$85OU'B-]X'_CAMO?5PMWR5^TZ@Y7M%_O*K_>*G_^/O0 MOZ6W?GYMYFI!5SR6;:NQ%]ADNLA-E8TCWE>R2ZQZZ+N4#A++?,C6:FB[= M=PK3>&F^%PW?]AGX8CJA+^$Y?/U<%.7==]:>4&/*?H-I]W]`H="?7QQ1T7 M'[AX5R:8!&AT?*RVE8.V2>279OI]6JQNW;I5K']7K"[=NL78R/S]T8LCC=_? MITO'C]BG'S0L:Y*-N+B(NKB(!AA:2.IDT(_QBG*C5L[F_@=U=NIOA`P'AO94 M`WWK:*G?4^H8E`N-T&UPDSS4-71Y:'EUUV9DPQ8^SX^2M0DF7MQT3*OF%U\n MU6KZ@U;3G[*:^8CEGCE(L@XKS="D88,+."RJAP,A;O^'+)M-;#BCBE-C3?UW M4O_5X5UV`0)IQ2=/F8IU`?IC:HLQOH9F3;EUY",Y/8 M'6YP=!E90,9'I@"NOAM)AT`W3;-9PWFT7^CTT3:8AO[(E*TRE

From Kirill Frolov To Alexander Bondarenko 12 September 2000

Press RESET immediately, Alexander! 10 Aug 99 20:13, Alexander Bondarenko wrote to Kirill Frolov: AM>>> It was not enough to write a Spectrum emulator for Spectrum AM>>> complete insanity. KF>> Well, there is a ZX81 emulator! AB> What? On Spec? 8-[ ] YES! On spec! It slows down a little, but in turbo mode it’s quite normal. The version that I disketted and the sources of /the/ /emulator/ were lost :~-( All that's left is the Z80 with the emulator, you can run it from ZXASM, now I'll hide in the echo.

From elfh To All 13 December 2006

Hello bugsy My unreal hangs when debugging a program with tags enabled. It started when the user.l file exceeded 14 kilobytes. Has anyone encountered anything like this? maybe there are other solutions for the debugger?