PDA

Просмотр полной версии : Тестирование эмуляторов



mungo
23.07.2014, 11:56
Кто подскажет любую программку для тестирования спека-48 в части насколько он правильно эмулируется? В смысле и железо, и проц и ...
В чем затык: нашел у себя одну древнюю прогу, которую сам писал во времена молодости, а она не хочет работать в emuzwin. Вот и заинтересовался, почему?
З.Ы.: исходники пока не нашел, не знаю что там не так. Заточена была на мой интер-48, работала.

Sawyer
25.07.2014, 23:04
Да много тестов выкладывалось разных уже. Например, в ветках про ZXMAK или Unreal.
Вот тут разные тесты есть (правда в формате tap). Может есть и такой, который вы ищите.
http://wizard.ae.krakow.pl/~jb/qaop/tests.html

goodboy
26.07.2014, 00:20
на данный момент в эмулях можно подловить регенерацию памяти через регистр `R`,
хотя может и это сейчас сэмулировали

Alex Rider
26.07.2014, 01:56
на данный момент в эмулях можно подловить регенерацию памяти через регистр `R`
А дайте где почитать. Последнее, что я видел про детект эмуляторов - это подлов на F.3 и F.5 при выполнении битовых операций через (hl)

---------- Post added at 01:56 ---------- Previous post was at 01:47 ----------

PS. А, понял. Слать в R константу в цикле и ждать когда попортится память.

Spectramine
26.07.2014, 18:22
Кто подскажет любую программку для тестирования спека-48 в части насколько он правильно эмулируется? В смысле и железо, и проц и ...
В чем затык: нашел у себя одну древнюю прогу, которую сам писал во времена молодости, а она не хочет работать в emuzwin. Вот и заинтересовался, почему?
З.Ы.: исходники пока не нашел, не знаю что там не так. Заточена была на мой интер-48, работала.

Если на Интере было русифицированное ПЗУ, а программа на бейсике, она может не работать или глючить с оригинальным ПЗУ спектрума 48.

Насчёт программы для тестирования эмуляции спека - одной такой программы нет, вроде бы, но есть несколько, проверяющих разные части и особенности оригинального компа, ссылки уже были. Но никто не гарантирует их 100% способность выявить отличия от оригинала. zexfix в частности меня разочаровал слегка - несколько ошибок эмуляции команд z80 пропустил.

mungo
28.07.2014, 11:34
Sawyer, z80test из ссылки показал, что enuzwin кучу команд эмулирует неверно. Печалька.

Spectramine
28.07.2014, 22:09
Удивительно, что EmuzWin полностью проваливает тест MPTR по всем командам в z80tests.

Вообще, странный тест. Полностью проходит все тесты в нём только Spectaculator 8, причем только в 48 модели. Для теста, тестирующего только процессор, зависимость от модели Спектрума непонятна.

ram_scan
29.07.2014, 08:11
PS. А, понял. Слать в R константу в цикле и ждать когда попортится память.

На спеке регенерация реализована аппаратно, в качестве полезного побочного эффекта от работы видеоконтроллера. Поэтому память не попортится.

Lion17
29.07.2014, 10:53
Вообще, странный тест. Полностью проходит все тесты в нём только Spectaculator 8, причем только в 48 модели. Для теста, тестирующего только процессор, зависимость от модели Спектрума непонятна.

Этому тесту необходимо оригинальное ПЗУ 48к. Потому как его данные используются в процессе теста. Многие эмули проходят его без ошибок. Включая мой.

---------- Post added at 10:53 ---------- Previous post was at 10:50 ----------


На спеке регенерация реализована аппаратно, в качестве полезного побочного эффекта от работы видеоконтроллера. Поэтому память не попортится.

На фирменном спеке два поля памяти. Второе регенерируется процессором и потому вполне себе портится.

Addison
29.07.2014, 13:41
Вот тоже столкнулся с правильностью/неправильностью эмуляции недавно.

У меня на реале (Pentagon128k) при копировании A-A в Beta commander после перезагрузки все повисает. Происходит это в режиме 128K, в режиме 48k все OK.
Проверял на эмуляторе Spin получил тот же результат и успокоился, понял, что так и должно быть.
Но потом как-то проверил в Emuzwin, а там работает все нормально, что 128к, что 48к режиме.
И что теперь думать? Spin точнее эмулирует пентагон?
Я в коде не рылся но такое ощущение, что при копировании Beta comander портит системные переменные бейсика 128, потому при переходе в Dos и дальнейшей загрузке бута происходит глюк, в 48к системная область меньше и все прокатывает. Изначально, возможно, коммандер писался под 48k.
В 9х у меня была 48к машина, поэтому как он себя вел на 128к я просто не знаю.

Некоторые эмуляторы, возможно, как-то при переходе в dos обновляют системные переменные или дело вовсе не в них.

Spectramine
29.07.2014, 15:23
Этому тесту необходимо оригинальное ПЗУ 48к. Потому как его данные используются в процессе теста. Многие эмули проходят его без ошибок. Включая мой.

Спасибо за инфу. Я проверил - ваш эмулятор (ZX-Emul v.030b) не проходит тесты команд BIT N,(HL), INI,IND,OUTI,OUTD, а также два последних теста, обозначенных "CB (00-FF) 5+3 RAM-ROM" с родным 48 пзу, и полностью не проходит тесты MPTR.

Lion17
30.07.2014, 00:42
Спасибо за инфу. Я проверил - ваш эмулятор (ZX-Emul v.030b) не проходит тесты команд BIT N,(HL), INI,IND,OUTI,OUTD, а также два последних теста, обозначенных "CB (00-FF) 5+3 RAM-ROM" с родным 48 пзу, и полностью не проходит тесты MPTR.

Старый, да, не проходил. Я про новый говорил: http://zx-pk.ru/showthread.php?t=23363

Spectramine
30.07.2014, 01:54
О, а я его как-то пропустил.

palsw
17.10.2014, 22:51
интересная тема - буду развивать

Z80test.tap

протестировал SPECCY2007 (реальный Z80 времянки пентагон-128) .

2й тест проходит без ошибок
1й тест проходит с ошибками -я так полагаю из-за нестандартных строк и INT. (проверил в спектакуляторе 6.25 в режиме pentagon-128 тоже ошибки есть но есть различие). Кто бы проверил реальный Pentagon тех времен без переделок для сравнения.

http://i.piccy_.info/i9/f6fef528662103b6ce479bb160e65dc0/1413572020/19595/758237/20141017_203705_968_500.jpg (http://piccy_.info/view3/7137684/ad66bb417a93f4890176718ce46f6447/)http://i.piccy_.info/a3/2014-10-17-18-53/i9-7137684/471x354-r/i.gif (http://i.piccy_.info/a3c/2014-10-17-18-53/i9-7137684/471x354-r)
http://i.piccy_.info/i9/6dbb2f86e4a2e17f382131ed34f76078/1413572033/20707/758237/20141017_205236_828_500.jpg (http://piccy_.info/view3/7137685/1ef84d90a4b8f06d7d4744834f99dc03/)http://i.piccy_.info/a3/2014-10-17-18-53/i9-7137685/471x354-r/i.gif (http://i.piccy_.info/a3c/2014-10-17-18-53/i9-7137685/471x354-r)
http://i.piccy_.info/i9/81eebab1f685dcdf8431761e0abe2d92/1413572050/22423/758237/20141017_205247_593_500.jpg (http://piccy_.info/view3/7137686/e62fa5d78dfefeb9e131ebfb18b00679/)http://i.piccy_.info/a3/2014-10-17-18-54/i9-7137686/471x354-r/i.gif (http://i.piccy_.info/a3c/2014-10-17-18-54/i9-7137686/471x354-r)

ZXMAK
18.10.2014, 04:23
Удивительно, что EmuzWin полностью проваливает тест MPTR по всем командам в z80tests.

Вообще, странный тест. Полностью проходит все тесты в нём только Spectaculator 8, причем только в 48 модели. Для теста, тестирующего только процессор, зависимость от модели Спектрума непонятна.

Такие тесты нужно прогонять на эмуляторах железа под которое они расчитаны, используя немодифицированную пзу именно этого железа, иначе результаты теста ни о чем не скажут. Т.е. если тест заточен под оригинальные спеки с contended memory, то на таком режиме эмуляции и нужно его прогонять, используя только оригинальную прошивку и тайминги оригинального спека

palsw
18.10.2014, 12:01
ZXMAK, второй тест команд успешно проходит.Оригинальная прошивка 48к везде одинаковая или где лежит эталон прошивки 48к 82г ?

Spectaculator 6,25 тоже отлично проходит весь тест в режиме 48к

palsw
18.10.2014, 14:14
ZXMAK, каким набором софта можно по тестировать железный эмулятор на предмет не документированных команд ?

speccy 2010
тут обновляли ядро т80 - http://zx-pk.ru/showpost.php?p=580271&postcount=1225

я залил прошивку исправлению .тест 128 отлично работает.

goodboy
19.10.2014, 00:29
как я понял внутренности z80 потихоньку изучаются
http://www.righto.com/2014/10/how-z80s-registers-are-implemented-down.html
http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html
http://www.righto.com/2014/09/why-z-80s-data-pins-are-scrambled.html

BAHEK
22.10.2014, 20:43
где лежит эталон прошивки 48к 82г ?Все достижения британских учёных, а также благородных донов, доступны, с благословением:v2_dizzy_priest: архиепископа кентерберийского и папы римского, здесь: http://www.shadowmagic.org.uk/spectrum/roms.html

sergio78
23.10.2014, 20:34
Все достижения британских учёных, а также благородных донов, доступны, с благословением:v2_dizzy_priest: архиепископа кентерберийского и папы римского, здесь: http://www.shadowmagic.org.uk/spectrum/roms.html
не особо там этих самых rom обитает. почти всё, только название, без ссылки. а потом гневно-запугивающий слог
Illegal modification:v2_conf2:

Rindex
23.10.2014, 22:20
не особо там этих самых rom обитает. почти всё, только название, без ссылки. а потом гневно-запугивающий слог
Illegal modification:v2_conf2:

Если честно, я не в курсе, есть там (http://zx-pk.ru/showthread.php?t=16704&highlight=zxspectrum.it) фирменные ромы или нет. По идеи должны быть. Лучше стянуть зеркало сайта, там хоть понятно какой ром качаешь. Просто в отдельной папке разобрать можно только наши ромы.

BAHEK
24.10.2014, 17:35
не особо там этих самых rom обитает. почти всё, только название, без ссылки. а потом гневно-запугивающий слог
Illegal modification:v2_conf2:Вопрос был об:
где лежит эталон прошивки 48к 82г ?Там именно он, а так же другие, "нотариально заверенные".:v2_dizzy_botan:
Согласен что почему то и некоторые легальные ими были выкинуты.:v2_conf3:

mod24
14.02.2015, 17:05
Может вместе стоит составить план-тест правильности эмуляции ZX? Смотрю, вопросы возникают часто. Да и помощь эмуляторщикам большая.

Предлагаю:

Test #1: Register load
Test #1.1: 1-byte register load
LD r,10 [r=B,C,D,E,H,L,A and alternatives] (via EXX and EX AF,AF')
Test #1.2: 2-byte register load
LD rr,25610 [rr=BC,DE,HL, IX,IY, BC',DE',HL']
Test #1.3: 1-byte indirect register load
LD r,(HL) (r=B,C,D,E,H,L,A)
LD r,(IX+10) (r=B,C,D,E,H,L,A)
LD r,(IY+10) (r=B,C,D,E,H,L,A)
LD r,(IX-10) (r=B,C,D,E,H,L,A)
LD r,(IY-10) (r=B,C,D,E,H,L,A)

Test #2: LD A,R(I); LD I(R),A

Test #3: Запись/чтение памяти
Test #3.1: LD rr,(NN); rr=BC,DE,HL,SP
Test #3.2: LD (NN),rr; rr=BC,DE,HL,SP
Test #3.3: LD A,(NN); LD (NN),A
Test #3.3: LD A,(BC); LD (BC),A; LD A,(DE); LD (DE),A

Общие правила:
- Тест идёт от простых инструкций к сложным (пересылка данных, чтение-запись, стековые, ..)
- В тесте не использовать непроверенные (ещё) инструкции

Ну, где-то так )))

denpopov
14.02.2015, 17:14
недокументированный z80 упустил.

mod24
14.02.2015, 18:15
Не, это дальше. Имеешь ввиду типа LD H,(IX+100)?

Titus
14.02.2015, 18:44
Все уже придумано до вас) (http://ru.wikipedia.org/wiki/ZEXALL)

mod24
14.02.2015, 18:56
Все уже придумано до вас) (http://ru.wikipedia.org/wiki/ZEXALL)

Чего-то автор глубоко сиё творение спрятал. Не нашёл..

---------- Post added at 19:54 ---------- Previous post was at 19:52 ----------

Да и каждый раз в исходники лезть (ежели там всё) - не есть настоящий путь. Лучше сделать отдельный тест (тесты). Желательно в нормально-человеческой форме.

---------- Post added at 19:56 ---------- Previous post was at 19:54 ----------

Плюсы
-----
1) Независимость от кода эмулятора (с исходниками не разбираться, у каждого они свои)
2) Наглядность, можно распечатать, всегда под рукой
3) ещё и ещё...

goodboy
14.02.2015, 20:34
Имеешь ввиду типа LD H,(IX+100)?
скорее in f,(c) или out (c),0

mod24
16.02.2015, 12:58
Собственно пока разбиение теста по группам: 51081

mod24
18.02.2015, 17:10
Пример:

Тест 1 Проверка работы инструкции EXX
Условия: память исправна, загрузка регистров проверена
1.1 Проверка, что обмен пар проводится, память не портится, и IX/IY не портится
Вход:
BC=DE=HL=w; BC’=DE’=HL’=65535-w; IX=30000; IY=40000
Память[0..65535]=255;
Счётчик w=0..65535;
Успех: BC==DE==HL==65535-w, BC’=DE’=HL=w, IX=30000, IY=40000, вся память =0xFF

1.2 проверка, что EXX проводит раздельный обмен пар, а не BC<-->DE’ DE<-->HL’ HL<-->DE’ к примеру.
Примечание: уже проверено, что EXX не портит IX,IY, память
Вход: BC=1; DE=2; HL=3; BC’=10; DE’=20; HL’=30;
Успех: BC=10; DE=20; HL=30 && BC’= 1; DE’=2; HL’=3

Spectramine
22.05.2015, 23:42
Выяснилось, что zexall (zexfix) напрочь игнорирует команды ini,ind,inir,indr,outi,outd,otir,otdr :|



И ещё интересный факт - fusetest тестирует чтение из портов #7FFD и #3FFD (в режиме 128й машины). Сам он из этих портов всегда читает 255, также ведут себя многие другие эмули (но не все, некоторые читают как из порта #FF (то есть 255 с редкими 0 и 56) ).

Спектакулятор ведёт себя немного иначе - в режиме 128 basic он стабильно читает из обоих портов 255, а в режиме 48 basic при включенной 128-й машине из #3FFD читает как из порта (#FF), а из #7FFD - стабильно #FF.

Эмулятор SPUD в 128 бейсик при чтении из обоих портов сбрасывается (в 48k), а в 48 бейсик 128-й машины - читает из 3FFD как из (#FF), а из #7FFD - стабильно #FF.


Вопрос к реальщикам - пожалуйста, проверьте, кому интересно, как себя ведут реальные машины 128к и Pentagon при выполнении вот таких бейсик-программ:

1 PRINT IN 32765;" ";: GO TO 1

и

1 PRINT IN 16381;" ";: GO TO 1

в режимах 128 basic и 48 basic.


Ну или, может, кто-то что-то подскажет по этому поводу. Что за порт #3FFD, например?

ZXMAK
23.05.2015, 00:16
Насколько помню, на оригинальном 128к железе при чтении из порта 7ffd есть баг - происходит не только чтение, но и запись, т.к ula не прверяет сигналы RD и WR

Spectramine
23.05.2015, 00:18
То есть чтение из 7FFD компьютер воспринимает как запись в него нуля? Это характерно только для фирменных машин, и для всех или только некоторых? Я к тому, что где-то мне попадалось утверждение, что при чтении из 7FFD комп сбрасывается.

ZXMAK
23.05.2015, 00:27
То есть чтение из 7FFD компьютер воспринимает как запись в него нуля? Это характерно только для фирменных машин, и для всех или только некоторых?

Только для фирменных 128к. Записывается не 0, а то что на шине данных в этот момент будет, обычно ff вроде

---------- Post added at 00:27 ---------- Previous post was at 00:24 ----------


Я к тому, что где-то мне попадалось утверждение, что при чтении из 7FFD комп сбрасывается.

не только сбрасывается, но и лок 7ffd установливается, блокируя дальнейшую запись.

goodboy
23.05.2015, 00:34
Что за порт #3FFD, например?
надо `курить` какие адресные линии участвуют в дешифрации порта.
#7FFD это полное обозначение, на самом деле можно использовать и другое значение,
только есть риск задеть другие порты

Alex Rider
23.05.2015, 00:47
Эмулятор SPUD в 128 бейсик при чтении из обоих портов сбрасывается (в 48k)
Похоже, самое правильное поведение. Есть гипотеза, что, если сделать CLEAR 32767 перед чтением, то эффекты могут быть интереснее. А могут и не быть :)

Spectramine
23.05.2015, 00:50
Гипотеза подтвердилась :) комп выдал 255 на черном экране, а потом только сбросился. А поподробнее можно, откуда взялась гипотеза?

Alex Rider
23.05.2015, 01:31
Гипотеза подтвердилась комп выдал 255 на черном экране, а потом только сбросился. А поподробнее можно, откуда взялась гипотеза?
Чтением записали #ff в #7ffd, включилась лочка ПЗУ, из калькулятора 48-го (которое IN исполняло) вернулись вместо 128-го в 48-е ПЗУ, попали куда-то в экранные процедуры (в середину CO-TEMP-6), далее хз по стеку, ибо Unreal не включает лочку ПЗУ если в отладчике записать #ff руками в регистр #7ffd. А без CLEAR стек в страничной области, врубалась 7-я страница с нулями в области стека, и из процедуры сохранения прочитанного из порта значения вываливались в #0000 с залоченным 48-м ПЗУ, что равно RANDOMIZE USR 0.

Spectramine
23.05.2015, 07:39
Похоже, IN 32765 на реальном 128к эквивалентна OUT 32765, 255. А вот IN 16381 это что-то примерно как OUT 32765, IN 255 (в терминах бейсика).

А как в реальном Пентагоне, кто-нибудь знает? Спектакулятор в режиме Пентагона всегда читает с обоих портов 255. Происходит ли в Пентагоне запись в 7FFD при чтении с него? Подозреваю, что нет.

goodboy
23.05.2015, 11:12
на скорпе при чтении из порта включается/выключается (точно не-помню) турбо-режим. при адаптации программ с него для фирменной машины проблема сброса и всплыла (хотя возможно иностранцы знали про это и раньше).

на 128/+2 дешифрация порта #7ffd сделана по-двум битам


Peripheral: ZX Spectrum 128K / +2 Memory Control
Port: 0--- ---- ---- --0-

Spectramine
18.01.2016, 01:35
Всплыли интересные вещи относительно точности эмуляции. Как известно, импульс маскируемого прерывания длится некоторое фиксированное время, за которое может произойти подтверждение прерывания и вход в процедуру его обработки. Длительность этого импульса в тактах z80 полагается эталонно равной 32. Так вот, существует программа тестирования эмуляторов minfo.tap, которая показывает длину фрейма, длину импульса прерывания и признак правильности эмуляции команды EI (об этом далее). Выяснилось, что эмулятор, который я считал эталонным, Spectaculator, некорректно эмулирует импульс прерывания. Программа показывает длину импульса прерывания = 0, что скорее всего означает, что эмуль считает возможным подтверждение прерывания строго после команды z80, на которой завершается фрейм. Правильно эмулируют импульс прерывания Fuse, ZXMAK2 и SpecEmu (возможно, и другие). ZXSPin определяет длину импульса прерывания = 37 тактам, а EmuzWin этот тест проваливает.

Относительно команды EI выяснилось, что она разрешает прерывания не сразу после своего выполнения, а после выполнения следующей за ней команды (чтобы предотвратить закольцовывание входа в процедуру прерывания и дать выполниться команде RET). Некоторые эмули этот факт игнорируют. Кстати, это означает, что команда EI запрещает прерывание сразу после себя. Таким образом, если импульс прерывания придёт во время выполнения цепочки из команд EI, он будет проигнорирован.





Следующая информация будет интересна скорее разработчикам эмуляторов, так как касается поддержки формата RZX. Его спецификация несколько размыто определяет поведение эмулятора в конце проигрывания rzx-фрейма. Базовый алгоритм по завершению фрейма имеет блок "Генерировать прерывание", а как вы его интерпретируете, ваше личное дело.

Большинство эмулей интерпретируют его так: если на момент окончания проигрывания rzx-фрейма IFF1=1, эмулируется подтверждение прерывания. Однако, таким образом игнорируются некоторые особые случаи :

1) последней командой фрейма может быть команда EI, соответственно, прерывания будут запрещены после её выполнения;

2) команда EI может быть предпоследней командой фрейма, а последняя будет на границе окончания импульса прерывания, соответственно, несмотря на то, что IFF1=1 (прерывания разрешены), и после последней команды могло бы быть подтверждение прерывания, его не будет, так как импульс прерывания на ней завершён. А эмуль, проигрывающий rzx-файл, посчитает, что вход в прерывание есть, сэмулирует его, и это приведёт к рассинхронизации дальнейшего проигрывания rzx-файла.

3) самый редкий, и самый сложный случай. как известно, длина команд с префиксами DD/FD может быть произвольной (повторные префиксы), и во время выполнения такой длинной команды прерывание не может произойти. Импульс прерывания может прийти во время выполнения такой команды, и закончиться за это время, а прерывания до неё - разрешены. Очень сложно корректно оформить конец rzx фрейма при записи rzx файла в такой ситуации. Единственным возможным вариантом, который видится мне, будет разрыв выполнения команды по приходу импульса прерывания, причём эмуль-проигрыватель rzx должен корректно такую ситуацию обработать.

Основным требованием к эмулятору-проигрывателю rzx-файла будет в таких случаях то, что эмуль должен учитывать не только состояние триггера IFF1 в конце rzx-фрейма, но и то, не запрещены ли прерывания, несмотря на то, что IFF1=1 (из-за EI или префиксов DD/FD). Увы, здесь поведение известных эмуляторов оставляет желать лучшего. Spectaculator, SpecEmu, ZXSpin, и EmuZWin, например, в случае, если фрейм заканчивается командой EI, делают вход в процедуру обработки прерывания, что приводит к потере синхронизации rzx. А вот Fuse и ZXMAK2 ведут себя корректно - так как прерывания сразу после EI запрещены, если фрейм заканчивается этой командой, они считают, что подтверждения прерывания не было.

Подытожим, как должен вести себя эмулятор для корректной обработки вышеприведённых особых случаев:

а) если на момент окончания фрейма выполняется команда с цепочкой префиксов DD/FD, эмуль должен корректно обработать разрыв её выполнения (считать все префиксы, кроме последнего, чем-то вроде отдельных команд NOP, запрещающих прерывания сразу после себя);
б) соответственно, если фрейм rzx заканчивается командой EI или префиксом DD/FD, эмуль должен считать, что подтверждения прерывания после фрейма нет, независимо от состояния IFF1.

Особый случай 2) при таком раскладе можно будет не слишком сложно обработать при записи RZX файла, завершив rzx фрейм не на команде после команды EI, а на самой этой команде EI.

Прилагаю архив с программой minfo.tap и rzx-файлом, на котором спотыкаются Spectaculator, ZXSpin, SpecEmu, и EmuZWin, но Fuse и ZXMAK2 успешно его проигрывают. Игра Jumping Jack в этом плане - находка для тестирования поддержки rzx файлов. Во время её выполнения прерывания в основном запрещены, но звук генерируется процедурой ПЗУ BEEPER, которая разрешает прерывания перед выходом из неё. Сразу после её вызова прерывания запрещаются, но - этого достаточно, чтобы время от времени прерывание срабатывало (после выполнения команды RET процедуры BEEPER перед командой DI в коде игры), и появлялась неоднозначность при записи/чтении rzx-файлов.
55595

goodboy
18.01.2016, 13:48
Относительно команды EI выяснилось, что она разрешает прерывания не сразу после своего выполнения, а после выполнения следующей за ней команды
почему тогда висит эта последовательность ?
EI
DI
HALT

b2m
18.01.2016, 13:53
Триггер разрешения прерывания устанавливается сразу, однако после команды EI проверка не производится, процессор сразу переходит к чтению следующей команды.

Spectramine
18.01.2016, 14:10
почему тогда висит эта последовательность ?
EI
DI
HALT

Команда DI запрещает прерывания независимо от того, какие команды выполнялись перед ней. EI не отрабатывает после следующей за нею команды, она не даёт произойти прерыванию сразу после себя, но устанавливает флаги IFF1/IFF2 сразу. DI их сбрасывает, чего достаточно, чтобы запретить прерывания.

NEO SPECTRUMAN
19.01.2016, 00:35
как известно, длина команд с префиксами DD/FD может быть произвольной (повторные префиксы), и во время выполнения такой длинной команды прерывание не может произойти
шта!!!:v2_ohmy: чота никогда не задумывался об этом

в голове сразу нарисовались всякие выравнивалке на первый такт (которые могли бы подстроиться не только под пятнагон если бы и там были такие же глюки)
и мерялки длины инта
хотя с таким же успехом можно юзать
di
любая задержка
ei


- - - Добавлено - - -

а что если залить все 64К сплошным DD/FD??????
жаль у мну нет реала на котором можно было бы подобное проверить...

да и как тогда определить что прерывание все таки сработало\не сработало без осцилографа...

Spectramine
19.01.2016, 01:30
шта!!!:v2_ohmy: чота никогда не задумывался об этомЭто вроде бы не новость, я уже давно встречал упоминания об именно таком поведении Z80. Вот тред, посвящённый этой теме: http://zx-pk.ru/showthread.php?t=6978


А вот что говорит авторитетный источник:
При получении префиксов DD и FD нужно проверить следующий байт:
Если это DD, FD или ED, то префикс нужно проигнорировать, выполнив команду NONI*— 4 такта, прерывания не проверяются. Эффект такого поведения состоит в том, что при наличии длинной цепочки префиксов прерывание (даже NMI) сможет сработать только после ее завершения (точнее, после первой команды, следующей за цепочкой); (c) http://www.emuverse.ru/wiki/Zilog_Z80/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BA% D0%BE%D0%BC%D0%B0%D0%BD%D0%B4

Интереснее всего то, что, судя по всему, так же ведут себя цепочки команд EI, а так же цепочки из префиксов DD/FD и команд EI.

ZXMAK
24.01.2016, 15:53
насколько помню, захват прерывания происходит на последнем такте инструкции. У EI и префиксов на последнем такте захвата прерывания нет

Titus
24.01.2016, 16:19
а что если залить все 64К сплошным DD/FD??????

Значит если прерывание произойдет в середине этой цепочки, то оно не сработает, т.к. сигнал запроса прерывания снимется раньше, чем закончится цепочка.

Я даже так делал шуточную защиту от кнопки Magic. Вся память DD, а в конце JP на начало. Люди нажимали Magic, а он не работает)

NiKa
07.02.2016, 15:23
По поводу Shock Megademo, которая всплыла в другом треде. На WOS лежит tap-версия, которая не работает (виснет или сбрасывается после первого блока демо) на большинстве эмуляторов, включая Spectaculator, ZXMAK2, SpecEmu, ZXSpin. Но - работает на Fuse и EmuZWin. Хороший тест на совместимость) Осталось только выяснить, в чём дело.
А где есть работающая версия Shock Megademo?

Rindex
07.02.2016, 15:27
А где есть работающая версия Shock Megademo?

Ну смотри, и выбирай. Там даже под Пентагон версия есть.

http://zxaaa.untergrund.net/view_demos.php?t=0&s=Shock+Megademo&title=Title

Spectramine
07.02.2016, 15:39
Я тут погорячился чутка) Версия с WOS работает на всех эмулях в режиме 48к, но не работает в режиме 128к. Меня ввела в заблуждение AYмузыка демо в Emuzwin в режиме 48к. Но, что характерно, в Spectaculator второй блок демо с полосками по всему экрану работает глючно, с левыми таймингами. В остальных эмуляторах ок.

goodboy
07.02.2016, 15:47
Версия с WOS работает на всех эмулях в режиме 48к, но не работает в режиме 128к.
грузи в 128ом режиме после usr0
(что-бы небыло конфликта депакер/переменные в буфере принтера)

в Spectaculator второй блок демо с полосками по всему экрану работает глючно, с левыми таймингами
48/128 определяется по кол-ву тактов за прерывание

кроме того автор эмуля выложил скриншот

http://www.spectaculator.com/wp-content/gallery/demos/shock.gif

Spectramine
07.02.2016, 16:02
грузи в 128ом режиме после usr0
(что-бы небыло конфликта депакер/переменные в буфере принтера)
Ага, так работает. Но это ж несерьёзно, демку с 128к музыкой запускать после танцев с бубнами.


48/128 определяется по кол-ву тактов за прерывание

кроме того автор эмуля выложил скриншот Это понятно, непонятно, почему в Спектакуляторе в режиме 48к определяется неправильно, при том, что в других эмулях всё ок. На скриншоте режим 128к.

upd. всё определяется правильно, просто у меня в эмуле было отключено автоопределение Auto Play/Stop для ленты, лента гонится дальше, а эмуль на время ускоренной загрузки убирает задержки z80, и тайминги сыпятся.

Spectramine
10.02.2016, 04:10
Ради интереса погонял тест Timing_Tests-48k_v1.0.tap на разных эмулях. На late timings тест проваливают все протестированные эмуляторы. Fuse и SpecEmu дают 7 ошибок, плюс тест не определяет late timings на них, Spectaculator и ZXMak дают 4 ошибки, и late timings определяются. В общем, с late timings не всё так просто, как пишут в описаниях Contended Memory - видимо, разница не только в начале задержек с 14336 такта вместо 14335-го у early timings.

Создатель теста пишет здесь:http://zxspectrum4.net/op_timing.php, что его эмуль тест проходит, но проверить это не получится, так как эмуль платный, а бесплатная версия неработоспособна - даже запустить ничего не получается.

Счастливые обладатели оригинальных спеков могут прогнать тест, взяв его отсюда: http://zxspectrum4.net/downloads/timing_tests/ , есть даже wav -версии.

ZXMAK
11.02.2016, 04:40
Ради интереса погонял тест Timing_Tests-48k_v1.0.tap на разных эмулях. На late timings тест проваливают все протестированные эмуляторы. Fuse и SpecEmu дают 7 ошибок, плюс тест не определяет late timings на них, Spectaculator и ZXMak дают 4 ошибки, и late timings определяются. В общем, с late timings не всё так просто, как пишут в описаниях Contended Memory - видимо, разница не только в начале задержек с 14336 такта вместо 14335-го у early timings.

Создатель теста пишет здесь:http://zxspectrum4.net/op_timing.php, что его эмуль тест проходит, но проверить это не получится, так как эмуль платный, а бесплатная версия неработоспособна - даже запустить ничего не получается.

Счастливые обладатели оригинальных спеков могут прогнать тест, взяв его отсюда: http://zxspectrum4.net/downloads/timing_tests/ , есть даже wav -версии.

Все тесты zxmak2 проходит, но нужно правильный образ rom использовать. Некоторые модели могут некорректно детектиться если используется тест поведения порта mic. Но тайминги все работают ок. Для 48к early есть вопрос к длительности прерывания, найти такое железо проблематично чтобы протестить

NiKa
11.02.2016, 06:24
Ради интереса надо погонять тест вертикальных цветных полос (BBGTest), на всех эмуляторах, что есть у меня он не проходит.

ZXMAK
11.02.2016, 06:38
Ради интереса надо погонять тест вертикальных цветных полос (BBGTest), на всех эмуляторах, что есть у меня он не проходит.

Bbgtest работал еще когда я только начинал добавлять поддержку contended memory. Это самый простой тест и он в zxmak2 корректно во всех режимах работает

NiKa
11.02.2016, 06:58
В zxmak2 я еще не тестил, но хорошо если он его проходит, надо попробовать.

Spectramine
11.02.2016, 12:13
Все тесты zxmak2 проходит, но нужно правильный образ rom использовать. Некоторые модели могут некорректно детектиться если используется тест поведения порта mic. Но тайминги все работают ок. Для 48к early есть вопрос к длительности прерывания, найти такое железо проблематично чтобы протестить

Я ставлю в настройках в Wizard - Spectrum 48, в ULA settings - late model, в ROM set - zx 48, и тест Timing_Tests-48k_v1.0.tap выдает 4 ошибки. Те же ошибки в той же настройке выдает Spectaculator. Было бы неплохо проверить тест на реальной машине, но это надо 48к с late timings.

Тот же тест на early timings благополучно проходится без ошибок как ZXMAKом, так и Fuse, SpecEmu, Spectaculator.

- - - Добавлено - - -


Ради интереса надо погонять тест вертикальных цветных полос (BBGTest), на всех эмуляторах, что есть у меня он не проходит.

Что за BBGTest? У меня есть тест Lines с вертикальными цветными полосами под 48 и 128, он вроде на всех приличных эмулях работает.

ZXMAK
11.02.2016, 12:22
shiny demo еще неплохой тест, но она под какой-то эмулятор с некорректными таймингами писалась, поэтому в ней сдвиг на два знакоместа есть :)

Spectramine
11.02.2016, 12:32
Это намёк на то, что тест Timing_Tests-48k_v1.0 заточен под некорректный эмуль? Вряд ли. К тому же, этот тест по-разному отрабатывает на Spectaculator и Fuse под late timings 48к, что как бы намекает, что на эмуляцию late timings 48к у разных эмулеписателей разные взгляды.

ZXMAK
11.02.2016, 12:40
Это намёк на то, что тест Timing_Tests-48k_v1.0 заточен под некорректный эмуль? Вряд ли. К тому же, этот тест по-разному отрабатывает на Spectaculator и Fuse под late timings 48к, что как бы намекает, что на эмуляцию late timings 48к у разных эмулеписателей разные взгляды.

Если правильно помню что это тест где бейсиком куча строк выводится на синем фоне, то у него есть особенности:
1) этот тест очень сильно зависит от содержимого пзу (c неправильным пзу всегда фейлится часть тестов)
2) тест определяет тип компа по пзу и поведению порта #FE (реакция входа на изменение выхода), при неправильном определении тесты будут фейлиться
3) zxmak2 проходит полностью все тесты в этом наборе. Но прийдется повозиться с выбором rom и настройками, чтобы тест корректно работал

Spectramine
11.02.2016, 13:04
Если правильно помню что это тест где бейсиком куча строк выводится на синем фоне, то у него есть особенности:
1) этот тест очень сильно зависит от содержимого пзу (c неправильным пзу всегда фейлится часть тестов)
2) тест определяет тип компа по пзу и поведению порта #FE (реакция входа на изменение выхода), при неправильном определении тесты будут фейлиться
3) zxmak2 проходит полностью все тесты в этом наборе. Но прийдется повозиться с выбором rom и настройками, чтобы тест корректно работал

Да не проходит, проверь) То есть с early timings - проходит все, с late timings - 4 ошибки. Нет такого конфига, в котором эмуль проходит все тесты Timing_Tests-48k_v1.0.tap, если выбрана ULA settings: ZX Spectrum 48 late model. (Какое может быть ПЗУ у Spectrum 48k с late timings, кроме родного (с) 1982?)

Либо эмуляция late timings 48к неточная (причем по-разному неточная у Fuse и ZXMAK), либо тест кривой.

ZXMAK
11.02.2016, 13:19
Да не проходит, проверь) То есть с early timings - проходит все, с late timings - 4 ошибки. Нет такого конфига, в котором эмуль проходит все тесты Timing_Tests-48k_v1.0.tap, если выбрана ULA settings: ZX Spectrum 48 late model. (Какое может быть ПЗУ у Spectrum 48k с late timings, кроме родного (с) 1982?)

Либо эмуляция late timings 48к неточная (причем по-разному неточная у Fuse и ZXMAK), либо тест кривой.

а есть информация как тест себя ведет на реальных 48К машинах (в точности на early и late модификациях)? Может он вообще только под один тип ULA48 расчитан?

Возможно для late модели происходит некорректное определение типа машины по порту #FE. Нужно снять SZX снэпшот после детекта машины на эмуляторе где для late модели тест проходит корректно и запустить этот снэпшот. Там с этим портом куча заморочек для каждой модели. Насколько помню в ZXMAK2, для каких-то моделей поведение #FE эмулируется некорректно (просто используется поведение от другой модели).

Но с таймингами я проверял, при правильном детекте машины в ZXMAK2 этот тест полностью проходит на всех моделях.

zebest
11.02.2016, 13:25
shiny demo еще неплохой тест, но она под какой-то эмулятор с некорректными таймингами писалась, поэтому в ней сдвиг на два знакоместа есть
это совершенно отдельный тест-демо) , видимо автор его писал под свой собственный неведомый эмууль.
много лет назад только в EmuZWin кое-как его настроил, и то, только потомуу что в EmuZWin можно подстраивать такты и тайминги почти как душе угодно...

Spectramine
11.02.2016, 14:11
а есть информация как тест себя ведет на реальных 48К машинах (в точности на early и late модификациях)? Может он вообще только под один тип ULA48 расчитан?

Судя по тому, что ожидаемые результаты разные для early и late (не везде, правда), он таки рассчитан под оба типа ULA48. Насчет того, как тест ведёт себя на реальных 48к машинах, ничего сказать не могу)



Возможно для late модели происходит некорректное определение типа машины по порту #FE.

Ну модель-то тест на эмуле определяет корректно - ставишь late, определяет late. В Fuse и SpecEmu тест вообще пишет early для обоих вариантов ULA.




Нужно снять SZX снэпшот после детекта машины на эмуляторе где для late модели тест проходит корректно и запустить этот снэпшот.

Ха, так нет такого эмулятора, где для late модели тест проходит корректно, я ж про это и писал. Спектакулятор ведёт себя так же, как ZXMAK (4 ошибки), FUSE - также, как SpecEmu (7 ошибок). Про остальные эмули молчу, они и для early модели тест не проходят.




Но с таймингами я проверял, при правильном детекте машины в ZXMAK2 этот тест полностью проходит на всех моделях.

Машина тестом детектится правильно, (48к late model), тест выдает 4 ошибки. Тест полностью проходится только на модели ZX Spectrum 48к early model.

ZXMAK
11.02.2016, 15:10
Судя по тому, что ожидаемые результаты разные для early и late (не везде, правда), он таки рассчитан под оба типа ULA48. Насчет того, как тест ведёт себя на реальных 48к машинах, ничего сказать не могу)




Ну модель-то тест на эмуле определяет корректно - ставишь late, определяет late. В Fuse и SpecEmu тест вообще пишет early для обоих вариантов ULA.





Ха, так нет такого эмулятора, где для late модели тест проходит корректно, я ж про это и писал. Спектакулятор ведёт себя так же, как ZXMAK (4 ошибки), FUSE - также, как SpecEmu (7 ошибок). Про остальные эмули молчу, они и для early модели тест не проходят.





Машина тестом детектится правильно, (48к late model), тест выдает 4 ошибки. Тест полностью проходится только на модели ZX Spectrum 48к early model.

я уже честно говоря не помню, может этот тест и на реальной машине те-же ошибки дает :)

Такое было например для тестами регистра WZ, тест на реальной машине давал CRC failed. Была и исправленная версия теста. Нужно смотреть не на результаты теста, а сравнивать результат с реальной машиной :)

Spectramine
11.02.2016, 18:33
я уже честно говоря не помню, может этот тест и на реальной машине те-же ошибки дает :)

Такое было например для тестами регистра WZ, тест на реальной машине давал CRC failed. Была и исправленная версия теста. Нужно смотреть не на результаты теста, а сравнивать результат с реальной машиной :)

Логично :) Но я это сделать никак не могу.

NiKa
11.02.2016, 19:00
Timing_Tests-48k_v1.0 - именно этот тест нужно прогнать на оригинальном спектруме? У меня только ULA 6C001E-7.

Spectramine
11.02.2016, 19:15
Ага, его. Вот тут он есть даже в wav: http://zxspectrum4.net/downloads/timing_tests/ В самом начале тест выводит, какие тайминги ULA - early или late, интересуют в основном результаты для late (с эмуляцией early эмули справляются).

- - - Добавлено - - -

Там же, кстати, есть модификация теста для 128х машин - Timing_Tests-128k_v1.0.wav , было бы интересно узнать и его результаты на реальном 128к.

NiKa
12.02.2016, 04:09
У меня не совсем реальный 128, хотя ULA одна и таже, но этот тест как я понял сильно зависим от прошивки.

Spectramine
12.02.2016, 06:11
У меня не совсем реальный 128, хотя ULA одна и таже, но этот тест как я понял сильно зависим от прошивки.

Если вы насчёт того, что у вас +2, я прогнал этот тест на Спектакуляторе под +2, а также на ZXMAK2 под 128к с ПЗУ Пентагона, и от прошивки его результаты не зависят, зависят только от модификации таймингов - на late проходит без ошибок, на early - 4 ошибки.

А что с 48к, пробовали запустить Timing_Tests-48k_v1.0 ?

NiKa
12.02.2016, 18:34
Еще руки не дошли, сегодня постараюсь попробовать.

- - - Добавлено - - -

На оригинальном 48k issue 4S режим early - тест проходит без ошибок.
На Арлекине с новой прошивкой 2006 режим early - тест проходит тоже без ошибок.
На ZX Spectrum +2 - тест почти проходит но в самом конце (после 34 теста) вываливается с ошибкой - 9 STOP statement, 1350:1

Spectramine
12.02.2016, 19:30
Еще руки не дошли, сегодня постараюсь попробовать.

- - - Добавлено - - -

На оригинальном 48k issue 4S режим early - тест проходит без ошибок.
На Арлекине с новой прошивкой 2006 режим early - тест проходит тоже без ошибок.
На ZX Spectrum +2 - тест почти проходит но в самом конце (после 34 теста) вываливается с ошибкой - 9 STOP statement, 1350:1
Спасибо. Это ожидаемые результаты, так же ведут себя и эмуляторы - 48к с early timings, 128к с late timins.

Но мы так и не знаем, как ведёт себя тест на реальном 48к с late timings. Будет время и желание, попробуйте, пожалуйста, запустить Timing_Tests-48k_v1.0 на ваших ZX Spectrum 48k issue 3 и ZX Spectrum 48k+ - вдруг один из них с late timings (это характеристика ULA, не зависящая от её модели, просто почему-то у части спектрумов тайминги задержек сдвинуты на один такт, из-за этого поведение z80 отличается в плане задержек).

Суть в том, что выявилось, что у эмулей нет единого взгляда на эмуляцию 48к с late timings, а тест Timing_Tests-48k_v1.0 вроде как говорит, что все эмули эмулируют 48к late timigs неправильно (но по-разному неправильно).

В отношении 128к эмули ведут себя одинаково и для early, и для late, а тест Timing_Tests-128k_v1.0 явно заточен на только одну модель таймингов - late (он даже не определяет early/late, как на 48к).

NiKa
13.02.2016, 08:23
У меня три рабочих 48 но в них во всех ULA 6C001E-7, в issue 3 стояла 6C001E-6 но она была битая, а на замену была только 7я.

Spectramine
13.02.2016, 13:14
У меня три рабочих 48 но в них во всех ULA 6C001E-7, в issue 3 стояла 6C001E-6 но она была битая, а на замену была только 7я.

Насколько я знаю, поведение early/late timings не зависит от ревизии микросхемы ULA, оно вообще непонятно от чего зависит. Так что, вполне возможно, что один из ваших 48х с late timings.

ZXMAK
13.02.2016, 13:42
Насколько я знаю, поведение early/late timings не зависит от ревизии микросхемы ULA, оно вообще непонятно от чего зависит. Так что, вполне возможно, что один из ваших 48х с late timings.

это разные ревизии ULA. Чуть поменялась прошивка и тайминги сместились на такт, да вроде еще какие-то мелкие отличия были. early - это типа первая ревизия, late - вторая. Кроме таймингов, поведение порта #FE если правильно помню тоже менялось

Spectramine
13.02.2016, 15:02
это разные ревизии ULA. Чуть поменялась прошивка и тайминги сместились на такт, да вроде еще какие-то мелкие отличия были. early - это типа первая ревизия, late - вторая.

Пруф? Я читал, что иногда даже на одном и том же Спектруме при прогреве поведение менялось с early на late.

Здесь таблица результатов теста Timing_Tests-48k_v1.0.tap для разных конфигураций машин: http://zxspectrum4.net/downloads/spectrum48k_timing_results.htm ,
столбец Type - тип таймингов (1-early,2-late). Как видите, для одних и тех же ревизий ULA поведение разное.

ZXMAK
13.02.2016, 15:46
Пруф? Я читал, что иногда даже на одном и том же Спектруме при прогреве поведение менялось с early на late.

Здесь таблица результатов теста Timing_Tests-48k_v1.0.tap для разных конфигураций машин: http://zxspectrum4.net/downloads/spectrum48k_timing_results.htm ,
столбец Type - тип таймингов (1-early,2-late). Как видите, для одних и тех же ревизий ULA поведение разное.

zxspectrum4.net сайт специфический, у него немного необычный подход, не стоит на него ориентироваться по точности эмуляции.

По ULA книжка была, там детально разобраны многие вещи, не помню название, тут на форуме ее некоторые даже покупали

Spectramine
14.02.2016, 03:09
zxspectrum4.net сайт специфический, у него немного необычный подход, не стоит на него ориентироваться по точности эмуляции.

Собственно по точности эмуляции сайт особо ничего и не предлагает, кроме одного теста, который мы обсуждаем. Результаты теста подбиты на основании фидбэка от людей, запускавших тест на своих реальных машинах.


По ULA книжка была, там детально разобраны многие вещи, не помню название, тут на форуме ее некоторые даже покупали Я её нашел, скачал, просмотрел главу, посвящённую задержкам, но упоминаний о early/late timings не нашёл, только схемотехнику задержек. В старых версиях ULA патчилась отдельной микросхемой - "дохлым тараканом", в новых этот патч был интегрирован. Написано, что задержки трех разных рассмотренных версий ULA идентичные. Плюс пара слов о том, что на 48-128 схема задержек одна, а на +3 другая.

- - - Добавлено - - -

В общем, просьба к реальщикам-владельцам оригинальных Spectrum 48к, особенно к тем, кто точно знает, что у них late timings модель - запустить тест Timing_Tests-48k_v1.0.wav отсюда http://zxspectrum4.net/downloads/timing_tests/ , и рассказать о результатах, дабы расставить точки над i относительно особенностей Spectrum 48k c late timings - правильно они эмулируются, или нет.

(Кстати, я разобрался, в чём разница между эмуляцией late timings 48к у Spectaculator/ZXMAK2 и SpecEmu/Fuse).

ZXMAK
14.02.2016, 10:22
Собственно по точности эмуляции сайт особо ничего и не предлагает, кроме одного теста, который мы обсуждаем. Результаты теста подбиты на основании фидбэка от людей, запускавших тест на своих реальных машинах.

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



(Кстати, я разобрался, в чём разница между эмуляцией late timings 48к у Spectaculator/ZXMAK2 и SpecEmu/Fuse).

в чем?

Spectramine
04.11.2016, 21:21
Выяснил, что большинство передовых эмулей (а точнее, Fuse, ZXMAK2 и Spectaculator, исключая SpecEmu, EmuZwin и ZXSpin) эмулируют ошибку процессора z80 при выполнении команд LD A,I/LD A,R - во время прихода импульса прерывания эта команда в флаг PV записывает 0, т.к. обработка прерывания начинается на последнем такте выполнения команд. Подробнее об этом можно прочитать здесь (http://ivr.webzone.ru/articles/ldar_new/) и здесь (http://zxpress.ru/article.php?id=8963). Но только во время обычной работы, во время проигрывания rzx файлов они все, кроме Spectaculator, об этой ошибке забывают (http://zx-pk.ru/threads/27033-prokhozhdeniya-igr-v-formate-rzx.html?p=890090&viewfull=1#post890090).

По первой ссылке можно посмотреть код, обнаруживающий эту особенность. Как указано в тексте по второй ссылке, CMOS-процессоры Z80 этой ошибки не имеют.

Spectramine
17.11.2016, 02:02
Владельцы фирменных ZX Spectrum +2A(черный корпус)/+3, не могли бы вы прогнать в бейсике минитесты из этого видео:
https://www.youtube.com/watch?v=Oj9ygM9U5lQ
(с четными портами не надо, там всё понятно, порт FE), и отписаться тут о результатах. Похоже, что у поздних Амстрадовских моделей таки есть эффект "порта FF", хотя конкретно на порту FF и не работает. Но эмули об этом не знают.

Bedazzle
17.11.2016, 09:14
Владельцы фирменных ZX Spectrum +2A(черный корпус)/+3, не могли бы вы прогнать в бейсике минитесты из этого видео:
(с четными портами не надо, там всё понятно, порт FE), и отписаться тут о результатах. Похоже, что у поздних Амстрадовских моделей таки есть эффект "порта FF", хотя конкретно на порту FF и не работает. Но эмули об этом не знают.

Давай буржуинам на WOS заброшу. Единственное - как подробнее описать про фирменные модели?

Spectramine
17.11.2016, 13:21
Давай буржуинам на WOS заброшу. Единственное - как подробнее описать про фирменные модели?

Амстрадовские ZX Spectrum +2A (+2 с черным корпусом) и ZX Spectrum +3. Считается, что у этих моделей нет "порта FF", как у предыдущих моделей (с незадействованных портов время от времени читаются данные, считанные ULA с экрана), а на этом видео показано, что есть, только почему-то работает на портах 1 и 5, но не работает на 255, и в режиме бейсик 48к (а ещё данные с экрана читаются инкрементированными).

goodboy
17.11.2016, 15:21
на этом видео
1 испанская модель
2 прежний владелец вполне мог припаять резистор (есть такая доработка)

Spectramine
17.11.2016, 16:14
на этом видео
1 испанская модель
2 прежний владелец вполне мог припаять резистор (есть такая доработка)

Да, про модель я заметил, но не думаю, что у них ULA разные. Насчёт резистора - тоже вполне возможно, поэтому мне и интересно, как у других владельцев это работает, или не работает. (И почему, если резистор, данные экрана инкрементированы, и не идут с порта FF? смысл тогда делать доработку, если в основном программы читают именно порт FF).

goodboy
17.11.2016, 17:45
проверил на своём +2а
есть такой момент.

возможно перехлёст с существующими портами ?

Spectramine
17.11.2016, 18:09
С какими? И почему читаются данные экрана? Всё-таки больше похоже на глюк ULA. Спасибо за подтверждение факта. Возможно, кто-нибудь со временем проведет более подробное исследование, чтобы сэмулировать глюк на эмулях. Так, интереса ради, вряд ли в этом есть практический смысл, конечно.

goodboy
17.11.2016, 18:42
почему читаются данные экрана?
да, логично
я когда проверял цвет экрана не-менял.
завтра попробую

Spectramine
17.11.2016, 18:59
Для исследования поведения плавающей шины есть программа 58746, ею можно проверить, на каких тиках какие экранные данные читаются, с выбранного порта. Может, кто озадачится, интереса ради, проверить, с каких портов, в какие тики, какие данные читаются, на фирменных +2А/+3.

Spectramine
05.02.2017, 20:27
Ещё один недокументированный нюанс эмуляции Z80 всплыл на форуме WOS: https://www.worldofspectrum.org/forums/discussion/41704/scf-ccf-flags-new-discovery (он всплыл давно, но я увидел только сегодня).

Коротко - после команд, не изменяющих флаги, а также POP AF и EX AF,AF' , команды SCF-CCF на оригинальном z80 выдают во флаги F5-F3 соотв. биты результата A or F , а после команд, влияющих на флаги - просто соответствующие биты аккумулятора.

Все эмули на текущий момент этот нюанс фейлят. Правда, похоже, что эмули работают так, как работает Nec-овский клон Z80 (всегда копируют биты аккумулятора). Другие клоны Z80 могут в данном случае выдавать что-то ещё.

ram_scan
06.02.2017, 15:41
А сильно не факт что таки именно "выдают". Поскольку у Z80 архитектура динамическая (как и на i8080, у него много где нет защелок и данные на внутренних шинах держатся за счет их емкости), то это зависит от тактовой частоты. Успеет "свободная шина" на конкретной тактовой частоте в нолики упасть или не успеет. Нужно проверять на минимально допустимой.

Я бегло просмотрел несколько даташитов но видать не те смотрел и не нашел минимальной частоты. Память у меня крутится вокруг цифры в 750 кГц, но хоть убей не помню где я за нее вычитал. Там кстати и "разведанная логика" с memptr может боком пойти.

И рубль за сто что "разведанная логика" эта не будет работать так как разведано если проц засуспендить ронянием CLK в ноль в нужном месте..

Spectramine
06.02.2017, 16:38
А сильно не факт что таки именно "выдают". Поскольку у Z80 архитектура динамическая (как и на i8080, у него много где нет защелок и данные на внутренних шинах держатся за счет их емкости), то это зависит от тактовой частоты. Успеет "свободная шина" на конкретной тактовой частоте в нолики упасть или не успеет. Нужно проверять на минимально допустимой.

Я бегло просмотрел несколько даташитов но видать не те смотрел и не нашел минимальной частоты. Память у меня крутится вокруг цифры в 750 кГц, но хоть убей не помню где я за нее вычитал. Там кстати и "разведанная логика" с memptr может боком пойти.

И рубль за сто что "разведанная логика" эта не будет работать так как разведано если проц засуспендить ронянием CLK в ноль в нужном месте..

"Рубль за сто", "может пойти" - это ещё более сильно не факт. Проведите исследования, засуспендите проц ронянием CLK в ноль в нужном месте, опровергните полученные результаты своими - тогда ваши предположения будут иметь вес. А так - это гадание на кофейной гуще.

Spectramine
16.09.2017, 14:36
Владельцы фирменных ZX Spectrum +2A(черный корпус)/+3, не могли бы вы прогнать в бейсике минитесты из этого видео:
https://www.youtube.com/watch?v=Oj9ygM9U5lQ
(с четными портами не надо, там всё понятно, порт FE), и отписаться тут о результатах. Похоже, что у поздних Амстрадовских моделей таки есть эффект "порта FF", хотя конкретно на порту FF и не работает. Но эмули об этом не знают.

Загадка плавающей шины +2А/+3 решена! Кому интересно, читайте на WOS-форуме (https://www.worldofspectrum.org/forums/discussion/55142/need-help-from-people-with-a-2a-3/p1).

Spectramine
24.03.2018, 16:35
Кому интересно ознакомиться ещё с одной малоизвестной фишкой Спектрума, запустите эту тапку. (http://www.zxuno.com/forum/download/file.php?id=1690&sid=2fa2babdfec76242cc15e17e047ce164) На оригинальных +2А/+3, клонах, а также на большинстве эмуляторов вы почти ничего не увидите, кроме небольшого мерцания, но на оригинальных 16/48/128/+2 будет видно шагающего Manic Miner) Его также можно увидеть на SpecEmu/ZXspin в моделях 48/128/+2 с включенными опциями ULA artifacts/ULA color ramping.

Bedazzle
25.03.2018, 17:01
Кому интересно ознакомиться ещё с одной малоизвестной фишкой Спектрума

Клёво :)

NiKa
25.03.2018, 17:21
Это не малоизвестная фишка, а всем известный Snow effect, вот только грамотно реализовать его, даже на эмуляторах, ни кто не может.

Spectramine
25.03.2018, 17:24
Это не малоизвестная фишка, а всем известный Snow effect, вот только грамотно реализовать его, даже на эмуляторах, ни кто не может.

Это никакого отношения к всем известному Snow effect не имеет. Снег, я, кстати, изучил вдоль и поперек, спасибо камраду с wos и Pheel-у, и да, ни в одном эмуле он правильно не реализован.

krt17
25.03.2018, 17:41
Забавно конечно что при инверсии одновременно и атрибутов и пикселей такой эффект. А волны на шахматке есть в каком нибуть эмуле?

Spectramine
25.03.2018, 18:24
Забавно конечно что при инверсии одновременно и атрибутов и пикселей такой эффект. А волны на шахматке есть в каком нибуть эмуле?

Насчет волн я не в курсе. Дело не в инверсии и того, и того, а в том, что точки PAPER при некоторых условиях длиннее точек INK. А инверсия и того и того здесь нужна, чтобы полностью скрыть фигурку на моделях и эмулях, у которых этого эффекта нет.

ram_scan
26.03.2018, 07:17
Насчет волн я не в курсе. Дело не в инверсии и того, и того, а в том, что точки PAPER при некоторых условиях длиннее точек INK.

Они длиннее при любых условиях. Особенность схемотехники фирменной улы. Просто не при всех условиях это на экране заметно.

Spectramine
26.03.2018, 08:50
Они длиннее при любых условиях. Особенность схемотехники фирменной улы. Просто не при всех условиях это на экране заметно.

Они не могут быть длиннее при любых условиях, иначе экранные строки растра были бы разной длины в зависимости от количеств точек INK и PAPER в них.

ram_scan
27.03.2018, 05:06
Они не могут быть длиннее при любых условиях, иначе экранные строки растра были бы разной длины в зависимости от количеств точек INK и PAPER в них.

Одни делаются длиннее за счет того что другие делаются короче. Из-за чего получается эффект, пример которого ниже (экран заполнен вертикальными линиями, по две области с поменяным местами инком и папером):
64803

Собсно в книжке криса смита про это давно написано, и обьяснено почему именно. Кажется даже с фрагментом схемы.

Собсно проблема растет ногами из того же места из которого растут вертикальные фантомы на флэш атрибутах.
64804

Spectramine
27.03.2018, 11:30
Одни делаются длиннее за счет того что другие делаются короче. Из-за чего получается эффект, пример которого ниже (экран заполнен вертикальными линиями, по две области с поменяным местами инком и папером):
64803

Собсно в книжке криса смита про это давно написано, и обьяснено почему именно. Кажется даже с фрагментом схемы.

Собсно проблема растет ногами из того же места из которого растут вертикальные фантомы на флэш атрибутах.
64804

Ну это же не значит, что точки PAPER всегда длиннее точек INK. Только в случае соседства точки INK и PAPER, и то, насколько я понял, не всегда, зависит от цветов INK и PAPER.

ram_scan
27.03.2018, 18:20
Ну это же не значит, что точки PAPER всегда длиннее точек INK. Только в случае соседства точки INK и PAPER, и то, насколько я понял, не всегда, зависит от цветов INK и PAPER.

Это происходит всегда. На инверсном атрибуте черные точки получаются всегда всегда чуть шире светлых. Просто обычно этого незаметно, и в глаза бросается только на синтетических тестах вроде вот этой "зебры". Когда рядом инверсная маска и инверсный атрибут.

То есть на самом деле черные пиксели в фирменном спектруме чуть короче "пустышек". Доя понимания эффекта нужно осознать что спекки рисует единичку как точку, нолик как отсутствие точки, и ворочание своими мозгами тоже как отсутствие точки, как нолик. Если поменять атрибут местами, то будут белые пиксели чуть короче "пустышек", что начинает выглядеть как черные пиксели длиннее "пустышек", то есть спекки начинает мозгами ворочать уже на единичках. На спекки пиксель скажем так не вполне квадратный. Связано это с тем что схема асинхронная и тайминги в ней подногялись задержками а не триггерами со стробом.

Spectramine
07.04.2018, 12:20
Нужна помощь от владельца фирменного 16/48/48+/128k (не +2/+2А/+3), для исчерпывающего исследования эффекта 4х градаций яркости (http://zx-pk.ru/threads/23797-testirovanie-emulyatorov.html?p=956066&viewfull=1#post956066), а также эффекта FLASH-полосок - нужно запустить на реале тест и сделать видео.

daniel
08.04.2018, 09:22
Нужна помощь от владельца фирменного 16/48/48+/128k (не +2/+2А/+3), для исчерпывающего исследования эффекта 4х градаций яркости (http://zx-pk.ru/threads/23797-testirovanie-emulyatorov.html?p=956066&viewfull=1#post956066), а также эффекта FLASH-полосок - нужно запустить на реале тест и сделать видео.

128:
https://drive.google.com/file/d/1GiOfeuBOmcKkTaqO_0iDhZYRE_y_m6wL/view?usp=sharing

48:
https://drive.google.com/open?id=15c1GvmLziGrJBsJCNyJp3yTH7Y8ouWFC

в общем бегает miner атрибутный с повышенной яркостью.

Spectramine
08.04.2018, 13:54
128:
https://drive.google.com/file/d/1GiOfeuBOmcKkTaqO_0iDhZYRE_y_m6wL/view?usp=sharing

48:
https://drive.google.com/open?id=15c1GvmLziGrJBsJCNyJp3yTH7Y8ouWFC

в общем бегает miner атрибутный с повышенной яркостью.

Спасибо :) Написал в личку.

daniel
09.04.2019, 12:24
Не работающий на эмуляторах софт:
https://zxaaa.net/view_demo.php?id=1687

точнее дальше меню дело не идёт, не стандартная работа с вг93.

Spectramine
09.04.2019, 13:12
Не работающий на эмуляторах софт:
https://zxaaa.net/view_demo.php?id=1687

точнее дальше меню дело не идёт, не стандартная работа с вг93.

А на реале точно работает?

daniel
09.04.2019, 14:57
А на реале точно работает?
проверял Kalantaj - говорит что с реальной дискеты работает, якобы испоьзуются какието хитрые процедуры плавного гашения и зажигания светодиода на fdd.

goodboy
09.04.2019, 17:08
sucubus на RealSpectrum нормально работает.

daniel
09.04.2019, 18:16
sucubus на RealSpectrum нормально работает.
дальше меню не работает, также как и на других эмулях.

goodboy
09.04.2019, 18:48
там (по умолчанию) порт для covox`a #dd (как на скорпионе),
на пентагоне определённый вывод в этот порт вызовет переключение страниц и порчу кода.
эмулируй именно скорп

daniel
09.04.2019, 19:46
эмулируй именно скорп
запускаю в режиме скорп, попадаю в меню, стрелка на AY, нажимаю 0 опция белеет ничего не происходит, из пунктов только info работает.
https://kvotka.ru/images/2019/04/09/scorp.jpg

goodboy
09.04.2019, 19:58
вообще-то выбор ay/covox влияет на ударники в основной деме.
ты что нажать на флажок в верхнем правом углу не догадался ???

daniel
09.04.2019, 20:01
конечно нет, сейчас попробую.

Spectramine
09.04.2019, 20:46
там (по умолчанию) порт для covox`a #dd (как на скорпионе),
на пентагоне определённый вывод в этот порт вызовет переключение страниц и порчу кода.
эмулируй именно скорп

Ну то есть на реальном пентагоне работать не будет.

goodboy
09.04.2019, 20:52
сделай войдя в 128ой бейсик out 221,64

Spectramine
09.04.2019, 22:39
Похоже, на кривизну демы наложилась кривизна эмуляции ВГ93.

- - - Добавлено - - -

goodboy, возможно, ты в курсе, но на всякий случай - Калантай написал, что у него дема работает на Пентеве с 128к локом памяти.

goodboy
09.04.2019, 23:31
а откуда мне знать какие адреса там участвуют при дешифрации порта #7ffd ?

Spectramine
09.04.2019, 23:38
По идее там дешифрация как на реальном Пентагоне.

goodboy
10.04.2019, 00:41
в Unreal`e оказалось действительно ВГшка работает не совсем правильно - пофиксили

daniel
10.04.2019, 00:53
фикс демы:
https://zxdemos.ru/viewtopic.php?pid=67175#p67175

Spectramine
10.04.2019, 00:56
в Unreal`e оказалось действительно ВГшка работает не совсем правильно - пофиксили

А где пофиксили?

goodboy
10.04.2019, 17:22
фикс демы:
а зачем что-то править если оно и так работает нормально ???
(я про то что подгонять дему под эмулятор это маразм)

- - - Добавлено - - -


А где пофиксили?
не знаю как скоро выйдет обновлённый Unreal, но в нём эта дема - уже работает

Spectramine
10.04.2019, 17:54
не знаю как скоро выйдет обновлённый Unreal, но в нём эта дема - уже работает

Рад за дему и за Unreal)

daniel
10.04.2019, 18:17
а зачем что-то править если оно и так работает нормально ???
Если это делают, значит кому-то нужно!
Оно на пентеве только с реальной дискеты работало. Поэтому теперь в архиве две версии оригинал и для эмулятора.
Кстати есть ещё косяк повсюду в деме используется недокументированная команда out (c),0 которая преращается на пентеве out (c),ff. Лишние щелчки и бордер белый. Это пока не пофикшено.

goodboy
10.04.2019, 20:22
которая преращается на пентеве
превращается скорее на проце, при чём тут пентева ?

- - - Добавлено - - -


Оно на пентеве только с реальной дискеты работало.
значит эмуляция говённая

Spectramine
11.04.2019, 00:22
Кто-нибудь с реальным Пентагоном 128к может запустить непатченную версию демы Sucubus:68732, дабы проверить, идет ли она на нем или сбрасывается? После появления меню демы надо навести курсор клавишами 6789 на флажок вверху справа и нажать 0.

goodboy
11.04.2019, 11:08
Рад за дему и за Unreal
http://dlcorp.nedopc.com/download/file.php?id=3021

zebest
16.04.2019, 21:45
weiv,надеюсь помнишь тест FPGA48all, у тебя как то еще полосОчки неверно бёгали??
так вот, исходники я благополучно протерял, а они понадобились для очередного эмулеписателя. Слепил из того, что осталось -похожий. так вот,в трех эмулях , Fuse, SpecEmu и Цезаря - полоски стоят на месте, в ZXMAK2 -меееедленно бегут, а в твоем - быстрее. Или в приватной версии - тоже стоят на месте?? Тогда где правда?? или и zxmak2 - фейлит?
https://drive.google.com/open?id=1FfLTSeHbI8QoDZDuJS96Z1AgX5WYq2F_ - очередная реинкарнация
ааа, ну и спекулятор и тут нервно курит.

Spectramine
17.04.2019, 01:16
zebest, всё просто - в спектрамине надо отключить эмуляцию кемпстон джойстика, тогда полоски стоят. У тебя ж в тесте чтение из портов стоит при выводе полосочек. А то, с какой скоростью полоски бегут, зависит от дешифрации кемстона в эмуле.

zebest
17.04.2019, 08:19
Точно. За кемпстон говорил. Жабыль:v2_huh: Значит за zxmak2 то жи спокоен )
Попозже обещали этот тестик на паре реалов позапускать. Посмотрим, что у них с портами.
Мне бы еще со снапшотами раз и навсегда разобраЦЦа, ибо тоже, в разных эмулях кто в лес, кто по дрова, но и еще, на одном эмуле, хе-хе, одни снапшоты без проблем работают, меньшинство, большинство - тупо сбрасывается, но при этом эти же снапшоты работают в других е-мулях без проблем. Странненькое поведеньице...

Spectramine
17.04.2019, 09:57
zebest, если есть снапшоты, которые не работают в Спектрамине, скинь, плиз, я посмотрю. У снапшотов есть малоиспользуемые поля записи состояния, одни эмули их поддерживают, другие - нет, или поддерживают криво. Некоторые поля снапшотов, к тому же, не стандартизованы. А у SZX формата могут быть неподдерживаемые в некоторых эмулях блоки.

- - - Добавлено - - -

Ну и никто не отменял бажность эмулей. ЕМНИП, Unreal серьезно лажает с .z80.

zebest
17.04.2019, 10:17
да, но поставь себя на сторону эмулестроителя. Каждый же считает, что именно так должно быть, а не иначе. И к примеру у него снапшоты первого типа для тестирования, которые у него работают ровно, а у меня таких всего три ровных, и сто , с его точки зрения, кривых. и Хто прав?)))))) Проверю конечно в твоем эмуле, но там точно работают. Единственное что не нравится - это когда эмули, не только твой, сами переключают тип машины, в зависимости, как они думают, расширения файла. И такого поведения - большинство :((((
Хоть галку\птичку где ставьте, чтобы давать юзеру самому решать, что я SNA хочу в Пентагон-е загрузить, а не в ZX128. Твой эмуль этим тоже грешит, к сожалению. Моемуу

Spectramine
17.04.2019, 10:25
Единственное что не нравится - это когда эмули, не только твой, сами переключают тип машины, в зависимости, как они думают, расширения файла.

Мой так не делает, .sna файлы он открывает в текущей модели. Только если сейчас 48к, а снап 128й, тогда меняет на 128ю. Перепроверь.

- - - Добавлено - - -

А у .z80 и .szx файлов в записи состояния хранится информация о текущей модели, соответственно, модель при открытии переключается на заданную. Это необходимо, в частности, для корректного проигрывания .rzx.

zebest
17.04.2019, 10:26
это да, я так и подумал, что ты неправильно поймешь. SNA как раз то ровно. какие то другие переключал, может 48 sna? но точно переключал, что мне не требовалось. Кстати твой один из двух, который SCL загрузил в ZX48, отсальные упорно на пентагон переключают. Им же виднее, чем недалекомуу юзверю.

Spectramine
17.04.2019, 10:34
да, но поставь себя на сторону эмулестроителя. Каждый же считает, что именно так должно быть, а не иначе. И к примеру у него снапшоты первого типа для тестирования, которые у него работают ровно, а у меня таких всего три ровных, и сто , с его точки зрения, кривых. и Хто прав?))

Есть спецификации снапшотов, эмуль должен им соответствовать, обычно их правильной поддержки достаточно для работоспособности большинства снапов. Снапы от кривого эмуля, не соответствующие спецификации, кривые, и уметь запускать их необязательно. Но иногда приходится. Например, Спектакулятор неправильно пишет .z80 для Скорпиона, но поскольку на нем записан ряд .rzx под Скорпионом, мне в своем эмуле пришлось обрабатывать такие неправильные спектакуляторские .z80 в составе .rzx, дабы проигрывать rzx.

- - - Добавлено - - -


какие то другие переключал, может 48 sna? но точно переключал, что мне не требовалось.

Ага, вот это есть, если сейчас модель 128, а снап 48й, идет переключение на 48. Учту.

zebest
17.04.2019, 10:36
да, именно с 48 sna - твой эмуль посчитал, что пентагонов 48-х - не было. и режимов таких в них)) переключил на zx48/ я думал ты знаешь
sna-пы кривые-то не я делаю, оно само, невинаааваааааатайяяяйяяя я (с). Как Ужасм скомпилировал - так я ээмуулям и скармливаю.

