Вход

Просмотр полной версии : Добавление новых портов в Орион



zx-kit
31.10.2019, 19:44
Идея добавить страничную организацию портов:
Нужно один адрес для записи номера страницы. После сброса там должен быть ноль. Сигнал выбора портов (у Z80 это IORQ) отрезать от старых портов и подать на дешифратор ИД7. На старые порты подать новый сигнал с выхода 0 дешифратора. Для новых портов брать сигнал с выхода 1 дешифратора. На дешифратор подать номер страницы портов. На будущее новые адреса экономить и делать полную дешифрацию младшего адреса

Denn
31.10.2019, 23:42
Какова конечная цель? Или, по простому, для чего это нужно? Каких новых портов не хватает в Орионе?

zx-kit
01.11.2019, 03:13
В планах подключение видеоконвертера VGA SPUTNIK 1 с символьным режимом для Ориона (https://zx-pk.ru/threads/31023-simvolnyj-rezhim-dlya-oriona.html) и загружаемыми шрифтами. Для него надо 17 адресов для передачи параметров:
Строка
Столбец
Символ
Текущий цвет фона
Текущий цвет символа
И т.д.

SYR-ALEX
01.11.2019, 10:31
Идея в общем интересная . Нечто подобное есть на ZX - TRDOS . Там возврат в исходный конфиг происходит автоматом . Если Вам удастся реализовать нечто подобное и сохранить обратную совместимость ( старый софт не знающий о страницах портов не будет попадать в неизвестные ему порты ) то наверное не кто не будет против .

Denn
01.11.2019, 11:47
Для него надо 17 адресов для передачи параметров:
Строка
Столбец
Символ
Текущий цвет фона
Текущий цвет символа
И т.д.

Если мы говорим про ОРИОН-128, то в нём есть стандартный пул адресов портов для посадки различных ВУ: F700..F7FFh. "Дырок" там, в общем-то, хватает. Под "видеокарту" можно арендовать целую линейку (16 байт), например F77x.


П.С. относительно текущей занятости я руководствуюсь этими данными:

F700..F720 - КНГМД
F730..F733 - ВИ53 (из ж.Радио 1995г, №9, стр.38)
F740..F741 - ВВ51 (из ж.Радио 1995г, №9, стр.38)
F760..F761 - 512ВИ1

DS-Card:
F780..F78F - резерв
F790..F79F - КНЖМД
F7A0..F7AF - AY-музыка (YM2149F)
F7B0..F7BF - часы на ВИ1 (v2)
F7С0..F7СF - часы на DS1307
F7D0..F7DF - SDHC
F7E0..F7EF - Порт СОМ2 (и COM3) 16С550
F7F0...F7FF - RAM-диск 1МБ

zx-kit
01.11.2019, 12:49
Идея в общем интересная . Нечто подобное есть на ZX - TRDOS . Там возврат в исходный конфиг происходит автоматом . Если Вам удастся реализовать нечто подобное и сохранить обратную совместимость ( старый софт не знающий о страницах портов не будет попадать в неизвестные ему порты ) то наверное не кто не будет против .

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

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


Если мы говорим про ОРИОН-128, то в нём есть стандартный пул адресов портов для посадки различных ВУ: F700..F7FFh. "Дырок" там, в общем-то, хватает. Под "видеокарту" можно арендовать целую линейку (16 байт), например F77x.

Хорошо. Тогда ещё один адрес для включения символьного режима. F76F

Denn
01.11.2019, 13:11
Хорошо. Тогда ещё один адрес для включения символьного режима. F76F

Потенциально опасный вариант. В народе достаточно популярно (ибо была серия плат) подключение часиков 512ВИ1 по адресам F760/F761, и в виду традиционной упрощёнки дешифрации эти часики висят на всей линейке: F762/F763, F764/F765...F76E/F76F.
Вообще, конечно, бардак с распортовкой на Орионе, но уж - что имеем.

Без регистра 17-го порта вообще никак не обойтись? На крайняк лучше закинуть его в другую линейку, например в F75x.

zx-kit
01.11.2019, 13:58
Потенциально опасный вариант. В народе достаточно популярно (ибо была серия плат) подключение часиков 512ВИ1 по адресам F760/F761, и в виду традиционной упрощёнки дешифрации эти часики висят на всей линейке: F762/F763, F764/F765...F76E/F76F.
Вообще, конечно, бардак с распортовкой на Орионе, но уж - что имеем.

Без регистра 17-го порта вообще никак не обойтись? На крайняк лучше закинуть его в другую линейку, например в F75x.
Если оставить 15 + один для включения символьного режима. Но лучше добавить ещё одну страницу "памяти" F7XX для дополнительных портов.

Error404
01.11.2019, 17:19
Потенциально опасный вариант. В народе достаточно популярно (ибо была серия плат) подключение часиков 512ВИ1 по адресам F760/F761, и в виду традиционной упрощёнки дешифрации эти часики висят на всей линейке: F762/F763, F764/F765...F76E/F76F.
Вообще, конечно, бардак с распортовкой на Орионе, но уж - что имеем.


Это так выглядит от схемной бедности текущих схемных решений, где так сделано чтобы не ставить сложный дешифратор (сэкономить один корпус). Код часов использует же только F760/F761 чтобы оставить остальные адреса под другие устройства. Это дает то, что если у человека только одни часы, и никакой другой код он не запускает кроме как для управления часами (как и было в 90х), то он ставит простейший дешифратор, а если у кого-то еще завелись Sdcard (которая программно F762/F763 - только на этих 2х адресах), на F764/F765 схема RS-232 на Atmega, на ...F76E/F76F что-то еще аналогично, то никак не трогая софт этот богатый парень просто ставит в дешифратор области F760..F76F одну дополнительную ИД4. И у обоих парней всё работает, и в области портов экономия места. :)

С другой стороны, весьма расточительно нарезать под 2 байтовые устройства куски адресного пространства по 16 байт как наблюдаю выше в области F790..F7АF (а под резерв оставлено аж 16 байт) опять же для того чтобы сэкономить одну ИД4 в дешифраторе.



Без регистра 17-го порта вообще никак не обойтись? На крайняк лучше закинуть его в другую линейку, например в F75x.

Да, по возможности если есть способ уместиться в 16 байт (даже за счет уменьшения регистров устройства с 16 до 15), надо стараться туда уместиться.

Вот например в сетевом адаптере на RTL8019, живущем в адресах F780..F790 не было никакой возможности влезть в 16 байт (там одних служебных регистров строго 16 штук) и поэтому используется 17й адрес F790 для регистра данных. И то, сигнал сброса обычно делаемый через регистр (т.е. дополнительный порт) я аппаратно на плате контроллера обыграл так, чтобы никакой порт не занимать и эмулирую доп. команду уже существующего регистра из 16 управления, а регистр данных F790 (в оригинале это один байт) предусмотрел возможность растягивания на любую область от единичного F790 до диапазона - например F790..F79F (чтобы не пропадал этот фрагмент адресного пространства раз уж влез в него одним байтом) или вообще любого F790..F7xF - в последних случаях в однобайтовый регистр данных можно писать/читать командой LDIR, что дает кратное повышение скорости чтения из сетевой карточки. Вот это я называю рациональным планированием. :)

Denn
02.11.2019, 00:03
К сожалению, я тоже подхватил этот тренд - "нарезать по 16", опять руководствуясь не сильно навороченной дешифрацией и принципом достаточности.

Что касается "пересечений" и "наложений" адресов портов, то уже напарывались тут с новодельными платами. Если использовать только прицельный софт, тогда проблем может и не будет, а как только сталкиваемся с автодетектом полного спектра возможного оборудования, то начинаются "чудеса".

Error404
02.11.2019, 17:32
Да, автодетект или инсталлятор дистрибутива, где можно разово при установке указать адреса всех устройств, а он прочешет свои утилиты и их поправит на заданные порты, или настроит соответствующие конфиг-файлы тех утилит. Подобное практиковалось например в CP/M где несмотря на стандартизацию и абстрагирование от оборудования, оставалась например проблема разных управляющих ESC-кодов видеодрайвера, и многие "enterprise" программы имели инсталлятор, который позволял выбрать тип драйвера терминала и сами при установке патчили свой дистрибутив под выбранный драйвер (обычно прямо по коду исполняемого файла)

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

Чуть сложнее аппаратно, но можно и на интерфейсной плате поставить ИД3 и протравить 16 отверстий под перемычку дабы выбрать любой порт. :)

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

Еще можно стандартизировать (почему нет? орионщики все тут - соберемся и решим) простейшую доработку Ориона - доступ к порту F600 только по адресам F600..F61F (для простоты: всего одна ИД4/ИД7 на основную плату Ориона) вместо нынешних F600..F6FF. И получим в свое пользование еще интервал F620..F6FF (кстати с готовыми чип-селектами с шагом в 32 байта). 256 байт под одну ВВ55 это уж через чур жирно.

Denn
02.11.2019, 18:52
Еще можно стандартизировать (почему нет? орионщики все тут - соберемся и решим) простейшую доработку Ориона - доступ к порту F600 только по адресам F600..F61F (для простоты: всего одна ИД4/ИД7 на основную плату Ориона) вместо нынешних F600..F6FF. И получим в свое пользование еще интервал F620..F6FF (кстати с готовыми чип-селектами с шагом в 32 байта).

Это хорошее дело.

Вообще изначально могли бы авторы ПРК разместить все порты в пуле F7xx, а в области F400..F6FF было бы драгоценное непереключаемое ОЗУ. Эх...

zx-kit
02.11.2019, 19:34
Еще можно стандартизировать (почему нет? орионщики все тут - соберемся и решим) простейшую доработку Ориона - доступ к порту F600 только по адресам F600..F61F (для простоты: всего одна ИД4/ИД7 на основную плату Ориона) вместо нынешних F600..F6FF. И получим в свое пользование еще интервал F620..F6FF (кстати с готовыми чип-селектами с шагом в 32 байта). 256 байт под одну ВВ55 это уж через чур жирно.
А можно половину подключить через ИД7. Будет 8 устройств по 16 адресов. А половину оставить как резерв для второй ИД7.

denis74
03.11.2019, 08:18
А какой порт порекомендуете использовать под сопроцессор?

Denn
03.11.2019, 13:26
Сопроцессор?! Это что-то новенькое. Что за зверь?

denis74
03.11.2019, 15:39
https://www.applefritter.com/comment/86258#comment-86258
схему подключения можно упростить ,вопрос на какие адреса подключать?

Denn
03.11.2019, 16:22
https://www.applefritter.com/comment/86258#comment-86258
схему подключения можно упростить ,вопрос на какие адреса подключать?

К сожалению, глубоко вникать сейчас нет времени. Я правильно понимаю, что требуется два байта под регистры?

Как вариант: F780 и F781

П.С. кто под него ПО напишет?...

denis74
03.11.2019, 16:31
Ок ,так и подключу.
Проц долго вершины считает ,думаю сопроцессором обсчитывать а процессор тем временем линии чертит и полигоны заполняет.

OrionExt
04.11.2019, 02:45
denis74, как реальщик. Господа с форума яблака, как бы мягко говоря – не шпилят. Этот мат процессор видимо уделывал Интел 4004. И их процессор о 1500 транзисторов (яблоко).

Самое интересное. Как вы собрались параллельное вычисление делать? Этот довесок на порте пассивен. Z80 сделает все быстрей без учета не тратиться на время, когда там этот мат процессор окучится. Ну, может этот, батан косинусы осилит быстрее, дык это не проблема - для Z80(8080) уже решено (таблички) придуманы - быстро и точно.

Xrust
04.11.2019, 10:34
OrionExt, Z80 это старьё из прошлого века. Все вменяемые люди давно перешли на райзен, а графон обсчитывают видеокарты. :)

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

Насчёт распараллеливания, я так понял, после окончания вычислений сопроцессор выдаёт сигнал, который можно завести на прерывание процессора.

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

Что касается софта, то есть, например, диалекты бейсика с поддержкой am9511.

Error404
04.11.2019, 11:58
Это сопроцессор жутко медленный, когда-то давно сравнивал (для себя), чего-то он там лишь в полтора раза быстрее считал чем красивый алгоритм для Z80. Т.е. он может иметь смысл только если его можно запускать в параллель. При этом (подзабыл, поправьте если что), оно вроде не умеет 32 бит Int (а только большие вещественные которые как-то для таких вычислений можно подтянуть) что делает его бессмысленным для большинства современных практических задач.

denis74
04.11.2019, 13:55
Несколько вариантов было ,AMD AM9511A ,am9512 ,MM57109N может чего ещё ,заказал 9511 ,приедет попробую прилепить.С софтом всё не просто.

Xrust
04.11.2019, 21:57
denis74, вот краткое описание (https://www.hartetechnologies.com/manuals/AMD/AMD%209511%20FPU.pdf) AM9511. А вот подробный мануал (http://ep.homeserver.hu/PDF/AM9511A-9512.pdf) с примерами подключения и программирования. Сопроцессор умеет как в плавающую 32 бит арифметику с 24 бит мантиссой, так и в фиксированную точку. Так же есть выходы, которые можно использовать для организации прерываний. Или же можно читать статусный регистр. Но это все с первого взгляда на описание, надо все внимательно читать. К сожалению не нашел пока текстового описания, только сканы.

denis74
04.11.2019, 22:02
Спасибо ,как раз с этих мануалов и изучаю.Думаю этого достаточно.

Xrust
04.11.2019, 22:11
denis74, у меня этот сопроцессор давно уже лежит, ждет своего часа. Теперь дело веселее пойдет :)

denis74
04.11.2019, 22:46
Возможно.По 8231A исчо мануал до кучи есть.
По грубым прикидкам 400 вершин в сек сможет обсчитать (версия на 4мгц), у проца на вывод точки уйдёт 10 - 80 тактов (рисуем шаблонами).5-10 трёхмерных объектов с проволочной графики выводить со скоростью 10 - 20 кадров в сек можно попробовать.
В общем повторю ссыль
https://www.applefritter.com/comment/86258#comment-86258
Здесь полная инфа на сопр.