Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопросы по созданию ос

17K
11 июля 2006 года
Yar4
15 / / 10.07.2006
Я знаю, что вы будете меня материть, в общем, прочтите: http://forum.s-c.ru/viewtopic.php?t=65586 или http://forum.s-c.ru/web/viewtopic.php?t=65586 . Я очень хочу написать ос. Язык программирования - fasm, процессор - Пентиум2, память - 16Мбайт<x<4Гбайт. Ответьте на вопросы, пожалуйста, и дайте ссылки на какие-нибудь спецификации/документации, почитав этот раздел, я понял, что о защищенном режиме знаю только очень поверхностно.
Страницы:
349
11 июля 2006 года
Phantom-84
656 / / 27.10.2005
[QUOTE=Yar4]...почитав этот раздел, я понял, что о защищенном режиме знаю только очень поверхностно.[/QUOTE]В таком случае ты не сможешь написать современную систему.

Здесь я иногда отвечаю на вопросы.
17K
11 июля 2006 года
Yar4
15 / / 10.07.2006
Я это понимаю, дос я хоть завтра написать могу:) поэтому прошу дать несколько ссылок на оффлайн книги по пм, я сегодня нашёл онлайн статью, но без нета на компе её не удобно смотреть. Я понимаю, что это будет держаться только на моём энтузиазме, но времени ведь у меня предостаточно.
551
11 июля 2006 года
Pavia
357 / / 22.04.2004
FASM - хороший ассемблер на нем Menuet OS написана.
спецификации/документации -
http://www.intel.com/
ftp://download.intel.com/
Пентиум2 - это P6 или i686. Не за цикливайся на одном процессоре. Все x86 начиная с i486 и заканчивая Pentium4, не сильно отличаются.

Ладно давай по порядку. Документацию про защищенный режим процессора полно всякой. Но я бы посоветовал взять интеловскую.
"IA-32 Intel® Architecture
Software Developer’s
Manual
Volume 3:
System Programming Guide"

Здесь расписано на русском.
http://www.wasm.ru/publist.php?list=24

Библиотека системного программиста Александр Фролов, Григорий Фролов том 6 "Защищенный режим процессоров Intel 80286/80386/80486"
Ссылку не помню. Но там не только расписан защищенный режим, но и даны примеры.

и тд.

Здесь лежит куча всяких спецификаций http://www.osdever.net/cottontail/

Если будут вопросы спрашивай. И еще, пока не начнешь писать под защищенный режим никогда его не выучишь.

Я бы посоветовал присоединиться к какому либо проекту. А то нас ОС мейкеров развилось. Около сотни, а проектов пару десятков.
349
11 июля 2006 года
Phantom-84
656 / / 27.10.2005
Лично не проверял, но сказано, что здесь можно найти архивы лекций по системному программированию.

Можно также здесь посмотреть.

А также здесь и здесь.
17K
11 июля 2006 года
Yar4
15 / / 10.07.2006
Pavia, спасибо огромное! Качать трубой не буду, подожду до августа. Пока буду ту онлайновую читать :) может потренируюсь дос написать :) самое сложное, я так понимаю - это дрова?
17K
11 июля 2006 года
Yar4
15 / / 10.07.2006
Phantom-84, тоже огромное спасибо за ссылки.
551
12 июля 2006 года
Pavia
357 / / 22.04.2004
Фантом спасибо за линк. Я там классный туторил по 3D скачал.
Yar4
А какие дрова? На многое железо есть доки, в исходниках линукса можно найти код для разного железа, даже на те, что нет док. Я пока до дров не добрался. Некоторые берут драйвера от линукса, а они бывают и закрытые. Тем самым не достатка в драйверах не должно быть.
Одно скажу в виндоусе систему драйверов делал не человек.

