PDA

Просмотр полной версии : Времянки Contended Memory Spectrum 128



ZXMAK
24.09.2011, 20:03
Где можно найти детальную информацию о задержках 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

ZXMAK
24.09.2011, 21:18
цифры это ладно, на 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

Titus
24.09.2011, 21:36
Пожалуй, стоит купить книжку про 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. Дороговато, но раз купившие наши товарищи с нами не делятся...
...... то можно купить и поделится с нами :)

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

Titus
25.09.2011, 02:06
...... то можно купить и поделится с нами :)

А если серьезно - ради той работы что чувак проделал по хардварному реверсингу юлы - ему можно и подкинуть денег. В знак признания заслуг.
Но это кагбе чистое имхо. Жители бывшего совка - охотнее заплатят за бутылку водки себе, чем за тяжелый труд кому-то.
Конечно, за труд заплатить можно. Но книжка все же дороговата. Понятно, что тираж небольшой и все такое прочее. Но привыкли к халяве. Да и зарплаты у нас не такие, как на западе. Москву не имею ввиду.

NEO SPECTRUMAN
25.09.2011, 14:44
Конечно, за труд заплатить можно. Но книжка все же дороговата.
Пусть её буржуи и покупают. У них денег хватит.
А у нас должно быть ОБЯЗАТЕЛЬНО на халяву. Нас совесть не замучает.

Titus
25.09.2011, 15:28
Пусть её буржуи и покупают. У них денег хватит.
А у нас должно быть ОБЯЗАТЕЛЬНО на халяву. Нас совесть не замучает.
Расскажи это тем, кто купил)

goodboy
25.09.2011, 19:00
MDA Demo 128 - дисковая версия?? У меня на этой версии более половины треков вообще не играют, а на tap-вЕрсии - играют все. Криво задискована или что-то у мну не так?
выложи свою версию - проверим

goodboy
26.09.2011, 00:03
нудакэто, каиво, с андерграунда же...
http://zxaaa.untergrund.net/DISKI/musn128.zip
там на всех буквах треки подвешены. Играет гораздо меньше, чем не играет..действительно - лажа. вот оригинал

goodboy
26.09.2011, 09:20
да что в tap-e и tzx-e то есть. Хотелось бы дисковую.ну вот например http://zxaaa.untergrund.net/get.php?f=DEMO4/mdademo.zip

ZXMAK
27.09.2011, 13:38
с 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.

Это не оно?

ZXMAK
27.09.2011, 23:46
вот столкнулся с необъяснимым феноменом :)

запускаем спектакулятор, выбираем модель 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
Спектакулятор лажовый эмулятор, ты бы в каком-нибудь более заслуживающем доверия проверял. Спин, например.

TmK
28.09.2011, 12:52
Spin неверно эмулит некоторые моменты - VELESOFT проверял вроде...
хотя может там новая версия есть какая...

Rindex
28.09.2011, 13:28
хотя может там новая версия есть какая...

Самая последняя 0.7s. Далее этот эмулятор забросили делать.

ZXMAK
28.09.2011, 15:27
и Spin и Spectaculator сбрасываются на UlaTest v3. Но по крайней мере в них нет смещений мультиколора в MQM5, хотел посмотреть тайминги, но столкнулся с тем что время выполнения OUT в спектакуляторе бывает меньше чем проц затрачивает на выполнение без задержек...
В Spin отладчик очень кривой, при пошаговой отладке сбивает текущий Tstate

goodboy
28.09.2011, 15:56
попробуйте эмуль SpecEmu http://homepage.ntlworld.com/mark.woodmass/SpecEmu-2.7.b280908.zip

Tstate в отладчике есть, но тест в 128ом режиме сбрасывается

Rindex
28.09.2011, 16:02
тест в 128ом режиме сбрасывается

Он у меня вообще во всём, что у меня есть сбрасывается.

Titus
28.09.2011, 16:07
Получается, что вообще нет эмулей с точной эмуляцией ULA?

Rindex
28.09.2011, 16:25
Получается, что вообще нет эмулей с точной эмуляцией ULA?

Я проверял на Пентагон 128. Всё везде сбрасывает.

Spectaculator 7.51
SpecEmu 2.9
Spin 0.7s
Unreal 0.37.5
Fuse 0.10.02

TmK
28.09.2011, 16:54
real spectrum вроде работает...
забыл кто писал просмотрщик мультигиги 8*2 под оригиналы... там в эмуле проверялось...

ZXMAK
28.09.2011, 21:31
Я проверял на Пентагон 128. Всё везде сбрасывает.


а при чем тут пентагон, речь вообщето об ULA оригинального спектрума идет, с contended memory :v2_wink2:

Rindex
28.09.2011, 21:40
а при чем тут пентагон, речь вообщето об ULA оригинального спектрума идет, с contended memory :v2_wink2:

Хорошо, проверил на Fuse начиная от классического 128 до какого-то загадочного +3е. Везде сбрасывает, кроме этого +3е. Там куча вопросительных знаков вылезло. Кстати, этот эмулятор лучше всего эмулирует всякие фирменные мультиколоры. Т.е. именно на нём все забугорные демки идут нормально.

ZXMAK
28.09.2011, 23:05
попробуйте эмуль 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/

goodboy
28.09.2011, 23:32
этот? :)

http://homepage.ntlworld.com/mark.woodmass/specemujetpac.pnghttp://homepage.ntlworld.com/mark.woodmass/specemuchuckie.png


он самый, на глючные скрины не обращай внимания