WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  ASM
  Мой сидюк меня не слышит

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Мой сидюк меня не слышит
Alex2001 опубликован 02-11-2001 16:53 MSK   Click Here to See the Profile for Alex2001   Click Here to Email Alex2001  
Народ! Нужен ваш хелп. Очень.
Каким прерыванием открыть/закрыть сидюк?
Спасибо.
7in опубликован 03-11-2001 23:43 MSK     Click Here to See the Profile for 7in  Click Here to Email 7in     
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Пример открывания и закрытия CD-ROM`а (by 7in) ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

.MODEL Tiny,Pascal
.CODE
ORG 100h

SMART

Start:
call GetCDROMInfo
or al,al
lea dx,Error
je Exit ; Если MSCDEX

push FirstCDROM
mov ax,1 ; Открыть CD-ROM
push ax
call CDROMEject
lea dx,Opened
mov ah,9
int 21h

push FirstCDROM
xor ax,ax ; Закрыть CD-ROM
push ax
call CDROMEject
lea dx,Closed
Exit: mov ah,9
int 21h
int 20h

Opened DB 'CDROM is Ejected!',13,10,'$'
Closed DB 'Tray is Closed!',13,10,'$'
Error DB 'MSCDEX is not installed!',7,13,10,'$'

;-- Процедуры ---------------------------------------------------------------;

FirstCDROM DW ? ; Номер буквы имени первого CD-ROM-устройства (A=0...)
CDROMsNumber DW ? ; Количество CD-ROM-устройств

; Возвращает AL=1, если MSCDEX загружен, и заполняет FirstCDROM и
; CDROMsNumber соответствующими значениями. Возвращает AL=0, если
; MSCDEX не загружен, и дальнейшая работа с CD-ROM невозможна.
GetCDROMInfo proc
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: ret
GetCDROMInfo endp

; Формат запроса
Request struc
ReqLen DB ? ; Длина запроса
SubUnit DB ? ; Номер подустройства драйвера
Command DB ? ; Код коданды
Status DW ? ; Статус (результат)
; Status - Если бит 15 установлен, значит ошибка, код в младшем байте
; Status - Если бит 9 установлен, значит устройство занято
; Status - Если бит 8 установлен, значит запрос выполнен!!!
Reserved DB 8 dup (?) ; Резерв (устанавливается драйвером)
; Далее идут данные для команды 12 (IOCTLO)
Media DB ? ; Media descriptor byte from BPB
Address DD ? ; Указатель на передаваемые байты
DataSize DW ? ; Количество передаваемых байт
Sector DW ? ; Номер начального сектора
VolID DD ? ; DWORD ptr to requested vol ID if error 0Fh
ends

; Послает драйверу устройства Drive запрос типа Request, на который
; указывает Data. После выполнения запроса в поля ErrorCode и Status
; заносится код результата.
SendCDROMRequest proc
arg Drive:WORD, Data:DWORD
uses ES
mov ax,1510h
mov cx,Drive
les bx,Data
int 2Fh
ret
SendCDROMRequest endp

; Открывает (Open<>0) / закрывает (Open=0) устройство Drive.
; Функция возвращает статус в регистре AX.
CDROMEject proc
arg Drive:WORD, Open:BYTE
local Data:Request, Code:BYTE
mov Data.ReqLen,26
mov Data.SubUnit,0
mov Data.Command,12
and Data.Status,0
mov Data.Media,0
lea ax,Code
mov WORD PTR Data.Address[0],ax
mov WORD PTR Data.Address[2],ss
mov Data.DataSize,1
and Data.Sector,0
and WORD PTR Data.VolID[0],0
and WORD PTR Data.VolID[2],0
mov Code,0
cmp Open,0
jne @@OpenIt
mov Code,5
@@OpenIt: push Drive
push ss
lea ax,Data
push ax
call SendCDROMRequest
mov ax,Data.Status
ret
CDROMEject endp

END Start

7in опубликован 03-11-2001 23:45 MSK     Click Here to See the Profile for 7in  Click Here to Email 7in     
Ой! Красота-то какая!!! :)))
Неужели трудно сделать, чтобы пробелы вначале не удалялись?!!!

Эту прогу я тебе на мыло кину сейчас...

Alex2001 опубликован 05-11-2001 12:54 MSK     Click Here to See the Profile for Alex2001  Click Here to Email Alex2001     
Спасибо !!!

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.