А если по существу. То Винчестер, Дисководы, Сетевая, Модем, Клава, Мышь. Это стандартное оборудование на него существуют доки и можно самому написать драйвера. Со Звуковой и Видео картой могут быть проблемы.
Если говорить про Видео карту то тут проблема в том что разрешения и цвета, которые устанавливаются в виндоусе. Можно выставить через прерывания БИОС используя VESA. А это можно сделать только в реальном режиме. Есть другой путь писать драйвер. Тут мой совет, если будешь писать драйвер взять исходники Линукса.
349
12 июля 2006 года
Phantom-84
656 / / 27.10.2005
[QUOTE=Pavia]Можно выставить через прерывания БИОС используя VESA. А это можно сделать только в реальном режиме.[/QUOTE]Так ли это?
551
12 июля 2006 года
Pavia
357 / / 22.04.2004
Нет. Не совсем есть разные возможности. Не обязательно реальный режим, можно воспользоваться его эмуляцией для вызова прерываний БИОС.
Можно воспользоваться расширениям БИОСа "_32_" для вызова функций БИОСа из-за защищенного режима.
Или одного из расширений VESA, а именно "PMID" который позволяет вызывать функции Весы из 16 или 32 разрядного защищенного режима.
Оба расширение не обязаны присутствовать в БИОСЕ.
349
13 июля 2006 года
Phantom-84
656 / / 27.10.2005
Вот это другое дело. Ты в курсе, что я ответил на твое письмо?..
18K
16 июля 2006 года
Exile
5 / / 16.07.2006
Я сразу оговорюсь - я только-только начал учить асм, поэтому еще "не в в теме".

А нельзяли для драйвера win32 эмуловать? тоесть - своя ос, свои функции и всё такое, а вот драйверам устройств давать понять что они находяться в среде win32? ведь не драйвер вызывает ф-ции ос - а наоборот... я себе так предствалял решение проблемы с драйверами...
349
16 июля 2006 года
Phantom-84
656 / / 27.10.2005
Exile, идея хорошая, только вот ее не так просто реализовать, впрочем я об этом уже давно думаю. Если есть более конкретные идеи, добро пожаловать сюда.
6.8K
26 июля 2006 года
byff
38 / / 01.07.2006
Вы замучаетесь писать защищенный режим. я 4 месяца атылся так и не смог стабильно сделать всю таблицу.
245
26 июля 2006 года
~ArchimeD~
1.4K / / 24.07.2006
я бы ещё посоветовал http://zolotov.h14.ru/doc/os, там правда пример на nasm, но разница невилика можно и дописать. сам юзал пример оттуда. но полностью на ассемблере писать не посоветовал бы, это гемморой жуткий. лучше перейти на C.
349
27 июля 2006 года
Phantom-84
656 / / 27.10.2005
[QUOTE=byff]Вы замучаетесь писать защищенный режим. я 4 месяца атылся так и не смог стабильно сделать всю таблицу.[/QUOTE]Не обобщай пожалуйста и не сравнивай нас с собой!

P.S. У меня есть своя ось и представь, она спокойно работает в защищенном режиме!
349
27 июля 2006 года
Phantom-84
656 / / 27.10.2005
[QUOTE=~ArchimeD~]...но полностью на ассемблере писать не посоветовал бы, это гемморой жуткий. лучше перейти на C.[/QUOTE]Кому как! Лично у меня все системные компоненты написаны на fasm'е!
245
29 июля 2006 года
~ArchimeD~
1.4K / / 24.07.2006
Ну про системные я не говорю, у меня у самого очень много чего на nasmе написано, а например функцию вроде printf, когда хочется и курсор отобразить, и форматирование сделать и с клавиатуры ввод делать на мой взгляд лучше на с написать. ассемблер конечно это хорошо - быстро и компактно, но большие приложения на нем писать - много кода, трудно порой вспоминать, что куда запихнуть надо, и что куда запихал.
334
30 июля 2006 года
HexEdit
809 / / 27.07.2006
FASM - RULEZZZ!!!
Я за асм! =)
А printf тоже можно написать...
17K
24 августа 2006 года
Yar4
15 / / 10.07.2006
Зайдите, пожалуйста, по ссылке в начале, прочитайте (хотя бы конец, в начале я понятия не имел, что такое ассемблер) и скажите всё, что об этом думаете.
13K
04 сентября 2006 года
Exs42
42 / / 04.09.2006
Всем привет!
Где можно взять доки по работе с FAT12?
А то яндух и гугля мугля что то не то находят, либо документы не полные, либо непонятно написанны...
Вообще меня интересует, как в FAT12 читать файлы и каталоги, а после, если нужно запускать найденные файлы на исполнение.
349
04 сентября 2006 года
Phantom-84
656 / / 27.10.2005
У меня вроде бы есть... Правда, я ими давно не пользовался, потому как структуру FAT12 я и без них знаю неплохо. Адрес оставь, может что вышлю...

