Запустить 8086 в минимальной обвязке?
Moderator: Shaos
-
- Maniac
- Posts: 208
- Joined: 18 Nov 2013 15:15
- Location: все оттуда ;)
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Будет совместимость на уровне портов в/в и вызовов BIOS.Vasiliy wrote:А если оставить таблицу векторов прерываний и адреса портов ввода/вывода неизменными?
В качестве видеоадаптера использовать TFT дисплей 320х240 с ним довольно легко работать?
Будет хоть какая то совместимость?
Я понимаю что обработчики прерываний BIOS нужно почти все переписать под этот дисплей.
Но, действительно, даже в текстовом режиме многие программы обращаются напрямую к видео-ОЗУ.
Я сам так писал - это же просто программно: заполняешь область последовательностью символ/аттрибут.
Многие программы так и делают.
iLavr
-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Извините, что поднимаю старую тему, но все-таки интересует вопрос сопряжения 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.
Как я понимаю, в случае обмена словом придется генерировать 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.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Я как-то из текста не осознал точно, правильно тут всё или неправильно,
но так понял, что речь идёт о перестановщике байтов.
Если это так, то процесс его работы достаточно подробно описан по ссылкам:
http://www.hackersrussia.ru/Cards/Develop/isa.htm
http://ru.osdev.wikia.com/wiki/ISA
Shaos, кстати, давно хотел спросить, как звучит термин перестановщик байтов
в зарубежной технической литературе? shuffler (тасовщик, перестановщик) - нет?
но так понял, что речь идёт о перестановщике байтов.
Если это так, то процесс его работы достаточно подробно описан по ссылкам:
http://www.hackersrussia.ru/Cards/Develop/isa.htm
http://ru.osdev.wikia.com/wiki/ISA
Shaos, кстати, давно хотел спросить, как звучит термин перестановщик байтов
в зарубежной технической литературе? shuffler (тасовщик, перестановщик) - нет?
iLavr
-
- Doomed
- Posts: 480
- Joined: 25 Aug 2009 07:02
- Location: Москва
Проще договориться с самим собой, что по внешней шине память никогда не будет адресоваться, только IO. А насчет IO - вряд ли в реале есть грязные хаки обращения к соседним 8-бит портам как к одному 16-бит.Vic3Dexe wrote: Как я понимаю, в случае обмена словом придется генерировать 2 отдельных цикла внешней схемой (что 8088 делает из коробки).
А хрен его знает. Вытаскивать локальный сигнал на общую шину - моветон. Но, что размножилось де факто - то и размножилось.зачем на шине ALE вообще? Ведь туда уже поступают демультиплексированные A/D.
-
- Admin
- Posts: 24011
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Первый раз про это услышал - ни разу не встречал такого в "зарубежной технической литературе"...Lavr wrote:Я как-то из текста не осознал точно, правильно тут всё или неправильно,
но так понял, что речь идёт о перестановщике байтов.
Если это так, то процесс его работы достаточно подробно описан по ссылкам:
http://www.hackersrussia.ru/Cards/Develop/isa.htm
http://ru.osdev.wikia.com/wiki/ISA
Shaos, кстати, давно хотел спросить, как звучит термин перестановщик байтов
в зарубежной технической литературе? shuffler (тасовщик, перестановщик) - нет?
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Вот интересно - почему и спрашиваю... специально потратил я время и погуглил - но так иShaos wrote:Первый раз про это услышал - ни разу не встречал такого в "зарубежной технической литературе"...
не нашел ни этого термина, ни его аналога.
В русской Вике про ISA - он есть, в английском аналоге - его нет...

