Странная вещь - какую бы я модель памяти не ставил в 0.26, ауты в порт #FD всё равно работают! Ставил и профи, и атм 4.5, и скорп... Это что - для пущей совместимости с глюкодромами? ... =) :) ;) -)
Вид для печати
Странная вещь - какую бы я модель памяти не ставил в 0.26, ауты в порт #FD всё равно работают! Ставил и профи, и атм 4.5, и скорп... Это что - для пущей совместимости с глюкодромами? ... =) :) ;) -)
Жалуйся 2SMT вдруг он услышит твои мольбы :)Цитата:
Сообщение от lvd
разве плохо, что работает? :) :)
У меня был доработанный скорп с жесткой дешифрацией #1FFD (к нему можно было обратиться только по полному адресу), а по #FD великолепно щелкался #7FFD. Также у Dien'а (железячника, автора этой доработки) был Профи с аналогичной жесткой дешифрацией #DFFD. Так что это не глюк, а вполне нормальная вещь. Но в хелпе к эмулятору я бы такое упомянул.Цитата:
Сообщение от lvd
Плохо, когда на вшивость надо проверять всякие поделки глюкодромные. А то тогда уж и галку 'unstable data bus' убирай нафиг =)Цитата:
Сообщение от SMT
Цитата:
Сообщение от Spectre
- ну и?Код:ld a,#1f:out (#fd),a
Ну если это нормальная вещь, то тогда эмулятор эмулирует только пентагон + ещё сколько-то виртуальных (=несуществующих) конфигураций.Цитата:
Так что это не глюк, а вполне нормальная вещь. Но в хелпе к эмулятору я бы такое упомянул.
Отработает нормально (#1f->#7ffd). Суть доработки: отлавливаем на шине появление команд с кодами #d3 и #db и на время их выполнения отключаем #1ffd.Цитата:
Сообщение от lvd
Причем здесь пентагон? OUT (#FD),A должно работать на всех клонах имеющих не менее 128Кб памяти. Если не работает, то это проблема конкретного клона и должна лечится всякими тумблерами и доработками.Цитата:
Сообщение от lvd
Угу, только вот я в #1ffd хотел #1f записать.Цитата:
Сообщение от Spectre
- Что сделает билгей, если у него перегорит лампочка?Цитата:
Причем здесь пентагон? OUT (#FD),A должно работать
- Ничего, он объявит темноту стандартом.
такая фраза в статье All spectrums I know (о русских клонах), про порты Scorpion256:
these two ports ( 7ffd and 1ffd ) cannot be accessed thru basic. basic operator OUT will hang or reset the machine. only one exception - bits d2 and d5 of 1ffd. rest of digits of these ports must be accessed using machine code.
Интересно, что это значит и почему это 7ffd не может быть accessed из пзу...
Пиши как положено:Цитата:
Сообщение от lvd
LD BC,#1FFD
LD A,#1F
OUT (C),A
В мануале на скорпион, если я правильно помню настоятельно рекомендовалось только так и обращаться к #1FFD.
Своим примером ты заодно занесешь #1F в #7FFD.
Ну вот - а в мануалах на фирменные спеки только порт #7ffd упоминается (хотя вру, есть и #1ffd).Цитата:
Сообщение от Spectre
С чего бы вдруг? ША=#1ffd, ШД=#1f, ну и?Цитата:
Своим примером ты заодно занесешь #1F в #7FFD.
Точно не помню, но вроде ауты нормально работали. И ещё есть прикол - в теневой монитор, пока выполняется код из рома, не попадёшь (afair).Цитата:
Сообщение от Vladimir Kladov
out (#fd),#1f будет работать как вывод в 1ffd, в unreal не анализируется опкод. если хотите точности дешифрации портов, используйте RealSpectrum. но тогда имеется следующий недостаток: процедуры дешифрации портов свои для каждой модели. то есть если бы был порт #EFF7, то он бы работал только в пентагоне, smuc ide работает только в скорпионе. мне больше нравится конструктор, чтобы можно было подключать устройства в любом составе. можно включить nemo ide в скорпион, или, наоборот, smuc ide в пентагон. но тогда есть погрешности в дешифрации портов, так как используеся один код дешифрации для всех моделей
По поводу LD A,#1F:OUT (#FD),A - это очень неприятный момент.
У меня сначала был обычный Скорпион на котором демки и игры юзающие OUT (#FD),A не работали. Приходилось отключать #1FFD перед их запуском, что было неудобно. Потом мне сделали жесткую
дешифрацию #1FFD и жить стало лучше. Но те программы что использовали LD A,#1F:OUT (#FD),A, а это в первую очередь STS, все равно не работали. Пришлось сделать доработку о которой
я писал выше и тогда все стало хорошо.
Лично мое IMHO: в порт #1FFD (#FDFD, #DFFD) должны обращаться только по полному адресу: LD BC,#1FFD: OUT (C),A. Все остальные обращения должны попадать только в #7FFD. Отклонения от этого должны исправляться, в реальных спектрумах при помощи паяльника, в эмуляторах авторами.
Со всем с тобой согласен! Поддерживаю! ;) Должен быть какй-то стандарт! :)Цитата:
Сообщение от Spectre
И стандарт этот называется #7ffd. Никак не #fd, а именно #7ffd. Всё остальное - из серии 'билгей и лампочка'.Цитата:
Сообщение от ASMAN
SMT, а как вообще получается, что в унреале ld a,#17 : out (#fd),a выводит в #7ffd ? У тебя именно по 2 битам дешифруется или как? А если по 2 битам, то почему тогда ld a,#1f : out (#fd),a в #1ffd выведет?...Цитата:
Сообщение от SMT
PS: Я в общем-то попросил именно чтобы #7ffd только по #7ffd дешифровался... Но если это сложно галкой в унреале сделать, то так и быть, пусть его... ;)
разве в какой-либо конфигурации спектрума анализируется опкод при дешифрации портов? где про это прочитать можно? Я про 1FFD полагал, что он анализируется по полному адресу, а если это не 1FFD, то уже анализируется BFFD/FFFD, и параллельно 7FFD (т.е. бывают демки, которые написаны исходя из того, что байт может быть записан одновременно в AY и порт 128-го). Но про 1FFD я считал, что он при дешифрации имеет приоритет.
в нескольких журналах (не помню, в каких) видел схемы доработок, которые запоминают один или несколько бит опкода с ШД при M1=0,RD=0,MREQ=0, чтобы отличить D3/DB от опкодов типа ED+41. расширенные порты (1FFD, DFFD) активизируются только во втором случае. в эмуляторах такая опция есть afaik только у Z80S. в итоге любой вывод в #FD работает как в #7FFD (даже #1F) и достигается очень хорошая совместимость с пентагоном
не может быть, они жестко разделены сигналом A15. зато есть демки, использующие порт #FC (#FE+#FD для переключения экрана и бордера)Цитата:
Сообщение от Vladimir Kladov
точно, и чего это я перепутался так :)