Ultraszybki moduł to pamięci XMS

0

Witam
Potrzebuję jakiegos szybkiego modulu do pamieci xms. A wlasciwie to zalezy mi tylko zeby bardzo szybka byla procedura do przesylania danych z pamieci konwencjonalnej do xms. Obecnie jest w takiej postaci :

[code]
FUNCTION XMSMoveMem (SrcHandler : Word ; SrcOffset : Pointer ;
DstHandler : Word ; DstOffset : Pointer ; Size : Longint) : Boolean;
BEGIN
WITH XMSBlockInfo DO
BEGIN
Length := Size;
SourceHandler := SrcHandler;
SourceOffset := SrcOffset;
DestinationHandler := DstHandler;
DestinationOffset := DstOffset;
END;
ASM
mov @result, TRUE
mov ax, seg XMSBlockInfo
mov ds, ax
mov si, offset XMSBlockInfo
mov ax, $0b00
call [XMSAddress]
cmp ax, 1
je @End
mov XMSError, bl
mov @result, FALSE
@End:
END;
END;
[/code]

Prawie cala procka jest w assemblerze, wiec nie wiem, czy da sie to jeszcze jakos przyspieszyc :(

0

Dodam jeszzce ze kopiuje bezposrednio z ekranu (w trybie 13h). Wiem, ze moglbym najpierw ekran kopiowac do innego bufora (pamiec konwencjonalna), a dopiero potem do xms, ale niestety wtedy bedzie brakowac pamieci konwencjonalnej. moze da sie to zrobic jeszcze jakos inaczej ? ...

0

szybciej się nie da, może o kilka cykli procesora, czyli mocno symbolicznie. zresztą i tak ogranicza Cię zegar taktujący pamięć.
jeśli naprawdę potrzebujesz większej wydajności, to mozesz spróbować przepisać program do trybu chronionego i w ogóle zrezygnować z korzystania z XMS.

1 użytkowników online, w tym zalogowanych: 0, gości: 1