Просмотр полной версии : Времянки Contended Memory Spectrum 128
Где можно найти детальную информацию о задержках contended memory в spectrum 128. Гугл находит только общую инфу про contended memory 48 спека...
Путем изучения эмуляторов, вычислил следующее:
Длина строки: 228 T
Первый такт на котором NOP'у добавляется задержка - 14362.
Задержки такие:
14362 - 6T
14363 - 5T
14364 - 4T
14365 - 3T
При реализации возникло две проблемы:
1) подрагивание на мультиколора на бордюре +-2 T, в эмуляторах этого дрожания нет. Есть какое-то дополнение WAIT'ами во время прерывания?
2) почему-то уплывает папирный мультиколор, откуда есть подозрение что задержки добавляются не так просто как я предполагал
Кто-то может помочь разобраться с этим? :v2_dizzy_vodka2:
NEO SPECTRUMAN
24.09.2011, 20:11
The contended memory timings differ on the +2A/+3 from the earlier machines; firstly, the timing differences mean that the top-left pixel of the screen is displayed 14364 T-states after the 50 Hz interrupt occurs, as opposed to 14336. The T-states (relative to the interrupt) at which delays occur are given in the following table:
Cycle # Delay
------- -----
14365 1
14366 No delay
14367 7
14368 6
14369 5
14370 4
14371 3
14372 2
14373 1
14374 No delay
14375 7
14376 6
and so on, until cycle 14494, when the display of the first scanline on the screen has been completed, and no more delays are inserted until 14593 (=14365+228) when the cycle repeats. The other difference occurs for instructions which have multiple 'pc+1' or 'hl' entries in the breakdown for the other machines: on the +2A/+3, these entries are combined into just one. This means that, for example, JR becomes pc:4,pc+1:8.
Unlike the base 128K machine, RAM banks 4, 5, 6 and 7 are contended. However, Port 0xfe is not; whether ports 0x7ffd and 0x1ffd are contended is currently unknown.
http://www.worldofspectrum.org/faq/reference/128kreference.htm
http://www.worldofspectrum.org/faq/reference/48kreference.htm
цифры это ладно, на NOP'ах один в один получается. Задержки на NOP'ах и многих других инструкциях все четко работают.
Странности на командах которые несколько байт из памяти читают, например:
Инструция JR NZ,disp:
Опкод: #20, #00
Тайминг: 12T (4, 3, 5)
Выполняем в contended памяти на такте 14362:
4T: читаем опкод => 14362 + задержка 6T + время цикла 4T = 14372
3T: читаем disp => 14372 + задержка 4T + время цикла 3T = 14379
5T: загружаем PC => 14379 + время цикла 5T = 14384
Итого операция должна завершиться на такте 14384. В спектакуляторе получаем 14401, почему???
Вот все задержки для этого периода:
14362 - 6T
14363 - 5T
14364 - 4T
14365 - 3T
14366 - 2T
14367 - 1T
14368 - 0T
14369 - 0T
14370 - 6T
14371 - 5T
14372 - 4T
14373 - 3T
14374 - 2T
14375 - 1T
14376 - 0T
14377 - 0T
14378 - 6T
14379 - 5T
14380 - 4T
14381 - 3T
14382 - 2T
14383 - 1T
14384 - 0T
14385 - 0T
14386 - 6T
14387 - 5T
14388 - 4T
14389 - 3T
14390 - 2T
14391 - 1T
14392 - 0T
14393 - 0T
14394 - 6T
14395 - 5T
14396 - 4T
14397 - 3T
14398 - 2T
14399 - 1T
14400 - 0T
14401 - 0T
Пожалуй, стоит купить книжку про ULA. Дороговато, но раз купившие наши товарищи с нами не делятся...
Black_Cat
24.09.2011, 22:10
Итого операция должна завершиться на такте 14384. В спектакуляторе получаем 14401, почему???:) спрашивай здесь: http://zx.pk.ru/showthread.php?t=7720 :)
balu_dark
25.09.2011, 01:50
Пожалуй, стоит купить книжку про ULA. Дороговато, но раз купившие наши товарищи с нами не делятся...
...... то можно купить и поделится с нами :)
А если серьезно - ради той работы что чувак проделал по хардварному реверсингу юлы - ему можно и подкинуть денег. В знак признания заслуг.
Но это кагбе чистое имхо. Жители бывшего совка - охотнее заплатят за бутылку водки себе, чем за тяжелый труд кому-то.
...... то можно купить и поделится с нами :)
А если серьезно - ради той работы что чувак проделал по хардварному реверсингу юлы - ему можно и подкинуть денег. В знак признания заслуг.
Но это кагбе чистое имхо. Жители бывшего совка - охотнее заплатят за бутылку водки себе, чем за тяжелый труд кому-то.
Конечно, за труд заплатить можно. Но книжка все же дороговата. Понятно, что тираж небольшой и все такое прочее. Но привыкли к халяве. Да и зарплаты у нас не такие, как на западе. Москву не имею ввиду.
NEO SPECTRUMAN
25.09.2011, 14:44
Конечно, за труд заплатить можно. Но книжка все же дороговата.
Пусть её буржуи и покупают. У них денег хватит.
А у нас должно быть ОБЯЗАТЕЛЬНО на халяву. Нас совесть не замучает.
Пусть её буржуи и покупают. У них денег хватит.
А у нас должно быть ОБЯЗАТЕЛЬНО на халяву. Нас совесть не замучает.
Расскажи это тем, кто купил)
MDA Demo 128 - дисковая версия?? У меня на этой версии более половины треков вообще не играют, а на tap-вЕрсии - играют все. Криво задискована или что-то у мну не так?
выложи свою версию - проверим
нудакэто, каиво, с андерграунда же...
http://zxaaa.untergrund.net/DISKI/musn128.zip
там на всех буквах треки подвешены. Играет гораздо меньше, чем не играет..действительно - лажа. вот оригинал
да что в tap-e и tzx-e то есть. Хотелось бы дисковую.ну вот например http://zxaaa.untergrund.net/get.php?f=DEMO4/mdademo.zip
с contended memory разобрался. А вот c contended ports непонятно, судя по таймингам, почему-то порт регистра AY contended, а порт данных AY не contended, кто-то знает почему?
Black_Cat
27.09.2011, 18:51
порт регистра AY contended, а порт данных AY не contended, кто-то знает почему?а по русски?
NEO SPECTRUMAN
27.09.2011, 19:43
Contended Input/Output
It takes four T states for the Z80 to read a value from an I/O port, or write a value to a port. As is the case with memory access, this can be lengthened by the ULA. There are two effects which occur here:
If the port address being accessed has its low bit reset, the ULA is required to supply the result, which leads to a delay if it is currently busy handling the screen.
The address of the port being accessed is placed on the data bus. If this is in the range 0x4000 to 0x7fff, the ULA treats this as an attempted access to contended memory and therefore introduces a delay. If the port being accessed is between 0xc000 and 0xffff, this effect does not apply, even on a 128K machine if a contended memory bank is paged into the range 0xc000 to 0xffff.
Это не оно?
вот столкнулся с необъяснимым феноменом :)
запускаем спектакулятор, выбираем модель Spectrum 128, открываем отладчик и доводим счетчик тактов до 14362, после этого устанавливаем:
AF=#0700,
IR=#8048,
PC=#5BCC
и заносим по адресу #5BCC, такую последовательность байт: #D3, #FE, #D3, #FE
Это две инструкции OUT (#FE),A которая требует 11T на машине без WAIT'ов
Теперь самое интересное - выполняем по шагам эти инструкции и смотрим на счетчик тактов, видим:
Первый OUT: 14362 -> 14387 (25T)
Второй OUT: 14387 -> 14396 (9T!)
Учитывая что инструкция OUT #FE,A без задержек занимает 11T, совершенно не понятно как время ее выполнение с задержками сократилось до 9T???
Shadow Maker
28.09.2011, 00:20
Спектакулятор лажовый эмулятор, ты бы в каком-нибудь более заслуживающем доверия проверял. Спин, например.
Spin неверно эмулит некоторые моменты - VELESOFT проверял вроде...
хотя может там новая версия есть какая...
хотя может там новая версия есть какая...
Самая последняя 0.7s. Далее этот эмулятор забросили делать.
и Spin и Spectaculator сбрасываются на UlaTest v3. Но по крайней мере в них нет смещений мультиколора в MQM5, хотел посмотреть тайминги, но столкнулся с тем что время выполнения OUT в спектакуляторе бывает меньше чем проц затрачивает на выполнение без задержек...
В Spin отладчик очень кривой, при пошаговой отладке сбивает текущий Tstate
попробуйте эмуль SpecEmu http://homepage.ntlworld.com/mark.woodmass/SpecEmu-2.7.b280908.zip
Tstate в отладчике есть, но тест в 128ом режиме сбрасывается
тест в 128ом режиме сбрасывается
Он у меня вообще во всём, что у меня есть сбрасывается.
Получается, что вообще нет эмулей с точной эмуляцией ULA?
Получается, что вообще нет эмулей с точной эмуляцией ULA?
Я проверял на Пентагон 128. Всё везде сбрасывает.
Spectaculator 7.51
SpecEmu 2.9
Spin 0.7s
Unreal 0.37.5
Fuse 0.10.02
real spectrum вроде работает...
забыл кто писал просмотрщик мультигиги 8*2 под оригиналы... там в эмуле проверялось...
Я проверял на Пентагон 128. Всё везде сбрасывает.
а при чем тут пентагон, речь вообщето об ULA оригинального спектрума идет, с contended memory :v2_wink2:
а при чем тут пентагон, речь вообщето об ULA оригинального спектрума идет, с contended memory :v2_wink2:
Хорошо, проверил на Fuse начиная от классического 128 до какого-то загадочного +3е. Везде сбрасывает, кроме этого +3е. Там куча вопросительных знаков вылезло. Кстати, этот эмулятор лучше всего эмулирует всякие фирменные мультиколоры. Т.е. именно на нём все забугорные демки идут нормально.
попробуйте эмуль SpecEmu http://homepage.ntlworld.com/mark.woodmass/SpecEmu-2.7.b280908.zip
этот? :)
http://homepage.ntlworld.com/mark.woodmass/specemujetpac.pnghttp://homepage.ntlworld.com/mark.woodmass/specemuchuckie.png
Вот кстати еще интересный тест, тестит тайминги и ULA :)
http://www.zxspectrum4.net/downloads/timing_tests/
этот? :)
http://homepage.ntlworld.com/mark.woodmass/specemujetpac.pnghttp://homepage.ntlworld.com/mark.woodmass/specemuchuckie.png
он самый, на глючные скрины не обращай внимания
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot