nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 11:35



Reply to topic  [ 84 posts ]  Go to page 1, 2, 3, 4, 5, 6  Next
Robotron EC1834 
Author Message
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Еще прошлой зимой у меня появились платы от 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 как бы и нет. Проведу ряд экспериментов.


_________________
https://t.me/tronix_blog


Last edited by Tronix on 23 Sep 2018 10:09, edited 1 time in total.



21 Sep 2018 11:39
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Провел несколько простейших экспериментов: сделал на ISA-карте с CPLD два порта - 0x3a0 и 0x3a1. Оба порта доступны на запись и чтение. При записи сохраняют байт данных, при чтении отдают записанный ранее байт. На семисегментном индикаторе высвечивается адрес порта ввода-вывода, куда произошла запись. Записывал в порт данные словами:

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

На Поиске-2 на семисегментном индикаторе высвечивается 03A1 и комп виснет. А на роботроне высвечивается 03A0. Соответственно, данные в порт 0x3a1 не записываются. Записывается только младшая часть в 0x3a0.
Что с этим делать - непонятно.

_________________
https://t.me/tronix_blog


Last edited by Tronix on 22 Sep 2018 02:42, edited 1 time in total.



22 Sep 2018 01:25
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
Я то думал, что MSX/MS утрясал свой стандарт годами. И инженера от 3-х фирм не читали документы стандарта :D

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

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

P.S.

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

Ну это все лирика. А так-то сейчас конечно в разы проще стало разгре.бать "завалы" (жадность) двигателей прогресса тех лет :D

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


22 Sep 2018 02:01
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Вообщем да, посмотрел BIOSы видеокарт - у почти всех используется out dx,ax. Хотя нашел одну EGA, в которой идут пересылки байтами out dx,al:

Image

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

Так что нужно как-то заворачивать байты при out dx,ax и in ax,dx для VGA.....

_________________
https://t.me/tronix_blog


22 Sep 2018 07:20
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Tronix wrote:
На Поиске-2 на семисегментном индикаторе высвечивается 03A1 и комп виснет. А на роботроне высвечивается 03A0. Соответственно, данные в порт 0x3a1 не записываются. Записывается только младшая часть в 0x3a0.
Что с этим делать - непонятно.


Получается, bus steering не работает? А /MEMCS16 на землю не закорочен случайно?
И, кстати, на "нормальной" ISA-16 есть /IOCS16, который работает аналогично /MEMCS16. А тут что-то не нахожу.


22 Sep 2018 14:41
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Vic3Dexe wrote:
Получается, bus steering не работает?

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


/MEMCS16 - проверю чуть позже, но расширитель памяти то как-то работает (на материнке 256 кб распаяно, расширитель расширяет до 640 кб). Хотя может быть и расширитель восьмибитный тоже.

UPD: Нет. /MEMCS16 не на земле.

_________________
https://t.me/tronix_blog


Last edited by Tronix on 22 Sep 2018 22:38, edited 1 time in total.



22 Sep 2018 21:23
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Если я чего правильно понимаю, то весь замес происходит где-то здесь. И вроде бы IORW (это я так понимаю /IOR & /IOW) там участвует в процессе, только я пока не могу вкурить - то ли когда он присутствует, то ли когда он отсутствует....


Attachments:
robo.png
robo.png [ 17 KiB | Viewed 14888 times ]

_________________
https://t.me/tronix_blog
22 Sep 2018 21:52
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Да, да, я вчера тоже туда смотрел, но голова не работала.
А сейчас по свежим размышлениям:
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-битную часть шины.


23 Sep 2018 05:56
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Да, похоже. Есть какие-нибудь соображения как с минимальными потерями допилить /IOCS16?

_________________
https://t.me/tronix_blog


23 Sep 2018 06:16
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Ну, во-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 минут не придумаю.


23 Sep 2018 06:45
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Приблизительно так.
Не рисовал верхнюю часть (вход D32.13), там тривиальное AND с /XIOWR.
Не продумал пока отвод на D32.2, запутался в этих AEN...
Провода зеленым и элементы без номера - новые.


Attachments:
1.png
1.png [ 43.31 KiB | Viewed 14842 times ]
23 Sep 2018 09:16
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Спасибо, я бы сам не додумался. Буду ждать продолжения, если оно будет, а потом пробовать применить на практике.

_________________
https://t.me/tronix_blog


23 Sep 2018 09:30
Profile
Doomed

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


24 Sep 2018 00:42
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Tronix wrote:
И вроде бы IORW (это я так понимаю /IOR & /IOW)

Куда мы оба смотрели? IORW = ~(/IOR & /IOW)
Т.е. именно так, как включены /MEMW и /MEMR, и на D7.3 ноль будет при отсутствии каких-либо обменов вообще, что логично.
Так что вся теория идет лесом. Надо думать дальше.


25 Sep 2018 01:56
Profile
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Reply with quote
По ссылке из первого поста 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.



25 Sep 2018 03:25
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 84 posts ]  Go to page 1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.