А вот с портами
V40 ошибочка у меня вышла, и смутило меня то, что как-то сразу,
без настройки
собственных Портов Ввода/Вывода в
ROM BIOS обращаются
почему-то к
регистру контроллера прерываний 2, хотя ещё и
КП 1 не настроен.
Но, видимо, идея здесь такая, что
КП 2 -
внешний, а
КП 1 -
внутренний, и пока внутренний не настроен и не подключен в
пространство УВВ, то
КП 2 надо "
попросить" не мешать.
А теперь немного о том, как настраиваются УВВ, интегрированные
на кристалле процессора
V40. А на нём имеются:
Timer/counter unit (TCU) таймер типа ВИ54
Serial control unit (SCU) последовательный порт типа ВВ51
Interrupt control unit (ICU) контроллер прерываний типа PD71059
DMA control unit (DMAU) контроллер ПДП типа PD71071/71037И после старта процессора
V40 им надо программно указать их адреса
в
пространстве УВВ, подключить к ним некоторые мультиплексированные
внешние выводы, и только потом уже настраивать их по заданным адресам,
как это обычно и делает
процедура POST.
В пространстве УВВ у процессора
V40 есть зарезервированная область
по адресам:
0FF00H - 0FFFFH, называемая
System I/O Area (
Системная
область Ввода/Вывода).
Вот так она расположена
на карте портов Ввода/Вывода.
И в этой области есть
12 регистров, расположенных по адресам
0FFF0H -
0FFFFH, которые определяют, где в пространстве УВВ процессора
V40будут расположены его
встроенные УВВ, и как они будут подключены к
внешним выводам процессора.
-------------Эти устройства (все 4) всегда располагаются в
блоке 256 байт, а где этот
блок расположен в
65536 доступных адресах I/O процессора V40, определяет
регистр OPHA. Фактически, если к портам обращаться командой
OUT DX,AL ,
то
OPHA = DH.
А вот значение
DL для каждого
порта I/O задают следующие регистры:
0FFFBH DULA - контроллер ПДП
0FFFAH IULA - контроллер прерываний 1
0FFF9H TULA - таймер
0FFF8H SULA - последовательный адаптер.То есть, если размещать эти порты там, где они находятся у
IBM PC, c
адреса 0000H, то
последовательный адаптер никогда не попадет на нужное
для
карты портов I/O IBM PC место. Впрочем, это, возможно, и правильно,
поскольку
встроенный в процессор V40 последовательный адаптер - аналог
8251, а в
IBM PC испльзуются
8250, так что программной совместимости на
низком уровне всё-равно не будет.
Ну а теперь, как происходят эти
настройки встроенных УВВ процессора
V40в программе
ROM BIOS.
Сделано это довольно оригинально, почему я с первого разу и прошляпил
эти настройки, а смысл понял уже под отладчиком.
Со
смещения 835FН в сегменте ROM BIOS расположены значения для всех
12
регистров настройки портов I/O процессора V40:
Поскольку есть
регистры неиспользуемые (
reserved), им соответствуют
байтыFF - их не пишут в порты, а просто пропускают:
В результате получаются следующие
настройки портов I/O процессора
V40:
Видно, что
Serial control unit -
последовательный адаптер перекрыл адреса,
характерные для
Math Coprocessor-а, которого на плате, впрочем, и нет...
Ну а что делают остальные настройки в этих системных регистрах, можно подробно
посмотреть в мануале на процессор
NEC V40 uD70208L-8, который доступен в сети.
PS. Кстати, сама плата в данный момент имеет вот такой вид (ПЗУ снимал для чтения):
Увеличить