Скрытый текст
Profi 6.2 Rev.B / 1024
Profi v5.02 /1024/палитра/FDD3,5"/FDD5,25"/HDD130/XT-Keyb/Covox
Profi v4.00 /1024
АТМ Turbo /512/ - собран но еще не запускался
ATM Turbo 2+ v7.10 - собран на 80%
Pentagon 128 - в планах восстановить (раскуроченная плата)
ZXMC20/NemoIDE/AT-Keyb (by Caro)
Revers U8EP3C
Speccy2010, r2
[свернуть]
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Есть какие-то новости про результаты-на реальном пентагоне?
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Продолжил изучение схемы Пентагона и теста.
Импульс прерывания начинается на пересечении кадрового и строчного синхроимпульса. Будем считать, что он начинается на такте 0. Далее следует 16 строк кадрового синхроимпульса и 64 строки верхнего бордюра.
Длина строки 224 такта. Итого, до начала синхроимпульса первой строки экрана 80*224=17920 тактов.
Далее следует 32 такта (гашение, со строчным синхроимпульсом внутри) и 32+4 такта левого бордюра (4 такта, или 8 пикселей, добавляются в схеме для того, чтобы видео-контроллер заведомо успел считать из памяти данные пикселей и атрибутов).
Итого, от начала прерывания до первого пикселя экрана 17920+64+4=17988 пикселя. Первый пиксель экрана имеет номер 17988 (если считать с 0).
Цикл записи Z80 состоит из трех тактов, непосредственно запись в схеме Пентагона происходит во второй половине второго такта. Поэтому, уже в третьем такте цикла записи видео-контроллер сможет считать из памяти записанное туда значение.
Z80 реагирует на прерывание, если в последнем такте предыдущей команды сигнал INT уже в низком уровне. То есть, идеально выровненный кадр начинается не с первого такта, а со второго. Именно поэтому длительность процедуры прерывания теста 46 тактов, а не 45:
Код самого теста:Код:RAM:C086 IntSubSample: ; 1 + 19 RAM:C086 inc sp ; 6 RAM:C087 inc sp ; 6 RAM:C088 ei ; 4 RAM:C089 ret ; 10
Получается, что перед тактом записи выдерживается пауза: 46+8+10+4+7+20+WT-106+7+4+1=WT+1 тактКод:RAM:C018 Test: RAM:C018 call AlignInt ; 46 RAM:C01B RAM:C01B Loop: RAM:C01B im 1 ; 8 RAM:C01D ld de, 4000h ; 10 RAM:C020 xor a ; 4 RAM:C021 ld (de), a ; 7 RAM:C022 ld bc, (WriteTackt) ; 20 RAM:C026 call WaitBCTackts ; WT-106 RAM:C029 ld a, 0FFh ; 7 RAM:C02B ld (de), a ; 4+1 Write!
Итак:
1. Выставляем в тесте значение 17983. Запись в память происходит на такте 17985. Видео-контроллер всегда успевает считать и атрибуты, и пиксели в тактах 17986 и 17987. Полоска на экране всегда есть.
2. Значение 17984. Запись в память - 17986. До начала первого пикселя контроллеру остается только 1 такт. В одном кадре контроллер считывает атрибуты, а в другом пиксели - полоска мерцает с частотой в 25 герц.
3. Значение 17985. Запись в память - 17987. Следующий такт - вывод первого пикселя на экран. Контроллер не имеет шансов считать записанное в память значение. В качестве пикселей берется значение считанное контроллером до записи в память на такте 17986 или 17985. Полоски на экране нет.
Как-то так.
Последний раз редактировалось Lion17; 04.05.2013 в 12:58.
Запустил на настоящем Пентагоне другой тест камрада Бобровского - btime. Скриншоты прилагаю.
Что любопытно, в схеме Пентагона нет выравнивания бордюра по границе пикселей. Данные попадают на экран непосредственно после записи в порт (плюс задержка на распространение сигнала). Поэтому точно выровнять полоску бордюра со знакоместом на экране не представляется возможным. Довольно заметная разница составляет приблизительно 0.5-1 пиксель. Этим же и обуславливается разрешение бордюра у Пентагона - бордюр можно менять только с точностью до такта, а в одном такте, как известно, 2 пикселя.
Lion17, на твоём пентагоне последняя часть Rage показывает ровно или со сдвигом на 1 или 2 пикселя?
Уверен на 100%, точного совпадения не будет. Но, чтобы выяснить на сколько именно будет смещение и в какую сторону, сейчас запущу.
---------- Post added at 13:56 ---------- Previous post was at 13:50 ----------
Да, результаты btime:
реальный Пентагон: 17762-17763 (слева-справа)
Старый ZX-Emul v0.31b: 17762 точно
Новый ZX-Emul: 17762 точно
Но, это и понятно - я подстраивал положение импульса прерывания под бордюрные эффекты. Теперь предстоит работа - вывести эмуляцию на расчетный уровень, так, чтобы учесть эффект работы видео-контроллера.
Запустил Rage. Замучился, пока поймал строго-вертикальную границу черного и белого сегментов. Спас режим серийной съемки в смартфоне.
Как и ожидалось, полного схождения нет. Изображение на бордюре примерно на пол-пикселя левее, чем на экране.
ЗЫ: Пока писал ответ и заливал фотки, вращение сегментов в демке остановилось!
Запись в порт бордюра (D43-TM8) в Пентагоне происходит при:
IORQ=0, A0=0, WR=0 по переднему фронту сигнала.
После того как была произведена запись, сигналы подаются на входы мультиплексоров цветов (D46/D47-КП2) с них сигналы выводятся на видео-усилитель.
Согласно, официальной доке по Z80, при цикле записи в порт, адресная шина устанавливается почти сразу в первом такте, в начале первой половины второго такта устанавливается IORQ, и немного позже (приблизительно 0.25 второго такта) сигнал WR. Задержка сигнала происходит на элементе D8.2 (ЛЕ1) и собственно при записи в D43.
Длина одного пикселя ~143ns. Задержка на элементе К555ЛЕ1 - 20ns, на К555ТМ8 - 30ns. Итого - получается больше трети пикселя. То есть, изменения на бордюре проявятся в начале первой половины 2 такта цикла записи. Что, согласуется с тем что разница в сигнале на глаз видна, как 0.5-1 пиксель.
Смещение бордюра будет зависеть от скоростных характеристик этих микросхем. Поэтому на разных сборках Пентагона оно может немного отличаться.
PS: Кстати, надо учесть и задержку распространения прохождения сигнала пикселей.
Последний раз редактировалось Lion17; 04.05.2013 в 15:25.
вполне возможно что разница в 1 пиксель возникает из-за того что значение бордюра и пикселей захватывается по разным фронтам импульса. Но не исключено что это особенность конкретной платы пентагона (конденсаторы и т.п.). Не факт что на других платах эта задержка тоже будет присутствовать. Для проверки нужны результаты и с других экземпляров...
Последний раз редактировалось ZXMAK; 04.05.2013 в 16:24.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)