Парковка, перед выключением |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Парковка, перед выключением |
Alexn |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Можно ли на Паскале написать программу парковки головки диска перед выключением. И если можно то как (подскажите идею).
|
volvo |
Сообщение
#2
|
Гость |
Alexn
А зачем? Современные диски имеют автопарковку... Или это нужно для старых дисков? А вообще-то это делается функцией 19h (прерывание BIOS - 13h). На входе: AH = 19h, DL = Адрес дисковода (80h, 81h, ...) На выходе: AH = Состояние дисковода после завершения последней операции CF = 1, если произошла ошибка, 0, если ошибки нет P.S. Windows не даст этого сделать - только в режиме эмуляции DOS Сообщение отредактировано: volvo - |
Alexn |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
я собрал старый 286 (DOS 6.22, windows 2.03 и 1 версии :p13: )
выключаю просто выключателем, потому и спрашиваю. Так шо виндовс нам не страшен, нам бы дос осилить быстро. |
Altair |
Сообщение
#4
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
windows 1 версии?
Сколько весит? Можно мне на мыло такой раритет? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
volvo |
Сообщение
#5
|
Гость |
|
Altair |
Сообщение
#6
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Спасибо. Посмотрю что это за зверюшка дяди Билли :D
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Alexn |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Я на int21.narod.ru взял win1.
Там еще много раритетов. И еще, я не настолько умудрен опытом чтобы понять, что мне объяснили на счет прерываний. Я конечно представляю, что это. Только я вот пару дней голову ломал как это запихнуть в Паскаль. Но все равно спасибо :thanks: . |
volvo |
Сообщение
#8
|
Гость |
Alexn
Если нужно, чтобы программа только парковала диски - то это будет выглядеть вот так: Хотя было бы гораздо проще написать ее на чистом ассемблере (создается COM файл...)
|
Alexn |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Спасибо. Если не трудно, еще пару вопросов.
int 13h - это выполнить насколько я понимаю. А вот что за функция 19h? И как проверить припарковался ли диск. Например, если нет ошибок then write('теперь питание можно выключить'). Как прочитать CF. Цитата AH = Состояние дисковода после завершения последней операции В регистр AH что записывается иное значение после выполнения программы (мы ведь туда записали 19h, опять же если я правильно понял). |
xds |
Сообщение
#10
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Прерывание int 13h - дисковые службы BIOS. Служба 19h предназначена для парковки головок жесткого диска. В DL она принимает идентификатор устройства (80h - первый жесткий диск, 81h - второй (если есть) и т. д.). В случае возникновения ошибки она, как и прочие дисковые службы, устанавливает флаг переноса (CF), возвращая в AH код состояния (номер ошибки).
Пример: program SomeApp; -------------------- The idiots are winning.
|
Alexn |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Цитата begin {...} if not ParkHDD($80) then begin Writeln('Ошибка парковки'); {...} end; {...} end. А чтобы припарковать я перед if not просто должен написать parkhdd($80), да? |
volvo |
Сообщение
#12
|
Гость |
Alexn
Ничего писать не нужно, при выполнении этой строчки: if not ParkHDD($80) then уже выполнится парковка, и будет анализироваться ее результат... |
Alexn |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Т.е., это законченная пргограмма парковки с проверкой, да?
(программа xds) |
xds |
Сообщение
#14
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
От завершённости её отделяет отсутствие проверки на наличие нескольких устройств. Полнее будет так:
program Park; -------------------- The idiots are winning.
|
Alexn |
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Что может заставить головку сдвинуться?
Например если после выполнения park.exe я нажму esc чтобы посмотреть сообщение (убрать панели волков командер), или если я вставлю в конце программы readkey, в общем после нажатия клавиш она не дернется куда-нибудь, что-нибудь прочитать? Сообщение отредактировано: Alexn - |
xds |
Сообщение
#16
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Вставь ReadKey - гарантированно ничего не двинется (за исключением случая, когда установлен дисковый кэш и включена отложенная запись).
-------------------- The idiots are winning.
|
Alexn |
Сообщение
#17
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Как я узнаю, установлен диковый кэш и отложенная запись или нет?
|
volvo |
Сообщение
#18
|
Гость |
Alexn
Объясни мне, почему нельзя взять файл PARK.EXE и пользоваться им? |
Alexn |
Сообщение
#19
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Цитата почему нельзя взять файл PARK.EXE и пользоваться им? Чтобы знать, как все это работает. Цитата Полнее будет так: У меня эта програма выдает HDD0: ошибка HDD1: ошибка Но у меня только 1 диск и в биосе 1 (173 Mb). Может он слишком большой для ДОС 6.22. Если не надоело помогать, подскажите в чем дело. |
Alexn |
Сообщение
#20
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Да, у меня 2 флопа 3.5 и 5.25. Может это тоже влияет.
В биосе можно выставить 4 флопа и 4 винта (но стоит только 1). |
Текстовая версия | 17.05.2024 0:16 |