Assembler...
От: Alexander  
Дата: 02.04.02 17:37
Оценка:
Доброе время суток.
Мне надо вставить в программу код типа:
mov ax, 0x1510
....
int 0x2f
Как его грамотно "перефразировать" и вставить в программу так, чтоб Винда не висла?

Спасибо,
Alexander.
Re: Assembler...
От: ServerMouse Беларусь  
Дата: 02.04.02 18:43
Оценка:
Здравствуйте Alexander, Вы писали:

A>Доброе время суток.

A>Мне надо вставить в программу код типа:
A>mov ax, 0x1510
A>....
A>int 0x2f
A>Как его грамотно "перефразировать" и вставить в программу так, чтоб Винда не висла?

Не понял, что ты пытаешся этим сделать... Мультиплексное прерывание дос... mscdex-сервис...

Если пишешь win32 сразу забудь о прерываниях. Ничего общего с дос.
Если человек программист, то это надолго.
Re[2]: Assembler...
От: Alexander  
Дата: 02.04.02 21:08
Оценка:
Здравствуйте ServerMouse, Вы писали:


SM>Не понял, что ты пытаешся этим сделать... Мультиплексное прерывание дос... mscdex-сервис...

SM>Если пишешь win32 сразу забудь о прерываниях. Ничего общего с дос.
Я хотел написать проигрыватель CD без использования MCI... так судя по всему не пойдёт...
Может ты подскажешь как это можна сделать по-другому.

Alexander.
Re[3]: Assembler...
От: Roman_M rgmroman.narod.ru
Дата: 03.04.02 05:19
Оценка: 10 (1)
Здравствуйте Alexander, Вы писали:

A>Здравствуйте ServerMouse, Вы писали:



SM>>Не понял, что ты пытаешся этим сделать... Мультиплексное прерывание дос... mscdex-сервис...

SM>>Если пишешь win32 сразу забудь о прерываниях. Ничего общего с дос.
A>Я хотел написать проигрыватель CD без использования MCI... так судя по всему не пойдёт...
A>Может ты подскажешь как это можна сделать по-другому.


Для Win9x ещё можно сделать нечто подобное, только сначала нужно проникнуться описанием функций DPMI и понять что делать INT 2F AX=1510h в принципе нельзя, потому как там адрес буфера указывается в формате seg16:off16. Поэтому нужно использовать INT 31h AX=300h, правда его тоже вызвать напрямую нельзя. Память для буфера выделяется через такой атавизм как GlobalDosAlloc (KERNEL). В MSDN описания такой функции скорее всего нет, правда она числется в списке Deleted Windows Programming Elements.

Теперь о реализации.

В MSDN есть статья "How Win32 Applications Can Read CD-ROM Sectors in Windows 95". Там пример с использованием thunk'а к 16-битной dll (Нужен компилятор и линкер, на которых можно программировать под Win3x, естествено VC 6 не катит, судя по всему потребется компилятор с ассемблера и компилятор thunk-скриптов). Если не страшно использовать использовать недокуметированные функции (QT_Thunk, VxDCall, LoadLibrary16, ...), то можно всё воткнуть в один exe и обойтись без скриптов для thunk. Только нужно хорошо подумать стоит ли игра свеч.
Re[4]: Assembler...
От: Alexander  
Дата: 03.04.02 18:58
Оценка:
Здравствуйте Roman_M, Вы писали:

A>>Здравствуйте ServerMouse, Вы писали:

RM>В MSDN есть статья "How Win32 Applications Can Read CD-ROM Sectors in Windows 95". Там пример с использованием thunk'а к 16-битной dll (Нужен компилятор и линкер, на которых можно программировать под Win3x, естествено VC 6 не катит, судя по всему потребется компилятор с ассемблера и компилятор thunk-скриптов). Если не страшно использовать использовать недокуметированные функции (QT_Thunk, VxDCall, LoadLibrary16, ...), то можно всё воткнуть в один exe и обойтись без скриптов для thunk. Только нужно хорошо подумать стоит ли игра свеч.

может и стоит, только не с моим объёмом знаний в данной области... а за столь детальный ответ болшое ПАСИБА

Alexander.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.