{ Make a Pointer, make a Type of the data Type you are dealing with, make as many Pointers as you will need data segments (or as commonly practiced amongst the Programming elite, make an linked list of the data items), and call the GETMEM Procedure using the Pointer in the Array... Here is an example I use to copy VGA (320x200x256) screens... } Type ScreenSaveType = Array[0..TheSize] of Byte; Var TheScreen : ScreenSaveType Absolute $A000:0000; Screen : Array[1..100] of ^ScreenSaveType; begin InitGraphics; Count := 0; Repeat Count := Count + 1; GetMem(Screen[Count],Sizeof(ScreenSaveType)); WriteLn('Memory at Screen ',Count,' : ',MemAvail); {THIS MAKES THE PAGES} Until MemAvail < 70000; For X := 1 to Count do For A := 1 to TheSize do {THE MAKES A SCREEN} Screen[X]^[A] := Random(255); E := C; X := 0; GetTime(A,B,C,D); C2 := 0; Repeat X := X + 1; GetTime(A,B,C,D); if C <> E then begin C2 := C2 + 1; testresults[C2] := X; X := 1; E := C; end; TheScreen := Screen[X mod Count + 1]^; Move(Scroll2,Scroll1,Sizeof(Scroll2)); Until KeyPressed; WriteLn(Test,'Number of Screens :',Count); For X := 1 to C2 do WriteLn(Test,'Number of flips, second #',X,':',testresults[x]); Close(Test); end. { I didn't try and Compile that, I also edited out the Procedure initGraphics because you aren't Really interested in that end. However where it says "THIS MAKES THE PAGES" is what you want to do.. In this particular version I made 4 Graphics pages under pascal and 5 outside of pascal, I could have fit more but I have too many TSRS. Using Extended memory I can fit about 20 Graphics pages (I got about 2 megs ram), but you can extend that as Far as ram may go. The MOVE command isn't a bad command either to know. I got when running a Text mode, 213 Text pages per second. I was even impressed (PS Graphics people, I got 16 Graphics pages per second in 320x200x256 mode!)... }