Скачать EMSArray - Place Arrays to Expanded Memory

Скачать файл (11,22 Кб)

Array in Expand Memory object For Turbo Pascal 6.0 (Ver. 1.0)

Written by Jialong He

This program allows you to define any array in the Expand Memory and access the array directly. It is a by-product when I worked on my Ph.D project. You may freely distribute it or use it for any purpose, provided this notice is attached with it. I would be very happy if you intend to use it in your program. Please let me know if you like it.

1. Introduction

DOS has a 640 Kb memory barrier. When there is a large amount of data, a programmer has to process data separately by reading only part of the data into memory each time. This makes programming very complicated and will degrade the program's performance. Now you can put your data into expanded memory by including this unit into your program. By defining an array in expanded memory, you can access each element directly similar to the way you define an array in the heap memory.

2. What is Expanded Memory?

Expanded memory is the memory beyond DOS's 640K-byte limit. The LIM specification supports up to 32M bytes of expanded memory. Because the 8086, 8088, and 80286 (in real mode) microprocessors can physically address only 1M byte of memory, they access expanded memory through a window in their physical address range.
Expanded memory is divided into segments called logical pages. These pages are typically 16K-bytes of memory. Your computer accesses logical pages through a physical block of memory called a page frame. The page frame contains multiple physical pages, pages that the microprocessor can address directly. Physical pages are also typically 16K bytes of memory.

This page frame serves as a window into expanded memory. Just as your computer screen is a window into a large spreadsheet, so the page frame is a window into expanded memory.

A logical page of expanded memory can be mapped into (made to appear in) any one of the physical pages in the page frame. Thus, a read or write to the physical page actually becomes a read or write to the associated logical page. One logical page can be mapped into the page frame for each physical page. The page frame is located above 640K bytes. Normally, only video adapters, network cards, and similar devices exist between 640K and 1024K.

You may explore the example program EMSTEST.PAS to learn how to use EMS objects.

4. File list

     README              { This file }
     EMS.PAS             { Source Code of EMS object }
     EMS.TPU             { Compiled version of EMS object }
     EMSTEST.PAS         { Example program of using EMS object }
     EMSTEST.EXE         { Executable file of EMSTEST.PAS }