Чтобы запускать файлы, нужно знать структуру исполняемого файла. Ты файлы какого формата собираешься запускать?
13K
05 сентября 2006 года
Exs42
42 / / 04.09.2006
Phantom-84 спасибо!
Вообщем для начала надо научиться хоть COM-файлы запускать, а после дальше лезть...
Вот ящик: [email]Exs42@yandex.ru[/email]
Ты сказал, что FAT12 неплохо знаешь, если не лень, вышли мне на мыло или прямо здесь выложи, алгоритм или исходники, как ты файлы ищешь, создаёшь...
А то я что то в 3-х соснах заблудился...:)
349
07 сентября 2006 года
Phantom-84
656 / / 27.10.2005
Сейчас отправлю пару архивов: большой - это документация по FAT от Microsoft, небольшой - подборка из трех web-страниц по соответств. тематике. Про загрузку com-файлов я уже здесь когда-то писал: вот ссылка (там все просто, формат-то по своей сути элементарный).
8.5K
07 сентября 2006 года
infernodiablo
73 / / 04.03.2006
Может я не в ту тему влез, но мне не охота создавать по этому незначительному поводу новую тему... Может кто-нибудь знает где достать подробную документацию по Windows API на русском языке (английские доки уже замаяло читать)
13K
10 сентября 2006 года
Exs42
42 / / 04.09.2006
infernodiablo
Да тема несколько не та...
Вот посмотри здесь:http://develab.narod.ru/api/index0.htm

Phantom-84 ещё раз спасибо!
13K
09 октября 2006 года
Exs42
42 / / 04.09.2006
Пожалуйста подскажите формулу для нахождения обсолютного сектора в FAT12.
17K
10 октября 2006 года
_mrhx_
27 / / 09.10.2006
А стоит ли писать свою ОС?
Это безусловно интересно, но в этом деле одному далеко не уехать..
Есть проект http://www.reactos.org/
Там пишеться замена виндов, open source, free,
совместимость с программами под винды и драйверами.
У них уже есть версия 0.3.0 (15 метров всего),
даже некоторые программы там нормально запускаются.
349
11 октября 2006 года
Phantom-84
656 / / 27.10.2005
Лично мне ReactOS совсем не нравится... Да и Windows многие не любят ни из-за того, что они стоят денег, исходники закрыты (кроме NT) или, возможно, плохо написаны, а потому что в самой архитекруре заложены такие вещи, которые многих раздражают.

Exs42, я же тебе подробную документацию выслал! Там есть все формулы! Но если тебе трудно открыть файл и найти в нем нужное описание, то давай попробуем сами подумать, как можно вычислить "номер абсолютного сектора". Я тебе в общем набрасаю расклад, чтобы не было аналогичных вопросов по другим форматам FAT, а ты уже адаптируешь к FAT12...

