Skip to content

Gmihtt/OC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

//-------------------------------------//
Загрузчик реализован с помощью FASM, основные задачи:
1. Должен загружать ядро со второго гибкого диска по нужному адресу (0x10000 для плоского ядра, 0x11000+0x12000 для ядра PE). 
2. Запрашивать у пользователя (либо BIOS) необходимые параметры и сохранять их в память (по произвольному адресу, определяется студентом). 
3. Переводить процессор в защищенный режим и передавать управление ядру. 
4. указывается цвет шрифта консоли ОС (пользователь выбирает из списка предлагаемых с помощью кнопок "вверх", "вниз" и подтверждает выбор). 

//-------------------------------------//
Ядро реализовано на языке Си, компилятор ядра: Microsoft C complier.
Общие требования к ядру ОС: 
1. ОС должна считать параметры, сохраненные загрузчиком (в п.2), и применить их. 
2. Настроить прерывания и включить их. 
3. Перейти в интерактивный режим: на экране должна быть строка приветствия. Пользователь вводит в нее команду, а ОС отвечает на нее. Команда состоит из ключевого слова и параметров (для некоторых команд) — указываются через пробел. 
Перечень поддерживаемых команд указан в варианте задания. Если команда не распознана — должны выводиться сведения об этом (ошибка).  
4. ОС не позволяет вводить команды длиннее 40 символов. При попытке ввести команду длиннее лимита — ОС не будет реагировать на лишние нажатия. Должна поддерживаться клавиша Backspace. 

//-------------------------------------//
Поддерживаемые ОС команды: 
info Выводит информацию об авторе и средствах разработки ОС (транслятор ассемблера, компилятор), параметры загрузчика — выбранный пользователем цвет шрифта консоли ОС. 
 
сlear Очистить все введенные пользователем команды и выведенные ОС результаты их выполнения. 
 
shutdown Выключение компьютера 
 
nsconv  число  исх_система  конечн_система Переводит указанное в параметре число из исходной системы счисления в конечную систему. В случае целочисленного переполнения должна выводиться ошибка. В случае ошибочного знака (некорректный символ для данной СС) выводится ошибка. Должны поддерживаются системы счисления от 2 до 36. Буквенные символы принимаются в нижнем регистре. Примеры: # nsconv ff 16 10 255 # nsconv 78 8 10 error: invalid symbol: 8 # nsconv 9999999999999999999 10 16 error: int overflow 
 
posixtime число Распечатывает дату и время заданные указанным числом, являющимся меткой времени POSIX (время, прошедшее в секундах, начиная с 01.01.1970 00:00:00 (UTC) # posixtime 1111111111 18.03.2005 01:58:31 
 
# posixtime 1500000000 14.07.2017 02:40:00 
 
wintime число Распечатывает дату и время заданные указанным 64-битным числом, являющимся меткой времени Windows (время, прошедшее в 100-наносекундных интервалах, начиная с 01.01.1601 00:00:00 UTC) 
 
# wintime 123456789012345678 21.03.1992 19:15:01 
//-------------------------------------//
Для успешного запуска следует скоплилировать код загрузчика и ядра после этого использовать команду из link.txt
Так же, при модернизации ядра следует учесть, что будут меняться его data и text, из-за чего придется модернезировать загручик, чтобы он правильно загружал секции

About

Kernel and bootloader(qemu and fasm)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors