Аппаратное обеспечение персонального компьютера



           

Программа CALLHMA


Приведем текст программы, составленная на языке программирования Си, которая вызывает функции драйвера расширенной памяти. Эта программа будет работать только в моделях памяти Small и Compact. Для других моделей памяти требуется изменить строки интерфейсного модуля hma.asm, в которых передаваемые функциям параметры извлекаются из стека и тип процедур:

Аргументы

Small, Compact

Large, Huge

Первый аргумент

[bp+4]

 [bp+6]

Второй аргумент

[bp+6]

 [bp+8]

Текст программы CALLHMA вы найдете в листинге 11.2, а текст интерфейсного модуля - в листинге 11.3.

Листинг 11.2. Файл callhma\callhma.c

// =====================================================

// Работа с драйвером HIMEM.SYS

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

// =====================================================

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <dos.h>

#include <string.h>

struct   XMM_Move

{

  unsigned long  Length;

  unsigned short SourceHandle;

  unsigned long  SourceOffset;

  unsigned short DestHandle;

  unsigned long  DestOffset;

};

extern long XMM_Installed(void);

extern long XMM_Version(void);

extern long XMM_RequestHMA(unsigned);

extern long XMM_ReleaseHMA(void);

extern long XMM_GlobalEnableA20(void);

extern long XMM_GlobalDisableA20(void);

extern long XMM_EnableA20(void);

extern long XMM_DisableA20(void);

extern long XMM_QueryA20(void);

extern long XMM_QueryLargestFree(void);

extern long XMM_QueryTotalFree(void);

extern long XMM_AllocateExtended(unsigned);

extern long XMM_FreeExtended(unsigned);

extern long XMM_MoveExtended(struct XMM_Move *);

extern long XMM_LockExtended(unsigned);

extern long XMM_UnLockExtended(unsigned);

extern long XMM_GetHandleLength(unsigned);

extern long XMM_GetHandleInfo(unsigned);

extern long XMM_ReallocateExtended(unsigned, unsigned);




Содержание  Назад  Вперед