Добрый день. Возник такой вопрос по этой старой шине, долго гуглил но что то не доконца разобрался.
Возьмем для определенности 8битную ее версию и компьютер под управлением 80368. На плату внешнего устройства заведены 20 линий адреса + сигналы типа Мем_рид и ИО_рид. Как я понимаю, на все слоты (предположим, на материнке их 5) выведены одни и те же линии шины, то есть мы получаем как бы 2^20 = 1 мегабайт пространства, выделенного на все иса-устройства. Подскажите, во-первых - этот мег памяти - где он на карте памяти? Ну то есть, мы же можем туда завести А0-А19 от процессора, а можем, допустим, А12-А31 - то есть в первом случае это будет первый мегабайт всех адресов памяти компа, во втором - последний. Второй вопрос - какие есть ограничения на декод адреса, кроме как "чтоб не конфликтовали". Я почему-то много где видел.. что-то вроде "декодируйте А0-А9", то есть 10 бит. Я так понимаю, это сказано в отношении пространства ИО, все таки, но не понятно почему такое ограничение, и что делать с остальными линиями.
Может, я какой то очень важный момент проглядел, но вроде бы пространство ИО в 386м уже 16-битное, то есть я могу сделать mov ax, FFFF in ax, dx Пусть из него какая то часть занята устройствами на мат. плате типа сис таймера - но FFFF-3FF это ж целых 64512 портов ИО, где они?
И последний пока вопрос - больше практический - ИСА же никак не сообщает об устройствах системе, как же биос узнает какие установлены флопики и харды, чтобы загрузиться с них?
Заранее благодарен, надеюсь поможете пролить свет на архитектуру. Вообще, задумал небольшой проект с целью самообразования и заодно в рамках курса в универе - собрать ИСА контроллер для флешки (SD-карточки). Предполагаю сделать его эмулятором флопика или харда, чтобы старенький комп просто решил что в него воткнули новый хард и спокойно с него загрузился.
|