z80: Инструменты статического и динамического анализа кода.


Отчасти развивая вопрос поднятый в этой публикации, хочу спросить у вас: «какие есть 'умные' интерактивные инструменты динамического и статического анализа кода для z80 (кроме дорогущего IDA Starter/Pro)»?

И что эти «умники» умеют?

  1. какие (и где) есть инструменты динамического анализа кода?
    к примеру, для того, чтобы получить маркировку участка исходного кода как «исполняемого», достаточно запустить программу под эмулятором, некоторое время погонять её с включенным логированием состояния регистра PC (указатель адреса исполняемой команды) — как результат получим массив адресов, по которым реально расположен исполняемый код.

Читать дальше →

Как писать код, чтоб не сойти с ума и не впасть в депрессию

Часто возникает неприятная ситуация: некий сценер начинает писать код и в определенный момент впадает в панику от того, что код ведет себя не так, как ожидается. Код не из простых, слёту указать на проблему невозможно, а ничего внятного, кроме «нихера не работает!!1» кодер сказать не может. Помочь в этой ситуации удручающе сложно. Все смотрят с сожалением, испытывая тяжкие угрызения совести. Наконец самый ответственный профессионал просит сорец, понимая, что сейчас ему придется разгрести тонну интуитивно понятного, хорошо прокомментированного кода на асме. (В этот момент очень хочется, чтоб кто-нибудь написал плагин для редактора, который будет подсвечивать все баги в сорце красным цветом.)

Читать дальше →

FAQ

Общие вопросы


Q. Что такое Хайп?
A. Хайп — это площадка для публичного выражения мыслей и обмена контентом, среди людей, которые с тобой в одной теме. Тема — всё, что относится к ретрокомпьютерам и творчеству, связанному с ними, т.е. — демосцена, программирование, создание музыки и графики для ретрокомпьютеров, а также другие, близкие к этому темы.

Так же рекомендуется прочесть темы:
HYPE by introspec
Что такое Hype для меня by sq
Комментарий пользователя bfox

Q. Как попасть на Хайп?
A. На Хайп можно попасть по инвайту. Инвайт может выслать на электронную почту любой пользователь Хайпа с суммой рейтинга и кармы больше или равной 1.

Q. Зачем был создан Хайп?
A. Хайп был создан потому что нам не хватало уютного места, где мы могли бы собраться и обсудить актуальные для ретросцены вопросы. Обсудить их свободно, публично, высказать разные мнения, поспорить и найти компромисс. Высказать все, что накопилось давно, поделиться опытом не в формте «привата», а на всю ретросцену. Рассказать о том, что мы знаем, к чему стремимся, чем живем на ретроплатформах. Надеемся, что и вам хочется того же.

Q. Из чего состоит Хайп?
A. Основа Хайпа — авторы и авторские топики. Мы приглашаем всех стать авторами, мы думаем, вам всем есть, что сказать, раз уж вы здесь. Топики могут быть размещены как в личных блогах авторов, существующих по умолчанию, так и в тематических блогах.

Вторая, не меньшая чем сами топики, часть Хайпа — комментарии. Часто авторский топик является лишь затравкой, стартом большой дискуссии — вершиной айсберга комментариев.

Третьей частью Хайпа является выражение мнения — голосование за комментарии, топики и пользователей. Каждый пользователь Хайпа имеет возможность выразить свое мнение просто нажав "+" или "-". При голосовании за топики так же есть возможность «воздерживаться» (нажатие на «глазик»).

Q. Почему на Хайпе нет четких правил с пунктами и перечнем наказаний?
A. Потому что мы очень надеемся на ваше благоразумие и на то, что вы разделяете нашу надежду сделать Хайп уютным. Нас объединяет прежде всего чувство юмора, взаимоуважение и общее дело. Мы надеемся, что вам с нами по пути.

Q. С чего начать?
A. Если вы не знаете как писать и оформлять топики, как комментировать и чего ждать от аудитории — читайте и осваивайтесь.