Короче, линейный номер первого сектора для кластера с номером N равен сумме, составленной из след. составляющих:
- количество "скрытых" секторов или, что тоже самое, номеру первого сектора раздела; это для разделов жесткого диска; для флоппика с FAT12 равно нулю;
- количество резервных секторов, т.е. секторов, занимаемых boot-блоком; для FAT12 обычно равно 1 - один boot-сектор;
- количество секторов, занимаемых FAT'ами, - произведение количества FAT'ов на размер одного FAT'а, измеряемый в секторах;
- количество секторов, занимаемых корневым каталогом диска, - вычисляем так: (максимально возможное количество файловых записей в корневом каталоге диска умножить на 32 плюс 511)/512;
-непосредственно смещение сектора в области файловых данных - вычисляем так: (N-2) умножить на количество секторов в кластере.
13K
15 октября 2006 года
Exs42
42 / / 04.09.2006
Ещё раз спасибо!
Мне не трудно открыть файл, но на винте их стока... :)
Просто я в английском не очень шарю. Стараюсь его выучить.
551
15 октября 2006 года
Pavia
357 / / 22.04.2004
Phantom-84
Я знаю что в твоей ОС идет проверка типа компьютера читаешь по адресу F000:FFFE
Так вот тут вопрос как этот код учавствует в дальнейшем?
Просто тут изучаю как Фролов "Библиотека системного программиста\Том 1" определяет число дисков и как то странно он это делает. Хотя по идее должно быть одинаково что для XT, то и для AT.
349
16 октября 2006 года
Phantom-84
656 / / 27.10.2005
Если не AT, то фатальная ошибка... Если сообщишь мне достоверную информацию, что на современных компах может встретиться не-AT-сигнатура, то я возможно переработаю поведение оси в этой ситуации.
НА эту тему много сказано в старых книгах/справочниках по железу. Советую Журдена, Нортона почитать или отыскать неоправданно забытый многими Help! по железу.
349
16 октября 2006 года
Phantom-84
656 / / 27.10.2005
Вот что Журден пишет:

1.1.5 Определение числа и типа дисковых накопителей.

Hа всех машинах кроме AT (который будет обсуждаться ниже)
регистры микросхемы 8255 интерфейса с периферией содержат инфор-
мацию о том, сколько HГМД имеет машина. В примерах [1.1.1] пока-
зано как получить эту информацию. Информация определяющая тип
диска содержится в таблице размещения файлов (FAT) диска, которая
следит за использованием дискового пространства. Первый байт FAT
содержит один из следующих кодов:

Kод Тип диска

FF двухсторонний, 8 секторов
FE односторонний, 8 секторов
FD двухсторонний, 9 секторов
FC односторонний, 9 секторов
F9 двухсторонний, 15 секторов
F8 фиксированный диск

Сама таблица размещение файлов не является файлом. Она может
быть считана при помощи функций DOS или BIOS непосредственно чи-
тающих определенные сектора диска. В пункте [5.1.1] содержится
вся информация необходимая для нахождения и чтения FAT. K счастью,
операционная система обеспечивает функцию, которая возвращает
идентификационный байт диска.
Данные BIOS не показывают число жестких дисков в системе, так
как переключатели предназначены только для гибких дисков. Однако
Вы можете использовать указанную функцию операционной системы для
поиска накопителей. Она возвращает значение 0CDH, вместо одного
из упомянутых кодов, когда накопители отсутствуют. Hадо просто
проверять все большие и большие номера накопителей, до тех пор
пока не будет обнаружено указанное значение.
AT уникален в том смысле, что его информация о конфигурации
говорит какой тип накопителя используется. Эту информацию можно
получить из порта с адресом 71H, предварительно послав номер
регистра в порт 70H. Для HГМД номер регистра равен 10H. Информа-
ция о первом накопителе содержится в битах 7-4, а о втором - в
битах 3-0. В обоих случаях цепочка битов 0000 говорит об отсутст-
вии накопителя, 0001 - о двухстороннем накопителе с плотностью 48
дорожек на дюйм, а 0010 - о накопителе большой емкости (96 доро-
жек на дюйм). Информация о фиксированном диске содержится в ре-
гистре 12H. И снова биты 7-4 и 3-0 соответствуют первому и второ-
му накопителям. 0000 указывает на отсутствие накопителя. Другие
15 возможных значений описывают емкость и конструкцию накопителя.
Эти коды сложные; если Вам по какой-то причине потребуется эта
информация, обратитесь к техническому руководству по AT.

Средний уровень.

Функция 1CH прерывания 21H возвращает информацию об указанном
накопителе. Поместите номер накопителя в DL, причем 0 = накопи-
тель по умолчанию, 1 = A, и т.д. При возвращении DX содержит
число кластеров в FAT, AL - число секторов в кластере, а CX -
число байтов в секторе. DS:BX указывает на байт, содержащий код
идентификации диска из FAT, согласно приведенной таблице. В сле-
дующем примере определяется тип накопителя A:
;---определение типа диска
MOV AH,1CH ;функция MS DOS
MOV DL,1 ;выбор накопителя A
INT 21H ;получение информации
MOV DL,[BX] ;получение типа накопителя
CMP DL,0FDH ;двухсторонний, 9 секторов?
JE DBL_9 ;и т.д.

BIOS AT имеет функцию, сообщающую общие параметры накопителей.
Это функция 8 прерывания 13H. Она возвращает число накопителей в
DL, максимальное число сторон накопителя в DH, максимальное число
секторов в CL и дорожек в CH, а код статуса ошибки накопителя в
AH (см. пункт [5.4.8]).
Другая функция BIOS AT возвращает тип накопителя. Это функция
15H прерывания 13H, которая требует номера накопителя в DL. В AH
возвращается код, причем 0 = нет накопителя, 1 = дискета без
обнаружения изменений, 2 = дискета с обнаружением изменений и 3 =
фиксированный диск. В случае фиксированного диска в CX:DX возвра-
щается число секторов по 512 байт.
349
16 октября 2006 года
Phantom-84
656 / / 27.10.2005
Извиняюсь за такое оформление текста. Скопировал, как есть :D
349
16 октября 2006 года
Phantom-84
656 / / 27.10.2005
Вот на что указывает одна из ссылок:

1.1.1 Доступ к микросхеме интерфейса с периферией 8255.

Микросхема интерфейса с периферией Intel 8255 - лучшее место,
с которого надо начинать, чтобы получить информацию об имеющемся
оборудовании. Эта микросхема предназначена для многих целей. Она
сообщает об установке переключателей на системной плате. Она
принимает для компьютера ввод с клавиатуры. Она управляет рядом
периферийных устройств, включая микросхему таймера 8253. Из машин
семейства IBM PC только AT не использует микросхему 8255; он
хранит информацию об оборудовании вместе с часами реального вре-
мени в специальной микросхеме с независимым питанием. Однако AT
использует те же адреса портов, что и 8255, для работы с клавиа-
турой и управления микросхемой таймера.
Микросхема 8255 имеет три однобайтных регистра, называемых от
порта A до порта C. Адреса этих портов от 60H до 62H сответствен-
но. Все три порта можно читать, но писать можно только в порт B.
Для PC, установка бита 7 порта B в 1 изменяет информацию, содер-
жащуюся в порте A. Аналогично для PC установка бита 2 определяет
содержимое четырех младших битов порта C, а установка бита 3
делает то же самое для XT. Содержимое этих регистров следующее:

Порт A (60H)
когда в порте B бит 7=0
биты 0-7 PC,XT,PCjr,AT: 8-битные скан-коды с клавиатуры
когда в порте B бит 7=1 для PC
бит 0 PC: 0 = нет накопителей на дискетах
1 PC: не используется
2-3 PC: число банков памяти на системной плате
4-5 PC: тип дисплея (11 = монохромный,
10 = цветной 80*25, 01 = цветной 40*25)
6-7 PC: число накопителей на дискетах

