delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/07/02/12:28:23

From: "David Mitchell" <dmitchell AT inet DOT net DOT nz>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Assembly routine
Date: Fri, 2 Jul 1999 17:12:22 +1200
Organization: Inet Ltd, Christchurch, New Zealand
Lines: 30
Message-ID: <930893937.855103@kyle.inet.net.nz>
References: <377b163a DOT 2813653 AT news DOT telepac DOT pt>
NNTP-Posting-Host: kyle.inet.net.nz
X-Trace: titan.xtra.co.nz 930893177 4637563 202.50.171.4 (2 Jul 1999 05:26:17 GMT)
X-Complaints-To: abuse AT xtra DOT co DOT nz
NNTP-Posting-Date: 2 Jul 1999 05:26:17 GMT
X-Newsreader: Microsoft Outlook Express 4.72.3110.5
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Cache-Post-Path: kyle.inet.net.nz!unknown AT p42-tnt1 DOT inet DOT net DOT nz
X-Cache: nntpcache 2.3.3 (see http://www.nntpcache.org/)
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

aperes wrote in message <377b163a DOT 2813653 AT news DOT telepac DOT pt>...
>
>Please help me!
>
>I'm trying to write a routine that transfers the contents of a buffer
>to video memory. This is my routine:
>
>    FlipAsm(_my_ds(), (int) virtual_screen);

you want to call it by:
    FlipAsm(_my_ds(), &virtual_screen);

also:
>  asm("
>       MOVW %0, %%ES  /* ES= video (%0)  */
>       MOVW %1, %%DS  /* DS= buffer (%1) = segmento dados */
>
>       MOVL $0xA0000, %%EAX
>       MOVL %%EAX, %%EDI /* EDI = Ax0000, ES:DI
>       MOVL %2, %%EAX
>       MOVL %%EAX, %%ESI /* ESI = source, DS:SI */


This code is wrong.  You are moving the Data segment to ES, whereas you want
to move 0x0a000 to ES, and xorw %%si, %%si
Then it should work.  You don't need the video variable.

David


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019