Плюсы и минусы, поставленные пользователями складываются в рейтинги. Суммарные цифры отражают полезность того или иного материала по мнению активной аудитории Хайпа. На главной странице Хайпа сейчас отображаются топики только с неотрицательным рейтингом. То же самое и с комментариями — наиболее полезные и обоснованные комментарии имеют больший рейтинг, а необдуманные, оскорбительные, чаще всего уходят в минус.

Комментарии в отличие от топиков редактировать нельзя. Но если вы в чем-то вдруг ошиблись — ничего страшного. Не ошибается только тот, кто ничего не делает. Не надо впадать в панику, ошибку всегда можно исправить, написав еще один комментарий с пояснением.

Q. Что делать, если что-то идет не так?
Ваш топик или комментарий минусуют? Один или два минуса при небольшом количестве активных пользователей — это не страшно. Если минусов много — наверное стоит обратить внимание на комментарии и аргументы. Наверняка вы что-то делаете не так. Мы все бываем иногда неправы, в этом так же нет ничего страшного. Мы стараемся признавать и исправлять свои ошибки. В случае же, если вы считате неправым собеседника, то не ленитесь отстаивать свою позицию. Но делайте это корректно — т.е. спокойно и аргументированно.

Собеседник ведет себя плохо, не аргументирует свою позицию или даже оскорбляет вас. Что делать? Прежде всего не ведите себя так же. Отсутствие аргументов, излишняя категоричность и оскорбления в комментариях — почти гарантированно навлекут на себя отрицательную реакцию активной аудитории Хайпа и минусы станут сигналом для вашего собеседника, что что-то не так.
Если кто-то ведет себя плохо систематически — у вас есть возможность проголосовать за самого пользователя. Но переголосовать возможности уже не будет.

Снижение рейтинга пользователя ниже ноля и до определенных значений автоматически будет ограничивать его активность. Начиная от возможности голосовать за комментарии, заканчивая возможностью писать топики.

Если случай будет совсем вопиющим, то Администрации Хайпа придется принять экстренные меры, т.к. никто из нас не хочет, чтобы Хайп стал совсем уж неуютным для большинства читателей, либо перестал быть доступным в Интернет-пространстве.

Написание и оформление статей


Q. Как писать в блоги?
A. Кнопка «Создать» в правом верхнем углу страницы либо, пункт меню «Создать» в левом нижнем углу страницы.

Q. Как правильно оформлять топики?
A. Желательно не забывать о том, что заголовки и предложения начинаются с заглавной буквы, в конце заголовков точка не ставится, перед знаками препинания не ставится пробел, а после них ставится в обязательном порядке. Так же в виду отсутствия отступов перед абзацами желательно вставлять одну пустую строку между ними, а длинные тексты — структурировать, например, разбивая их на части и оформляя подзаголовки. Ограничение на размер статьи в данный момент — 32Кб, поэтому объемные материалы можно разбивать на несколько публикаций. Так же не забывайте использовать тег cut, чтобы на главной странице ваш топик выглядел аккуратно. Заменить стандартный кат «Читать дальше» можно тегом с пояснением: <cut name=«Там дальше интереснее и интереснее!»>

Для публикации исходников лучше использовать специальные теги:
<z80> — программа для процессора Zilog Z80
<m6502> — программа для процессора MOS 6502/6510
Примерно так:
<z80>
; текст программы
</z80>

Q. Я не хочу писать в блог имени себя, как мне написать в тематический блог?
A. При написании топика в списке блогов выбрать другой блог, кроме персонального.

Q. При написании поста в списке блогов мне доступен только персональный блог, остальные блоги не доступны, что делать?
A. Вступить в блоги. Открыть список блогов, нажать иконку с «Очками» — она стала синей, значит вы вступили в блог и можете теперь в него писать. (P.S. админы не могут вступать в блоги, они по дефолту могут писать в любой блог).