Порт B (61H)
бит 0 PC,XT,PCjr: управляет каналом 2 таймера 8253
1 PC,XT,PCjr: вывод на динамик
2 PC: выбор содержимого порта C
PCjr: 1 = символьный режим, 0 = графический
3 PC,PCjr: 1 = кассетный мотор выключен
XT: выбор содержимого порта C
4 PC,XT: 0 = разрешение ОЗУ
PCjr: 1 = запрет динамика и мотора кассеты
5 PC,XT: 0 = разрешение ошибок щелей расширения
6 PC,XT: 1 = разрешение часов клавиатуры
5-6 PCjr: выбор динамика (00 = 8253, 01 = кассета,
10 = ввод/вывод, 11 = микросхема 76496)
7 PC: выбор содержимого порта A
PC,XT: подтверждение клавиатуры
Порт C (62H)
когда в порте B бит 2=1 для PC или бит 3=1 для XT
биты 0-3 PC: нижняя половина переключателя 2 конфи-
гурации (ОЗУ на плате расширения)
0 PCjr: 1 = введенный символ потерян
1 XT: 1 = есть мат. сопроцессор
PCjr: есть карта модема
2 PCjr: есть карта HГМД
2-3 XT: число банков памяти на системной плате
3 PCjr: 0 = 128K памяти
4 PC,PCjr: ввод с кассеты
XT: не используется
5 PC,XT,PCjr: выход канала 2 8253
6 PC,XT: 1 = проверка ошибок щелей расширения
PCjr: 1 = данные с клавиатуры
7 PC,XT: 1 = контроль ошибок четности
PCjr: 0 = кабель клавиатуры подсоединен
когда в порте B бит 2=0 для PC или бит 3=0 для XT
биты 0-3 PC: верхняя половина переключателя 2 конфи-
гурации (не используется)
0-1 XT: тип дисплея (11 = монохромный,
10 = цветной 80*25, 01 = цветной 40*25)
2-3 XT: число накопителей HГМД (00 = 1 и т.д.)
4-7 PC,XT: то же, что и с установленными битами

Отметим, что 0 в одном из битов регистра соответствует уста-
новке переключателя "off".
349
16 октября 2006 года
Phantom-84
656 / / 27.10.2005
Доки древние... там даже не упоминается современный 1,44-мегабайтный флоппик (0F0h) :)
551
16 октября 2006 года
Pavia
357 / / 22.04.2004
Я пока оставлю без проверки. Первая пречина сейчас все компьютеры AT совместные. А во вторых пора отходить от старых никому не нужных стандартов. В третьих большенство данных получу другим путем.

Меня просто смутило что один и тотже бит (40h:10h бит 0/ CMOS 14h тоже самое) в разных системах AT говорит о присудствие FDD. А в XT HDD по Фролову. Хотя в тех доках что я посмотрел либы отсутствовало лмбо говорилось о FDD. Так что я остановился на том что этот бит сигналезирует присутствие FDD.
7
18 октября 2006 года
@pixo $oft
3.4K / / 20.09.2006
Где-то здесь в топиках есть на тему защищ.(или реального) режима
349
18 октября 2006 года
Phantom-84
656 / / 27.10.2005
В AT все просто! Либо ты непосредственно получаешь инфу из CMOS, либо (если ты еще в реальном режиме) используешь обращения к BIOS и BIOS Data Area для получения все той же инфы...
349
18 октября 2006 года
Phantom-84
656 / / 27.10.2005
Содержимое ячейки BDA 40h:10h во многом перекликается с содержимым ячейки CMOS 14h, но в принципе это не одно и тоже. Могу точно сказать, что когда в CMOS младший бит ячейки 14h установлен, в процессе начального тестирования не было найдено ни одного флоппи-дисковода!
13K
19 октября 2006 года
Exs42
42 / / 04.09.2006
Помогите пожалуйста!
Почему не читается рут когда комп грузится с дискеты?
Вот чтение рута:
Код:
pusha
        mov     dx,19                    
    mov es:di,offset RootDir
ReadRoot1:
    push    dx
    push    di
    push    es
        Call    ReadSect
    pop es
    pop di
    pop dx
        add     di,512
    inc     dx
    cmp     dx,33
    jne     ReadRoot1
    popa
    ret


Сегментные регистры при загрузке ядра выглядят так:
 
Код:
mov ax,cs
         mov es,ax
         mov ds,ax


А область данных выглядит так:
 
Код:
Mem_FAT     db      9*512 dup(?)
RootDir     db  15*512 dup(?)
FileDir              db 13 dup(?)
Command_line    db  255 dup (?)


Если грузимся не с дискеты,а загружаем DOS - всё прекрасно работает.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог