Robotron EC1834

16-битные ПЦ-совместимые компьютеры с процессорами 8086/8088/80286 работающие под управлением ДОС

Moderator: Shaos

Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Robotron EC1834

Post by Tronix »

Еще прошлой зимой у меня появились платы от Robotron EC1834. Есть БП, мать, монохромная видяха, контроллер FDD, MFM HDD, LPT и расширение памяти 348Kb.

Image Image Image Image Image Image

Материнская плата в высоком разрешении: https://hsto.org/webt/ip/cw/5n/ipcw5ng7 ... _esbu.jpeg

Проблемы по запуску было две - это не очень стандартная монохромная видеокарта и клавиатура. Видеокарта в общем-то похожа на MDA, за исключением пиксель клока, который здесь равен 18 MHz (супротив 16.257Mhz у стандартной MDA). Но с помощью скандаблера MCE2VGA на ПЛИС Cyclone IV и шаманством с его прошивкой и PLL удалось подключиться к монитору VGA вполне сносно.

Image

Клавиатура, как подсказывает немецкий форум на сайте http://www.robotrontechnik.de - стандартная XT, за исключением того, что коннектор на материнке не DIN, а DB-9. Был спаян переходник и подключена клавиатура AT через известный переходник AT2XT, но почему-то не заработала. Интересно, что клавиатуру на материнской плате обслуживает микроконтроллер (!) MME U8821M - это клон Z8 микроконтроллера (не путать с Z80). И у этого микроконтроллера "сбоку" есть своя EPROM с прошивкой. На том же немецком форуме была найденасамописная прошивка для этого контроллера, позволяющая работать с AT клавиатурой напрямую. Эта прошивка была прошита в ПЗУ и подключена обычная PS/2 клавиатура - все заработало.

Image

А дальше, захотелось конечно впаять обычный ISA-8 слот, вместо стандартного. История вроде упоминает, что были такие модификации материнской платы, с двумя ISA-8 слотами:

Image

Впаял, благо распиновка полностью совпадает и ISA-8 слот как родной садится на посадочное место стандартного слота. Третий ряд контактов у стандартного слота - это продолжение ISA-16.

А вот дальше меня ждало небольшое разочарование. Например, при попытке вставить в слот XT-IDE я увидел такую картинку:

Image

Там должно быть написано "SINTECHI HighSpeed SD". Это адаптер IDE->SD. Как видно по картинке, каждая первая буква - мусор. Естественно и загрузки в DOS не происходило. Логично предположив, что с памятью в 8-битном режиме все нормально (иначе бы я не увидел BIOS от XT-IDE) подозрение пало на порты ввода-вывода, а именно в инструкции типа in ax,dx или out dx,ax . Тестировал я с самодельным XT-IDE на CPLD. Работает этот контроллер в режиме Hi-Speed, то есть с так называемым "Chuck mod". Мне лень было его переконфигурировать на первую версию XT-IDE, поэтому была просто спаяна новая плата XT-IDE:

Image

Она имеет перемычки - Compatible mode и Hi-Speed. Я перевел ее в Compatible mode, то есть что бы она прикинулась самой первой ревизией. Правильно настроил в конфигураторе XTIDE rev1, да и вообще собрал из git последнюю ревизию XT-IDE BIOS rev600 из исходников. И загрузился нормально:

Image

Потому что первая ревизия обращается к портам по-байтно, а не словами. Из-за этого и работает медленнее.

Ну, и конечно я пробовал вставлять в слот различные видео-карты. Единственная VGA, с которой есть хоть какой-то результат - это видеокарта ISA-8 на чипе PVGA1A-JK. На экране видны символы (на фотографии предложение DOS ввести дату-время), но присутствует полный мусор в аттрибутах.

Image

Пробовал втыкать 16-битную Realtek RTG3105 (автоопределение 8/16 бит, на XT работает без проблем), 16-битную Trident TVGA9000 с доработкой ALE (на XT работает без проблем), 16-битную ACU MOS AVGA1 (имеет переключатель 16/8 бит, на XT работает без проблем) - со всеми этими картами нет даже синхры, не говоря уже о видео. Так же пробовал и ISA-8 платы той эпохи - Hercules, CGA, EGA пару-тройку видов - нет синхры, не стартует. Странно, что CGA не стартанула - она вроде без своего BIOS. Но спишем на отсутствие поддержки со стороны основного BIOS Robotron'а.

