Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.197.123] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Хорош вам спорить Абсолютно все ОС, в целях совместимости со старым програмным обеспечением, предоставляют средства для выделения памяти в первом мегабайте. Что касается следующих 15-ти метров, то не стоит на них ориентироваться, если предполагается работа в виртуальном режиме, которым управляет не ваша прога. И с VDS не стоит заморачиваться, легко нарваться на неприятности. Вчера попробовал под 98-й виндой. Прога намертво висла, т.е. функции VDS не возвращали признаков ошибок (именно поэтому и висла). Стоило только заменить сервис VDS на старый-добрый ДОС, как все нормально заработало.
Для тех, кто по прежнему считает, что можно безбояненно использовать сервис VDS советую заглянуть в "The x86/MSDOS Interrupt List", от Ralf Brown. Далеко ходить не нужно: Цитата INT 4B - Virtual DMA Specification - LOCK DMA REGION AX = 8103h DX = flags (see #03220) ES:DI -> DMA descriptor structure (see #03221,#03222,#03223) Return: CF clear if successful DDS physical address field filled in DDS buffer ID field filled (0000h if no buffer allocated) CF set on error AL = error code (see #03218) DDS region size field filled wth maximum contiguous length in bytes BUGS: Windows 3.0 does not correctly support automatic remapping or copying in enhanced mode Windows 3.0 in enhanced mode does not return a correct code on error Именно на этой функции у меня и висла прога под 98-й виндой Добавлено Цитата cppasm @ А теперь подумай, почему они считаются совместимыми? Да потому, что они способны выполнять код 8086-го процессора, который и назывался IBM PC. Но с программами немножко по другому. Если твоя программа сможет выполняться на 8086-м, то это IBM PC совместимая прога, если же она расчитана на более совершенные модели процессоров/систем, то это уже x86-совместимость. Так что andriano прав. Даже все современные ПК на базе х86 считаются IBM-совместимыми, и так оно по сути и есть. |
Сообщ.
#17
,
|
|
|
Можно подробнее о функции
mov ax,4309h int 2Fh |
Сообщ.
#18
,
|
|
|
--------m-2F4309----------------------------- INT 2F U - HIMEM.SYS v3.09+ - GET XMS HANDLE TABLE AX = 4309h Return: AL = 43h if function supported ES:BX -> XMS handle table (see #02747) Note: HIMEM.SYS v3.09 is part of MS-DOS 6.0. SeeAlso: AX=4308h Format of XMS handle table: Offset Size Description (Table 02747) 00h BYTE ??? (01h in HIMEM.SYS v3.09) 01h BYTE size of one handle descriptor 02h WORD number of handles (default = 20h) 04h DWORD pointer to XMS handle array (see #02748) SeeAlso: #02777 Format of XMS handle descriptor [array]: Offset Size Description (Table 02748) 00h BYTE flag 01h=free, 02h=used, 04h=in pool but not associated with any EMB 01h BYTE lock count (00h=unlocked) 02h DWORD address of XMS block in KB (shift left by 10 for abs. address) 06h DWORD size of XMS block in KB |
Сообщ.
#19
,
|
|
|
Функция mov ax,4309h int 2Fh прекрасно работает на XMS v3+
Существует ли чтонибуть подабное для старых версий (например XMS v2) |