Вопрос по созданию ос
В первой версии моей ос я планирую сделать аллокатор оперативной памяти, который, при запуске будет создавать два взаимодействующих процесса: обработчик клавиатуры, который будет считывать введённые символы и передавать их процессу отвечающему за вывод сообщений на экран.
Пока что возник вопрос как работает аллокатор памяти и как его реализовать. Помогите чем сможете.
Я в этой ситуации написал драйвер дискеты. Всё замечательно работало в эмуляторе, но компьютер почему-то с моей дискеты грузиться отказался.
Потом энтузиазм закончился и на этом написание своей ОС для меня закончилось.
Вот код. Уже работает.
; --------------------------------
[ORG 0x7C00]
start:
cli
mov ax, cs
mov ds, ax
mov ss, ax
mov sp, start
sti
keyboard:
mov ah, 00h
int 0x16
test al, al
jz keyboard
jmp print
print:
mov ah, 0x0E
int 0x10
jmp keyboard
times 510-($-$$) db 0
db 0xAA, 0x55
не совсем так . 32-битные сервисы биоса вполне доступны .
скачайте список прерываний ральфа брауна и изучайте .
не совсем так . 32-битные сервисы биоса вполне доступны .
скачайте список прерываний ральфа брауна и изучайте .
Интересно будет изучить. Я сильно отстал. Для меня BIOS так и остался в представлении вшитым в ROM ядром DOS. :)
Про 32-битные сервисы биос я ничего не знаю, поэтому: вывод символа путем записи напрямую в видеопамять, для чтения символа можно обращаться к клавиатуре через порты 0x60, 0x61.
Но вам это пока рано.
Очень советую сначала как следует разобраться с 16-битным режимом и научиться пользоваться гуглом.
вешаете свой обработчик прерывания на вектор IRQ1 . в обработчике читаете сканкод . сканкод преобразуете в аскикод или юникод и передаёте куда вам надо .
А так, если будут вопросы - пиши или в ЛС или на том форуме.
Вот английский в первую очередь и надо знать ОС-разрабу. Ибо системное программирование в основном состоит из переваривания бесконечных спецификаций и т.п. техдокументации и сплошь на инглише.