PDA

Просмотр полной версии : Орион-128: Контроллер IDE



Ewgeny7
17.11.2008, 20:28
Народ! Где можно посмотреть схему "контроллера" IDE для Ориона?
На "orion-z" картинка накрылась медным тазом... :(

Mick
17.11.2008, 21:54
А исходные тексты к рулению HDD или чего там еще есть? А то может и для ПК8000 портировать получится.

b2m
17.11.2008, 22:31
картинку gif пока ищу
Это не оно http://www.pjrc.com/tech/8051/ide/ ?
Очень похоже, на то, что было, но порты A и С надо обменять местами.

Error404
18.11.2008, 14:23
Это не оно http://www.pjrc.com/tech/8051/ide/ ?
Очень похоже, на то, что было, но порты A и С надо обменять местами.

Ага, это и есть исходная картинка. Меняем порты A и С (это пришлось сделать, чтобы дефолтные ПЗУ-шные загрузчики ORDOS не слали в IDE мусор если IDE повешен на порт F500 вместо ROM-DISK) и получаем то, что я постом ранее выложил в виде ASCII картинки:
http://orion-z.hoter.ru/images/HDD_scheme.gif

Добавлено через 11 минут


А исходные тексты к рулению HDD или чего там еще есть? А то может и для ПК8000 портировать получится.

Все что я напрограммировал (DOS c IDE, драйвер для "сырого" доступа к HDD, порт Fat16/32) есть как в исполняемом варианте, так и в исходниках на моей страничке (оно в основном в образах дисков).

Tim0xA
18.11.2008, 17:28
Только на ВМ80 мои программулины не заработают. Исторически предпочитаю Z80. В принципе не так сложно переделать программы на ВМ80, если кто-то займется.
Для этой задачи Рекомпилятор "Z80->ВМ80А" (http://zx.pk.ru/showthread.php?t=8712) будет как раз кстати. Весь процесс автоматизирован.

Добавлено через 11 минут

Ага, это и есть исходная картинка.
К этой схеме можно подключить флешку CF? Она будет работать в качестве HDD или тут есть какие-нибудь "подводные камни"?

Error404
18.11.2008, 21:04
К этой схеме можно подключить флешку CF? Она будет работать в качестве HDD или тут есть какие-нибудь "подводные камни"?

Работает точно так же, как и HDD. Я в-основном на CF и отлаживался (с ним проще с питанием), подключая при помощи адаптера CF-IDE (купил готовый за 300р, но есть и схемы для самодельщиков - там надо 2 разъема спаять: 40 ног IDE к 50-ногому CF, схема есть у меня на странице).
Кроме того, существуют еще и вот такие девайсы для подключения SD/MMC:
http://www.nedopc.org/forum/viewtopic.php?t=8973
Т.е. IDE-интерфейс штука очень полезная и что немаловажно для наших раритетов - очень простая в подключении и программировании.

Error404
18.06.2009, 14:29
Привет, скажи а какая у тебя поддержка под винт есть для Ориона, разбиение, форматирование - софт.


На Орионе я решил делать так: винт разбивается на стандартные MBR-партиции - как в винде. Поддерживается 4 стандартных master-партиции. И разбитый так винт можно подключать как к PC с виндой (винда работает со своей FAT-партицией, плюс утилитами можно сдампить в образ и обратно и CP/M-партицию), так и к Ориону, который живет (грузится) в своей CP/M партиции и может монтировать другие CP/M партиции этого или второго винта.
Под CP/M для Ориона для этого я написал утилиту fdisk.com, которая в этом стандарте (MBR-партиции) создает/удаляет партиции и файловые системы CP/M.
Также я портировал библиотеку работы с FAT(12/16/32), написал для нее оболочку (fat.com), и на Орионе из-под CP/M можно в обе стороны пофайлово обмениваться данными с FAT-партициями винды. В отличие от fdisk.com, fat.com понимает extended партиции, т.к. WinXP для FAT-партиций более 32G по дефолту лепит extended-партицию.
И fat.com, и fdisk.com написаны абстрактно на языке С - они не лезут напрямую ни в экран (работа идет стандартным VT-52), ни к контроллеру IDE - низкоуровневая запись/чтение 512B вынесены в отдельный драйвер (в моем случае - это IDEBDOS.COM, написанный на asm)
Исходники во вложении этого сообщения. Я использовал компилятор HiTech C v3.09 для CP/M и макроассемблер Microsoft M80/L80.

Error404
10.08.2009, 19:42
Привет!

[немного перефразировал]

"... просьба поменять в проекте с хардом ориона порт с f500 на f600"



Варианты загрузки с IDE на i8255 (580вв55) на Орионе:

- при помощи ПЗУ F800 (один из: M35ZMSH.BIN, M35ZRKH.BIN, M36ZMSH.BIN, M36ZRKH.BIN - см. ROM_IDE.ZIP во вложении). ПЗУ при включении питания вместо ORDOS сразу грузит MBR-сектор с master-IDE в ОЗУ по адресу 1:0000 (т.е. с начала второй физической страницы памяти) и передает туда управление. M35* работают с IDE с портoм 0F500h, M36* - с портoм 0F600h. Суффикс *RK* обозначает прошивку для клавиатуры RK-86, *MS* - для клавиатуры МС7007 по лениградской схеме.
- Вариант загрузки из ORDOS. ПЗУ F800 при этом может быть любым. ПЗУ F800 грузит ORDOS и передает ей управление. Под ORDOS используйте утилиту HddF600$.ord (ее можно прошить в ROM-DISK - см. IDEF600.ZIP во вложении), которая использует загрузчик, полностью аналогичный Мониторам, но корректирующий в загружаемом с IDE-F600 коде MBR-загрузчика и BOOT-сектора CPM все вызовы адреса 0F834h (это подпрограмма чтения с IDE 512-байтного сектора в Мониторах М3*H.BIN) на вызов своей подпрограммы, которая читает с HDD, но не с порта F500, а с F600.

Дальнейшая загрузка происходит так, как написан MBR (в настоящее время он позволяет грузиться по выбору с любого из 4-х primary разделов master-HDD, где есть загрузочный образ CPM. Выводится меню - список меток_дисков [offset +20h] соотвествующих разделов). MBR (а далее и BOOT-сектор раздела) используют п/п 0F834h (или п\п предоставляемую HddF600$.ord), которая в числе прочих параметров возвращает и базовый адрес ППА IDE. Далее этот адрес передается в CPM как базовый адрес порта IDE (F500/F600/...) и ядро CPM само себя соответствующе корректирует. Т.е. не важно какой адрес порта IDE будет передан из MBR\BOOT (он может даже не быть F500/F600, а быть, к примеру, F567).

В качестве образа диска для загрузки с IDE рекомендую диск с игрушками (на нем более-менее свежая [читай работоспособная] версия ОС с поддержкой IDE, в архиве есть readme), да и лучшего теста для Z80CardII чем игры - не придумать :
http://orion-z.hoter.ru/335/5480_games2.zip

В силу вышеописанного алгоритма работы, корректировать ОС для работы на порту, отличном от F500 не надо, все корректировки адреса ППА IDE надо делать только в Мониторе (ПЗУ F800) или HddF600$.ord. Некоторые CP/M утилиты, к примеру fat.com, fdisk.com, которым необходимо лезть к IDE "напрямую", т.е. мимо CPM, работают с IDE через драйвер IDEBDOS.COM. Этому драйверу при старте можно в командной строке передать параметры, в т.ч. и номер порта IDE. Например:
IDEBDOS port:f600

Залить образ HDD на реальный IDE-диск под Windows можно утилитой HddUtil.exe:
http://orion-z.hoter.ru/file/355/4538_HddUtil.zip

Утилита консольная (т.е. запускать из CMD - оно напишет подсказку). Я ее тестировал на чтении/заливке образов с/на как реальных винтов (подключенных к IDE материнской платы), так и для CompactFlash в обычном китайском USB-адаптере (CardReader). Например, чтобы записать образ GAMES.OHI на hdd, установленный в системе вторым, надо выполнить примерно такое:
hddutil c:\temp\games.ohi 1: /c=131072
На вопрос ответить "Yes". После завершения счетчика записанных секторов hddutil сообщит "Complete", что означает, что все записалось.
После записи образа, команда
hddutil /list
для привода 1: должна показывать наличие двух СРМ партиций

Error404
11.10.2009, 10:48
А исходные тексты к рулению HDD или чего там еще есть? А то может и для ПК8000 портировать получится.

Выкладываю исходники CPM с поддержкой HDD. Основная часть (все что кроме HDD) делалась давно (примерно 1995г), структурно я многое с позиции сегодняшнего опыта сделал бы по-другому. Но переделывать это сейчас - не вижу смысла: нет пользователей, а оно и так нормально работает. Покрайней мере это единственная версия CPM на Орионе, где кроме всего прочего централизованно поддерживается расширенное ОЗУ и прерывания (ну и HDD c MBR схемой партиций).
-
В-общем, в помощь желающем поковыряться в чужом коде (чтобы не заморачиваться с дизассемблером). Указания на ошибки и советы по оптимизации кода (уменьшении размера кода или по быстродействию) приветствуются.
И это, "не стреляйте в пианиста - он играет как умеет". :)

pvlad
11.10.2009, 20:13
Выкладываю исходники CPM с поддержкой HDD
Я так и не понял: есть ли вариант СР/М, которая базируется на ММС/SD?

Error404
11.10.2009, 21:19
Я так и не понял: есть ли вариант СР/М, которая базируется на ММС/SD?

Есть. Только не для Ориона, а для N8VEM:
http://n8vem-sbc.pbworks.com/Juha-SD-Interface

Я там копался, исходники всех нужных процедур есть.
Я решил пока это не переносить в свой текущий проект, т.к. программный SPI будет в несколько раз медленне, чем параллельный программный же IDE и CompactFlash (который и так то не шибко быстр получается - чуть быстрее дисковода). Правда, это на такте 3,5МГц. С ростом тактовой частоты будет пропорционально расти и скорость программного SPI или IDE, а скорость дисковода останется прежней. :)

