<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=109613&amp;view=findpost&amp;p=815561</guid>
        <pubDate>Mon, 05 Nov 2001 09:54:00 +0000</pubDate>
        <title>Мой сидюк меня не слышит</title>
        <link>https://forum.sources.ru/index.php?showtopic=109613&amp;view=findpost&amp;p=815561</link>
        <description><![CDATA[Alex2001: Спасибо !!!]]></description>
        <author>Alex2001</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=109613&amp;view=findpost&amp;p=815560</guid>
        <pubDate>Sat, 03 Nov 2001 20:45:00 +0000</pubDate>
        <title>Мой сидюк меня не слышит</title>
        <link>https://forum.sources.ru/index.php?showtopic=109613&amp;view=findpost&amp;p=815560</link>
        <description><![CDATA[Jin X: Ой! Красота-то какая!!! :)))<br>Неужели трудно сделать, чтобы пробелы вначале не удалялись?!!!<br>Эту прогу я тебе на мыло кину сейчас...]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=109613&amp;view=findpost&amp;p=815559</guid>
        <pubDate>Sat, 03 Nov 2001 20:43:00 +0000</pubDate>
        <title>Мой сидюк меня не слышит</title>
        <link>https://forum.sources.ru/index.php?showtopic=109613&amp;view=findpost&amp;p=815559</link>
        <description><![CDATA[Jin X: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br>;; Пример открывания и закрытия CD-ROM`а (by 7in) ;;<br>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br>.MODEL Tiny,Pascal<br>.CODE<br>ORG     100h<br>SMART<br>Start:<br>                call    GetCDROMInfo<br>                or      al,al<br>                lea     dx,Error<br>                je      Exit           ; Если MSCDEX<br>                push    FirstCDROM<br>                mov     ax,1           ; Открыть CD-ROM<br>                push    ax<br>                call    CDROMEject<br>                lea     dx,Opened<br>                mov     ah,9<br>                int     21h<br>                push    FirstCDROM<br>                xor     ax,ax          ; Закрыть CD-ROM<br>                push    ax<br>                call    CDROMEject<br>                lea     dx,Closed<br>Exit:           mov     ah,9<br>                int     21h<br>                int     20h<br>Opened          DB      'CDROM is Ejected!',13,10,'$'<br>Closed          DB      'Tray is Closed!',13,10,'$'<br>Error           DB      'MSCDEX is not installed!',7,13,10,'$'<br>;-- Процедуры ---------------------------------------------------------------;<br>FirstCDROM      DW      ?              ; Номер буквы имени первого CD-ROM-устройства (A=0...)<br>CDROMsNumber    DW      ?              ; Количество CD-ROM-устройств<br>; Возвращает AL=1, если MSCDEX загружен, и заполняет FirstCDROM и<br>; CDROMsNumber соответствующими значениями. Возвращает AL=0, если<br>; MSCDEX не загружен, и дальнейшая работа с CD-ROM невозможна.<br>GetCDROMInfo    proc<br>                mov     ax,1500h<br>                xor     bx,bx<br>                xor     cx,cx<br>                int     2Fh<br>                xor     al,al<br>                or      bx,bx<br>                jz      @@Error<br>                inc     ax<br>                mov     FirstCDROM,cx<br>                mov     CDROMsNumber,bx<br>@@Error:        ret<br>GetCDROMInfo    endp<br>; Формат запроса<br>Request         struc<br>ReqLen          DB      ?              ; Длина запроса<br>SubUnit         DB      ?              ; Номер подустройства драйвера<br>Command         DB      ?              ; Код коданды<br>Status          DW      ?              ; Статус (результат)<br>; Status - Если бит 15 установлен, значит ошибка, код в младшем байте<br>; Status - Если бит 9 установлен, значит устройство занято<br>; Status - Если бит 8 установлен, значит запрос выполнен!!!<br>Reserved        DB      8 dup (?)      ; Резерв (устанавливается драйвером)<br>; Далее идут данные для команды 12 (IOCTLO)<br>Media           DB      ?              ; Media descriptor byte from BPB<br>Address         DD      ?              ; Указатель на передаваемые байты<br>DataSize        DW      ?              ; Количество передаваемых байт<br>Sector          DW      ?              ; Номер начального сектора<br>VolID           DD      ?              ; DWORD ptr to requested vol ID if error 0Fh<br>ends<br>; Послает драйверу устройства Drive запрос типа Request, на который<br>; указывает Data. После выполнения запроса в поля ErrorCode и Status<br>; заносится код результата.<br>SendCDROMRequest proc<br>arg Drive:WORD, Data:DWORD<br>uses ES<br>                mov     ax,1510h<br>                mov     cx,Drive<br>                les     bx,Data<br>                int     2Fh<br>                ret<br>SendCDROMRequest endp<br>; Открывает (Open&lt;&gt;0) / закрывает (Open=0) устройство Drive.<br>; Функция возвращает статус в регистре AX.<br>CDROMEject      proc<br>arg Drive:WORD, Open:BYTE<br>local Data:Request, Code:BYTE<br>                mov     Data.ReqLen,26<br>                mov     Data.SubUnit,0<br>                mov     Data.Command,12<br>                and     Data.Status,0<br>                mov     Data.Media,0<br>                lea     ax,Code<br>                mov     WORD PTR Data.Address[0],ax<br>                mov     WORD PTR Data.Address[2],ss<br>                mov     Data.DataSize,1<br>                and     Data.Sector,0<br>                and     WORD PTR Data.VolID[0],0<br>                and     WORD PTR Data.VolID[2],0<br>                mov     Code,0<br>                cmp     Open,0<br>                jne     @@OpenIt<br>                mov     Code,5<br>@@OpenIt:       push    Drive<br>                push    ss<br>                lea     ax,Data<br>                push    ax<br>                call    SendCDROMRequest<br>                mov     ax,Data.Status<br>                ret<br>CDROMEject      endp<br>END Start]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=109613&amp;view=findpost&amp;p=815558</guid>
        <pubDate>Fri, 02 Nov 2001 13:53:00 +0000</pubDate>
        <title>Мой сидюк меня не слышит</title>
        <link>https://forum.sources.ru/index.php?showtopic=109613&amp;view=findpost&amp;p=815558</link>
        <description><![CDATA[Alex2001: Народ! Нужен ваш хелп. Очень.<br>Каким прерыванием открыть/закрыть сидюк?<br>Спасибо.]]></description>
        <author>Alex2001</author>
        <category>Assembler</category>
      </item>
	
      </channel>
      </rss>
	