Q. Как написать на главную?
A. Любой пост попадает на главную сразу после публикации.

Q. Мне не нравится название моего блога «Блог им. %USERNAME%». Могу я изменить его название?
A. Нет. Но можно написать личное сообщение nyuk и он при случае сменит название блога на КАКОЕ УГОДНО в пределах разумного.

Q. Как добавлять youtube, чтобы оно отображалось корректно?
A. Есть два варианта:
1) скопировать с ютуба HTML-код и вставить его в пост, добавив в ссылку «http://»
2) использовать тег <video>http://...</video>
Ну и не забудьте воспользоваться предпросмотром, чтобы убедиться, что все в порядке.

Прочее


Q. Как исправить комментарий?
A. Никак. Будьте внимательны при публикации и используйте предпросмотр!

Q. Зачем нужны френды?
A. Например для удобного отслеживания активности просто по нажатию галки напротив френда в разделе «Активность / Я слежу».

Q. Что делать если письма от HypeBot постоянно приходят на почту?
A. Профиль — Настройки — Настройки сайта — Убрать все галки, сохранить. Кроме этого при публикации нового топика не забудьте сразу же отписаться от уведомлений на комментарии к этому топику, т.к. система по умолчанию подписывает Вас на топик, который Вы публикуете.
  • avatar
  • [просмотров: 19485]
  • 243
  • +9

Hyper Hyper!

Is everybody on the floor? We put some energy into this place! I want to ask you something: are you ready for the voice of the Scene?!

We want to sing a big shout to You, and to all retro sceners in the world!
And to AAA, Abrimaal, AER, aGGreSSor, akaHachi, ALKO, Alone Coder, Anjuel, Ansy, AntiBender, ate bit, Atom, Axo-Tak, bfox, Bill Gilbert, Brandon, Brink, Buddy, Busysoft, buyan, Buyan, CatMan, Cheveron, Chip Champion, Chris Graham, Cj splinter, Crash Nicker, Crisis, Cthonian Godkiller, CVM, Darkman007, Debris, deMarche, Den Popov, Denis Grachev, DiHalt visitors, Dimidrol, diver, DMan, DoctorGentleman, Dokk, dubmaster, EARL, Einar, ejkot, Ellvis, Entire Group, Equinox, Exin, Factor6, Fakie, Fearofdark, FFP, Fishbone Crew, Fit, Flaminglog, Flast, Future Shock, g0blinish, Gasman, Gemba Boys, Gibson, gotoandplay, Hacker VBI, halloween, HOOY-PROGRAM, Ignacio Prini Garcia, Inmensa Bola de Manteca, introspec, inx, irrlicht project, Jack^Therac25, Jangler, Jenya, John Norton Irr, Jok, Joulo, K.C., kabardcomp, Kabuto Factory, kakos_nonos, Kantxo Design, kfaraday, Kpacku, Krossvas, KungFuFurby, Lamer Pinky, Lamers, LCD, Lilka, Logout, Lord Grey, Louisa, MAC, Magdev, Manuel Gomez, Mark R. Jones, mayhem, mborik, Mchanga, mega9man, Mick Farrow, mikezt, mimiga, Ming, Mister Beep, mk7, MKSTAR26, MmcM, Moran, moroz1999, MovieMovies1, Mr.Scrololo, Mr.Wolf, Myke Pickstock, nairam, Natasha Zotova, Nitrofurano, noice, Nuts_, odessamic, Oleg Origin, Olga Y., Paul, Peter Johnson, Phonex, Piesiu, Placebo, plrusek, prof4d, r0bat, rainwarrior, raphaelgoulart, Retro, Retrobyt, Rewind, Rindex, Robus, R-Tape, rushjet1, Sam Style, Samanasuke, SaNchez, Sand, Savestate, scalesmann, Scooblee, Scoopex, Sector (.PL), Sentinel, Serzhsoft, Shadow Maker, ShaMAN, Shaos, Shuran33, SIR, skrju, Slider, Slipstream, Softstar, speccy.pl, Splinter, T$RI, tayle, TDM, Team Site, thesuper, tiboh, Titus, TK90X Fan, TmK, TomR, trefi, Trixs, Tutty, Tygrys, Vassa, wormsbiysk, Yerzmyey, Zero Team, Zillah, Ziutek… and to all coders, graphics and music artists all over the world! (if we have forgot anyone, because the list taken from 2013-2014 releases ;)

