Запустить 8086 в минимальной обвязке?

8-битные микроконтроллеры и микропроцессоры от Intel и их клоны, а также компьютеры на них построенные

Moderator: Shaos

VGrad
Maniac
Posts: 208
Joined: 18 Nov 2013 15:15
Location: все оттуда ;)

Post by VGrad »

НетЪ.
99% игрушек напрямую работают с видеопамятью.
И очень много программ так же (даже в текстовом режиме) работают напрямую с видеопамятью.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Vasiliy wrote:А если оставить таблицу векторов прерываний и адреса портов ввода/вывода неизменными?
В качестве видеоадаптера использовать TFT дисплей 320х240 с ним довольно легко работать?
Будет хоть какая то совместимость?
Я понимаю что обработчики прерываний BIOS нужно почти все переписать под этот дисплей.
Будет совместимость на уровне портов в/в и вызовов BIOS.
Но, действительно, даже в текстовом режиме многие программы обращаются напрямую к видео-ОЗУ.
Я сам так писал - это же просто программно: заполняешь область последовательностью символ/аттрибут.
Многие программы так и делают.
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Post by Vic3Dexe »

Извините, что поднимаю старую тему, но все-таки интересует вопрос сопряжения 8086 с 8-битной ISA.

Как я понимаю, в случае обмена словом придется генерировать 2 отдельных цикла внешней схемой (что 8088 делает из коробки). Т.е., для макс-конфигурации примерно так:

Схема перехватывает сигналы S0-S2 между процом и 8288 (ну или реализацией последнего на плисине - непринципиально). Далее

1. Ловим факт word-операции (A0 = 0, BHE = 0)
2. Выставляем процу RDY = 0, чтобы он не закончил цикл раньше положенного.
3. Имитируем окончание цикла младшего байта путем подъема S0-S2 в единицы, это нужно сделать по факту READY = 1 на шине (т.е. от девайса), но не ранее T3. Так как нам нужно сохранить оригинальные значения S0-S2 для второго цикла, проще всего сделать Sx OR 1, после снятия единицы, сигналы восстановят первоначальные значения.
4. Ждем T4, как дождались - коммутируем шинные D0-D7 на D8-D15 проца, выставляем на шину A0 = 1, и снимаем единицу, подпирающую S0-S2, начиная второй цикл.
5. В T2 выставялем RDY = 0, его и READY с шины заводим на проц/8284 через AND.
6. Профит :)

Это вообще похоже на правду, или мне пора отдыхать?

Работать, конечно, не будет. Хотя бы потому, что во втором цикле снова будет выдано ALE, а на мультиплексных ногах проца к этому моменту что угодно, но не адрес.

Следовательно, нужно либо во втором цикле подавлять ALE на адресных защелках внешней схемой, либо иметь два ALE - один для проца, другой для шины.

В связи с чем возникает вопрос: зачем на шине ALE вообще? Ведь туда уже поступают демультиплексированные A/D.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Я как-то из текста не осознал точно, правильно тут всё или неправильно,
но так понял, что речь идёт о перестановщике байтов.

Если это так, то процесс его работы достаточно подробно описан по ссылкам:
http://www.hackersrussia.ru/Cards/Develop/isa.htm
http://ru.osdev.wikia.com/wiki/ISA



Shaos, кстати, давно хотел спросить, как звучит термин перестановщик байтов
в зарубежной технической литературе? shuffler (тасовщик, перестановщик) - нет?
iLavr
Mixa64
Doomed
Posts: 480
Joined: 25 Aug 2009 07:02
Location: Москва

Post by Mixa64 »

Vic3Dexe wrote: Как я понимаю, в случае обмена словом придется генерировать 2 отдельных цикла внешней схемой (что 8088 делает из коробки).
Проще договориться с самим собой, что по внешней шине память никогда не будет адресоваться, только IO. А насчет IO - вряд ли в реале есть грязные хаки обращения к соседним 8-бит портам как к одному 16-бит.
зачем на шине ALE вообще? Ведь туда уже поступают демультиплексированные A/D.
А хрен его знает. Вытаскивать локальный сигнал на общую шину - моветон. Но, что размножилось де факто - то и размножилось.
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Lavr wrote:Я как-то из текста не осознал точно, правильно тут всё или неправильно,
но так понял, что речь идёт о перестановщике байтов.

Если это так, то процесс его работы достаточно подробно описан по ссылкам:
http://www.hackersrussia.ru/Cards/Develop/isa.htm
http://ru.osdev.wikia.com/wiki/ISA

Shaos, кстати, давно хотел спросить, как звучит термин перестановщик байтов
в зарубежной технической литературе? shuffler (тасовщик, перестановщик) - нет?
Первый раз про это услышал - ни разу не встречал такого в "зарубежной технической литературе"...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:Первый раз про это услышал - ни разу не встречал такого в "зарубежной технической литературе"...
Вот интересно - почему и спрашиваю... специально потратил я время и погуглил - но так и
не нашел ни этого термина, ни его аналога.

В русской Вике про ISA - он есть, в английском аналоге - его нет... :wink:
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Post by Vic3Dexe »

Lavr wrote:речь идёт о перестановщике байтов.
Да, походу именно он. Однако, по первой же ссылке ISA-16. Тут вроде ISA-8 подразумевалась в обсуждении, у которой нет MEMCS16 и т.п.
что по внешней шине память никогда не будет адресоваться
Эээ... почему? А видяха?
Да и какая, собственно, разница, память или ИО?
вряд ли в реале есть грязные хаки обращения к соседним 8-бит портам как к одному 16-бит
Почему хак? Обычное дело, тот же контроллер CRT (индексный регистр по 3D4, данных по 3D5).

Code: Select all

mov dx,3D4h
mov ax,0FACEh
out dx,ax
А хрен его знает.
Я имел ввиду - он вообще где-то используется на каких-нибудь платах? Как он вообще там работает? По АЛЕ адрес от проца стробируется в регистры, а на шине что стробируется? Предыдущий адрес? Или надежда на то, что регистры мгновенно устаканят новый адрес на выходе?
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Vic3Dexe wrote:
Lavr wrote:речь идёт о перестановщике байтов.
Да, походу именно он. Однако, по первой же ссылке ISA-16. Тут вроде ISA-8 подразумевалась
в обсуждении, у которой нет MEMCS16 и т.п.
А ISA-8, мне думается, атавизм из прошлого, под который и сделали 8088 - поэтому ему так
и удобно лезть в 8-битные порты.

А 8086 - полностью 16-разрядный по ШД, поэтому везде и пишут, что любую транзакцию по
шине он начинает, как 16-разрядную
, а дальше - как ему ответят...
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Post by Vic3Dexe »

Lavr wrote: А ISA-8, мне думается, атавизм из прошлого, под который и сделали 8088 - поэтому ему так
и удобно лезть в 8-битные порты.

А 8086 - полностью 16-разрядный по ШД, поэтому везде и пишут, что любую транзакцию по
шине он начинает, как 16-разрядную
, а дальше - как ему ответят...
Так, кажется, непонимание :)

ISA-16 появилась под 286 (по вашей же ссылке на осьдев.вики), т.е., после и 88 и 86. Т.о. предполагалась, а в XT, как я понимаю, и была реализована ISA-8 при 16-битной ШД у проца. PC jr (8088) была цельновосьмибитной.

Я могу что-то путать в наименованиях, но ISA-16 (286) не могла появиться до ISA-8 (86/88 ).

Ну и как бы сути моего вопроса это не отменяет. Повторюсь - прав ли я, что для сопряжения 16 бит 86 проца с ISA-8 достаточно выполнить 2 цикла по приведенному мной алгоритму?
Понимаю, что читать по псевдокоду сложно, как будет время - переварю в верилог и дам схему.

Главное - чего с BALE делать-то? Нужен он на шине реально, или можно положить? Если не сложно, ткните носом в читабельную схему CGA или хоть мультяшки какой. Короче, чего угодно под ISA-8, но реально существующего, а не хенд-мейд в 20xx г.
То, что есть у меня, нечитабельно даже на трезвую.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Vic3Dexe wrote:Так, кажется, непонимание :)
Действительно, непонимание... и - с Вашей стороны.
Vic3Dexe wrote:ISA-16 появилась под 286 (по вашей же ссылке на осьдев.вики), т.е., после и 88 и 86. Т.о.
предполагалась, а в XT, как я понимаю, и была реализована ISA-8 при 16-битной ШД у проца.
PC jr (8088) была цельновосьмибитной.
Я могу что-то путать в наименованиях, но ISA-16 (286) не могла появиться до ISA-8 (86/88 ).
А я ни слова не сказал про ISA-16. :o Читаем:
Lavr wrote:А 8086 - полностью 16-разрядный по ШД, поэтому везде и пишут, что любую транзакцию по
шине он начинает, как 16-разрядную
, а дальше - как ему ответят...
И это - действительно так, а причем тут ISA-16?

А 8088 появился позже 8086, чтобы обеспечить как раз совместимость с большим количеством
существующих 8-битных периферийных устройств.
И поэтому ему действительно удобно работать с 8-биной ISA. И все PC-юки делались всё же на 8088,
а клоны PC на 8086 гораздо более редки.

8088 - он такой же 16-разрядный внутри, как и 8086, но шина данных сделана 8-разрядной,
поэтому он работает с 16 битами в два обращения, и я не назвал бы его "цельновосьмибитным".
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Post by Vic3Dexe »

Lavr wrote: И это - действительно так, а причем тут ISA-16?
Притом, что Ваша ссылка http://www.hackersrussia.ru/Cards/Develop/isa.htm описывает перестановщик байтов именно для ISA-16, о ISA-8 там нет ни слова.
Кроме того,
Lavr wrote: ISA-8, мне думается, атавизм из прошлого
но мы-то как раз ее и обсуждаем. Вариантов PC/XT/jr и пр. с ISA-16 я не знаю. Были?
Lavr wrote: а клоны PC на 8086 гораздо более редки.
Да, мой косяк, я почему-то думал, что оригинальная XT была на 86.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Vic3Dexe wrote:
Lavr wrote: И это - действительно так, а причем тут ISA-16?
Притом, что Ваша ссылка http://www.hackersrussia.ru/Cards/Develop/isa.htm описывает
перестановщик байтов именно для ISA-16, о ISA-8 там нет ни слова.
Будьте всё же внимательны. Я дал Вам 3 ссылки:
1. перестановщик байтов.
Можете читать любые другие материалы про перестановщик байтов .

Но сам я читал про это устройство - перестановщик байтов - на этих страницах:

2. http://www.hackersrussia.ru/Cards/Develop/isa.htm
3. http://ru.osdev.wikia.com/wiki/ISA

поскольку здесь принцип работы этого устройства описан весьма подробно.

И я ничего не говорил Вам про шины ISA по ссылкам - можете про них не читать.

Я надеюсь, мы сойдемся во мнении, что в традиционном РС на 8088 с ISA-8 никакой
перестановщик байтов не нужен?
Поэтому там, где идет речь про ISA-8, об этом устройстве ничего и не пишут.

И как я понял из этого топика, ни Shaos, ни Mixa64 об этом устройстве ничего и не слышали.
Нужда в нём действительно возникает там, где используется 8086 с его полной 16-разрядной ШД.
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Post by Vic3Dexe »

Lavr wrote: Будьте всё же внимательны. Я дал Вам 3 ссылки:
Проехали, ибо не о том говорим. :)
Lavr wrote: Я надеюсь, мы сойдемся во мнении, что в традиционном РС на 8088 с ISA-8 никакой
перестановщик байтов не нужен?
Да, но только потому, что в 8088 этот "перестановщик" встроен. Два цикла вместо одного при операциях со словом.
Lavr wrote: Поэтому там, где идет речь про ISA-8, об этом устройстве ничего и не пишут.
ISA-8 не подразумевает 8088, например, тот же Поиск-2. Смотрел (тупил) в его схему, но так как там этот момент сделан на РТ, прошивок которых нет, ничерта не понял :)

зы За ссылку по ISA-16, кстати, спасибо. В копилочку.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Vic3Dexe wrote:Проехали, ибо не о том говорим. :)
...
зы За ссылку по ISA-16, кстати, спасибо. В копилочку.
Ну проехали - так проехали. Будьте здоровы. Помолчим на эту тему.
iLavr