|
Начало » Блог создания немизиды
Седня раздуплился с чтинием с дискеты, используя порты ввода-вывода. Геморойное, конечно, дело :), вчера весь день мануалы искал... но главное, что справился и раздуплился :). Следующий этап пожалуй защищенный режим, поскольку от биоса мы уже не зависим ;), можно делать что угодно =)!.. Творить чюдеса в общем.
|
Капец, блин. Вчера с бэкспэйсом ипался, врезультате чего загрузчик програм пошол... не в ту сторону ;)... и командный интерпретатор не мог загрузится... а все из-за кривости работы с fat12. Седня раздуплился и вроде написал что-то более-менее стабильное-нормальное :). Теперь с бэкспейсом буду упражнятся, щас он работает не просто лохо, а просто отвратительно... лучше не нажимать ;)!..
|
Замутил уже нормальный скролинг, который сохраняет все регистры, с которыми работает, исправил очистку последнего рядка, раньше она очищалась stosb'ом, то есть на ah мы не обращали внимания... а в нем же вся суть!!! То есть цвета фона и текста! Из-за этого были траблы, такие как перенос приглашиние шела на 23 символа в момент скрола. Долго не могу понять: что происходит. Потом был гониво с тем, что я неизвестно зачем инициализировал ds bx'ом перед stosb'ом. Теперь нулем инициализирую, и stosw'лю. Нормально. Решил проблему стем, что написать команду типа "r3b00t", для перезагрузки компа, нельзя было из-за того, что второй ноль не писался... Сейчас уже все пишется. Замутил очистку экрана. И новую команду в шел. Переписал функцию смены цвета фона и текста. Теперь она требует 10-ого прерывания биоса. И меньше занимает :)! Теперь буду мутится с бэкспэйсом (опять :D!) и с портами ввода-вывода для чтения с дискеты.
|
Седня пришла в голову интересная мысль!!! Не писать все с чистого листа, я про 32-ух битную немизиду, а переписывать функции, стараясь максимально не использовать биос. Седня переписал клаву =)! Получилось немного глючновато... но уже работает... правда долго не мог понять: почему при проверке <числа больше 56>и 56 большим оказывалось 56 и программа работала неверно :(! Код: cmp bl,0x56/jg again ... долго не мог понять: что происходит! Но позже придумал поменять cmp bl,0x56 на cmp bx,0x56 (bh=0), и подействовало!!! Незнаю в чем прикол... тестил борщем и вмварью... но оно так :).
|
Седня зделал до хрена что бы работала клава =)! Например: когда нажимаеш:"k" - видиш не "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk...", а одну "k" :D! Пробел уже пашет... да и работать уже можно полюдски :). То есть и ввод и вывод в 32-ух битной немизиде уже готов!!! Уже можно в умате висеть ;)!!! Дальше нужно будет раздуплится с чтением секторов дискетки... да!.. тут гемороя будет побольше ;)!
|
Щас раздупляюсь с вводом и выводом текста :), вывод - это уже просто, а с вводом проблемы... например пока, что нельзя ввести большие буквы, нельзя поставить пробел и т.д. Все мутиться с помощью портов ввода-вывода, с которыми до хрена проблем... замутить обработку всех клавиш в ближайшее время не получится... но поддержкой основных(буквенно-циферных) буду работать =)!
|
Седня замутил грамотный скролинг :), в 16-битной немизиде можно было воспользоватся вводом-выводом... так нет, в 32-ух битном нельзя... можно только писать по адресу 0xb8000... ну ничо справился :), очередная задача решена :). Дальше с клавой буду работать и с установкой прерываний.
|
Блин... Не могу понять: как с ними по людски работать? Если на них забить и использовать то, что мы имеем в момент загрузки, сразу после биоса ( ds=0), то будет доступно только 64кб из 1-ого доступного нам мб... ну мб - это конечно, не вся используемая оператива ;), но все же для програмок написаных под немизиду, ранней стадии разработки, вполне хватает, НО это гониво, если использовать то, что имеем, а имеем мы: адрес загрузки всех програм начинается с 0xa000... адрес загрузки загрузчика 0x7c00, ядра немизиды - 0x7e00 (ну это можно исправить, ядро перекомпилить проще всего ;)), поскольку загрузчик весит 0x200 байт. на ядро если выделить 8.5 кб, то на весь варез остается 24кб... это полнейший бред, с которым нужно боротся!!! во-первых если ядро будет больше 8.5 кб(а оно будет ;)!), то придется менят адрес загрузки програм, при этом максимальный размер програм будет уменьшатся... и их нужно будет ВСЕ перекомпелирывать( конечно, это щас звучит смешно... но нужно правильно проэктировать,
...
Читать дальше »
|
Разбираюсь щас с защищенным режимом... капец... тежолый он... заинтересоватся заставило то, что с сегментными регистрами я не представляю как работать, так что бы полюдски все было... как у людей :D... читал седня интеловый мануал... охренеть один сорец на все книгу!!! Я чуть с ума не сошел... нахрена столько теории??? сначала должна быть практика!!! А потом(или в ней) обьяснятся все, что исполозуется... имхо, так гораздо проще... хотя бы потому, что никому ненужно знать сразу ВСЕ о предмете, все изучается постепенно... и желательно с практикой( без практики обречено на вылетание из головы ;))... буду раздуплятся постепенно, и переписывать немизиду на новый лад :). Еще узнал как можно выводить на консоль не используя прерывания биос :)!!! Это очень удобно ;), хотя крапаль сложнее(нужно писать в видео память).
|
Вопрос совместимости один из основных в разработке чего-либо... Да, запускать программы под немизиду уже можно, НО в следующей версии может изменится адрес загрузки програм и их нужно будет править и перекомпелировать. А это очень примитивное, неудачное решение... нужно придумать такой способ загрузки програм, что бы программы под одну ось были совместимы с этой осью, даже при выходе новых версий оси, иначе нафиг такая ось кому надо?.. Следующий этап разработки: продумать нормальный образ запуска, который не будет минятся с каждой новой версией.
| |
|
Календарь |
« Ноябрь 2024 » | Пн | Вт | Ср | Чт | Пт | Сб | Вс | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
|
|