Как узнать - вставлен ли CD (на ассемблере)?
Сам я предпочитаю Дельфи
(за простоту и быстроту программирования).
Но ассемблер уважаю по заслугам.
И ОЧЕНЬ уж мне приспичило вставить процедуру
проверки - вставлен ли CD - прописать на ассемблере.
Если кто знает, напишите пожалйста.
Благодарен зааранее.
Var
{буфер для функции получения имени файла прав собственности}
buferarray[0..37] of Byte;
{Код возвращаемой этой функцией ошибки}
ErrorWord;
Begin
Asm
{Определяем первое доступное устройство CD-ROM}
mov ax,1500h
int 2Fh
{Теперь его номер находится в CX}
{Используем первую попавшуюся функцию, выдающую код ошибки. Больше нам от нее ничего и не надо}
mov ax,1502h
mov bx,Seg bufer[0]
mov es,bx
mov di,offset bufer[0]
int 2Fh
mov error,ax
End;
{А теперь поэксперементирую сам. Когда диск вставлен, то на моем компе Error=5378 когда вынут
Error=30. На твоем может быть будет по другому. Скорее всего помимо информации о "вставленности" этот код несет еще какую-то полезную нагрузку. Сам покопайся в списке кодов ошибок и путем ANDов ORов и т.д. выдели нужную часть ошибки.}
WriteLn(Error);
End.
{P.S. Если работаешь в DOS, загрузи драйвер MSCDEX. Под виндами он грузится автоиатически. Правда под NT возможно вышеописанный фрагмент работать не будет}
Жалко, что Анонимус...
Стоит регистрироваться.
Это безусловно лучше, чем ничего, но..
увы...
Delphi 5 не понимает операнд "Seg",
(пишет, что тип Undeclared)
А мой грёбанный Милленниум похоже
на дух не переваривает "int 2Fh".
В лучшем случае Синенький экранчик с крякозябрами, в худшем - Ctrl+Alt+Del не реагирует...
Ну, не знаю, может причины я и не точно определил (я ведь не волшебник... только учусь), но не работает.
Жаль.
Всё равно спасибо.
Может кто ещё подскажет?..