Обо мне
Привет! Меня зовут Лис и это мой блог. Здесь я могу ныть и страдать, писать про код и обо всем.
Декабрь 2024
ПнВтСрЧтПтСбВс
1
2345678
9101112131415
16171819202122
23242526272829
3031
Теги
Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet

15 окт 2024 Вт Контроллер прерываний

Вчера я начал делать, а сегодня утром смог успешно закончить контроллер прерываний и даже его проверил. При нажатии на клавишу на клавиатуре теперь вызывается IRQ #1, который отсылает на прерывание 9, а при истечении таймера (в течении примерно 1/18 сек), вызывается прерывание IRQ #0. Теперь мне осталось доделать установку курсора в текстовом режиме, и программирование контроллера прерываний, а именно программирование скорости вызова IRQ #0, чтобы настроить его на значение 10 мс хотя бы, что будет вызывать прерывание раз в 250к тактов или 100 раз в секунду. Этого вообще хватит. И еще надо сделать IRQ #2 — VRetrace сигнал, чтобы знать момент, когда луч только что закончил рисование картинки. Это нужно для того, чтобы начать обновлять картинку на экране, чтобы в следующий раз, когда луч будет проходить по картинке, там уже все было бы готово и не было бы заметного разрыва, как это обычно бывает, если луч рисует, а на середине уже другой кадр. Помню такие времена, когда играл в Куаку, и там вот именно так разрыв кадра и был.
Еще сегодня сделал выбор палитры из заданной палитры DAC, что позволяет (и я это проверил) программировать цветовую палитру через регистры VGA 968 и 969. О, когда я в детстве о них узнал, я был просто поражен и восхищен и тут же начал использовать их для создания графики. Да... хорошо было тогда!
Работы еще очень много над процессором.
  • Установка курсора — почти сделано
  • Добавить VRetrace — сделано
  • Программирование таймера
  • Инструкции jmp near
  • PUSHA / POPA
Это только то что мне надо сделать аппаратно. Есть еще и программный момент, например, надо сделать контроллер клавиатуры, чтобы принимать данные с клавы и разбирать коды в ASCII коды. Это лишь только начало... Но я постепенно работаю над этим, преодолевая трудности на пути разработки на ассемблере и верилоге.
Пока проверял контроллер прерываний, наткнулся, что у меня POP r16 не работает, починил. Надо же так пропустить. Еще вот очень важная штука, это сохранение и выгрузка всех регистров, это очень удобно. Надо бы сделать эту вещь тоже в процессоре, помимо средних переходов, которые кодируются 0Fh инструкциями.
Думаю, что пора бы мне заканчивать как с процессором и начать уже делать что-то на ассемблере.
Теги: 8088
<< Ранние записи | Поздние записи >>