Итого, хочется разобраться, чего не так с VGA, ну и по возможности запустить XT-IDE в режиме Hi-Speed. Завтра попробую посмотреть, что происходит при попытке записи в порт слова (out dx,ax). Есть подозрение, что байты не "заворачиваются", а выдаются на D15:D8, вместе с D7:D0. А D15:D8 на ISA-8 как бы и нет. Проведу ряд экспериментов.
Last edited by Tronix on 23 Sep 2018 10:09, edited 1 time in total.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Провел несколько простейших экспериментов: сделал на ISA-карте с CPLD два порта - 0x3a0 и 0x3a1. Оба порта доступны на запись и чтение. При записи сохраняют байт данных, при чтении отдают записанный ранее байт. На семисегментном индикаторе высвечивается адрес порта ввода-вывода, куда произошла запись. Записывал в порт данные словами:

cli
mov dx,3a0h ; порт на ISA карте с CPLD
mov ax,1234h
out dx,ax
hlt

На Поиске-2 на семисегментном индикаторе высвечивается 03A1 и комп виснет. А на роботроне высвечивается 03A0. Соответственно, данные в порт 0x3a1 не записываются. Записывается только младшая часть в 0x3a0.
Что с этим делать - непонятно.
Last edited by Tronix on 22 Sep 2018 02:42, edited 1 time in total.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: Robotron EC1834

Post by Alekcandr »

Я то думал, что MSX/MS утрясал свой стандарт годами. И инженера от 3-х фирм не читали документы стандарта :D

А тут смотрю, IBM/Intel жжет вообще не по детски. Что уж говорить о разробах Роботрона :rotate:

Ну так, между прочим. MSX задокументировал и открыл для общественности свою шину раньше, чем IBM.

P.S.

Да и тайминги шины IBM на порядок "рукожопей" по сравнению c MSX. Вроде бы собрал энтузиаст XT-ку от себя. А она ему фигу рисует.

Ну это все лирика. А так-то сейчас конечно в разы проще стало разгре.бать "завалы" (жадность) двигателей прогресса тех лет :D
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Вообщем да, посмотрел BIOSы видеокарт - у почти всех используется out dx,ax. Хотя нашел одну EGA, в которой идут пересылки байтами out dx,al:

Image

Правда, на моей был вырван генератор на 50МГц, пришлось запаять что-то близкое что нашлось - 46 с чем-то МГц. EGA режими не заработали, а в режиме эмуляции Hercules завелась.

Так что нужно как-то заворачивать байты при out dx,ax и in ax,dx для VGA.....
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

Tronix wrote:На Поиске-2 на семисегментном индикаторе высвечивается 03A1 и комп виснет. А на роботроне высвечивается 03A0. Соответственно, данные в порт 0x3a1 не записываются. Записывается только младшая часть в 0x3a0.
Что с этим делать - непонятно.
Получается, bus steering не работает? А /MEMCS16 на землю не закорочен случайно?
И, кстати, на "нормальной" ISA-16 есть /IOCS16, который работает аналогично /MEMCS16. А тут что-то не нахожу.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Vic3Dexe wrote: Получается, bus steering не работает?
А я не знаю, как должно быть правильно. В смысле, такое поведение роботрона - нормально или не нормально. С одной стороны - почти все стандартные его платы работают - MDA, контроллер FDD, расширитель памяти. Правда они с EFS слотами, а значит в теории 16-битные, но например у видеокарты я глазами не вижу, чтоб использовалось что-то кроме ISA8. В системном BIOS используется только байтовый вывод в порты, я посмотрел. Не знаю, как должно быть.
Vic3Dexe wrote: А /MEMCS16 на землю не закорочен случайно?
И, кстати, на "нормальной" ISA-16 есть /IOCS16, который работает аналогично /MEMCS16. А тут что-то не нахожу.
/MEMCS16 - проверю чуть позже, но расширитель памяти то как-то работает (на материнке 256 кб распаяно, расширитель расширяет до 640 кб). Хотя может быть и расширитель восьмибитный тоже.

UPD: Нет. /MEMCS16 не на земле.
Last edited by Tronix on 22 Sep 2018 22:38, edited 1 time in total.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Если я чего правильно понимаю, то весь замес происходит где-то здесь. И вроде бы IORW (это я так понимаю /IOR & /IOW) там участвует в процессе, только я пока не могу вкурить - то ли когда он присутствует, то ли когда он отсутствует....
You do not have the required permissions to view the files attached to this post.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

Да, да, я вчера тоже туда смотрел, но голова не работала.
А сейчас по свежим размышлениям:
1. Если /IOCS16 нет, то ВСЕ карты считаются 16-битными по IO-части.
2. Это подтверждается схемой:
- когда /IOWR или /IORD активны (т.е. в нуле), на D7.2 приходит 0
- в это же время /MEMR и /MEMW неактивны по понятным причинам, т.е. в 1
- тогда D32.6 = 0, следовательно D40.6 = D7.1 = 0, и D7.3 = D63.4 = 0
- тогда D63.6 = 1, и D22 курит бамбук

А вот для обменов с памятью там все зависит от /MEMCS16, как и должно быть.
Надо допиливать, похоже.

ps Можно проверить - попробовать выставить режим родной MDA с помощью out dx,ax. По идее, работать НЕ должно, если она не использует 16-битную часть шины.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Да, похоже. Есть какие-нибудь соображения как с минимальными потерями допилить /IOCS16?
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

Ну, во-1, это будет чисто механический переключатель, т.е., либо все карты 8-битные, либо все 16-битные. Перемычка или DIP-switch.
Во-2, на D32.13 нужно подать не /MEMW, а (/XIOW & /MEMW). Верх этого клубка отвечает за разворот D22, так что, по идее, подраться с DMA оно не должно.
В-3, на D7.2 нужно подать не как сейчас, а аналогично связке /MEMW, /MEMR и /MEMCS16, которая приходит на D7.1.

Не найду, где берется /MEMADRSEL...

зы В-4, цепочка D-триггеров ниже D22 и вправо - это сам bus-steering, т.е. задержка при выдаче младшей, потом старшей половины.
При это D32.6, заведенная на D14.10, все портит - при IO-обменах там будет 0, и вся эта халабуда не запустится. Так что надо будет оторвать и завести туда (D32.6 | ~(/XIORD & /XIOWR)).

Вобщем пока что наброски, я это за 5 минут не придумаю.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

Приблизительно так.
Не рисовал верхнюю часть (вход D32.13), там тривиальное AND с /XIOWR.
Не продумал пока отвод на D32.2, запутался в этих AEN...
Провода зеленым и элементы без номера - новые.
You do not have the required permissions to view the files attached to this post.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Спасибо, я бы сам не додумался. Буду ждать продолжения, если оно будет, а потом пробовать применить на практике.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

Продолжение точно будет, потому что я уже нашел 2 ошибки - вчера торопился и на коленке это рисовал.
Но дабы снова не налажать, продолжу завтра, ночная смена мозговой деятельности не способствует :)
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

Tronix wrote:И вроде бы IORW (это я так понимаю /IOR & /IOW)
Куда мы оба смотрели? IORW = ~(/IOR & /IOW)
Т.е. именно так, как включены /MEMW и /MEMR, и на D7.3 ноль будет при отсутствии каких-либо обменов вообще, что логично.
Так что вся теория идет лесом. Надо думать дальше.
Mixa64
Doomed
Posts: 478
Joined: 25 Aug 2009 07:02
Location: Москва

Re: Robotron EC1834

Post by Mixa64 »

По ссылке из первого поста http://ec1834.de/personalcomputer/index.php есть Handbuch, там в разделе 3.4.2 (стр. 94, последний абзац) рассказывается, какие типы обмена по внешней шине реализованы и как они работают. Если адаптер отвечает сигналом /MEMCS16, то обмен идет по обеим половинам, в соответствии с сигналами A0 и /BHE процессора. Если /MEMCS16 неактивен, то происходит байтовый обмен по нижней половине шины. При этом, если со стороны процессора обмен 16-разрядный, он преобразуется в два цикла шины по младшей половине. Это всё обращения к памяти.
Обращение к УВВ работает по-другому. Если оно байтовое, то происходит по младшей половине. Но если команда IN или OUT 16-разрядная, то внешний обмен также 16-разрядный, без преобразования в два 8-разрядных цикла.

(Похожая тема уже на форуме подымалась, но Lavr, по своему обыкновению не разобравшись в тонкостях, встрял и рациональное зерно превратил в клоунаду.)
Last edited by Mixa64 on 25 Sep 2018 03:30, edited 2 times in total.