{Fast FillChar and Move} {Posted By: Wesley Burns} {Email : microcon@iafirca.com} Unit MEM; Interface Procedure FillCharFast(Var X; Count: Word; Value:Byte); Procedure MoveFast(var source, dest; count: word); Implementation Procedure MoveFast(var source, dest; count: word); Assembler; asm push ds lds si,source {ds,si = source} les di,dest {es,di = dest} mov cx,count {cx = count} mov ax,cx {ax = count} cld shr cx,2 {cx = count / 4} db 66h rep movsw {copy double words} mov cl,al {get rest bytes} and cl,3 rep movsb {copy rest} pop ds end; Procedure FillCharFast(Var X; Count: Word; Value:Byte); Assembler; Asm les di,x mov cx,Count shr cx,1 mov al,value mov ah,al rep StoSW test count,1 jz @end StoSB @end: end; end. {Email: me if you have ANY questions about } { : 64k DMA Sound Blaster Programming using XMS } { : Fast Memory Management } { : PCX using XMS } { : XMS Units } { : Pascal in general } { : Or if you have some fast procedures that you don't mind parting with. }