![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Inquiring |
|
|||
Unregistered |
Приветствую!
Задача: прочитать дорожку как сектор длиной в 9216 байт. При этом дискета отформатирована так, что сектора имеют длину 512. Понятно, что сектор не может иметь размера 9216. Просто нужно прочитать дорожку в некий буфер 9216. Таким образом мы будем иметь в этом буфере все содержимое секторов и межсекторных промежутков. Вопрос: возможно ли это осуществить используя int 13h или же нужно напрямую через порты? Заранее благодарна! |
|||
|
||||
shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Я уже говорил здесь, что виндус не позволит работать с прерываениями и с портами ввода/вывода напрямую, а почему ты не хочешь открыть дискету через CreateFile("\\\\.\\A", ....); И прочитать через ReadFile. ?
-------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
Inquiring |
|
|||
Unregistered |
Я уже в досе работаю.
У меня же задача: строго через 13h. А возможно задачу реализовать, что выше описана? |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
По всей видимости, придётся через порты... -------------------- С уважением, г-н Посол. |
|||
|
||||
shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 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 |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
shedon, а так считается служебная инфа ?...
Хм... не знал... надо будет потом попробовать... -------------------- С уважением, г-н Посол. |
|||
|
||||
shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
а х.з., я честно сказать не пробывал ![]() -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |