OSDev

для всех
Текущее время: 27 апр 2024, 11:19

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




Начать новую тему Ответить на тему  [ Сообщений: 129 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 13  След.
Автор Сообщение
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 06:09 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
pavia писал(а):
0. Вначале элементарную ОС.
* Цель этой ОС определить непрерывный кусок памяти и загрузить элементарную программу в память. И передать её управления.
** Первичный загрузчик он грузит вторичный из файловой системы.
*** В отдельном файле должна быть элементарная программа "Здравствуй мир!"
1. Стадия ДОСа. Или ОС используемой в микро контролёре. Или UNIX.


Я хочу вначале всетаки установить видеорежим, посмотреть сколько свободной видео памяти, её можно забить картинками значков, кнопок, изображений. И залить на экран картинку текст отрисовать, значки нарисовать, кнопки.
Потом решить проблему с файловой системой.
Организовать функцию сообшений: от клавиатуры, мышки, таймера, сообшение отрисовки окошка для загружаемых программ.
При отрисовки объекта на экране в дополнительный байт пикселя заношу номер этого объекта, объекты все в обшем массиве, а по номеру объекта получаю тип объекта кнопка или картинка. По нажатии мышки смотрится координата пикселя и там номер объекта на который нажали, ему и пойдет сообщение. Также будет переменная активного объекта ему будет сыпаться с клавиатуры сообщения. Устанавливается активный объект также нажатием мышки или табуляцией с клавиатуры.
Ведь программа это просто загруженный код в оперативную память, нужно правильно его функции вызывать когда нужно.

А потом на эту систему набивать разные функции работы с дисками, сетью, в виде драйверов или ещё как.
Есть функция быстрой отрисовки шрифтов, свой векторный редактор шрифтов из кривой бизье. Быстро закрашиваются и хорошо сглажены. Хочю их рисовать на Fasme и через весу.
Но в фасме не силен пока вот и спрашиваю как память длинную получить, видео память получить, и т.д.


Последний раз редактировалось Станислав 07 сен 2012, 17:48, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 10:12 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
Я хочу вначале всетаки установить видеорежим, посмотреть сколько свободной видео памяти, её можно забить картинками значков, кнопок, изображений. И залить на экран картинку текст отрисовать, значки нарисовать, кнопки.
Хотеть ты можешь многого, но так не выйдет.
Установить видео режим не трудно. Но перед тем как ты его установишь тебе нужна посмотреть доступные режимы и для отладки тебе уже требуется вывод строк.
Но смотри установил ты видео режим. Далее что ты будешь делать? Для отладки тебе надо выводить данные, значит нужны шрифты. Можно воспользоваться готовыми, но они 8х8 что мелковато и русский не поддерживают. А для загрузки своих надо поддержка ФС.
Также для отладки тебе надо обрабатывать клавиатуру. Таймер нужен только в качестве сторожевого чтобы восстанавливать порядок если программа вдруг зависнет.

Цитата:
Организовать функцию сообшений: от клавиатуры, мышки, таймера, сообшение отрисовки окошка для загружаемых программ.
Очереди потом, но функцию чтения клавиш достаточно первична.

Цитата:
Но в фасме не силен пока вот и спрашиваю как память длинную получить, видео память получить, и т.д.

Сейчас ты нечего не умеешь. Даже если я тебе расскажу всю теорию создания ОС ты не сможешь ими воспользоваться. У тебя будет куча ошибок и ты будешь во всех их утопать. Как в рассказе:
Хвост поднял нос увяз. Нос поднял хвост увяз. Хвост поднял ...
Поэтому не надо спешить и делать всё сразу делай постепенно. Начни с изучения нужных тебе технологий.
Во-первых перезаписывать флешку перезагружать компьютер это долго. Возьми ДОС и начни с него. Есть borland C++ или Borland pascal с отличной средой для программирования и отладки. Для ассемблера есть tasm и turbo debuger.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 11:10 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
pavia писал(а):
Поэтому не надо спешить и делать всё сразу делай постепенно. Начни с изучения нужных тебе технологий.
Во-первых перезаписывать флешку перезагружать компьютер это долго. Возьми ДОС и начни с него. Есть borland C++ или Borland pascal с отличной средой для программирования и отладки. Для ассемблера есть tasm и turbo debuger.



У меня уже всё написано на tasm на pascal на Delphi, всё работает!!!!!!!!!!!!!!!!. Осталось на fasm перенести.
1Гружусь с флешки.
2Подгружаемый файл получает LFB
3Перехожу в длинный режим там загружаю основные данные с флешки посекторно (для этого не нужна файловая система)в память которые не будут меняться на протяжении всей работы(для этого не нужен диспетчер памяти),
рисую кое что на экране.
Мечтаю об этом пока

Клавиатура и мыш посылают сообшения только объектам, а их нужно отрисовать, создать массивы с объектами.
вся операционка в режиме ожидания таймер нужен только програмам.
Потом уже клавиатура, мыш, работа с памятью, дисками
Задача конкретная.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 12:34 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
У меня уже всё написано на tasm на pascal на Delphi, всё работает!!!!!!!!!!!!!!!!. Осталось на fasm перенести.

А зачем на FASM всё переписывать?

У меня сделано так.
Есть MBR, BootSector, load.exe, kernel.exe
MBR загружает BootSector
BootSector разбирает FAT и загружает load.exe разбирает таблицу релоков.
load.exe определяет доступную память через int 15h, загружает kernel.exe, выбирает видео режим vesa, настраивает защищенный режим.
kernel.exe должен загружать основные программы.


MBR написан на TASM, формат файла BIN
BootSector написан на TASM, формат файла BIN
Load.exe написан на BorlanPascal, формат файла EXE-MZ
Kernel.exe написан на Delphi, Формат файла EXE-PE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 13:31 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Станислав писал(а):
При отрисовки объекта на экране в дополнительный байт пикселя заношу номер этого объекта, объекты все в обшем массиве, а по номеру объекта получаю тип объекта кнопка или картинка. По нажатии мышки смотрится координата пикселя и там номер объекта на который нажали, ему и пойдет сообщение. Также будет переменная активного объекта ему будет сыпаться с клавиатуры сообщения. Устанавливается активный объект также нажатием мышки или табуляцией с клавиатуры.
Знаешь, что такое Z-порядок? Не во всех режимах есть "дополнительный байт пикселя", к тому же GUI от железа нужно отделять. Не забудь про переменную объекта, захватившего мышь.

pavia писал(а):
Очереди потом, но функцию чтения клавиш достаточно первична.
Функция чтения клавиш и будет читать очередь.

Станислав писал(а):
Перехожу в длинный режим там загружаю основные данные с флешки...
Я тоже об этом мечтаю :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 17:00 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
pavia писал(а):
MBR написан на TASM, формат файла BIN
BootSector написан на TASM, формат файла BIN
Load.exe написан на BorlanPascal, формат файла EXE-MZ
Kernel.exe написан на Delphi, Формат файла EXE-PE


Есть на тасм пример перехода в реальный режим и как раз получения LFB в режиме 800 на 600 32бит с весой, правдо без перебора режимов, и рисовка пикселя цветного в память LFB (то что нужно) но не могу его загрузить после загрузчика, о чем собственно и просил помоч в самом начале!!! У меня сектор читается откуда угодно но не с флешки

В паскале есть многое Там могу делать все, что угодно, но почемуто регистры edx, eax не работают.
В дельфи тоже могу всё делать, но как компилировать в нем бинарники(чистый код?)


Последний раз редактировалось Станислав 13 ноя 2011, 17:15, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 17:10 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
phantom-84 писал(а):
Функция чтения клавиш и будет читать очередь.


Это как?

Про Z Буфер знаю всё. С объектами может получиться интересно, любая программа добавляет в объекты свои и операционка работает с ними как с родными, взять может из массива любой чюжой объект или системный и исправить его или копировать себе, будет это кнопка иконка или картинка... .У меня уже руки чешутся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 19:44 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Станислав писал(а):
Это как?
Как положено. Будет выбирать из очереди только сообщения, относящиеся к клавиатуре (речь о консольном режиме работы).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 21:36 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
У меня сектор читается откуда угодно но не с флешки

У меня есть загрузочная флешка. Ей пользуюсь не так давно пару лет, но на тех машинах что пробовал грузилась без проблем. Код не мой. Свой я ещё массово не тестировал, но на виртуалке он работал.
Так вот на флешке mbr используется int 13h функция ah=02
Так что почему у вас не работает я не знаю. По пробуйте на другом компьютере.
Флешка может быть от форматирована под мягкую дискету или под жесткий диск. Но обычно под жёсткий.
Так что загрузка с флешки не отличается от загрузки с жёсткого. В интернете полно статей по этому поводу.


Цитата:
В паскале есть многое Там могу делать все, что угодно, но почемуто регистры edx, eax не работают.

Это по тому что DOS создавался, когда процессор был 16 битным. И паскаль поэтому был 16 битным. Поэтому тут нет ничего удивительного. Но можно поступить так на tasm можно использовать 32 битные регистры. можно скомпилировать obj файл и подключить к паскалю. Директива {$L LOADER.OBJ} .

Цитата:
В дельфи тоже могу всё делать, но как компилировать в нем бинарники(чистый код?)

При помощи замены системных библиотек на пустые. В интернете описано.

Код:
unit SysInit;
interface
var
  TlsIndex: Integer;         
  TlsLast: Byte;
  PtrToNil: Pointer = nil;
procedure _InitExe;
implementation
procedure _InitExe;
asm
end;
end.


Код:
unit System;
{$H-,I-,S-,L-}
interface

type
  PGUID = ^TGUID;
  TGUID = record
    D1: Cardinal;
    D2: Word;
    D3: Word;
    D4: array[0..7] of Byte;
  end;
  PWideString = ^WideString;

var IsConsole : Boolean;
    RandSeed:integer;

procedure _Halt0;
procedure _HandleFinally;


implementation

uses sysinit;

procedure _Halt0;
asm
end;

procedure       _HandleFinally;
asm
end;

end.


А да из system выкинуто много нужного, но вернуть легко.
Сборка идёт так.
Код:
..\tool\delphi\DCC32.EXE  -Y -B .\system\system.pas
..\tool\delphi\DCC32.EXE  -GD -W- -$H-  -U".\system"    kernel.dpr 

Первая строчка компилирует системную библиотеку, вторая ядро с новой системной библиотекой.

В паскале я тоже системные библиотеки заменяю.
Нужен SYSTEM.TPS


Код:
unit System;

{ This is a dummy system unit, which does almost nothing. }

{$R-,S-,Q-,I-,N-,E-}

interface

var                              { TP needs a public var & const block }
  static_var  : byte;
const
  const_var   : byte = 0;

implementation

{ These routines must be declared in the right order (the compiler calls
  them by number, not by name) and must be far.  In the TP 6.0 SYSTEM.TPU there
  are 137 of them; buy the RTL source if you want to know what they do.  Coding
  the other 134 stubs would be a good idea, but I couldn't be bothered. }

procedure InitTurbo; far; assembler;
asm
  push dx
  mov dx, seg(const_var)
  mov ds,dx                { Load DS }
  pop dx

  mov al,const_var         { We have to be sure the var's & const's get linked in }
  mov static_var,al
end;

procedure HaltError; far; assembler;
asm
end;

procedure HaltTurbo; far; assembler;
asm
end;

end.

Компилируется вмести с подключенными системными символами символы автоматом подключаются.
В TURBO.TPL заменяется system.TPU при помощи TPUMOVER.EXE

Код:
bpc system.pas
TPUMOVER.EXE TURBO.TPL  -SYSTEM
TPUMOVER.EXE TURBO.TPL  +SYSTEM


Последний раз редактировалось pavia 13 ноя 2011, 21:50, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка с флешки
СообщениеДобавлено: 13 ноя 2011, 21:38 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Станислав писал(а):
phantom-84 писал(а):
Функция чтения клавиш и будет читать очередь.


Это как?

Про Z Буфер знаю всё.

Фантом писал не про Z-буфер, а про Z-порядок(алгоритм художника).


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

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


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

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


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

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