Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение дорожки 
:(
    Опции темы
Inquiring
Дата 9.11.2004, 14:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Приветствую!

Задача: прочитать дорожку как сектор длиной в 9216 байт. При этом дискета отформатирована
так, что сектора имеют длину 512.
Понятно, что сектор не может иметь размера 9216. Просто нужно прочитать дорожку в некий буфер 9216. Таким образом мы будем иметь в этом буфере все содержимое секторов и межсекторных промежутков.
Вопрос: возможно ли это осуществить используя int 13h или же нужно напрямую через порты?

Заранее благодарна!
  Вверх
shedon
Дата 9.11.2004, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Я уже говорил здесь, что виндус не позволит работать с прерываениями и с портами ввода/вывода напрямую, а почему ты не хочешь открыть дискету через CreateFile("\\\\.\\A", ....); И прочитать через ReadFile. ?


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Inquiring
Дата 9.11.2004, 23:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я уже в досе работаю.
У меня же задача: строго через 13h.
А возможно задачу реализовать, что выше описана?
  Вверх
p0s0l
Дата 10.11.2004, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Цитата(Inquiring @ 9.11.2004, 14:27)
межсекторных промежутков
Через CreateFile/ReadFile под виндой это не считать... Как и через Int13h (если только там нет недокументированных функций)... Так можно прочитать лишь само содержимое секторов...
По всей видимости, придётся через порты...



--------------------
С уважением, г-н Посол.
PM   Вверх
shedon
Дата 10.11.2004, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Функция 02H прерывания 13h, читает сектор
вход: DL = номер диска (0=диск A...; 80H=тв.диск 0; 81H=тв.диск 1)
DH = номер головки чтения/записи
CH = номер дорожки (цилиндра)(0-n) =¬
CL = номер сектора (1-n) ===========¦== См. замечание ниже.
AL = число секторов (в сумме не больше чем один цилиндр)
ES:BX => адрес буфера вызывающей программы
0:0078 => таблица параметров дискеты (для гибких дисков)
0:0104 => таблица параметров тв.диска (для твердых дисков)
выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.
ES:BX буфер содержит данные, прочитанные с диска
замечание: на сектор и цилиндр отводится соответственно 6 и 10 бит:
1 1 1 1 1 1
+5-4-3-2-1-0-9-8-7-6-5-4-3-2-1-0+
CX: ¦c c c c c c c c C c S s s s s s¦
+-+-+-+-+-+-+-+-¦-+-+-+-+-+-+-+-+
+======> исп. как старшие биты номера цилиндра

и функция 0aH - длинное чтение, 512 байт + 4-байтоый ECC (код коррекции ошибок).
вход: (как для подф. 02H)
выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.
ES:BX => в буфере (данные сектора + 4 байта) * число секторов (из AL)


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 10.11.2004, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



shedon, а так считается служебная инфа ?...
Хм... не знал... надо будет потом попробовать...



--------------------
С уважением, г-н Посол.
PM   Вверх
shedon
Дата 10.11.2004, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Цитата(p0s0l @ 9.11.2004, 21:26)
а так считается служебная инфа ?...

а х.з., я честно сказать не пробывал smile


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0888 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.