Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[44.221.43.88] |
|
Сообщ.
#1
,
|
|
|
Пиплы, занялся тут написанием проги-шелла, с поддержкой длинных имён в чистом ДОСе, но не знаю как читать инфу с компакта (по секторам !?!). Подскажите плз...
|
Сообщ.
#2
,
|
|
|
*** Эх, и геморройным делом ты решил заняться!!! ***
Чем тебе MSCDEX не нравится? У MSCDEX есть функция чтения секторов... Только вот, файловая система (и начальный сектор) на CD-ROM несколько другая. Да и сектор занимает не 512 байт, а 2048 (хотя, если точнее, то 2560, но в немузыкальных дисках используется только 2048 !!! Если не использовать MSCDEX, то скорее всего придётся работать через порты (хотя, возможно, я ошибаюсь, но уж никак ни через INT 13/25/26), а отсюда поползут проблемы, связанные с многообразием контроллеров... А если уж ОООЧЕНЬ хочется узнать, как это делается, запусти функцию MSCDEX и проследи её отладчиком ))... Var FirstCDROM: Word; { Номер первого устройства 0=A, 1=B... } CDROMsNumber: Word; { Количество устройств } CDROMResult: Word; { Код ошибки } Function GetCDROMInfo; assembler; Asm mov ax,1500h xor bx,bx xor cx,cx int 2Fh xor al,al or bx,bx jz @Error inc ax mov FirstCDROM,cx mov CDROMsNumber,bx @Error: End; Procedure ReadCDROMSectors(Drive: Word; Sec: Longint; Count: Word; var Buf); assembler; { Sec >=16 . Музыкальные диски не читаются вообще :( } Asm mov ax,1508h mov cx,Drive mov dx,Count mov si,word ptr Sec+2 mov di,word ptr Sec les bx,Buf int 2Fh mov CDROMResult,ax End; Если нужна дока по MSCDEX (по которой всё это писалось), напиши мне на мыло... Удачи! )) |
Сообщ.
#3
,
|
|
|
to 7in:
Как распознать по исходнику, использует ли прога МсцДекс, если в описании этого явно не сказано? При этом видно, что в тексте используется Int 2Fh/15xxh. |
Сообщ.
#4
,
|
|
|
Valery Votintsev: Скорее всего использует, потому что Int 2Fh/15xxh кроме MSCDEX используют только старые версии Graphics.com и какой-то CDBLITZ (и то при BX=1234h и CH=9xh).
|