Message-ID: <376C3676.D6883917@geocities.com> From: Sahab Yazdani Organization: MASC Productions X-Mailer: Mozilla 4.61 [en] (Win95; I) X-Accept-Language: en MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Well, gee thats weird Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 81 Date: Sat, 19 Jun 1999 20:31:50 -0400 NNTP-Posting-Host: 209.103.48.162 X-Complaints-To: abuse AT sprint DOT ca X-Trace: newscontent-02.sprint.ca 929838810 209.103.48.162 (Sat, 19 Jun 1999 20:33:30 EDT) NNTP-Posting-Date: Sat, 19 Jun 1999 20:33:30 EDT To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hello, Iif you've been following this newsgroup, you've probably read my plea for a Assembly Function which cuts a small part of a bigger bitmap?? Anyway I finally found some code (I had to tweak it to work with NASM) that claimed that it did this. So I used it, and a wierd thing happens. If the x and y values are bigger than a certain number (i've tried up to 35) the program crashes (wierd no?). Anyway I was hoping that someone could help me (the code is attached below): ; Prototype: void ClipperFunction( void *source, ; void *dest, ; int x, ; int y, ; int maxx, ; int maxy, ; int IncrementA, ; int IncrementB ) CLIPPER_Source equ 8 CLIPPER_Dest equ 12 CLIPPER_Left equ 16 CLIPPER_Top equ 20 CLIPPER_Right equ 24 CLIPPER_Bottom equ 28 CLIPPER_SourceIncrement equ 32 CLIPPER_DestinationIncrement equ 36 _ClipperFunction: ; Pointers have already been treated with offset implications in C++ push ebp mov ebp, esp push ds push edx push ebx push ecx push esi push edi ; Get Region that you want to cut! mov edx, [ebp + CLIPPER_Right] sub edx, [ebp + CLIPPER_Left] mov ebx, [ebp + CLIPPER_Bottom] sub ebx, [ebp + CLIPPER_Top] ; Get Pointers that you want to Copy ; VirtualScreen mov esi, [ebp + CLIPPER_Source] mov edi, [ebp + CLIPPER_Dest] ; Do actual copying and stuff .rowloop: mov ecx, edx shr ecx, 1 rep movsw adc ecx, 0 rep movsb add esi, [ebp + CLIPPER_SourceIncrement] add edi, [ebp + CLIPPER_DestinationIncrement] dec ebx jnz .rowloop ; All accessed registers should have push signal pop edi pop esi pop ecx pop ebx pop edx pop ds mov esp, ebp pop ebp ret sorry if this code is messy but its the best I could do. Anyways Thanks for any light you may be able to shine on this!!