Spectramine
17.04.2019, 10:40
Кстати твой один из двух, который SCL загрузил в ZX48, отсальные упорно на пентагон переключают. Им же виднее, чем недалекомуу юзверю.

Дело в том, что, непонятно по какой причине, большинство эмулей считает TR-DOS неотъемлимым довеском к Пентагону/Скорпиону, а прицепить TR-DOS к фирменным моделям не дают. Тупо, но факт.

- - - Добавлено - - -


sna-пы кривые-то не я делаю, оно само, невинаааваааааатайяяяйяяя я (с). Как Ужасм скомпилировал - так я ээмуулям и скармливаю.

Я и имел ввиду кривой софт, пишущий кривые снапы.

zebest
17.04.2019, 10:43
Я и имел ввиду кривой софт, пишущий кривые снапы.
тут ты вступаешь в диалектическое противоречие с писателями компиляторов. Они -то считают, что у них все верно, и т.д. ) Замкнутый круг. Куды то нам подаЦЦа ? тока в тестировщики..

Spectramine
17.04.2019, 10:48
тут ты вступаешь в диалектическое противоречие с писателями компиляторов. Они -то считают, что у них все верно, и т.д.

Опять же - есть спецификации, есть баги несоответствия им, пользователи компиляторов сообщают о багах, а писатели компиляторов баги исправляют. Если не исправляют - они не правы) остается таким софтом пользоваться на свое усмотрение.

Kalantaj
17.04.2019, 12:35
Было бы шикарно просто запустить в эмуле снапшот , а перед запуском уазать какую именно машину при этом выбрать. Поясню для чего - хочу пофиксить, к примеру мультиколор , в уже сделанном кем-то трдос релизе. И вот хочется оценить - а как именно должно выглядеть на оригинальной машине. Сохраняю снапшот (sna или z80), включаю спектакулятор, выбираю 128к или +2, перетягиваю снапшот туда, а там - фигвам - включился пентагон. Попробовал другие эмули - та же кухня... Погнал искать tap оригинальный, чтоб загрузить в спектакулятор именно в режиме оригинальной машинки. Ну не секас ли?
Я понимаю что будет несовместимость, но такую функцию как экспериментальную поставить и сделать предупреждение о возможной неработоспособности программы, если будет выбрана не та конфигурация машины.
Я понимаю что это чутка оффтоп, но извините - просто чутка поддержал предыдущие сообщения.

goodboy
17.04.2019, 12:48
в каком конфиге z80 сохранён в том он и запустится, сохраняй в SNA

Spectramine
17.04.2019, 12:51
Kalantaj, в Спектрамине 128-е .sna файлы можно загружать под разными моделями - выбираешь модель, загружаешь .sna. А ZXMAK2 загружает .z80 снапы, игнорируя прописанные в них модели, и загружая снап под текущей.

zebest
17.04.2019, 13:03
ZXMAK2 загружает .z80 снапы, игнорируя прописанные в них модели, и загружая снап под текущей.
вооот. вот такое поведение мне надо и для остальных файлов, ТАР ли, или SCL. я как нибудь сам разберусь что и под чем я запустил, без (не)навязчивой помощи со стороны ему-ляторов.

ZXMAK
21.04.2019, 17:01
А ZXMAK2 загружает .z80 снапы, игнорируя прописанные в них модели, и загружая снап под текущей.

да, это было сделано чтобы удобнее было отлаживать мультиколорные снапшоты под разными моделями. Это оказалось настолько удобно, что добавлять автовыбор модели не стал.

Bolt
25.09.2019, 18:56
Да много тестов выкладывалось разных уже. Например, в ветках про ZXMAK или Unreal.
Вот тут разные тесты есть (правда в формате tap). Может есть и такой, который вы ищите.
http://wizard.ae.krakow.pl/~jb/qaop/tests.html
Ссылка померла.
Ищу тест эмуляции Z80, не зависящий от версии ПЗУ. ZEXDOC/ZEXALL не предлагать, там слишком много всего завязано, не поймёшь где ошибку искать.

Где посмотреть подобное? Нужно что-то типа такого


Общие правила:
- Тест идёт от простых инструкций к сложным (пересылка данных, чтение-запись, стековые, ..)
- В тесте не использовать непроверенные (ещё) инструкции

zebest
25.09.2019, 23:55
https://spectrumcomputing.co.uk/forums/viewtopic.php?f=23&t=752

Bolt
26.09.2019, 12:16
Тест хороший, но у него требования ещё больше чем у ZEXDOC, тот хотя бы запускается :) А этот пытается выводить десятичные числа через ROM, для чего нужна не самая простая для эмуляции инструкция DAA.
В общем, эти тесты хороши для проверки почти работающего эмулятора, но не для раскрутки нового. Пока всё более-менее не опишешь работать не будет.

zebest
15.10.2020, 15:40
Как быстро бежит время. +1 еще год. Итаак...
Десять ̶н̶е̶г̶р̶и̶т̶я̶т̶ эмууляторов.
Еле ментарная (других я ,увы не могу) программка хелловорлдv.100500, пяток строчек в ужасме, в конце вывод как обычно:

savesna "bw3test.sna" ,Start
savetap "bw3test.tap" ,Start
Это значит снапы
https://s.micp.ru/W1c5W.jpg
а это соответственно тап-ы:
https://s.micp.ru/zb3Qu.jpg

НаЙдите 11 отличий.
никаких пушапов и вторых прерываний. Просто два вложенных цикла.
Я так понимаю тап-ки тут правильно свой хлеб отрабатывают, а вот снапшоты как бы плевать хотели на флаг переполнения ?? С чего бы??
Ну и третий в верхнем ряду эмуль неприятно огорчил :(( Косячит в обоих вариантах. Или быть может он самый правильный, а остальные - так себе?? Очень известный эмуль.
ps - в ФПГА все точно так же, как ни странно :)

NEO SPECTRUMAN
15.10.2020, 15:59
Ну и третий в верхнем ряду эмуль неприятно огорчил ( Косячит в обоих вариантах. Или быть может он самый правильный, а остальные - так себе?? Очень известный эмуль.
так это же однозначно мерзкий спектакулятор

zebest
15.10.2020, 16:05
Еще предположения будут?)) Спекулятор работает почти всегда правильно, я чаще всего в нем проверяю. Мой другой, хороший, бордерный тест, спектакулятор проваливает, но его и другие проваливают, где-то 50\50. но там адд и израэль. А тут то ..

NEO SPECTRUMAN
15.10.2020, 16:31
Еще предположения будут?))
ну кто то оставил скорей всего дефолтные варианты поллитры на скриншотах
которые практически везде не совпадают между эмулями
и разное соотношение бордеров тоже имеется

так что при желания
вооружившись пипеткой...
вот только ну его нафик :)

- - - Добавлено - - -

а так 170 это поллитра alone... :)
и если это всеми нами любимый унриал
то он не без косяков
тк все его пилятели на своей волне...

- - - Добавлено - - -

особенно классно когда нужно дебагать 2 проца одновремено
а в дебагере пока щелкаешь один
второй тупо стоит

ИЧСХ аффтара все устраивает...

Bedazzle
15.10.2020, 16:36
Как быстро бежит время. +1 еще год. Итаак...
Десять ̶н̶е̶г̶р̶и̶т̶я̶т̶ эмууляторов.
Еле ментарная (других я ,увы не могу) программка хелловорлдv.100500, пяток строчек в ужасме, в конце вывод как обычно:

savesna "bw3test.sna" ,Start
savetap "bw3test.tap" ,Start


Если получу сна и тап, могу запустить на Нексте.

zebest
15.10.2020, 17:02
могу запустить на Нексте
на Следующем будет как у меня на ФПГА, тут интересна такая разница между тапкой и снапшотом.
В коде используется команда сложения с переносом, больше никаких ньюансов. Вопрос, почемуу в тапке правильно отрабатывает, а с sna - игнорирует флаг переноса(или все же с точностью до наоборот!!??). Всего то.
С третьим эмулем - видимо фигня в рендере картинки, тут это неважно.
ну и мой "неправильный" тест для классики. Тут негритят осталось поменее.
https://s.micp.ru/RCO4D.jpg
первый совсем немного косячит, второй и третий - как задумывал аффтор, четвертый -пятый - без коментов, ниже шестой - все ровно, и седьмой - хреновастенько, но лучше, чем 4,5