Keep the scene…

Sit there, be good, bye-bye!

256 байт интро "Disequilibrium" для компьютера Vectrex

Пара слов насчёт моей 256-байтной работы DISEQUILIBRIUM для Vectrex (пятое место на Chaos Constructions'2025).
Хотя работа довольно примитивная — линия, по которой скользит точка — реализация не так проста, как кажется на первый взгляд. Нарисовать линию на Vectrex'е, разумеется, просто, как и точку — есть даже соответствующие подпрограммы в BIOS'е. Но вот с перемещением точки вдоль перемещающейся линии — есть нюансы.

Читать дальше →

Video-spectrumizer с чего всё начиналось и к чему пришло

Сегодня я рад представить вам свой долгоиграющий (15 лет!) и долго развивающийся фан-проект — video-spectumizer в том виде, в котором его можно уже отдать общественности в опенсорс.



Что такое video-spectrumizer?

Video-spectrumizer — это cli утилита\программа, которая позволяет преобразовать любое видео в стилизованное под графику с zx spectrum.

Это чё, спектрум на максималках?
Ага, типа того. Представьте, что вам в спектрум завезли очень много мегагерц и\или все инструкции выполняются всего за такт и вы можете выплёвывать графику на экран с экстремально быстрой скоростью, одновременно всю её обсчитав. Т.е. графика у вас честная — пикселы, атрибуты и клешинг конечно же присутствует, а вот филрейт космический.

Ну и зачем?
Just for fun! В основном ради фана, интересно же глянуть как оно могло бы быть на сверхбыстром спектруме. Cчитайте такой виртуальный видео-ускоритель вставили в спек и оно полетело. Но и не только забавы для… Годами ранее (когда это всё было в полу ручном режиме на нескольких скриптах) я успешно делал видеоряд для музыкальных треков, получались довольно залипательные видеоролики (читай видеоклипы), которые не стыдно (а может и стыдно) выложить на видеохостинги. Но обо всём по порядку.

История с самого начала →

Exact emulation of the Snow effect

At the beginning of this year I promised to publish details of the exact snow effect emulation after publication of a new version of my emulator. Well, I changed my mind, the publication of new version of the emulator is planned later, and the details of the exact snow effect emulation I publish now, along with the update of my emulator Spectramine (1.05), in which the correct emulation of the snow effect was first implemented, and my snow effect tests, which are modifications of the snow test with a tuning table.

The snow effect is caused by the interference of two processes — reading screen data by the ULA and memory regeneration by the processor. Under certain conditions, the bits 6..0 of the register R are picked up in the bits 6..0 of the screen memory address set by the ULA on the address bus. In the course of my research, another effect was revealed, determined by the same reasons. I called it the double effect — under certain conditions, the interference of reading ULA screen data and memory regeneration leads to the fact that ULA cannot read the data of the next bar of pixels, and instead displays a bar of pixels with the data read earlier. This effect is perfectly visible on the ULA128 test written by azesmbog/zebest.

And now the actual results of the research — the necessary information for exact emulation of the snow effect.

A prerequisite for the snow effect: at 16/48/128/+2 machines snow appears if register I contains a value that, if it taken by the high byte of address, points to an address in the slow memory. For Spectrum 16/48 these are addresses #4000..#7FFF, for 128/+2 these are also addresses #C000… #FFFF, if a slow memory page is paged there, for 128/+2 these are pages with odd numbers — 1,3,5,7 (not 0,2,4,6).

There is no snow/double effects on Amstrad's black machines (+2A/+2B/+3/...) and on any ZX Spectrum clones except maybe those that based on original ULA.

Additionally, it turned out that on some 128 machines the snow effect leads to a hang / reset of the computer, and on some — it works ok.

Now about the snow phases. Snow phase means how a 4-tacts operation code fetching cycle overlaps an 8-tacts screen drawing cycle by ULA.

So:
1) If the 4th cycle of the operation code fetching cycle coincides with the 3th cycle of the 8-tacts output cycle of 16 pixels, this leads to snow effect — in the pixels1/attributes1 addresses the bit 6..0 of address is replaced with the current contents of the bits 6..0 of register R (it should already be increased in this operation code fetching cycle). upd.: And page from where the snow bytes are fetched is that the register I pointed to.

