Надо бы и с моего профика пыль сдуть, правда у меня с дискетами тоже всё очень сложно :) Хотя...
Вид для печати
Надо бы и с моего профика пыль сдуть, правда у меня с дискетами тоже всё очень сложно :) Хотя...
давай тапку, мне собирать чуть быстрее, а если выложишь хобету/кодовый блок, то мне проще запускать её с сд-карты будет... прямо из fatall`a. наверное я свои сообщения перенесу в другую тему... по профику...
- - - Добавлено - - -
вот это не хорошо, в чем причина?
- - - Добавлено - - -
zebest, molodcov_alex, у меня для вас есть решение, если лутом умеете пользоваться. :)
Скрытый текст
Картинки с реалов, уж очень долго я их искал. Два года прошло все ж...
ULA48 сделал, хотя и не обошлось без ухищрений.
ULA128 пока не получается. Инфы очень мало. То что везде пишут вскользь, что всё отличие - это в 228х311 вместо 224х312, судя по всему, это не совсем так, ибо contended модель от 48к не подходит.
Кстати, ваши тесты ULA48 и ULA128 не показывают полную совместимость, поскольку, если настроив на них тайминги, загружаю Shocк Megademo - а там беда! А вы говорите, что там не нужны точные тайминги.
Да, с этим проблема. Поэтому остается только запускать и смотреть как выглядит.
Заметил интересные глюки ввиде смещенного на пиксел вверх или вниз области шириной примерно в 4/8 пикселей в центре экрана, если что-то не так с таймингами. То ли демка воспринимает эмулятор как какую-то другую модель, то ли еще что-то. При этом тест ULA48 отлично выглядит. Я это пофиксил путем смещения по времени считывания BitData и AttrData.
Изначально хотел сделать такие тайминги: ZX48, ZX128, Pentagon128.
Сейчас вот думаю убрать вариант ZX128. Не могу найти достаточно инфы по таймингам как для 48К. И попутно заметил, что именно для ZX128 нет прог, использующих эти тайминги. Shock как оказалось, универсальный и ему достаточно ZX48.
А остальные демки с таймингами написаны для Pentagon128.
Кстати, Speccy2010, как оказалось, тоже не имеет режима ZX128. По крайней мере, исходники, что у меня есть, поддерживают только ZX48, P128, P1024, Sсorpion.
Кстати, ULA48 всегда одинаково запускается.
Остается мистические сдвиги у тестов от Zebest на P128.
- - - Добавлено - - -
zebest,
Точно. Я не на ту настройку посмотрел. Есть ZX128 в таймингах.
да какое это тесты... Так, картинки на бордюре.
Но с помощью их все же удобнее настраивать визуально, чем там, где циферьки..
тут с помощью циферек тестируют, только я на год? -другой? раньше тестил этим же тестом, и даже с картинкамЕ, и даже прогу немного переделал, и вопросами задавался, только тогда это никомуу не надо было
Ах да, если ты в таймингах уверен, всегда остается вопрос, насколько точен процессор и растактовка.
Пробовал на Т80 менять? Вот TV80 точно не точен в таймингах.
zebest,
я попытался на T80 поменять, но с ним тесты P128 не запускались.
Сейчас я еще с ZX48 разбираюсь. Пытаюсь понять все моменты. Может тогда какое-то озарение снизойдет :)
- - - Добавлено - - -
zebest,
Кстати, а почему ваш ULA48 тест всегда одинакого синхронизируется, а Zebest нет?
Там разные синхронизации?
- - - Добавлено - - -
zebest,
а сам тест ULA128 в каких адресах располагается? Если в >=C000 то есть вероятность что в моем эмуляторе по-умолчанию страница c contended памятью включена, а в spectaculator нет. Или наоборот.
- - - Добавлено - - -
Точняк! Отключил сейчас проверку на область C000 и ваш ULA128 сразу заработал как надо.
В своем эмуляторе я эмулирую DivMMC с ESXDOS. Он при запуске инициализируется и выбрасывает в Basic 48 оставляя при этом переключение страниц доступным. При этом, видимо, после инициализации подключается какая-то страница с contended памятью (3,5 или 7), куда ваш ULA128 тест и заливается по-умолчанию.
zebest,
Не могли бы вы прогнать Shock Megademo на Speccy2010 в режиме ZX128?
У меня в правом нижнем углу есть артефакты. При этом я уверен что сделал в точности так же как в Speccy2010. Никаких изменений у Speccy2010 между ZX128 и ZX48 нет кроме количества тактов в строке и количества строк.
- - - Добавлено - - -
Смысл я выше описал уже. Это не имеет отношения к тесту таймингов, а какая страница в окно подключена.
Можно сделать так: сначала тест переключает на конкретную страницу памяти, потом копирует себя туда и запускается там. Это исключит неопределенности.
да:)) есть небольшая "загогулина". Я же и говорю - некому в коде разбираться, чтобы уж совсем 100% было.
и да, моя картинка, не тест, не использует доп. страницы, только стандартные, и портами не щелкает... и не настраивает их.
- - - Добавлено - - -
Но почемуу то в эмулях и нативных машинах такой неопределенности не возникает. Может все таки что то в консерватории поправить?
ну хоть одной паранойей меньше :)
Я же говорю, это из-за ESXDOS. Если я загружу тест из меню Spectrum 128, то этой проблемы не будет. Но проблема в том, что все быстрые загрузки TAP/TRD возможны только через ESXDOS в моем эмуляторе.
Если без ESXDOS, то придется перегонять в CSW и грузить медленно через виртуальный магнитофонный вход.
Поэтому я и предложил седлать в тесте подключение определенной страницы перед запуском.
zebest,
не могли бы вы прогнать ULA test 3: http://wizard.ae.krakow.pl/~jb/qaop/t/ulatest3.tap
на Speccy2010 в режимах ZX48 и ZX128, и выложить скрины?
Titus,
это не может быть. Что-то вы упустили. Shock не может показывать картинку правильно на ZX48 и ZX128 без изменения параметров.
Мог бы.
Скрытый текст
ZX48
http://s2.micp.ru/8C64E.jpg
ZX48mod
http://s3.micp.ru/4kwRE.jpg
ZX128
http://s2.micp.ru/wup13.jpg
[свернуть]
По крайней мере с эмуулем не расходится в 48 режиме.
Upd
а вот в 128 режиме с эмуулем - расходиЦЦа. Причем , судя по картинке, довольно сильно.
Елси расскажешь, где в коде поправить - поправлю. Сам я не разобрался в этом режиме где что))
А у меня и в ZX128 правильно показывает ;)
А где взять MOD by CDS? а то у меня только оригинальная версия.
- - - Добавлено - - -
zebest,
Надо двигать INT сигнал чтобы приходил ранее.
У Speccy2010 вообще какая-то непонятка с INT. Если посмотрите код, то увидите что он приходит когда hCnt==444 что неправильно.
Он должен приходить когда hCnt==0. Но, я подозреваю, что в Speccy2010 всё сразу поплывет если его поменять.
Поскольку сигнал INT генерится в конце строки, а не в начале, то на ZX128 он получается задержанным на 4 такта из-за разницы длины строки. Можно сделать проверку на syncMode==1 и задержать его на 4 такта.
В моем коде я генерю INT - в начале строки (как должно быть в стандарте). Только пришлось его подвинуть на 2 такта вперед чтобы и в ZX48 и ZX128 ULA Test 3 показывал правильно.
Нашел я этот модифицированный тест. Мой твик INT на 2 такта выходит боком на этом тесте. Пришлось сдвинуть INT в стандартную позицию hc=0 чтобы ZX48 выглядел корректно.
А вот в ZX128 этот тест не запускается у меня. На Spectaculator тоже вылетает. Да и у вас нет фотки такой - тоже не работает?
- - - Добавлено - - -
Не видел вашего ответа перед написанием своего :)
Speccy2010 код довольно сложно читать. Там практически весь код FPGA в одном большом файле с размазыванием разных частей между собой.
По поводу INT в ZX128 надо думать. Есть предположение, что позиция INT осталась такой как в ZX48. То есть на 4(или 2) такта раньше должен приходить в силу увеличенного размера строки.
- - - Добавлено - - -
zebest,
Вопрос вам как к знатоку разнообразных эмуляторов для PC:
порекомендуйте опенсорс проект, где на ваш взгляд все тесты таймингов в ZX48 и ZX128 правильные. Желательно исключить unreal из этого списка, поскольку он явно разрабатывался каким-то аутистом.
В защиту unreal скажу, что он для эмуляции Пентагона хорош и для отладки. ну и для некоторых экзотических конфигураций, типа ZXM. А на мой взгляд тайминги ZX48 и ZX128 правильные, ну или меня устраивают:), в ZXMAK2.
И кстати у 48 модели как минимум два варианта таймингов то жи - "late" и "early", если совсем быть точным, видимо в разных ULA
А есть ли какой тест памяти для ZX128 чтобы еще показывал скорость ее? Мне надо проверить всю память и страницы на предмет скорости.
Смотрю в код Contendent памяти и уверен что правильно, а вот картинка ULA128 неправильно работает пока не отключу проверку на C000 & PAGE[0]. При этом кто-то принудительно включает 7 страницу, которая по определению Contendent.
Короче, нужен тест памяти для выяснения причины.
И по портам есть торможение. Но сейчас конкретно интересует тестер памяти.
тогда вот. два теста. второй тоже интересный. в SpecEmu всего одна ошибка
zebest,
TactTest не умеет страницы переключать. Ну или я не нашел как это сделать.
TimingTest пришет Is Loading и дальше не идет. По названию тоже для 48к.
А для 128к нет ничего?
Ну мне хотелось чтобы страницы переключались в тесте памяти чтобы посмотреть разницу в скорости между 1 3 5 7 и 0 2 4 6.
А так да, скорость второй медленнее показывает.
Но я нашел в чем глюк у меня! Я забыл про то, что процессор еще занимается рефрешем памяти, при котором адреса выставляются как FFxx - то есть попадают в верхнюю область. И если включена одна из нечетных страниц, то включается тормоз.
Видимо, в Т80 нет эмуляции рефреша - поэтому в Speccy2010 нет проверки на это.
Я же выше написал почему такой глюк у меня был.
Сейчас добавил проверку на nRFSH и ULA128 стал показывать правильно.
Да. 7 страница там открывается. Это происходит когда я загружаю ULA128 через ESXDOS. Почему именно 7 страница там включается - не знаю.
Сейчас проверил: если загружаю ULA48, то вверху 0 страница. Если ULA128 - то 7 страница. Так что это именно ваш тест подключает 7 страницу.
- - - Добавлено - - -
TactsTest показывает быструю память, потому что там 0 страница. Вы сами похоже забыли, что ваш тест включает 7 страницу. И, кстати, там с адреса BFFF кусочек кода выполняется.
- - - Добавлено - - -
2 страница жестко с 8000 адреса. А в С000 может быть любая подключена - я про это окно и говорю.
Ну, дык, я же пофиксил уже глюк. Там не из-за 7 страницы тайминги не совпадали, а из-за рефреша, который интерпретировался как обращение к медленной памяти.
Что-то у меня перестал грузиться Eye Ache. Надо с этим разобраться.
- - - Добавлено - - -
сигнал-то есть. Но, видимо, адрес рефреша не выставляется на адресных выходах. Ведь он же в эмуляторах никому не нужен.
- - - Добавлено - - -
Вложение 55929
Вон смотрите что у меня. адреса FExx
- - - Добавлено - - -
Черт, забыл что форум ресайзит картинки. Но, в принципе, там видно что вставляются адреса рефреша.
- - - Добавлено - - -
TEST 4.30 выдает ошибки.
Хотелось бы получить пояснения в чем проблема:
1) шина данных зашумлена в цикле подтверждения прерывания. Что это вообще такое?
2) некорректно подключен музыкальный чип на порте BFFD. А как правильно-то?
- - - Добавлено - - -
Поменял модель процессора на T80 - проблемы с синхронизацией тактов в P128 исчезли. Так же заработала демка Eye Ache 2, которая отказывалась работать раньше.
В этот раз Т80 модель встала хорошо. Раньше мне не удавалось вот так просто взять и поменять. То ли тайминги какие-то не совпадали, то ли еще что-то.
Наверное, останусь на Т80, раз улучшения есть.
Рефреш то жи задействовал в Т80? возможно все же в твоем проце некоторые команды по тактам некорректны.
Т80 тоже довольно много ревизий. на прежних некорректно работает демка ээээ... Oscoss . просто зацикливается на начальной части.
Наверное пресловутый порт #FF ?? Говоряят в нек. игрушках сильно нужен. Посмотри как в Speccy2010 он сделан
Там же по портам музыкалки посмотри. И еще по поводу портов есть ньюансы, это надо еще одну демку поискать, капризную к портам
кроме самого процессора ничего не менял. Соответственно и проверка на сигнал рефреша осталась. Она не мешает.
Я думаю, может сделать выбор процессора. Погоняю пока на Т80. Если будут проблемы, то сделаю выбор.
я взял из Speccy2010.
Ну порт FF я реализовал, но данную ошибку тест показывал еще до реализации порта.
Тест 4.30 еще говорит что сигнал INT очень короткий. А как вообще программно можно определить длину сигнала INT? Он же вроде по отрицательному фронту отрабатывает, а не по уровню.
А запустите ТЕСТ 4.30 и выложите тут скрины, чтобы было понятно в чем разница. Судя по коду, ничего особенного нет в подключении музыкального сопроцессора.
- - - Добавлено - - -
Без проблем проиграла вся демка. И все бордюрные эффекты отлично были показаны.
- - - Добавлено - - -
это интересно. Еще бы инфу к каким именно портам.
Проблему зашумленности данных пофиксил.
Данные в FF порте сдвинулись у Т80. Надо двигать опять.
- - - Добавлено - - -
creator,
Я сделал проще. Теперь никто не может выдавать данные когда условие (~nM1 & ~nIORQ) выполняется.
Теперь тест на INT не ругается, но на подключение AY всё еще ругается.
zebest,
эх, любите вы подсовывать зоопарк разных форматов. Вот ищу теперь как эту хрень tzx в стандартный tap сконвертировать.
вот нашел Song in Lines 4:
http://www.worldofspectrum.org/infos...cgi?id=0007743
но выглядит совершенно по-другому. Что это за демка в tzx и где найти ее в tap формате? Перевести в tap не получается.