OSDev

для всех
Текущее время: 03 июл 2025, 05:30

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




Начать новую тему Ответить на тему  [ Сообщений: 131 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 14  След.
Автор Сообщение
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 20 окт 2008, 18:36 
gnu gcc


Вернуться к началу
  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 20 окт 2008, 20:16 
Есть тут программисты, которые разбираются в ассемблере?

Вот. Подковырял тот сырец. Но проблема в ассемблерной вставке. Не знаю я GCC Inline Assembler

[*]include <stdio.h>

[*]define FP_SEG(fptr) ((unsigned)((unsigned long)(fptr) >> 16))
[*]define FP_OFF(fptr) ((unsigned)(fptr))

[*]define BYTE unsigned char
[*]define WORD unsigned short
[*]define DWORD unsigned int

[*]define SECTOR_SIZE 512

struct disk_packet //needed for int13 42h
{
BYTE size_pack; //size of packet must be 16 or 16+
BYTE reserved1; //reserved
BYTE no_of_blocks; //nof blocks for transfer
BYTE reserved2; //reserved
WORD offset; //offset address
WORD segment; //segment address
DWORD lba1;
DWORD lba2;
} disk_pack;

void LBASectorRead(void *buffer/*, unsigned long lba */)
{
unsigned char bError = 0;
disk_pack.size_pack=16; //set size to 16
disk_pack.no_of_blocks=1; //1 block ie read one sector
disk_pack.reserved1=0; //reserved word
disk_pack.reserved2=0; //reserved word
disk_pack.segment=FP_SEG(buffer); //segment of buffer
disk_pack.offset=FP_OFF(buffer); //offset of buffer
disk_pack.lba1=0; //lba first 32 bits
disk_pack.lba2=0; //last 32 bit address

asm(".intel_syntax noprefix \n\t"
    "mov dl, 0x80 \n\t"
    "mov %1, ds \n\t"
    "mov si, %3 \n\t"
    "mov ah, 0x42 \n\t"
    "int 0x13 \n\t"
    ".att_syntax noprefix \n\t");

/*_asm
{
mov dl, 80h;
mov [disk_pack.segment], ds;
mov si, disk_pack;
mov ah, 42h;
int 13h
jc NoError ; //No error, ignore error code
mov bError, ah ; // Error, get the error code
NoError:
}

printf( "%d", bError);*/

}

void PrintSector(char * buffer)
{
  int i;
  for(i = 0; i < SECTOR_SIZE; i++)
  {
    printf("%d ", *(buffer+i));
    if((i+1)%12==0) printf("\n");
  }
  printf("\n");
}

int main(void)
{
static unsigned char currentMBR[SECTOR_SIZE] = {0};
printf("\n\n");
LBASectorRead(&currentMBR );
PrintSector(currentMBR); //function to print buffer in hex
}


Вернуться к началу
  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 20 окт 2008, 20:18 
Хе, скопировал сообщение с другого форума. Забыл подредактировать.
Да и вики разметка решетки на элементы списка заменила. Но думаю все ясно...


Вернуться к началу
  
 
 Заголовок сообщения: Re^2: Файловая система для флешки
СообщениеДобавлено: 20 окт 2008, 21:01 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
gcc не генерирует 16 битный код. из PM ты не можешь вызывать биос. твой код не имеет смысла. бери 16 битный компилер.

редактор будет-будет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 20 окт 2008, 22:26 
А на 16битном как вы видели тоже почему то не пашет... Да и как потом вызывать ассемблерную функцию в gcc?
Если в защищенном режиме нельзя вызывать прерывания биоса, тогда как операционная система читает секторы с диска? Ведь с момента загрузки GRUB'а мы уже находимся в защищенном режиме. Т.е. моя система никогда не бывает в рнеальном режиме. Чем же тогда подкрепить файловую систему? Чем считывать содержимое кластера?


Вернуться к началу
  
 
 Заголовок сообщения: Re^2: Файловая система для флешки
СообщениеДобавлено: 21 окт 2008, 06:41 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
Тут два варианта.
[*]Использовать V86, как ExpressOS
[*]Реализовывать полностью самостоятельно, как делаю я


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: ОФФТОП
СообщениеДобавлено: 21 окт 2008, 09:41 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1209
grindars, дизайн на данный момент ничего, вот только нужно бы разделить посты чем-нибудь посущественне, чем голубые заголовки, а то они сливаются.

Это ты мои посты из ветки "Изменения в движке" удалил? Хотелось бы все-таки решить вопрос насчет wiki.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ОФФТОП
СообщениеДобавлено: 21 окт 2008, 15:16 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
я их не только не удалял, но и ответил, и попросил тебя написать мне новый пароль на мыло grindars@grindars.org.ru.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 21 окт 2008, 17:08 
1. Как использовать V86? Что это такое?
2. Как реализовать полностью самостоятельно?


Вернуться к началу
  
 
 Заголовок сообщения: Re: Файловая система для флешки
СообщениеДобавлено: 21 окт 2008, 19:42 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Я с инициализацией сегмента данных сам напутал. Если его делать равным 0, как здесь
xor ax,ax
mov ds,ax

то должна быть директива org 7C00h

а если инициализировать значением текущего сегмента
mov ax,7C0h
mov ds,ax

то должна быть директива org 0
Попробуй оба варианта.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 131 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 14  След.

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


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

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


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

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