pvlad
12.10.2009, 00:28
Я решил пока это не переносить в свой текущий проект, т.к. программный SPI будет в несколько раз медленне, чем параллельный...

Мне представляется, что вариант с SD/MMC надо делать уже сейчас. Думаю ewgeny7 закончив решать основные вопросы, сделает в контроллере максимальную тактовую частоту процессора и "стандартную" для совместимости с имеющимся программным наследием Ориона. Интерфейс SPI не следует делать через ВВ55 - это будет медленнее. Надо делать однобитные порты. Я об этом уже говорил.
И еще. Так и не смог скачать Ваш эмулятор. Может Вы его прицепите в ответном посте?

AlecV
12.10.2009, 00:37
Коллеги, вариант IDE на 8255 получается довольно медленный, т.к. сигналы WR/RD на шине IDE генерятся программно. Где-то я видел вариант, когда один из портов 8255 работает в режиме 1 и тогда сигналы на "дочерней" шине (т.е. IDE) генерятся автоматически при записи/чтении со стороны процессора. Это экономит несколько десятков тактов в цикле считывания блока и следовательно сильно быстрее. Ссылку увы потерял.

P.S. Нагуглил что-то похожее:

http://8bit.yarek.pl/interface/yamod.ide8255/ide8255.txt

pvlad
12.10.2009, 09:44
Коллеги, вариант IDE на 8255 получается довольно медленный, т.к. сигналы WR/RD на шине IDE генерятся программно. Где-то я видел вариант, когда один из портов 8255 работает в режиме 1 и тогда сигналы на "дочерней" шине (т.е. IDE) генерятся автоматически при записи/чтении со стороны процессора. Это экономит несколько десятков тактов в цикле считывания блока и следовательно сильно быстрее. Ссылку увы потерял.

P.S. Нагуглил что-то похожее:

http://8bit.yarek.pl/interface/yamod.ide8255/ide8255.txt

Вполне возможно. Надо разобраться. Но можно порты IDE положить на память, без ВВ55. Можно поставить регистры с защелками для данных, и обращаться к IDE системными WR/RD. Может быть хватит и одного регистра для защелкивания, к примеру, старшего байта, а младший напрямую. Но без WAIT не обойтись.
Первые IDE имели 8/16-битный режим данных - было проще.

Error404
12.10.2009, 09:48
Коллеги, вариант IDE на 8255 получается довольно медленный, т.к. сигналы WR/RD на шине IDE генерятся программно. Где-то я видел вариант, когда один из портов 8255 работает в режиме 1 и тогда сигналы на "дочерней" шине (т.е. IDE) генерятся автоматически при записи/чтении со стороны процессора. Это экономит несколько десятков тактов в цикле считывания блока и следовательно сильно быстрее. Ссылку увы потерял.

P.S. Нагуглил что-то похожее:

http://8bit.yarek.pl/interface/yamod.ide8255/ide8255.txt

Я читал этот документ еще до внедрения, то так и не понял, "за чей счет банкет" когда один из портов 8255 "работает в режиме 1" - чем генерируются управляющие сигналы (строб данных для IDE), если в цикле только прочитывается 512 байт? А ведь надо еще 256 раз выдать строб, чтобы IDE поняло прочитали ли мы данные и можно ли выдать из буфера на шину следующее 16-разрядное слово..
Кроме того, у автора этой заметки написано, что при подключении IDE к ВВ55 используется только кабель, а как показывает практика, тут не обойтись без инверторов, т.к. при получении /RESET ВВ55 обнуляет все порты, что приводит в загадочность IDE (у него инвертированные сигналы управления, и ноль - это активный уровень). Такое ощущение, что в железе это никогда не работало. Есть ли где-то инфа про это?

pvlad
12.10.2009, 10:18
Уважаемый Error404!
Так как все-таки без лишнего гимора получить Ваш эмулятор? Может можно в личку?

AlecV
12.10.2009, 10:42
Error404, скорее всего в документе ошибка и это не руководство к действию, а просто "мысли на тему". В режиме 1 ВВ55 хорошо согласуется с интерфейсами типа Centronics, которые требуют handshake типа строб/готовность.

Скорее всего имелся в виду режим 2, который и служит для согласования двух шин. Но увы 8-битных Т.е. для 16 бит старшую половину IDE надо сделать двунаправленной защелкой c 3-м состоянием, а при записи-чтении в младший байт ВВ55 автоматически сгенерит сигналы чтения-записи на стороне IDE.

Таким образом, для записи в IDE надо записать сначала старший байт, потом младший (с автоматикой), а для чтения - наоборот: прочитать младший (с автоматикой) а потом старший.

Пошел думать дальше.

Error404
12.10.2009, 11:23
Уважаемый Error404!
Так как все-таки без лишнего гимора получить Ваш эмулятор? Может можно в личку?

Сорри, забыл. :)
В сообщениях в личке, похоже, нельзя делать вложения (или я не разобрался как это сделать). Выложил тут:
http://ifolder.ru/14453727
Исходники нужны?

---------- Post added at 11:23 ---------- Previous post was at 11:08 ----------



Таким образом, для записи в IDE надо записать сначала старший байт, потом младший (с автоматикой), а для чтения - наоборот: прочитать младший (с автоматикой) а потом старший.

Пошел думать дальше.

Да, я тоже так и понял идею. Но ломает концепцию "только ВВ55 без прочих наворотов" 16-битность интерфейса. Многие самодельные разработки применяли "8-битный IDE" (когда из каждого 512-байтного сектора читается только 256-байтная половинка) - такие схемы действительно получаются простыми и быстрыми, но теряется возможность читать содержимое, записанное, к примеру в FAT-партиции (т.к. надо читать весь сектор, а не половинку).

b2m
12.10.2009, 11:34
Кроме того, у автора этой заметки написано, что при подключении IDE к ВВ55 используется только кабель, а как показывает практика, тут не обойтись без инверторов, т.к. при получении /RESET ВВ55 обнуляет все порты
При получении /RESET ВВ55 переключает порты на ввод, а там уже от схемы зависит, еденички будут, или нули. Если сигналы "подтянуты" к еденичке, то будут еденички.

Black_Cat
12.10.2009, 11:37
При получении /RESET ВВ55 переключает порты на ввод, а там уже от схемы зависит, еденички будут, или нули. Если сигналы "подтянуты" к еденичке, то будут еденички.ввод эквивалентен Z-состоянию, а при стабильной шине это равнозначно лог. "1". Так что там должно быть всё в порядке с уровнями

Error404
12.10.2009, 12:21
ввод эквивалентен Z-состоянию, а при стабильной шине это равнозначно лог. "1". Так что там должно быть всё в порядке с уровнями

Все это очень хорошо - потеоретизировать, но без инверторов не работает.
Возможно, помогли бы резисторы к +5, не проверял.

b2m
12.10.2009, 12:43
Возможно, помогли бы резисторы к +5, не проверял.
Может проверишь? :)

AlecV
12.10.2009, 12:50
Многие самодельные разработки применяли "8-битный IDE" (когда из каждого 512-байтного сектора читается только 256-байтная половинка) Я вот тоже подумал, что младшую половинку IDE можно просто сажать на шину машины, безо всяких ВВ55, максимум через буфер 245. По протоколу RD/WR они совместимы. А для старшего байта можно сделать "теневой регистр" на чем-нибудь типа двух встречно-параллельных 273/573, который со стороны машины видится по отдельному адресу, но автоматически заполняется при чтении/записи младшего байта IDE.

b2m
12.10.2009, 13:27
AlecV, подобная схема подключения IDE использовалась в Вектор-06ц, есть уже готовая рабочая схема.

Error404
12.10.2009, 14:26
Может проверишь? :)

Быстро не получится. Единственный мой реал-Орион в другом городе, и поломаный. :(

AlecV
12.10.2009, 14:31
b2m, а где можно посмотреть на схему ? Какой есть софт под нее ? IMHO она должна подходить на все 8-битки на ВМ80/Z80.

b2m
12.10.2009, 14:44
Всё есть у svofski в Базисе (http://www.sensi.org/~svo/scalar/), вот непосредственно описание (http://sensi.org/~svo/scalar/media/w/hdd.zip).

pvlad
12.10.2009, 15:51
Цитата:


Уважаемый Error404!
Так как все-таки без лишнего гимора получить Ваш эмулятор? Может можно в личку?
Сорри, забыл.
В сообщениях в личке, похоже, нельзя делать вложения (или я не разобрался как это сделать). Выложил тут:
http://ifolder.ru/14453727
Исходники нужны?

Спасибо! Скачал. Исходники не нужны, а вот хотя бы какое-то руководство пользователя очень бы даже надо! Хорошо, что описана структура образов и утилит, но какие кнопочки нажимать, чтобы переключить РУС/ЛАТ (потом, правда, вычислил!), как отключить дебагер, если его нечаянно запустил и еще много чего сразу захотелось узнать. Интуитивно разобраться не получилось. Нажимая методом тыка кнопочки, влетал в какой-то режим с зелеными символами и непрерывным звуком. Выбраться из этого удавалось только заменой файла "ini" на оригинальный. Как понял, защиты от "дурака" нет, а автор всегда нажимает кнопки правильно! На Вашем сайте руководство пользователя тоже не нашел, а может плохо искал. Шокирован количеством Мониторов! Вот что получается, когда авторы бросают свое детище.
Далее. Это конечно хорошо, что есть возможность выбрать различную клавиатуру в настройках, но как сделать чтобы русские символы, выводимые на экран, совпадали с тем, что написано на клавишах моей ПС? И еще: замените, пожалуйста, "Sugona(j)ko mode" на "Original mode". Мне, представляется, что это будет более корректно.
Думаю надо бы открыть отдельную тему по эмуляторам. Раз Вы у нас главный программист и эксперт по Ориону, то будем пользоваться Вашим эмулятором. Будем в режиме онлайн учиться пользоваться Вашим детищем. Одновременно и "блохи" выловим! Как Вы считаете?

Error404
12.10.2009, 16:04
Раз Вы у нас главный программист и эксперт по Ориону, то будем пользоваться Вашим эмулятором. Будем в режиме онлайн учиться пользоваться Вашим детищем. Одновременно и "блохи" выловим! Как Вы считаете?

Я против такого подхода к моей персоне. Потому что во-первых это не так, а во-вторых слишком много накладывает обязательств на мою деятельность "just for fun", от которых она перестает таковой быть.
-
Блох в эмуляторе безусловно есть, некоторые известны, но руки не доходят устранить. Отладчик тоже неважный - главным образом оттого, что я ставил цель "побыстрому что-нить слепить". У b2m в этом плане куда как более перспективный эмулятор:
http://bashkiria-2m.narod.ru/
--
Описание - это самая сложная часть работы, т.к. самая неинтересная. :)
Подумаю на этот счет, когда буду в очередной раз ковырять эмулятор - подумываю заэмулировать SD-карточку (чтобы затем ковырять CPM на предмет SD). Кстати, желательно общими усилиями сформировать видение как оно будет подключаться.

AlecV
12.10.2009, 16:25
b2m, Да, именно такое и хотелось. Монотонные ограниченные мысли - сходятся :)


;запись сектора
SAVE: INR L
MOV A,M
OUT 58H ; при записи в 50 порт записываются 2 байта
DCR L ; 1 находится в 50, 2 в 58.
MOV A,M
OUT 50H
INR L
INR L
JNZ SAVE


Еще бы порядок байтов поменять... , а то много плясок с указателем HL.

P.S. Не получится. Сначала надо обработать старший байт для "теневого" ркгистра, а потом младший, а в памяти они лежат последовательно. Для чтения все нормально.


P.P.S. Такая схема много кому приходит в голову, еще вариант:

http://www.hanssummers.com/computers/cpcng/ide/index.htm

pvlad
13.10.2009, 13:13
Я против такого подхода к моей персоне. Потому что...

Вы, в одном из постов, правильно сказали, говорунов на форуме много, а вот реально никто ничего не делает. У меня тоже много своих дел, и они никаким боком не стыкуются с Орионом. Не в пример Вам, я порядком все по забывал за прошедшее десятилетие. Вы активно находитесь в орионовской теме. Мне показалось, что Вы, я и Евгений, пожертвовав немного своим временем, смогли бы довести проект до логического конца и получить хорошую разработку.

Error404
13.10.2009, 13:33
Вы, в одном из постов, правильно сказали, говорунов на форуме много, а вот реально никто ничего не делает. У меня тоже много своих дел, и они никаким боком не стыкуются с Орионом. Не в пример Вам, я порядком все по забывал за прошедшее десятилетие. Вы активно находитесь в орионовской теме. Мне показалось, что Вы, я и Евгений, пожертвовав немного своим временем, смогли бы довести проект до логического конца и получить хорошую разработку.

Я безусловно буду заниматься,т.к. пока это вроде бы интересно, но я склонен к "неполучилось-фыркнул-бросил", как это уже к примеру получилось с попыткой портирования UZIX. Поэтому я никакие обязательства, или даже просто планы, не берусь выполнять. Тут ведь как выходит: получится - хорошо, не получается - "ну не смогла".

pvlad
13.10.2009, 14:51
Я безусловно буду заниматься,т.к. пока это вроде бы интересно, но я склонен к "неполучилось-фыркнул-бросил"...

Сергей! У нас начались обсуждения не по теме этой ветки. Я хочу перенести дальнейшую дискуссию в тему, где это актуально.

Дмитрий2012
28.01.2016, 12:23
Залить образ HDD на реальный IDE-диск под Windows можно утилитой HddUtil.exe:
http://orion-z.hoter.ru/file/355/4538_HddUtil.zip

Утилита консольная (т.е. запускать из CMD - оно напишет подсказку). Я ее тестировал на чтении/заливке образов с/на как реальных винтов (подключенных к IDE материнской платы), так и для CompactFlash в обычном китайском USB-адаптере (CardReader). Например, чтобы записать образ GAMES.OHI на hdd, установленный в системе вторым, надо выполнить примерно такое:
hddutil c:\temp\games.ohi 1: /c=131072
На вопрос ответить "Yes". После завершения счетчика записанных секторов hddutil сообщит "Complete", что означает, что все записалось.
После записи образа, команда
hddutil /list
для привода 1: должна показывать наличие двух СРМ партиций

Попробовал залить образ games.ohi на Compact Flash карточку 256МБ через китайский CardReader. Ничего не получилось, система пишет отказано в доступе. Консоль запускал от имени администратора. С чем это может быть связано, и как можно получить доступ к диску?

ps: в Windows штатными средствами на карту все пишется и стирается с нее.

AHTuXPuCT
28.01.2016, 12:53
Дмитрий2012, попробуй через переходник ide-компакт флэш записать.
через китайский картридер может и не получится ни чего записать.

Дмитрий2012
28.01.2016, 13:49
Дмитрий2012, попробуй через переходник ide-компакт флэш записать
Попробовал, все тоже самое. Единственное заметил, что через переходник ide-компакт флэш,теперь определятся серийный номер флешки и биос. Посмотрел акронисом, что утилита сделала с флешкой. На ней создаются тома на 32МБ и 1.953 Мб. Непонятно, то ли я что не так делаю, то ли что-то с утилитой не так...

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

Error404
29.01.2016, 10:54
Попробовал, все тоже самое. Единственное заметил, что через переходник ide-компакт флэш,теперь определятся серийный номер флешки и биос. Посмотрел акронисом, что утилита сделала с флешкой. На ней создаются тома на 32МБ и 1.953 Мб. Непонятно, то ли я что не так делаю, то ли что-то с утилитой не так...

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

Не очень нормально записалось. MBR на диске есть (hddutil показывает 2 раздела), но партиций правильных - нет, в hddutil /list должны быть разделы "CP/M, CP/M" (элементы списка и их типы - по количеству разделов), а у вас почему-то "FAT, CP/M".

hddutil открывает и пишет устройство как файл (RAW), т.е. в принципе ему все равно что там: винда обслуживает ввод-вывод на устройство. Запускать надо под админом, все верно (т.к. параллельный процесс может этот же файл держать, тот же диспетчер дисковых устройств например). По этой же причине, лучше не деражать несколько таких процессов параллельно работающими (hddutil, акронис, диспетчер дисков и т.п.). Пока у меня на разных платформах-клонах винды-NT (2000, XP, Win7) hddutil работало, но как говорится, гарантий не даю.

Самый хороший эксперимент - записать образ образ под Линуксом командой dd. Акронисы, win32DiskImager и тому подобная Win-туфта, лазящая к дискам через свое API, меня неоднократно подводили при записи образов для моего OrangePC (писали мусор, или не с начала карты, или еще как-то). Теперь пишу образы на карту только линуксом через dd (кстати, и работает быстрее всего если угадать с размером блока на запись).
А самая хорошая проверка - потом прочитать образ с карточки во второй образ-файл и файлово сравнить оба образа на отличия (в ТоталКомандере или под Линуксом тупо по diff).
Оригинал то без ошибок, в эмуляторе с него обе партиции видны и грузятся правильно, с boot-меню и обе партиции?

Дмитрий2012
29.01.2016, 11:34
Не очень нормально записалось. MBR на диске есть (hddutil показывает 2 раздела), но партиций правильных - нет, в hddutil /list должны быть разделы "CP/M, CP/M"
Не знаю, что вчера с моей виндой происходило, но сегодня повторил те же операции и все записалось правильно:) Чудеса какие-то...
За полезную информацию спасибо!

Error404
29.01.2016, 19:11
Вот, вынул из ромдиска последние (вроде) бинарники TST2SD$, MBOOT$ - может пригодятся для тестирования контроллера.

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

Дмитрий2012, а TST2SD$ с IDE работает? Написано под эмулятором, на реалах проверялась только с SD-картами, режим IDE на реалах еще не проверяли. Интересно. :)

кнопка D (Device) : выбрать устройство (SD или IDE Master или IDE Slave) (http://zx-pk.ru/showthread.php?t=12771&p=514453&viewfull=1#post514453)

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

Вот еще программулина для тестирования разъема IDE схемы на ВВ55 на порту F600. Может кому пригодится.
В архиве исходник и бинарник для CP/M (PIN-IDE.COM PIN-IDE.PAS), простейший транслятор COM-файлов в ORD (для базовых консольных функций) COM2ORD.COM - с его помощью полученный в CP/M бинарник под CP/M же транслирован в PINIDE.ORD , который можно запустить в ОРДОС.

Дмитрий2012
29.01.2016, 20:35
Дмитрий2012, а TST2SD$ с IDE работает? Написано под эмулятором, на реалах проверялась только с SD-картами, режим IDE на реалах еще не проверяли. Интересно.
Загрузчик MBOOT$ работает нормально, а вот TST2SD$ похоже глючит. После подачи команды R, чтение с диска происходит только один раз, потом надо опять несколько раз нажимать на клавишу D, чтобы опять выбрать устройство IDE мастер. Иначе сыпятся какие-то ошибки. Во время теста, при чтении секторов с диска меняется цвет фона и шрифт становится зеленый, интересно на реальном Орионе-128 тоже цвета меняются во время теста или это очередной глюк Орион-ПРО?
Вот видео как запускается тест и работает команда R (Read). Прошу прощение за качество картинки.
https://youtu.be/HGn6-OzmyHg

Error404
29.01.2016, 21:31
Загрузчик MBOOT$ работает нормально, а вот TST2SD$ похоже глючит. После подачи команды R, чтение с диска происходит только один раз, потом надо опять несколько раз нажимать на клавишу D, чтобы опять выбрать устройство IDE мастер. Иначе сыпятся какие-то ошибки. Во время теста, при чтении секторов с диска меняется цвет фона и шрифт становится зеленый, интересно на реальном Орионе-128 тоже цвета меняются во время теста или это очередной глюк Орион-ПРО?
Вот видео как запускается тест и работает команда R (Read). Прошу прощение за качество картинки.
https://youtu.be/HGn6-OzmyHg

Не должно быть мусора при первом выводе на экран: там меню порченное вывелось, а потом уже не порченное. Возможно есть ошибки, не воспроизводящиеся в эмулятора, а возможно это из-за Монитора ПРО, который ЕМНИП в режиме Орион-128 расположен в ОЗУ по адресам аналогичным ПЗУ классического Ориона. Что за версия Монитора там, откуда копируется (откудато из ПЗУ ПРО?) почему у нее от простых Искейп-последовательностей (штатных для О-128) рвет крышу (возможно и пропиливает порты, в т.ч. и порт цветных режимов) - это ХЗ. На следующей неделе попробую эту прогу на своем Орионе-128, реале.

Дмитрий2012
29.01.2016, 22:30
Не должно быть мусора при первом выводе на экран: там меню порченное вывелось, а потом уже не порченное. Возможно есть ошибки, не воспроизводящиеся в эмулятора, а возможно это из-за Монитора ПРО
Возможно проблема в мониторе ПРО, попробовал тест запустить в эмуляторе b2m, точно такой же мусор сыпется.

Что за версия Монитора там, откуда копируется (откудато из ПЗУ ПРО?)
Похоже, что из ПЗУ ПРО. Приложил к сообщению краткое описание режима Орион-128 из авторской книжки по Ориону-ПРО.

Error404
03.02.2016, 17:31
Народ, подскажите как из режима "Орион-128" ПРО или на железном Орионе-128/z достоверно определить тип физического компа где выполняется код (О128 или ПРО). Что-нить несложное.
П/п Монитора 0F833h (как предлагают авторы в описании выше) не предлагать. Раньше (до ПРО) по этому адресу в Мониторах была процедура SET_RAMTOP, которая в большинстве Мониторов похекана (в мониторах-3, например, по адресу 0F833h стоит код 0C9h, т.е. RET :) )

b2m
03.02.2016, 19:03
У Про есть окна по 16Кб по адресам 4000-7FFF и 8000-BFFF, воспользуйся портами 05 и 06. Можно просто проверить, записывается ли туда число, а можно ещё и проверить, переключаются ли окна.

Denn
04.02.2016, 00:50
Если я правильно понял написанное про ПРОшку, то собственно в режиме "ПРО" не будет Монитора в F800..FFFF, а стало быть в ячейке F800 не будет значения C3h. Но могу ошибаться...

Error404
04.02.2016, 10:31
Не, тут как раз вопрос чтобы прога отличала - на Орионе-128 она запущена или на ПРО в режиме Ориона-128.

Т.к. полностью переписать программы под режим ПРО невозмжно (в силу лени :) ), а некоторые вещи на ПРО в режиме Ориона-128 несовместимы (например, прерывания по железу переделаны, или подпрограммы ОЗУ-шного Монитора F800), то какую-то минимальную настройку на ПРО в программах надо будет сделать даже для его режима эмуляции О-128, который я и планирую пользовать повсеместно (т.к. особо не вижу крайней необходимости в новых фишках ПРО, подкупает сугубо его быстродействие).

ПЗУ F800 на ПРО в режиме Ориона-128 нет, там ОЗУ, но BIOS ПРО туда кладет код Монитора, почти такой же как М2 (чуть поправленный).
К Монитору (его поправленности) привязыватся не хочу, т.к. сегодня там один монитор, завтра я в ROM2 (+2000h) записал другой (авторы это штатно позволяют)

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


У Про есть окна по 16Кб по адресам 4000-7FFF и 8000-BFFF, воспользуйся портами 05 и 06. Можно просто проверить, записывается ли туда число, а можно ещё и проверить, переключаются ли окна.

в принципе можно. Даже в саму память можно не лезть. Порты же работают на чтение значений самих портов, там же ВВ55 и можно прочитать значение регистра конфигурации (+03)? Вот к этому можно наверное привязаться. В Орионе-128/z из несуществующего порта прочитается 0FF, а на ПРО из регистра конфигурации ВВ55 "портов 05 и 06" какое-то другое значение. Порты эти доступны и из режима имитации Ориона-128?

Denn
04.02.2016, 12:23
Не, тут как раз вопрос чтобы прога отличала - на Орионе-128 она запущена или на ПРО в режиме Ориона-128.

Ещё проще. Порт #00 - состояние конфигурационных DIP-переключателей ОРИОН-ПРО. Сохраняем содержимое ячейки 0000Н, пишем с помощью OUT 00Н напрмер ААh, пробуем считать IN 00h, сравниваем, если считались наши ААh, значит у нас труъ Орион-128, если нет, значит у нас ОРИОН-ПРО и мы считали состояние конфигурационных переключалок. В последнем случае анализ старшего бита расскажет нам про режим - "ПРО" или "128".
После проверки не забываем восстановить сохранённое значение ячейки 0000h, если нужно.

Error404
04.02.2016, 12:40
Ещё проще. Порт #00 - состояние конфигурационных DIP-переключателей ОРИОН-ПРО. Сохраняем содержимое ячейки 0000Н, пишем с помощью OUT 00Н напрмер ААh, пробуем считать IN 00h, сравниваем, если считались наши ААh, значит у нас труъ Орион-128, если нет, значит у нас ОРИОН-ПРО и мы считали состояние конфигурационных переключалок. В последнем случае анализ старшего бита расскажет нам про режим - "ПРО" или "128".
После проверки не забываем восстановить сохранённое значение ячейки 0000h, если нужно.

Для классического Ориона-128 такое прокатит. А с питерской Z80CardII не получится, там порты по IN из ОЗУ не читают, а у меня в-основном такой вариант и программы для Z80. В принципе, как вариант можно использовать для различия Ориона-128 и Z80CardII, если вдруг такое потребуется. Так что наверное остановлюсь на чтении какого-нибудь из портов имеющихся только на ПРО.

Error404
05.02.2016, 13:29
А вот еще такой вопрос:
На Орионе-ПРО в режиме Ориона-128 в область F800..FFFF подставляется ОЗУ (в котором лежит Монитор F800), но запись в него запрещена.
Коду, выполняемому в режиме имитации Ориона-128 в нижних адресах памяти 64к-шной страницы 2 (т.е. третьей) нужно модифицировать область F800..FFFF. Делаю разрешение записи в F800..FFFF сбросом битов D7 или D7+D6 регистра 0Ah, но тут у меня эмулятор (который неизвестно правильно ли эмулирует) выдергивает из-под программы память, запрещая действие регистра страниц F9 (код проваливается в страницу 0, как я понимаю). Правильно ли это?
У меня так:


in a,(0Ah) ; Orion-PRO RAM/ROM dispatchers on/off config register
ld c,a
xor a ; reset D7,D6 (set Orion-PRO mode: F800...FFFF is RAM), all dispatchers is off (=0)
out (0Ah),a

... тут бы править область F800..FFFF, но улетаем в трэш ...

ld a,c
out (0Ah),a ; restore config register (to Orion-128 mode)



А как надо? примерчик бы.

b2m
05.02.2016, 15:42
Делаю разрешение записи в F800..FFFF сбросом битов D7 или D7+D6 регистра 0Ah, но тут у меня эмулятор (который неизвестно правильно ли эмулирует) выдергивает из-под программы память, запрещая действие регистра страниц F9 (код проваливается в страницу 0, как я понимаю). Правильно ли это?
Единственное, что у меня неправильно, это то, что порт 08 и порт F9 считаются одним регистром. На самом деле - там два разных регистра (порт ВВ55 и дополнительный регистр для режима Орион-128).
D7=0 включает режим Ориона-Про, т.е. доступ к портам через память отключается.
D6=0 отключает непереключаемую область F000-FFFF (в режиме Ориона-128 не используется).

Т.е. тебе нужно выводить 40h в порт 0Ah. Перед этим нужно продублировать номер страницы в порт 08, т.к. в режиме Ориона-Про используется этот порт, а не F9. В эмуляторе прокатит и без этого.

Error404
05.02.2016, 16:48
Единственное, что у меня неправильно, это то, что порт 08 и порт F9 считаются одним регистром. На самом деле - там два разных регистра (порт ВВ55 и дополнительный регистр для режима Орион-128).
D7=0 включает режим Ориона-Про, т.е. доступ к портам через память отключается.
D6=0 отключает непереключаемую область F000-FFFF (в режиме Ориона-128 не используется).

Т.е. тебе нужно выводить 40h в порт 0Ah. Перед этим нужно продублировать номер страницы в порт 08, т.к. в режиме Ориона-Про используется этот порт, а не F9. В эмуляторе прокатит и без этого.

Ага! про порт 08 я как раз и забыл. :)

Error404
06.02.2016, 12:32
В-общем, коллеги, вот преальфа CP/M для Ориона-ПРО работающая на IDE-контроллере на ВВ55 порта F600 (такой порт ВВ55 есть на мультикарте ПРО, надо только добавить переходник с одной 555ЛН1). IDE/CF подключается полностью аналогично тому как подключалась на Орионе-ревизии512 (да и любом Орионе-128 с портм F600). Поддерживается ВИ1 с платы IDE/RTC, но пока на тему ВИ1 уже есть багрепорт и нужна возможно более полная статистика - где как и что.
https://drive.google.com/file/d/0B3S0wVWNPLrwLXgwZE9Ebnh6eHc/view?usp=sharing

Для загрузки с этого образа нужно на ПРО выйти в режим Орион-128 в Ордос, запустить MBOOT$ (ищите на форуме - я выкладывал тут где-то, но найти на современном опоганенном движке форума не могу) и использовать загрузку с IDE MASTER (кнопка 5)

На диске:
USER0 - стартовые файлы CP/M и UZIX. UZIX сыроват, просто уже был в образе с ОС.
USER1 - игры ZX
USER2 - игры 128
USER3 - несколько музыкальных треков (так то их несколько сотен). Проигрыватели unipl* - для портов BFFD/FFFD как на Спеке - плату AY надо дорабатывать чтобы понимала и дешифрацию Спека!
USER15 - некий "джентельменский" набор софта для CP/M (от Ориона-128 естественно, но большинство пойдет и на ПРО т.к. работает через драйвер или BDOS/BIOS. А вот дисководные форматеры понятно не заработают, как и не заработают floppy под ОС).

Образ универсальный, т.е. пойдет и на обычном Орионе с Z80CardII. Но драйвер правленный - экран сдвинут вправо чтобы на ПРО он был по центру (правится, если будет нужно - расскажу как).

В принципе можно подумать на тему запиливания в ОС поддержки IDE c платы IDE/RTC ПРО - если дадите выверенные подпрограммы инициализацииIDE/чтений_сектора/записи_сектора

Большое спасибо Дмитрий2012 за бета-тестирование! (своего реала у меня пока нет - ленюсь допаять).

Дмитрий2012
06.02.2016, 13:06
на ВВ55 порта F600 (такой порт ВВ55 есть на мультикарте ПРО, надо только добавить переходник с одной 555ЛН1
уточню, на мультикарте ВВ55 (D4) управляется с портов 20-23Н, для подключения ее к порту F600 нужно отогнуть 6 ножку ВВ55 и подпаять на нее проводок с системной платы, где находится перемычка J4. А похорошему, если не удастся запустить IDE контроллер Михаловского. Скорее всего ВВ55 оставлю на мультикарте, как она и была штатно задумана, а для загрузки с винта сделаю новую карту расширения. На карте Михаловского оставить только часики и добавить туда ВВ55. А все лишнее, что относится к контроллеру IDE с нее выпилить.


В принципе можно подумать на тему запиливания в ОС поддержки IDE c платы IDE/RTC ПРО - если дадите выверенные подпрограммы инициализацииIDE/чтений_сектора/записи_сектора
с платой IDE-RTC до сих пор непонятки, возможно в схеме еще остались ошибки. По крайней мере у меня она в тесте некорректно определяет винты и Compact Flash карты через переходник, и часть тестов идут с ошибкой. А другого софта кроме теста, чтобы проверить работу жесткого диска на Орионе-ПРО нет, кроме загадочного Ордос6, который работает только в эмуляторе. На железном орионе он даже не запускается.

Прикрепил файлик MBOOT$ , которым я сейчас пользуюсь для загрузки системы.

Error404
06.02.2016, 13:23
уточню, на мультикарте ВВ55 (D4) управляется с портов 20-23Н, для подключения ее к порту F600 нужно отогнуть 6 ножку ВВ55 и подпаять на нее проводок с системной платы, где находится перемычка J4. А похорошему, если не удастся запустить IDE контроллер Михаловского. Скорее всего ВВ55 оставлю на мультикарте, как она и была штатно задумана, а для загрузки с винта сделать новую карту расширения. На карте Михаловского оставить только часики и добавить туда ВВ55. А все лишнее, что относится к контроллеру IDE с нее выпилить.


В теории, контроллер на отдельных регистрах (как я понял - Михаловского) должен работать в 2-3 раза быстрее, чем контроллер на ВВ55. Поковыряться с ним вполне имеет смысл. А почему надо отгибать ножку ВВ55 на мультикарте? Вроде где-то в описаниях проскакивало, что в режиме Ориона-128 какой-то из портов сам переключается на F600?

Дмитрий2012
06.02.2016, 13:41
На сколько я понял из схемы порт F600 переключается перемычкой (на плате мультикарты) для управления ROM диском, а 6 ножка ВВ55 припаяна к дешифратору D1. Так что, либо отгибать ножку, либо резать дорожки и опять же кидать проводок.

b2m
06.02.2016, 14:01
запустить MBOOT$ (ищите на форуме - я выкладывал тут где-то, но найти на современном опоганенном движке форума не могу) и использовать загрузку с IDE MASTER (кнопка 5)
Не нашёл. Но нашёл у себя на сайте образ (http://bashkiria-2m.narod.ru/files/orion512.rar) 1Мб ROM-диска, там есть MBOOT$.
Сделал конфиг для своего эмуля и доложил в ROM-диск MBOOT: http://bashkiria-2m.narod.ru/files/orion/OrionProIDE.rar
Файл uzix.ohi из поста коллеги Error404 скопировать как обычно в подкаталог Orion эмулятора.

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

Честно говоря, я надеялся, что uzix запустится, но увы. И спековские игрушки (я пробовал dizzy) не запускаются. Там кроме CP/M что-нибудь работает?
Ну хорошо, NC тоже запустился...

Дмитрий2012
06.02.2016, 15:10
Честно говоря, я надеялся, что uzix запустится, но увы. И спековские игрушки (я пробовал dizzy) не запускаются. Там кроме CP/M что-нибудь работает?
Ну хорошо, NC тоже запустился...
Error404 попробовал загрузить Uzix, в этой сборке правда не запускается, но в других сборка, которые тестировал Uzix запускался. Я в основном Альтаир-ДОС юзал, поэтому в этой сборке даже не проверял загрузку Uzix.

Что касается игр со спектрума, на Орионе-ПРО запускаются не все. Dizzy не работают. Насколько помню, точно запускаются Batty, Freddy Hardest 1,2 , Cybernoid 2, Saboteur 1,2 и еще каких-то десятка 2.

Error404
06.02.2016, 15:12
Uzix я не правил, он годовалой давности. По-хорошему, он будет переписан: не совсем удобно вписался в текущую версию ОС. А сам образ от того что для Ориона-128 отличается только драйвером driver.sys. В котором перепилена поддержка ВИ1 и обработка прерываний (в т.ч. в режиме ПРО драйвер последней версии после своего старта правит код обработчиков прерываний ДОС "по-живому" и пишет в F900: чтобы еще и ДОС не править я так сделал, т.к. для ПРО по-другому не получалось - это может давать на ПРО спецэффекты). Но у меня в эмуляторе и у Дмитрий2012 на реале запускалось (я видос видел). Правда тогда вектора прерываний ещ были на F000, а не на F900 и не было правок кода их обрабочиков из драйвера. Понятно, что дальше "запустилось" никто не смотрел.

За неработающие игры надо сказать спасибо авторам ПРО, т.к. это они уперлись как бараны и не сделали совместимость по диспетчеру 16к с портом FB, хотя цена вопроса там - одна КП11.

Error404
07.02.2016, 12:20
За неработающие игры надо сказать спасибо авторам ПРО, т.к. это они уперлись как бараны и не сделали совместимость по диспетчеру 16к с портом FB, хотя цена вопроса там - одна КП11.

А вот кстати. Кто возьмется сделать такую доработку? Думаю, проще - по второму варианту, без КП11.
Вот смотрите: программам от Z80CardII (я думаю никто не будет спорить что они -самое интересное на Орионе) порой нужен диспетчер по 16к в окне 0000...3FFF. Он включается портом 0FBh: Бит D7=0 диспетчер включен, бит D7=1 диспетчер выключен (т.е. инверсно). Кстати, этот бит уже запоминается на ПРО в D111 (TM8). Биты D0..D3 содержат номер сегмента, включаемого в окне 0000...3FFF если бит D7=0. Т.е. нам либо нужен доп. регистр на 4 разряда, например еще одна ТМ8, либо их можно запоминать в аналогичном порту ПРО (это порт 04 биты D0..D3, в остальные нужно писать 0)

Номера сегментов совпадают с номерами сегментов на ПРО, только их всего в отличие от ПРО всего 16 (на про их 32), цитирую для ПРО:


Распределение сегментов по страницам основного ОЗУ:

Стр.0 Стр.1 Стр.2 Стр.3 Стр.4 Стр.5 Стр.6 Стр.7
FFFFH -------T------T------T------T------T------T------T------¬
¦ 3 ¦ 7 ¦ 11 ¦ 15 ¦ 19 ¦ 23 ¦ 27 ¦ 31 ¦
C000H +------+------+------+------+------+------+------+------+
¦ 2 ¦ 6 ¦ 10 ¦ 14 ¦ 18 ¦ 22 ¦ 26 ¦ 30 ¦
8000H +------+------+------+------+------+------+------+------+
¦ 1 ¦ 5 ¦ 9 ¦ 13 ¦ 17 ¦ 21 ¦ 25 ¦ 29 ¦
4000H +------+------+------+------+------+------+------+------+
¦ 0 ¦ 4 ¦ 8 ¦ 12 ¦ 16 ¦ 20 ¦ 24 ¦ 28 ¦
0000H L------¦------¦------¦------¦------¦------¦------¦-------


Доступ к сегментам ОЗУ осуществляется через три независимых окна, которые можно "открыть" в адресном пространстве процессора в пределах рабочей страницы ОЗУ:
Окно ОЗУ "RAM2" - 8000-BFFFH
Окно ОЗУ "RAM1" - 4000-7FFFH
Окно ОЗУ "RAM0" - 0000-3FFFH

Назначение разрядов порта 0AH следующее:
D0 - 1 = включить окно ОЗУ "RAM0"
D1 - 1 = включить окно ОЗУ "RAM1"
D2 - 1 = включить окно ОЗУ "RAM2"

порт 04H - регистр сегментов для окна "RAM0";
порт 05H - регистр сегментов для окна "RAM1";
порт 06H - регистр сегментов для окна "RAM2";


Т.е. чтобы получить аналог диспетчера от Z80CardII нужно в порт RAM0 (это порт A мсх D55) одновременно (т.е. доп. обработать выв.6 /CS D55) писать то, что пишется в 0FBh биты D0..D3 (при этом выводы D55 A0,A1,D4,D5 должны переводиться в 0, т.е. нужно на эти входы поставить МСХ 2И (ЛИ1), нечетные ножки которой завести на сигнал "FB" выв.9 D111 - сигнал инверсный), и разрешать работать диспетчеру "RAM0" не только разрешаюшим сигналом c вывода 14 D80 (бит D0 порта 0Ah), но и по элементу ИЛИ и с вывода 6 D111 (инверсный бит D7 порта 0FBh).

b2m
07.02.2016, 15:53
нужно в порт RAM0 (это порт A мсх D55) одновременно (т.е. доп. обработать выв.6 /CS D55) писать то, что пишется в 0FBh биты D0..D3 (при этом выводы D55 A0,A1,D4,D5 должны переводиться в 0, т.е. нужно на эти входы поставить МСХ 2И (ЛИ1), нечетные ножки которой завести на сигнал "FB" выв.9 D111 - сигнал инверсный), и разрешать работать диспетчеру "RAM0" не только разрешаюшим сигналом c вывода 14 D80 (бит D0 порта 0Ah), но и по элементу ИЛИ и с вывода 6 D111 (инверсный бит D7 порта 0FBh).
Такая-же проблема, как и с портами 08 и F9. Не так-то просто сделать запись в один регистр по двум адресам, особенно если младшие биты адреса различаются. Поэтому сделали отдельные регистры с мультиплексором.
Эта проблема, конечно, решаема, например можно было поставить РТ-шку, которая бы транслировала младшие биты адреса и формировала сигналы CS. Но это уже будет другой Орион-Про.

Error404
08.02.2016, 12:52
Но это уже будет другой Орион-Про.

Так и нужен другой Орион-ПРО. Нафиг чемодан без ручки? :) Он уже тогда был другой нужен, если бы не упрямство авторов.
Давно понятно: 90-е прошли, когда можно было сделать "нечто" и программистов прогнуть под это кодить. Нынче программисты вымерли, и нужно прогибаться по части железа, чтобо хотя бы пользоваться тем что осталось по части "наследства". Тем более в отдаленных планах второй выпуск плат. Тем более (2) что декларируется обратная совместимость с Орионом (с Ордосом чтоле? смишно).

Итак, что бы я хотел:
- таки полную совместимость по порту FB. Если для этого таки придется поставить КП11 для объединения двух регистров (04 и FB) - ставим КП11!
- дешифрацию AY8910 допилить чтобы оно понимало как порты ПРО, так и порты Спектрума (BFFD/FFFD), потому что см. про программистов
- расширение ОЗУ до 1/2 Mб на статике (1/3 МСХ по 512кб): не этот дурацкий электронный диск куда доступ только по IN/OUT, а нормальное "сплошное ОЗУ" с окнами по порту F9 где процессор может выполнять код.
- на платах периферии делать возможность использования старых решений без резанины (тот же порт F600, который много где используется, не только в IDE, вот до последнего я был уверен что все делается джампером, оказывается - нифига).
- если делается плата, то нужно стремиться не к уменьшению размеров, а к тому чтобы с этой платой в дальнейшем было комфортно существовать.
Например, есть платы у который наружу не выводятся разъемы (та же IDE/RTC), так вот на таких платах к обрезу "материнской платы" нужно делать монтажное поле "слепыша" шириной не менее пары сантиметров: на нем и разъем наружу вывести можно, и приткнуть несколько DIP-корпусов, например - тот же контроллер SD-карт.

b2m
08.02.2016, 16:09
Есть два варианта:
1. куча логики и мультиплексоров
2. CPLD
Какой тебе ближе?

Error404
08.02.2016, 17:14
Есть два варианта:
1. куча логики и мультиплексоров
2. CPLD
Какой тебе ближе?

Мне на логике ближе. Дух эпохи же.
Тем более что там ее будет не так уж и много:
одна TM8 чтобы хранить FB.D0...FB.D3
одна КП11 чтобы битом FB.D7(он уже есть на ножке D111.6 или D111.6 - смотря какой надо: прямой или инверсный) коммутировать: {FB.D0...FB.D3 vs MA14'(D4.7)...MA17'(D5.9) --[D111.6=/FB.D7]--> MA14...MA17}

Типа вот и всё.

b2m
08.02.2016, 17:25
А FB.D5 не нужен?

Error404
08.02.2016, 17:32
На случай если ПРО-программисты забивали болт на порт FB и включали прерывания (FB.D5) не заботясь о бите D7 (этот бит - инверсный: диспетчер 16к выключен при D7=1, по сбросу туда тоже надо писать "1"), то управляющий КП11 сигнал D111.6(7)=(/)FB.D7 можно простробировать на свободном (их на плате ПРО немерено) элементе 2ИЛИ (или 2И, пофиг, адрес у КП11 однобитный) c битом D7 порта 0Ah (режим О-128).

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


А FB.D5 не нужен?

Не понял.
Почему не нужен? Он же включает прерывания. Он останется как есть в той ТМ8 (D111), что уже есть на ПРО. Разряды диспетчера порта FB (0..3) будут в дополнительном добавляемом регистре (их на ПРО пока что нет)

b2m
08.02.2016, 19:39
Не понял.
Почему не нужен? Он же включает прерывания. Он останется как есть в той ТМ8 (D111), что уже есть на ПРО. Разряды диспетчера порта FB (0..3) будут в дополнительном добавляемом регистре (их на ПРО пока что нет)
Ничего не путаешь?

Порт FB - УПРАВЛЕНИЕ ПРЕРЫВАНИЯМИ И ДИСПЕТЧЕРОМ:

D7 D6 D5 D4 D3 D2 D1 D0
! ! ! ! ! ! ! !
MZ INT XMEM RZRV BS1 BS0 SS1 SS0
! ! ! ! ! ! ! !
! ! ! ! ! ! !______!____ SEGMENT SELECT
! ! ! ! !______!__________________ BANK SELECT
! ! ! !
! ! ! !________ РЕЗЕРВ ДЛЯ BANK SELECT (ВСЕГДА = 0)
! ! !_______________ FULL RAM MEMORY (ПРИ D5=1 0-FFFF - ОЗУ)
! !______________________ INT ENABLE (ПРИ D5=0 ЗАПРЕЩЕНЫ)
!_____________________________ DISPATCHER OFF (ПРИ D7=1 ОТКЛЮЧЕН !)

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

Биты D7 и D5 должны заменять собой аналогичную функциональность порта 0Ah при включении режима совместимости O-128, т.е. их тоже надо коммутировать и инвертировать при необходимости.

bigmal
08.02.2016, 20:34
ИМХО стоит начать "собирать" идеи для доработки Ориона-ПРО. То бишь для выпуска новой платы, без хотелок-косяков разработчиков и т.п. Сделать всё логически правильно и возможно даже с заделом на будущее ;) В том числе ессно и периферию переработать

Error404
08.02.2016, 22:23
Ничего не путаешь?

Порт FB - УПРАВЛЕНИЕ ПРЕРЫВАНИЯМИ И ДИСПЕТЧЕРОМ:

D7 D6 D5 D4 D3 D2 D1 D0
! ! ! ! ! ! ! !
MZ INT XMEM RZRV BS1 BS0 SS1 SS0
! ! ! ! ! ! ! !
! ! ! ! ! ! !______!____ SEGMENT SELECT
! ! ! ! !______!__________________ BANK SELECT
! ! ! !
! ! ! !________ РЕЗЕРВ ДЛЯ BANK SELECT (ВСЕГДА = 0)
! ! !_______________ FULL RAM MEMORY (ПРИ D5=1 0-FFFF - ОЗУ)
! !______________________ INT ENABLE (ПРИ D5=0 ЗАПРЕЩЕНЫ)
!_____________________________ DISPATCHER OFF (ПРИ D7=1 ОТКЛЮЧЕН !)

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

Биты D7 и D5 должны заменять собой аналогичную функциональность порта 0Ah при включении режима совместимости O-128, т.е. их тоже надо коммутировать и инвертировать при необходимости.

а, да, ошибся. Бит D5 - это fullram (0000...FFFF - всё ОЗУ). Такой функционал уже есть в режиме ПРО, и бит D5 даже записывается в D111, надо будет только чтобы этот функционал включался еще и при "O-128"=1 && FB.D5=1. Причем если следовать из описания логики работы этого узла, уже сейчас "O-128" туда заводится - работа схемы fullram им блокируется. А надо что fullram блокировалась сигналом {"O-128"=1 && FB.D5=0}. Т.е. еще несколько лог. элементов И/ИЛИ добавится. Вообще, fullRAM был реже востребован (диспетчер 16к чаще), но конечно сделать не помешало бы.

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

ВОт только на схеме ПРО я вообще не нахожу цепи, относящейся к fullram - это сигнал 1С7, а ножка ВВ55 порта 0Ah.D6 по схеме вообще в воздухе висит. Похоже, схема какая-то промежуточная. Как при этом компы то ваши заработали? Чудом каким-то. :)
Призываю в тему BYTEMAN-а! У него вроде авторский распечатанный альбом схем был "продажного" качества. D80 вывод 11 (наш сигнал 1С7) по ней куда идет?

АлександрПП
08.02.2016, 23:31
D80 вывод 11 (наш сигнал 1С7) по ней куда идет?
И на авторской и на нашей плате идет на первый вывод D85 (ЛА2).
И на схеме так же (лист 1).

Error404
09.02.2016, 10:44
И на авторской и на нашей плате идет на первый вывод D85 (ЛА2).
И на схеме так же (лист 1).

Верно, есть такое, просто не нашел. Теперь бы разобраться куда идет сигнал "1" с D85 (ЛА3) вывода 11 (выход).

АлександрПП
09.02.2016, 11:16
D8


с D85 (ЛА3) вывода 11 (выход).
?
D85 - ЛА2. 11 и 12 выводы на + питания.

Error404
09.02.2016, 12:21
?
D85 - ЛА2. 11 и 12 выводы на + питания.

D86

АлександрПП
09.02.2016, 12:43
1 и 15 выводы D5, D12 (КП12).

b2m
09.02.2016, 12:48
Сигнал "1" идёт на разрешающие входы мультиплексоров D5,D12, которые коммутируют линии адреса MA16-MA19 (номер 64Кб страницы). Если разрешения нет, то подтягивающие резистры установят номер 15.

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

Опоздал :)

Vladimir_S
09.02.2016, 15:15
D85 (ЛА2).


D85 (ЛА3)

Не понятно.

АлександрПП
09.02.2016, 15:47
Да все просто, ну ошибся человек, бывает.

Error404
09.02.2016, 16:06
Т.е. D86 выв.11 это тупо сигнал, определяющий номер сегмента, который впечатывается как ОЗУ в области F000...FFFF в режиме Ориона-128 или ПРО-без-диспетчеров16к. Номер сегмента = 31.

Если я правильно понял схему, Full-RAM от порта FB.D5 будет выглядеть как-то так:
http://savepic.ru/8630603.gif

b2m
09.02.2016, 18:03
Может это и не принципиально, но в Z80Card в адресах F000-FFFF страница (16Кб) номер 3, а у Орион-Про - номер 31. А есть ли программы, которые пишут через окно в область F000-FFFF? Вроде бы такой необходимости быть не должно... Я имею ввиду Z80Card.

Error404
09.02.2016, 19:23
Может это и не принципиально, но в Z80Card в адресах F000-FFFF страница (16Кб) номер 3, а у Орион-Про - номер 31. А есть ли программы, которые пишут через окно в область F000-FFFF? Вроде бы такой необходимости быть не должно... Я имею ввиду Z80Card.

Трудно сказать. Раз такая возможность есть, то могут и быть, но думаю что не очень много (а скорее всего мало). Что вроде было - это в Балдинской Альтаир-ДОС 1.06 в области под ПЗУ F800 через диспетчер 16к использовались какие-то буфера. Но как оно записывалось туда диспетчером, так же оттуда и прочитывалось в окне диспетчера. Т.е. не важно в какой реально сегмент попадало: читалось оттуда куда попало.
В этом смысле оно все равно при первом скидывании туда буферов, прибъет тамошний ОЗУшный "имитатор Монитора-2", а клавиатуру небось через п.п Монитора опрашивает. :) FullRAM из-за ПРОшного "имитатор Монитора-2 в ОЗУ" получатся больше для игр ZX - у них свои драйверы опроса клавиатур, мимо Монитора. А другие туда и не лазили тащемто.

А вообще, не совсем понятно нафига в Орионе-ПРО в версии 3.х унесли дефолтную страницу с 0 (как было в в версиях 2.х) на F. Экран на 512 точек (16к) c 0C000h что-ли использовать хотели? Трех то экранов мало.
В-общем, все выглядит так, что занимались аппаратным перфекционизмом не очень представляя как это будут использовать программисты.

Кстати, если без изменения схемы/разводки_пп заменить D6, D12 с КП12 на КП2, то дефолтный сегмент вернется с F на 0. Так что, панельки рулят. :)

b2m
09.02.2016, 19:29
А вообще, не совсем понятно нафига в Орионе-ПРО в версии 3.х унесли дефолтную страницу с 0 (как было в в версиях 2.х) на F.
Я так полагаю, чтобы монитор в режиме совместимости не болтался под ногами, а тихо мирно лежал в конце, где его никто не затрёт.

АлександрПП
10.02.2016, 16:39
Кстати, если без изменения схемы/разводки_пп заменить D6, D12 с КП12 на КП2, то дефолтный сегмент вернется с F на 0.
Интересное замечание.
У нас на всех платах D12 стоит 1533КП2. Со схемной 1533КП12 плата не запускается.
Т.е. дефолтные сегменты изменены. Я так понимаю?
Если это верно, то понятно, почему не запускается ОРДОС-6.
Посмотрел фото Ориона-Про Prusak. Он у него собран на авторской плате. Там стоит 1533КП12. Странно, почему с нею не идет новая плата? Ошибок на ней точно нет. Я еще раз сравнил с платой 94 года, все сходится.

Denn
10.02.2016, 17:00
Посмотрел фото Ориона-Про Prusak. Он у него собран на авторской плате. Там стоит 1533КП12. Странно, почему с нею не идет новая плата? Ошибок на ней точно нет. Я еще раз сравнил с платой 94 года, все сходится.

А может разница в ПО (прошивке) ?

АлександрПП
10.02.2016, 17:15
Он мне высылал прошивку. Все один-в-один.
Плата 94 года у меня есть. Можно собрать ее, но это не быстро. Да и результат,думаю, будет тот же.

BYTEMAN
11.02.2016, 15:52
Призываю в тему BYTEMAN-а! У него вроде авторский распечатанный альбом схем был "продажного" качества. D80 вывод 11 (наш сигнал 1С7) по ней куда идет?

Не, все схемы были из DJVU-шки которую некогда выкладывал то ли сам pvlad, то ли ещё кто... Вобщем, у меня ничего такого, что не было бы ни у кого, нет :) Всё из открытых источников)

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


Посмотрел фото Ориона-Про Prusak. Он у него собран на авторской плате. Там стоит 1533КП12. Странно, почему с нею не идет новая плата? Ошибок на ней точно нет. Я еще раз сравнил с платой 94 года, все сходится.
У меня тоже на авторской и почти всё строго по схеме. Но у меня там солянка из серий и старых выпаянных БУшных микросхем, и есть определённые косяки - в некоторых программах от О-128 не работает клавиатура. Нечасто, но встречается.
Поскольку свой ПРОшник я не включал уже больше трёх лет, очень многого не помню.

АлександрПП
11.02.2016, 17:00
которую некогда выкладывал то ли сам pvlad, то ли ещё кто
Это из книги, pvlad где-то упоминал, что распечатывал ее на принтере и соединял пружинкой. Схемы также есть на диске Чунина Романа, они идентичны тем, что в книге. Других схем я не видел.



почти всё строго по схеме.


Но у меня там солянка из серий и старых выпаянных БУшных микросхем
Интересно бы посмотреть. Нет возможности сфотографировать плату в хорошем качестве и выложить сюда?

Error404
19.02.2016, 22:11
Подскажите, знающие люди. КНГМД (контроллер дискетки) на плате Ориона-ПРО в режиме Ориона-128 доступен ли? И по каким адресам чего в КНГМД выбирается в режиме Ориона-128 (регистры ВГ93, регистр управления) ?

Denn
19.02.2016, 22:55
Подскажите, знающие люди. КНГМД (контроллер дискетки) на плате Ориона-ПРО в режиме Ориона-128 доступен ли? И по каким адресам чего в КНГМД выбирается в режиме Ориона-128 (регистры ВГ93, регистр управления) ?

Да, доступен.

Надёжнее всего обращаться так:

RGCOM:EQU 10H
RGTRK:EQU 11H
RGSEC:EQU 12H
RGDATA:EQU 13H
RGUPR:EQU 14H

Но работают и старые маршруты (доступ к портам 0F7xx, как к ОЗУ).

АлександрПП
19.02.2016, 23:13
Из книги по "Орион-Про"
И, Error404, между прочим, личку бы почистить.

Error404
19.02.2016, 23:38
Т.е. я правильно понимаю, что старинный софт для КНГМД Орион-Сервиса (Москва) и ленинградского {эти варианты работают с ВГ93 по портам F700..F703, рег.упр. F720} можно использовать без изменений? Если так, то это очень здорово, я как раз собирался предлагать дорабатывать на плате адресацию до универсальной. Кто-нибудь пробовал на Орионе-ПРО запустить с дискет что-нибудь нативное лениградское или московское от Орион-Сервиса?

starik
08.04.2016, 03:54
Поделитесь, пожалуйста, утилитой HddUtil. Ссылка уже не живая.

Дмитрий2012
08.04.2016, 17:23
Поделитесь, пожалуйста, утилитой HddUtil. Ссылка уже не живая.
Прикрепил к сообщению.