NEO SPECTRUMAN
15.10.2020, 23:12
иже шестой - все ровно, и седьмой - хреновастенько
zebest, не тяни улуХ за хвост
интрига не получается

zebest
15.10.2020, 23:19
да ну, я вроде все сказал. Бордюрный тест - так он старый, его выкладывал не раз . А этот последний? Ну на. Глянь. Где я косячу и чем разниЦЦа.
А вообще то мне нужна детектилка, максимально простая для Pentagon. Считать такты между прерываниями??

zebest
15.10.2020, 23:41
У снапов на входе флаг CF (переноса) выключен
какого ТБМ-а он выключен в снапах, и почему он не включается при исполнении программы? Это что же, теперь и его еще принудительно включать каждый раз?


Проверить ПЗУ Пентагона проще всего) У него в меню TR-DOS вместо Tape Tester.
Ага, попробую что получится, ибо такты считать я точно не умею. Если только на пальцах.

zebest
16.10.2020, 00:06
Он правильный. Это моя ошибка. Вернее ошибка рендеринга, а не программная.Замнем.
https://s.micp.ru/WFf02.jpg


Видимо ужасм формирует флаги так в снапе, что CF выключен. В снапе перечислены содержимое всех регистров Z80
Это то я понимаю. Я не понимаю - из каких соображений ужасмописатели так сделали.

Bedazzle
16.10.2020, 00:21
содержимое всех регистров Z80 (документированных, по крайней мере).

А есть недокументированные регистры?

NEO SPECTRUMAN
16.10.2020, 00:30
какого ТБМ-а он выключен в снапа
такого что текущая реализация снапов кривая
снапов для машин с >128 вообще нет в принципе? :v2_dizzy_facepalm:

при этом если каждый гореписатель очередного эмулятора бк100500 изобретает свой новый формат
то на спектруме все как всегда дальше *****х z80 и sna никто вылезти не может...

ДОКОЛЕ?

NEO SPECTRUMAN
16.10.2020, 00:42
регистр MPTR
чо это ищо за регистр?

есть регистр WZ

NEO SPECTRUMAN
16.10.2020, 01:07
постольку называть его можно как угодно. Я назвал так
забей в гугол
z80 "MPTR" register
и
z80 "WZ" register
и сравни разницо :_)

- - - Добавлено - - -


Почему нет? .Z80 и .SZX
вот бы их еще поддерживал унриал...

- - - Добавлено - - -

а так надо будет проверить как у z80 с поддержанием в разных эмуляторах...

Lethargeek
16.10.2020, 09:01
Вот дока по MPTR
и даже в ней он назван MEMPTR


Поскольку регистр не документирован, постольку называть его можно как угодно.
а он точно нигде не был документирован?
причём WZ со времён еще 8080 название

zebest
25.10.2020, 23:00
Сообщение от weiv
Проверить ПЗУ Пентагона проще всего) У него в меню TR-DOS вместо Tape Tester
...вот только получившееся "нечто" в Спектрамин v.1.01 "Demo" (другой у мну, увы, нет) работает несколько кривоватенько при "быстрой" загрузке. При нормальной - как задумывал аффтор. В других, хороших, эмулях работает ровно и при быстрой загрузке. Причем во всех трех режимах. ЧЯА5ДНТ?
Впрочем проверяй самъ, может у тебя и все ровно.

Spectramine
25.10.2020, 23:16
...вот только получившееся "нечто" в Спектрамин v.1.01 "Demo" (другой у мну, увы, нет) работает несколько кривоватенько при "быстрой" загрузке. При нормальной - как задумывал аффтор.
Ага, ускорение эмуляции не снимается вовремя, несовершенный алгоритм. Спустя пару секунд приходит в норму.

- - - Добавлено - - -

Сама прога ровно работает на 48/128/+2/Пентагоне, на +2А/+3 подергивания букв, на Скорпионах криво.

zebest
25.10.2020, 23:50
для Пента, не для Скорпа. на +2 в других эмулях вроде ровно, но я такую задачу себе и не ставил. Ну проверю как нить, поддергивание оно такое. Иногда можно вылечить, иногда - не очень)

Spectramine
26.10.2020, 01:26
на +2 в других эмулях вроде ровно,
На +2 ровно, на +2А/+3 подергивания, у них другие тайминги (у +2 как у 128го).

zebest
26.10.2020, 21:11
на +2А/+3 подергивания
вроде выровнял, думаю и 128 не сломал :)
Ну и со скорпами. Можно конечно задетектить тоже, ну хотя бы по надписи, хотя бы зелень. Но вообще не вижу смысла.

Spectramine
26.10.2020, 22:10
вроде выровнял, думаю и 128 не сломал
Да, щас ровно на всей фирме и Пентагоне. Файл отдельный под Скорпион зеленый тоже ровно. Зеленый Скорп от желтого по ПЗУ не отличишь, увы.

NEO SPECTRUMAN
08.11.2020, 01:04
Еле ментарная (других я ,увы не могу) программка хелловорлдv.100500, пяток строчек в ужасме, в конце вывод как обычно:
Код:

savesna "bw3test.sna" ,Start
savetap "bw3test.tap" ,Start

zebest бида бида!
снапшоты не сохраняют начальную фазу флеша!!!
мало того некторые эмуляторы дают рандомную фазу флеша!!!
вот уж эти эмуляторщики!
недодумались хранить начальную фазу флеша в снапшоте :v2_lol:
ну как так можно? :v2_dizzy_biggrin2:

при том всем известный эмулятор дает всегда одну фазу флеша при старте снапшота
ибо так и надо
в отличии от всяких там других :v2_dizzy_biggrin2:

zebest
08.11.2020, 01:08
флеш - это мигание, что ли?? Так оно аппаратное, из юлы, ни к чемуу не привязанное, вроде 32 такта в оригинале, в клонах - как Бог на душу, думаю.

NEO SPECTRUMAN
08.11.2020, 01:14
флеш - это мигание, что ли?? Так оно аппаратное, из юлы, ни к чемуу не привязанное, вроде 32 такта в оригинале
а вдруг оно используется
юзер синхронизировал флеш и сохранил снапшот
а снапшот не сохранил фазу флеша :v2_dizzy_turn:
и все пропало

если че выше сарказм на тему разных флагов при загрузках тапов и снапшотов... :)

https://zx-pk.ru/threads/32428-sinkhronizatsiya-s-flash.html

- - - Добавлено - - -

мало представляю зачем это надо
но теперь можно снова докучать эмуляторо писателям :)

- - - Добавлено - - -

включаем больную фантазию
например а вдруг кто то захочет запилить 32х24 флеш анимацию которая будет обновлятся каждые 64 фрейма
а потеря фазы приведет к повторению предыдущего кадра перед переходом к следующему

zebest
08.11.2020, 01:19
ну там же и сказали, что аппаратный флеш - фууу, бяка. Лучше использовать програмный и не париЦЦа :)

NEO SPECTRUMAN
08.11.2020, 01:30
ну там же и сказали, что аппаратный флеш - фууу, бяка. Лучше использовать програмный и не париЦЦа
умя в дельте как раз мигает в 2 раза быстрее :)

- - - Добавлено - - -


ну там же и сказали, что аппаратный флеш - фууу, бяка. Лучше использовать програмный и не париЦЦа
вообще не ясно зачем его впилили
это он так разгружает процессор от тяжелейшего мигания?

в комоде для имитации флеша даже свое прерывание выделили
только подумай какая у него важность
даже лично дядя синклер не сэкономил и разрешил его запилить :v2_lol:

Lethargeek
08.11.2020, 01:52
флэш это серьёзный бизнес, это не какие-то там игрушки!
Синклер обожал флэш и в QL попиксельный запилил

NEO SPECTRUMAN
08.11.2020, 02:46
флэш это серьёзный бизнес,
Символом нового видео флеша является.
https://jpegshare.net/images/eb/72/eb72bd53d8b8c410704205dff52812bf.gif

Lethargeek
08.11.2020, 03:05
толстую сигару впили нормальную :D

demetrius2003
09.11.2020, 09:56
Друзья! У кого есть ZXMAK нормально работающий? Что-то не везёт мне с ним. Старые версии крашились. .NET версии тоже не запускались, ни MDX, ни SDL, ни XNA. торая версия токма в исходниках. Компилировать пробовал, не идёт, видимо надо воссоздавать окружение, которое у автора. Жесть короче. Оно у меня в одном экземпляре работало, на XP машине древнючей. Всё остальное - мимо!

MEGAMONSTER
09.11.2020, 13:03
demetrius2003, есть 2.80 вроде. Под вин 98 работает.

Eltaron
09.11.2020, 13:48
вторая версия токма в исходниках.
Да не, там есть и собранные версии, в релизах.
https://github.com/zxmak/ZXMAK2/releases/download/v2.9.3.8/ZXMAK2-BIN-2938.zip

demetrius2003
09.11.2020, 14:28
О! Работает!!! Спасибо!

Bedazzle
10.11.2020, 12:11
мало представляю зачем это надо
но теперь можно снова докучать эмуляторо писателям :)

Например, по краю картинки флешевые ячейки, с которыми в такт выводится рисунок на бордере.

zebest
19.02.2022, 17:58
Без всякой интриги.
https://cdn.discordapp.com/attachments/689220116801650811/944605776230613073/unknown.png

Вряд ли да жи сами авторы эмуулей знают, какой именно "Zilog" у них в движке :)
пс - Анрил удивил :) Хотя возможно старая версия попалась. Тут это не важно :)

Bedazzle
19.02.2022, 18:46
Вряд ли да жи сами авторы эмуулей знают, какой именно "Zilog" у них в движке :)


:v2_dizzy_heart:

NiKa
20.02.2022, 15:10
zebest, киньте пожалуйста ссылку на данный тест.

Titus
20.02.2022, 15:45
Вряд ли да жи сами авторы эмуулей знают, какой именно "Zilog" у них в движке
пс - Анрил удивил Хотя возможно старая версия попалась. Тут это не важно

Это у тебя столько эмуляторов на компьютере???

Хорошо бы документацию, по каким признакам этот тест различает процессоры.

Dexus
20.02.2022, 16:12
Он не процессора различает, а платформы (процессор + обвязка wait).

zebest
20.02.2022, 17:38
Это у тебя столько эмуляторов на компьютере???
нее, их больше, но десяток другой труднее заставить загружать и работать)
RVM, DSP, zymosis, x128, ZXSpectrum4, RealSpectrum и др. сюда не попали, хотя при должном упорстве и могли бы :)


по каким признакам этот тест различает процессоры.
по флагам CCF\SCF


Он не процессора различает, а платформы (процессор + обвязка wait).
тут то как раз онли процессорА, с сигналом вайт я уже эксперементировал, и для СЕБЯ выводы сделал.

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

dj--alex
13.07.2022, 06:28
Мне интересно реальный PS3 джойстик с моей игрой получится ли ради прикола чисто запустить?

ну либо с моими модами на игры Rescue, Colony?

Большинство эмуляторов тупо не запускается на Linux Mint 19.3 в Wine
стабильно работает только древние вроде Кладовского EmuzWIN но там такого я не нашёл (может плохо искал)

ДА и давно уже с эмулятора 2006 года обновится на что то новенькое подумывал. ну сколько лет на нём можно сидеть. А то всю жизнь просижу.

Xela
13.07.2022, 11:40
Большинство эмуляторов тупо не запускается на Linux Mint 19.3 в Wine
попробуйте Xpeccy - там есть нативная версия под Linux