OSDev

для всех
Текущее время: 24 июл 2019, 09:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Windows, FASM и MinGW для создания ОС
СообщениеДобавлено: 26 дек 2010, 03:14 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
s3dworld писал(а):
Спасибо!

Сейчас всё работает. Практически уже свою файловую систему написал. Только вот не знаю как читать сектора с дискеты в защищённом режим. Не подскажите?

И ещё у меня вопрос по поводу языка C++. Как мне можно настроить операторы new, new[], delete и delete[], чтобы я их мог использовать в программе. Я просто даже представить не могу что они делают на низком уровне и как мне их переопределить. Для меня это очень важно. Так как файловую систему придумал, осталось только реализовать. Даже написал программу форматирования образа в мою файловую систему. Друг написал программу, позволяющую в Windows открывать образ дискете моей файловой системы, просматривать, извлекать и импортировать файлы.


чтение/запись через порты вв. в интернете полно информации даже с примерами.

а по поводу new и прочего, это можно выдрать из библиотек.. там гора кода... но чтобы понять что они делают попробуй сначала представить как сделать выделение памяти по запросу.. если пишешь ос, то все равно тебе придется это делать..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Windows, FASM и MinGW для создания ОС
СообщениеДобавлено: 26 дек 2010, 12:51 

Зарегистрирован: 22 окт 2010, 13:22
Сообщения: 92
Откуда: Ртищево
Всем доброго дня!

Вот читаю в книге:

Цитата:
Теперь приведем расширенный формат этой же функции соответствующий VBE версии 2.0:

На входе:
AH = 4Fh
AL = 00h
ES:DI = Указатель на буфер размером 512 байт. Первые четыре байта буфера должны содержать строку "VBE2". В буфер записывается различная информация о видеоадаптере SVGA и реализации VBE

На выходе:
AL = 4Fh
AH = 0 - успешное завершение, 1 - ошибка

Примечание:
Значения остальных регистров сохраняются

И решил попробовать:

Код:
use16
org 0x7C00

boot__code16:
   mov AX,CS
   mov DS,AX
   mov ES,AX
   mov FS,AX
   mov GS,AX
   mov SS,AX
   mov AX,boot_stack16_start
   mov SP,AX
   
   mov [0x7A00],byte 'V'
   mov [0x7A01],byte 'B'
   mov [0x7A02],byte 'E'
   mov [0x7A03],byte '2'
   
   mov AH,0x4F
   mov AL,0x00
   mov DI,0x7A00
   int 0x10
   
   cmp AH,1
   jz label1
   jmp label2
   
label1:
   hlt
   
label2:
   
   mov AH,0x4F
   mov AL,0x01
   mov CX,0100000100010010b
   mov DI,0x7A00
   int 0x10
   
   mov AH,0x4F
   mov AL,0x02
   mov BX,0100000100010010b
   int 0x10
   
   mov AH,0x02
   mov AL,18               ; Количество читаемых секторов
   mov CL,2               ; Сектор
   mov CH,0               ; Цилиндр
   mov DH,0               ; Головка
   mov DL,0               ; Диск
   mov BX,boot__continuation
   int 0x13
   
   jmp boot__continuation

boot__data16:
   db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

boot__stack16:
   db 0,0,0,0,0,0,0,0
   db 0,0,0,0,0,0,0,0
   db 0,0,0,0,0,0,0,0
   db 0,0,0,0,0,0,0,0
   db 0,0,0,0,0,0,0,0
   db 0,0,0,0,0,0,0,0
   db 0,0,0,0,0,0,0,0
   boot_stack16_start:
   db 0,0,0,0,0,0,0,0

rb 510-($-$$)
db 0x55,0xAA

boot__continuation:
   include "Preparing.asm"

rb 1023-($-$$)
db 0x00

Запускаю Bochs и вижу:

Изображение

Не понял ничего. Тогда решил в режиме отладки зайти. Ввёл точку останова:

Цитата:
lb 0x7C00

И запустил на выполнение - Continue. Пришло время, и он остановился на моей контрольной точке:

Изображение

Тут я стал шаг за шагом (F11) смотреть что происходит. Проверил внёс ли он сигнатуру VBE2:

Изображение

Тут он справился. Далее я дошёл уже до прерывания 0x10 и поставил контрольную точку, чтобы остановиться после кода прерывания:

Изображение

И решил продолжить путешествие - Continue. Но почему-то у меня больно долго был тёмный экран:

Изображение

Тогда я решил прервать выполнение - Break и увидел:

Изображение

Почему же он тогда там завис и не дошёл до моей контрольной точки?

_________________
Изучаю процессор...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Windows, FASM и MinGW для создания ОС
СообщениеДобавлено: 26 дек 2010, 16:28 

Зарегистрирован: 22 окт 2010, 13:22
Сообщения: 92
Откуда: Ртищево
Кстати, если кто-то хочет посмеяться, то вот Вам придуманная мной файловая система...

Файловая система BFS (Basic Files System) разработана Дубровкиным Сергеем. Данная файловая система предназначается для дискет, объёмом в 1474560 байт (1440 КБ). Минимальной единицей является кластер, который является либо одним сектором, либо объединением секторов.

Структура файловой системы BFS изображена в таблице:

Изображение

Структура bootData располагается в самом начале дискеты и занимает 4096 байт (от 0x0000 до 0x0FFF). Вот её формат:

Изображение

Структура filesList располагается, начиная со смещения 0x1000. Её формат следующий:

Изображение

Как видно, максимум может быть 44 файла. Структура fileDescription занимает 64 байта. Вот её формат:

Изображение

Структура data включает в себя данные всех файлов. Если представить за N номер файла (первый файл начинается с индекса 0), то найти адрес начала файла можно по следующей формуле:

Изображение

Структура user включает оставшиеся байты, которые программист может использовать по своему усмотрению. Эти данные занимают 25600 байт (50 КБ).

_________________
Изучаю процессор...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Windows, FASM и MinGW для создания ОС
СообщениеДобавлено: 27 дек 2010, 03:28 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
Про чтение сектора:
VBE - это сокращение от Video Bios Extended на сколько я помню.

А по файловой системе для флоппи - всё понятно - главное просто. Только структуру BootData достаточно сделать размером 512 байт (1 сектор) .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Windows, FASM и MinGW для создания ОС
СообщениеДобавлено: 27 дек 2010, 17:32 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1204
Большинство этим страдало. Моя ФС так и осталась на бумаге. Если будешь использовать FAT12, то необходимость в спец. программах для доступа к данным из популярных ОС вообще отпадет.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB