Вход

Просмотр полной версии : Вопрос по доступу к портам спека...



ILoveSpeccy
23.02.2009, 21:49
Отлаживаю TDROS в своём Aeonе...

Вопрос к знатокам... Возможен ли доступ к портам спека (#FE, #7FFD, порты AY и т.д.) при DOS=0 (включено ПЗУ TRDOSа) ???
Сейчас доступа нет, но я не уверен, что так правильно.

И второй вопрос...
Почемуто в игре "Renegade" всё както очень медленно... чуваки двигаются с половинной скоростью.
Этот же файл в эмуле даёт совсем другой результат. В других играх и демах проблем пока не замечал.
Может ли подобное быть следствием нехватки тактов процессора между прерываниями??? или проблема в другом?

з.Ы. всех с праздником!!!

SAM style
24.02.2009, 01:06
Доступа по кр.мере к FE из доса нет, т.к тырдос вылезает в 48й басик, чтобы опрашивать break.
А дальше зависит от дешифрации. В зелёном скорпе в разделялку портов включен A1. A1=0 - в досе никакой порт не выбирается, но включен селектор обычных портов. A1=1 - обычные вырублены, выбираются порты доса (по A7,A6,A5)

Иван
24.02.2009, 06:48
ILoveSpeccy, ИМХО, доступа к портам не должно быть. Иначе для чего существует сигнал OUTIORQ в BDI? Если активно ПЗУ TRDOS, то вся остальная периферия отдыхает... Может я чего и не понимаю, но аналогичный сигнал есть и в ZXBUS: IORQGE, только работает он аналогично PC-платформам. Гуру поправят, если я неправ.

Дмитрий
24.02.2009, 08:48
порты AY
Могу ошибаться, но просмотрев схему АУ, не нашел в ней сигнала DOS(/DOS), который блокировал бы ее порты при включенном ТР-ДОС... имхо, порты музсопра из ПЗУ ТР-ДОС доступны... На счет остальных - негде глянуть... может проверить путеводитель по портам БК?

Prusak
24.02.2009, 08:59
Теоретически при работе TR-DOS должны блокироваться только те порты, которые конфликтуют с портами BDI. Практически же всё зависит от схемотехники конкретного компьютера.

lisica
24.02.2009, 09:14
Любой порт выбирается по приходу IORQ и если этот сигнал заблокирован то никакой порт работать не будет, даже AY.

Добавлено через 24 минуты
У меня. Например, блокируется РТ, а на ней дешифруются все порты, а IORQ не блокируется.
Так, что, у меня будут работать те порты, что реализованы допайками (не на РТ).

spensor
24.02.2009, 10:51
Кажется Sonic акцентировал внимание на то, что #7FFD доступен из под TR-DOS. Да и в книге http://trd.speccy.cz/book/TRDOSUA.ZIP про это было сказано.
Смежная тема проходила на форуме: http://zx.pk.ru/showthread.php?t=8345

ILoveSpeccy
24.02.2009, 20:04
Спасибо огромное за помощь по портам...
А кто что думает о проблеме с Renegade (см. первый пост)???

Prusak
24.02.2009, 21:27
Я конечно не уверен, но симптомы похожи на некорректный сигнал INT.

Conan
25.02.2009, 13:47
В фирменном ZX Spectrum (48) предусмотрена возможность блокировки порта #FE (физически реализованного в ULA), с помощью сигнала IORQULA. Этот сигнал выведен на краевой (системный) разъем ZX Spectrum (PIN 13B). Используя IORQULA внешние устройства могут блокировать (отключать) встроенные порты компьютера.

В начале 80-х ZX Spectrum стал «обрастать» периферией, но порты внешних устройств, как правило, вписывались в схему упрощенной адресации и не требовали блокировки встроенного в ZX Spectrum порта #FE. Однако отсутствие стандарта адресации портов приводило к появлению устройств использующих одни и те же адреса портов ввода-вывода. Чтобы избежать конфликтов многие производители использовали особенность физического подключения внешних устройств к ZX Spectrum: последовательное подключение к краевому разъему. Например, ZX Interface 1 подключался непосредственно к ZX Spectrum, к ZX Interface 1 подключался ZX Interface 2, а к ZX Interface 2 подключался ZX Printer.

Аналогичное решение использовалось в Beta Disk Interface который подключенный ближе к компьютеру, мог отключать порты устройств подключенных далее. Для этого использовался сигнал IORQ, который деактивировался (для устройств подключенных далее) при переходе в ПЗУ с TR-DOS и подключении портов ВГ93. Во время клонирования отечественные разработчики повторили и эту особенность фирменной схемы.

Отключение порта #FE ZX Spectrum (через IORQULA) у фирменного контроллера Beta Disk Interface не использовалось.
Что касается портов AY и #7FFD, они не отключаются в фирменных ZX Spectrum 128 вообще и контроллерами Beta Disk Interface в частности.
Разумеется, наши разработчики могли применять собственные решения, но как это было реализовано в оригинале, я рассказал выше.

ILoveSpeccy
25.02.2009, 16:57
@Conan Огромное спасибо за помощь!!!

Продолжаю тему про Renegade...
Как проверить правильность сигнала /INT и какая его длительность считается оптимальной???
Почитал несколько тем по этому поводу, вроде как 9-10мкс. Так ли это?

molodcov_alex
25.02.2009, 17:29
Есть вот такая утилитка: http://trd.speccy.cz/system/TESI1_10.ZIP
Позволяет определить длину инта.
Или вот: http://trd.speccy.cz/system/TEST430.ZIP

lisica
25.02.2009, 19:24
Есть в некоторых прогах такая фишка. Проверяют сколько тактов между прерываниями. Ну и если комп без тормозов и тактов насчитывается больше чем нужно, то считается, что у проца 7мц и соответственно удваиваются задержки в проге.