| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Как открыть крышку CD-ROM |
| Автор: Гость_Sniper 7.8.2003, 16:44 |
| Как открыть крышку CD-ROM без использования ф-ций win? ответ либо кодом либо чтивом! :-) |
| Автор: a78040767 9.8.2003, 17:47 |
| Могу привести код на Pascale но это очень гемморойный вариант type DWORD=array [0..1] of word; TReqHdr=record Size :byte; SubUnit :byte; Command :byte; Status :word; Reserved :array[0..7] of byte; end; TIOCTL=record ReqHdr :TReqHdr; MediaDescriptor :byte; TransferAddress :pointer; DataSize :word; StartSector :word; VolID :dword; end; var IOCTL :^TIOCTL; FunctionCode :byte; begin New(IOCTL); FunctionCode:=0; With IOCTL^ do begin ReqHdr.Size:=SizeOf(TIOCTL); ReqHdr.SubUnit:=0; ReqHdr.Command:=12; MediaDescriptor:=0; TransferAddress:=@FunctionCode; DataSize:=1; StartSector:=0; longint(VolID):=0; end; asm mov ax,1510h mov cx,4 mov bx,word ptr IOCTL+2 mov es,bx mov bx,word ptr IOCTL int 2Fh end; Dispose(IOCTL); end. |
| Автор: Гость_Sniper 10.8.2003, 12:06 |
| спасибо буду разбираться :-) |
| Автор: Гость_Sniper 12.8.2003, 18:25 |
| Чего-то не работает..... всё компилится и не работает! :-( |
| Автор: p0s0l 12.8.2003, 20:07 |
| Странно, но у меня работает... Прямо так всtавил, ничего не меняя... |
| Автор: a78040767 18.8.2003, 17:47 |
| Гость_Sniper кинь своё мыло я тебе документацию дам. |
| Автор: a78040767 18.8.2003, 18:03 |
| и еще.. как я понял у тебя не работает вот почему: в регистре cx должен быть номер твоего CDROMa A:=0;B:=1;С:=2 и т.д. {это в конце, в ассемблерной вставке} и вообще смотри Interrupt list там всё написано. -> Inp.: AX = 1510h CX = CD-ROM drive letter (0 = A, 1 = B, etc) ES:BX -> CD-ROM device driver request header (see #02597 at AX=0802h) Return: CF clear if device driver has been called (check the request header's status word to determine whether an error has occurred) ES:BX request header updated CF set if device driver has not been called AX = error code (000Fh = invalid drive, 0001h = invalid function) ES:BX request header unchanged Notes: MSCDEX initializes the device driver request header's subunit field based on the drive number specified in CX MSCDEX v2.21 through v2.25 (at least) return error code AX=0001h if nested calls are attempted BUGS: Novell DOS 7 NWCDEX prior to the 12/13/94 update did not initialize the subunit field Windows95 sets CF if CX isn't a CD-ROM drive but leaves CF unchanged if the drive is in fact a CD-ROM SeeAlso: AX=0802h Copied from Ralf Brown's Interrupt List |
| Автор: Sniper 19.8.2003, 18:02 |
| a78040767 Я не Гость_Sniper а просто Sniper (мне лень просто заходить НОРМАЛЬНО! :-))) |
| Автор: Sniper 19.8.2003, 18:09 |
| Спасибо! У меня эта цифра 5 :-) Документацию конечноже жду! :-) |