iLavr
-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Да, походу именно он. Однако, по первой же ссылке ISA-16. Тут вроде ISA-8 подразумевалась в обсуждении, у которой нет MEMCS16 и т.п.Lavr wrote:речь идёт о перестановщике байтов.
Эээ... почему? А видяха?что по внешней шине память никогда не будет адресоваться
Да и какая, собственно, разница, память или ИО?
Почему хак? Обычное дело, тот же контроллер CRT (индексный регистр по 3D4, данных по 3D5).вряд ли в реале есть грязные хаки обращения к соседним 8-бит портам как к одному 16-бит
Code: Select all
mov dx,3D4h
mov ax,0FACEh
out dx,ax
Я имел ввиду - он вообще где-то используется на каких-нибудь платах? Как он вообще там работает? По АЛЕ адрес от проца стробируется в регистры, а на шине что стробируется? Предыдущий адрес? Или надежда на то, что регистры мгновенно устаканят новый адрес на выходе?А хрен его знает.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
А ISA-8, мне думается, атавизм из прошлого, под который и сделали 8088 - поэтому ему такVic3Dexe wrote:Да, походу именно он. Однако, по первой же ссылке ISA-16. Тут вроде ISA-8 подразумеваласьLavr wrote:речь идёт о перестановщике байтов.
в обсуждении, у которой нет MEMCS16 и т.п.
и удобно лезть в 8-битные порты.
А 8086 - полностью 16-разрядный по ШД, поэтому везде и пишут, что любую транзакцию по
шине он начинает, как 16-разрядную, а дальше - как ему ответят...
iLavr
-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Так, кажется, непонимание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 г.
То, что есть у меня, нечитабельно даже на трезвую.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Действительно, непонимание... и - с Вашей стороны.Vic3Dexe wrote:Так, кажется, непонимание
А я ни слова не сказал про ISA-16.Vic3Dexe wrote:ISA-16 появилась под 286 (по вашей же ссылке на осьдев.вики), т.е., после и 88 и 86. Т.о.
предполагалась, а в XT, как я понимаю, и была реализована ISA-8 при 16-битной ШД у проца.
PC jr (8088) была цельновосьмибитной.
Я могу что-то путать в наименованиях, но ISA-16 (286) не могла появиться до ISA-8 (86/88 ).

И это - действительно так, а причем тут ISA-16?Lavr wrote:А 8086 - полностью 16-разрядный по ШД, поэтому везде и пишут, что любую транзакцию по
шине он начинает, как 16-разрядную, а дальше - как ему ответят...
А 8088 появился позже 8086, чтобы обеспечить как раз совместимость с большим количеством
существующих 8-битных периферийных устройств.
И поэтому ему действительно удобно работать с 8-биной ISA. И все PC-юки делались всё же на 8088,
а клоны PC на 8086 гораздо более редки.
8088 - он такой же 16-разрядный внутри, как и 8086, но шина данных сделана 8-разрядной,
поэтому он работает с 16 битами в два обращения, и я не назвал бы его "цельновосьмибитным".
iLavr
-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Притом, что Ваша ссылка http://www.hackersrussia.ru/Cards/Develop/isa.htm описывает перестановщик байтов именно для ISA-16, о ISA-8 там нет ни слова.Lavr wrote: И это - действительно так, а причем тут ISA-16?
Кроме того,
но мы-то как раз ее и обсуждаем. Вариантов PC/XT/jr и пр. с ISA-16 я не знаю. Были?Lavr wrote: ISA-8, мне думается, атавизм из прошлого
Да, мой косяк, я почему-то думал, что оригинальная XT была на 86.Lavr wrote: а клоны PC на 8086 гораздо более редки.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Будьте всё же внимательны. Я дал Вам 3 ссылки:Vic3Dexe wrote:Притом, что Ваша ссылка http://www.hackersrussia.ru/Cards/Develop/isa.htm описываетLavr wrote: И это - действительно так, а причем тут ISA-16?
перестановщик байтов именно для ISA-16, о ISA-8 там нет ни слова.
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
-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Проехали, ибо не о том говорим.Lavr wrote: Будьте всё же внимательны. Я дал Вам 3 ссылки:

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

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