Цитата:
В разделе про таймер пропал пример перепрограммирования.
Пример, будучи практической, а не теоретической частью, перенесён в раздел практики:
http://wiki.osdev.ru/index.php/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80%D0%B0Цитата:
А также коментарий то что запись в регистр значения приводит к делению частоты. Как помне одной этой строчки достаточно что-бы все понять нежели чем, то как сейчас это описанно. А сейчас хотя и соответсвует обще принетым документом но слишком раздут, а внятности не вносит.
Ну, лично мне желательно знать, как именно та или иная железяка работает, а одна строчка про деление частоты этого не даёт (например, из неё не будет видно, какова продолжительность высокого и низкого уровней на выходе таймера или чем различаются режимы его работы). Хотя поясняющую строчку про деление добавлю чуть позже.
Цитата:
Тоже исчезновение. По поводу практика определение памяти в изночальном описании было пояснение насчет PAMS или SMAP и цифровая константа (компиляторы понимают по разному строки в регистрах). Народ путается
Не знал, что FASM себя не по-человечески ведёт, хотя не удивлён: слишком уж большой разнобой в ассемблерах для ПК. Ну да ладно, это лирика, а пояснение добавим.
Цитата:
По поводу портов и регистров. Предлогаю пока договится писать так.
Если идет обращение вида
mov dx,адресс
out dx,al
mov dx,адресс
in al,dx
mov [адресс],ax
mov ax, [адресс]
То говорить о портах.
А вот регистры это то что задается через индексный порт
Не годится. Порт -- это термин Intel, означающий то, к чему обращаются инструкциями IN и OUT, но никак не командами доступа к памяти (например, MOV). Но даже к ним документация часто применяет термин "регистр". Вот, например, цитата из спецификации на PCI:
Two DWORD I/O locations are used to generate configuration transactions for PC-AT
compatible systems. The first DWORD location (CF8h) references a read/write register
that is named CONFIG_ADDRESS. The second DWORD address (CFCh) references a
read/write register named CONFIG_DATA.Как видите, "ячейки ввода-вывода", т.е. порты CF8h и CFCh дают доступ к регистрам CONFIG_ADDRESS и CONFIG_ADDRESS.
Или возьмём, например, контроллер прерываний. У него три программно доступных регистра (IRR, ISR и IMR), но доступ к ним осуществляется через два порта, хотя индексного порта в явном виде у PIC нет. Ну и так далее.
В общем, лично я предпочитаю называть вещи так, как они называются в соответствующих спецификациях. Говорит спецификация на шину PCI о регистрах -- значит, это регистры, хоть доступ к ним осуществляется через порты. Конечно, в описании того, как добраться до регистров, должно говориться о портах -- но сами регистры переименовывать в порты не следует.
Цитата:
И еще надо порты в отдельный раздел вынести.
В каком смысле вынести? Сделать дополнительный раздел верхнего уровня, где дан список портов, ссылающихся на соответствующие статьи?
Цитата:
А еще правильнее писать не порт 0CF8h, а порты 0CF8h-0CFBh в документах на чипсет это поеснено раз. А также в описании на процессор intel два.
Руководящим в описании регистра того или иного устройства является спецификация на это устройство. А в спецификации на PCI (версия 2.3, стр. 32) читаем:
Anytime a host bridge sees a full DWORD I/O write from the host to
CONFIG_ADDRESS, the bridge must latch the data into its CONFIG_ADDRESS
register. On full DWORD I/O reads to CONFIG_ADDRESS, the bridge must return the data in CONFIG_ADDRESS. Any other types of accesses to this address (non-DWORD) have no effect on CONFIG_ADDRESS and are executed as normal I/O transactions on the PCI bus. Therefore, the only I/O Space consumed by this register is a DWORD at the given address. I/O devices that share the same address but use BYTE or WORD registers are not affected because their transactions will pass through the host bridge unchanged.Тут совершенно недвусмысленно написано, что обращение к регистрам CONFIG_ADDRESS и CONFIG_DATA будет иметь место только в том случае, если к ним обратиться как к единому двойному слову, в то время как доступы к байтам и словам по тем же адресам будут переданы на PCI как обычные доступы к пространству ввода-вывода. Таким образом, Ваша мысль:
Цитата:
К примеру, порты 0CF8h-CFBh задают для PCI адрес конфигурационного пространства.
Можно записать сразу в один порт
...
или можно записать то же самое в 4 порта.
является прямо противоречащей спецификации PCI.
Ссылка же на
Цитата:
Еще пример порта 3D4h задает индекс CRT регистр видео контроллера 3D5h значение регистра
Сразу пишем в один порт
в данном случае неуместа. Как поступает видеоконтроллер, это его сугубо личное дело, не имеющее ни малейшего отношения к спецификации PCI. Если для видеоконтроллера подобные вещи являются стандартным поведением -- что ж, это нужно описать в соответствующем разделе. Но не надо такое поведение одного устройства переносить на все остальные устройства.