2) If the 4th cycle of the operation code fetching cycle coincides with the 5th cycle of the 8-tacts output cycle of 16 pixels, then this leads to a double effect — the pixels2/attributes2 data will not be read, and the screen bar with pixels1/attributes1 data will be re-displayed.

3) For the remaining variants of overlapping the operation code fetching cycle with the ULA screen drawing cycle, the ULA works normal, without snow and duplicate.



I express my gratitude to Pheel (Alexander Filyanov) and balford (Brendon Alford), who, at my request, launched my tests on their machines, and shot the results in the videos. Also to NEO_SPECTRUMAN, TheMartian and Guesser, for help with a question of register R's participation in the snow effect.

My emulator Spectramine (1.05) with correct snow can be downloaded here: files.fm/u/r7cymnn9m

Snow tests, the old one and my modifications of it, and ULA128 test:
zx-pk.ru/attachment.php?attachmentid=77971&d=1666205428

Sorry for long wait and bad english)

(Snow.tap test is not entirely correct — under certain conditions there will be no running columns on the screen, which is due to the absence of alignment to the beginning of the frame. Try to load it with pressed Ctrl. Very fast running columns on the screen immediately after loading the tests are caused by an imperfect pause acceleration code between the tape blocks during loading).

TheMartian's addition:
— Pixels and attributes are read in «bursts». First the RAS signal is asserted, and the raw address, (that's bits 6-0 of the video address), are set. Then the CAS signal is asserted twice, setting a column address (bits 13-7) which can point to a pixel byte and its attribute. The first CAS pulse is for the data byte, the second for the attribute, only bits 13-7 change.
— In RFSH cycles MREQ is asserted, and MREQ controls (is) RAS, and since MREQ is low in the first half of T4 it cancels contention, but it proceeds keeping fixed bits 6-0.
— So if it happens on this 3rd pixel cycle T-state, it's the first pixel/attribute burst, the RAS asserted the refresh address, so you get snow.
— If it happens on this 5th pixel cycle T-state, the RAS is kept low between the first and second bursts, so it keeps the bits 6-0 of the video address for the second burst. So, duplicate.
Also: www.zxdesign.info/dynamicRam.shtml

Update: Recently (04.2023) yet another snow peculiarity was open. When register I points to slow memory page on 128 machine, the page from where the snow bytes are fetched depends from: 1) on which slow page register I points; 2) what screen is active.
The table shows needed memory page for snow bytes fetching:
I-pointed page Screen 0(page 5) Screen 1(page 7)
1 1 3
3 1 3
5 5 7
7 5 7
In this table rows mean slow page number on which register I points to, columns mean active screen number, table cells mean from what page the snow bytes are fetched. Thanks to TheMartian, IceKnight and Richard Chandler for participation.

Recommendation for game writers — to avoid the snow effect you need to make sure that the register I does not point to slow memory, and the interrupt vector does not get into the slow memory. It is safer and easiest to place it in addresses $8000… $BFFF (register I within $80… $BF) — on machines with snow it's always fast memory page.