Потребовалось соорудить утилитку для заполнения карт портов, т.е. т.к. в моей схеме полная адресация, а любой порт может вставать на любое и даже на несколько мест. От фиксации портов в прошивке отказался. Получается, что нужно каждый раз заполнять таблицы портов ula по 64к на чтение и запись.
У меня получилось примерно следующее.
пример:
поpт (до 256 портов, значения в примере даны условно, пусть от 00го до FF)
#0000 = 00 - в данном случае заполняется только по адресу 0000
#xxEE = A1 - заполняется все и по старшим адресам (00-FF)
#BFDF = DF - в BFDF
#BFFD = DD - в BFFD
#xxFF = FF - заполняется все и по старшим адресам (00-FF)
#xxFE = 88 - заполняется все и по старшим адресам (00-FF)
#01FE = 90 - в 01FE, т.е. после предыдущего, который перекрывает этот диаппазон
два списка, два дампа
лучше побитно, т.к. иногда частичная адресация именно побитная, одновременно и в старших и в младших адресах.
тоже самое, но побитно
#0000000000000000 = 00
#xxxxxxxx11101110 = A1
и т.д., но в случае с таким значением порта
#xxxxx10x11x01110 = A2, естественно, что все проблемы в связи с возможным перекрытием диаппазона малозначительны по первому времени.
еще
#0000 0000 0000 0000 = 00
а для
#0000 000x 0000 000x = 01
надо записать "01" в
#0000 0000 0000 0000
#0000 0000 0000 0001
#0000 0001 0000 0000
#0000 0001 0000 0001
значение данное раньше перепишится, поэтому в списке портов адресуемые полностью должны записываться в дамп последними.
По началу думал, что проще сформировать список портов из двух значений. Первое, это номер порта, а второе, значение задействованых бит. Возможно, некоторые изыски излишни, но..
Вот, допустим, для #0000, битфлаг = FFFF, т.е. все биты задействованы.
Дальше больше, из всего этого надо будет нарисовать аля сетапбиос, но это уже другая история, а пока застрял на алгоритме.