дело давно было, поэтому точно не помню где, но гдето читал об особенностях ранних и поздних ревизий ULA, вроде это в этой книге было, но не уверен, возможно в какой-то статье
в чем?
Вид для печати
Выяснил, что большинство передовых эмулей (а точнее, Fuse, ZXMAK2 и Spectaculator, исключая SpecEmu, EmuZwin и ZXSpin) эмулируют ошибку процессора z80 при выполнении команд LD A,I/LD A,R - во время прихода импульса прерывания эта команда в флаг PV записывает 0, т.к. обработка прерывания начинается на последнем такте выполнения команд. Подробнее об этом можно прочитать здесь и здесь. Но только во время обычной работы, во время проигрывания rzx файлов они все, кроме Spectaculator, об этой ошибке забывают.
По первой ссылке можно посмотреть код, обнаруживающий эту особенность. Как указано в тексте по второй ссылке, CMOS-процессоры Z80 этой ошибки не имеют.
Владельцы фирменных ZX Spectrum +2A(черный корпус)/+3, не могли бы вы прогнать в бейсике минитесты из этого видео: https://www.youtube.com/watch?v=Oj9ygM9U5lQ
(с четными портами не надо, там всё понятно, порт FE), и отписаться тут о результатах. Похоже, что у поздних Амстрадовских моделей таки есть эффект "порта FF", хотя конкретно на порту FF и не работает. Но эмули об этом не знают.
Амстрадовские ZX Spectrum +2A (+2 с черным корпусом) и ZX Spectrum +3. Считается, что у этих моделей нет "порта FF", как у предыдущих моделей (с незадействованных портов время от времени читаются данные, считанные ULA с экрана), а на этом видео показано, что есть, только почему-то работает на портах 1 и 5, но не работает на 255, и в режиме бейсик 48к (а ещё данные с экрана читаются инкрементированными).
на этом видео
1 испанская модель
2 прежний владелец вполне мог припаять резистор (есть такая доработка)
Да, про модель я заметил, но не думаю, что у них ULA разные. Насчёт резистора - тоже вполне возможно, поэтому мне и интересно, как у других владельцев это работает, или не работает. (И почему, если резистор, данные экрана инкрементированы, и не идут с порта FF? смысл тогда делать доработку, если в основном программы читают именно порт FF).
проверил на своём +2а
есть такой момент.
возможно перехлёст с существующими портами ?
С какими? И почему читаются данные экрана? Всё-таки больше похоже на глюк ULA. Спасибо за подтверждение факта. Возможно, кто-нибудь со временем проведет более подробное исследование, чтобы сэмулировать глюк на эмулях. Так, интереса ради, вряд ли в этом есть практический смысл, конечно.
Для исследования поведения плавающей шины есть программа Вложение 58746, ею можно проверить, на каких тиках какие экранные данные читаются, с выбранного порта. Может, кто озадачится, интереса ради, проверить, с каких портов, в какие тики, какие данные читаются, на фирменных +2А/+3.
Ещё один недокументированный нюанс эмуляции Z80 всплыл на форуме WOS: https://www.worldofspectrum.org/foru...-new-discovery (он всплыл давно, но я увидел только сегодня).
Коротко - после команд, не изменяющих флаги, а также POP AF и EX AF,AF' , команды SCF-CCF на оригинальном z80 выдают во флаги F5-F3 соотв. биты результата A or F , а после команд, влияющих на флаги - просто соответствующие биты аккумулятора.
Все эмули на текущий момент этот нюанс фейлят. Правда, похоже, что эмули работают так, как работает Nec-овский клон Z80 (всегда копируют биты аккумулятора). Другие клоны Z80 могут в данном случае выдавать что-то ещё.
А сильно не факт что таки именно "выдают". Поскольку у Z80 архитектура динамическая (как и на i8080, у него много где нет защелок и данные на внутренних шинах держатся за счет их емкости), то это зависит от тактовой частоты. Успеет "свободная шина" на конкретной тактовой частоте в нолики упасть или не успеет. Нужно проверять на минимально допустимой.
Я бегло просмотрел несколько даташитов но видать не те смотрел и не нашел минимальной частоты. Память у меня крутится вокруг цифры в 750 кГц, но хоть убей не помню где я за нее вычитал. Там кстати и "разведанная логика" с memptr может боком пойти.
И рубль за сто что "разведанная логика" эта не будет работать так как разведано если проц засуспендить ронянием CLK в ноль в нужном месте..
Загадка плавающей шины +2А/+3 решена! Кому интересно, читайте на WOS-форуме.
Кому интересно ознакомиться ещё с одной малоизвестной фишкой Спектрума, запустите эту тапку. На оригинальных +2А/+3, клонах, а также на большинстве эмуляторов вы почти ничего не увидите, кроме небольшого мерцания, но на оригинальных 16/48/128/+2 будет видно шагающего Manic Miner) Его также можно увидеть на SpecEmu/ZXspin в моделях 48/128/+2 с включенными опциями ULA artifacts/ULA color ramping.
Это не малоизвестная фишка, а всем известный Snow effect, вот только грамотно реализовать его, даже на эмуляторах, ни кто не может.
Забавно конечно что при инверсии одновременно и атрибутов и пикселей такой эффект. А волны на шахматке есть в каком нибуть эмуле?
Одни делаются длиннее за счет того что другие делаются короче. Из-за чего получается эффект, пример которого ниже (экран заполнен вертикальными линиями, по две области с поменяным местами инком и папером):
Вложение 64803
Собсно в книжке криса смита про это давно написано, и обьяснено почему именно. Кажется даже с фрагментом схемы.
Собсно проблема растет ногами из того же места из которого растут вертикальные фантомы на флэш атрибутах.
Вложение 64804
Это происходит всегда. На инверсном атрибуте черные точки получаются всегда всегда чуть шире светлых. Просто обычно этого незаметно, и в глаза бросается только на синтетических тестах вроде вот этой "зебры". Когда рядом инверсная маска и инверсный атрибут.
То есть на самом деле черные пиксели в фирменном спектруме чуть короче "пустышек". Доя понимания эффекта нужно осознать что спекки рисует единичку как точку, нолик как отсутствие точки, и ворочание своими мозгами тоже как отсутствие точки, как нолик. Если поменять атрибут местами, то будут белые пиксели чуть короче "пустышек", что начинает выглядеть как черные пиксели длиннее "пустышек", то есть спекки начинает мозгами ворочать уже на единичках. На спекки пиксель скажем так не вполне квадратный. Связано это с тем что схема асинхронная и тайминги в ней подногялись задержками а не триггерами со стробом.
Нужна помощь от владельца фирменного 16/48/48+/128k (не +2/+2А/+3), для исчерпывающего исследования эффекта 4х градаций яркости, а также эффекта FLASH-полосок - нужно запустить на реале тест и сделать видео.
128:
https://drive.google.com/file/d/1GiO...ew?usp=sharing
48:
https://drive.google.com/open?id=15c...Jp3yTH7Y8ouWFC
в общем бегает miner атрибутный с повышенной яркостью.
Не работающий на эмуляторах софт:
https://zxaaa.net/view_demo.php?id=1687
точнее дальше меню дело не идёт, не стандартная работа с вг93.
проверял @Kalantaj - говорит что с реальной дискеты работает, якобы испоьзуются какието хитрые процедуры плавного гашения и зажигания светодиода на fdd.
sucubus на RealSpectrum нормально работает.
там (по умолчанию) порт для covox`a #dd (как на скорпионе),
на пентагоне определённый вывод в этот порт вызовет переключение страниц и порчу кода.
эмулируй именно скорп
запускаю в режиме скорп, попадаю в меню, стрелка на AY, нажимаю 0 опция белеет ничего не происходит, из пунктов только info работает.
https://kvotka.ru/images/2019/04/09/scorp.jpg
вообще-то выбор ay/covox влияет на ударники в основной деме.
ты что нажать на флажок в верхнем правом углу не догадался ???
конечно нет, сейчас попробую.
сделай войдя в 128ой бейсик out 221,64