Xref: news2.mv.net comp.graphics.algorithms:20670 comp.os.msdos.djgpp:4125 From: "Matthew J. Freyman" Newsgroups: comp.os.msdos.djgpp,comp.graphics.algorithms Subject: Inline ASM, Mode 13h problem Date: Tue, 21 May 1996 20:44:39 -0400 Organization: ProLog - PenTeleData, Inc. Lines: 76 Message-ID: <31A26377.29C6@postoffice.ptd.net> Reply-To: flatline AT postoffice DOT ptd DOT net NNTP-Posting-Host: cs4-06.all.ptd.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp I'm an experienced C, C++ programmer, but I admit to know little about assembly language, especially the AT&T Syntax. I picked up some ASM FAQs and Tutorials off the net. I've been toying with various graphic libs for Turbo C(initially), and more recently DJGPP, and I decided to code my own routines so I could get a better understanding of the low level stuff. Here's my problem: I managed to set mode 13h under DJGPP v2, and restore the text mode, but I am not having luck using the inline assembler to work on a put-pixel routine. Here's the code: #include #include #include #define VGA256 0x13 #define TEXT 0x03 short glib_current_vidmode=0x03; short glib_selector; void setmode(short); void putpixel(short,short,short); int main() { setmode(VGA256); putpixel(160,100,4); while(!kbhit()); setmode(TEXT); return 0; } void setmode(short mode) { __dpmi_regs r; r.x.ax = mode; __dpmi_int(0x10,&r); glib_selector = _dos_ds; glib_current_vidmode=mode; }//END SETMODE FUNCTION void putpixel(short x,short y,short c) { __asm__ __volatile__(" movw %0, %%es; movl $0xA0000, %%edi; movw %2, %%ax; imulw $320, %%ax; addw %1, %%ax; addw %%ax, %%di; movb %3, %%es:(%%edi);" : : "g" (glib_selector), "g" (x), "g" (y), "g" (c) ); }//END PUTPIXEL ROUTINE I'm developing under RHIDE beta4. I get an assembler error in the putpixel function, and I believe it is with the following line: movb %3, %%es:(%%edi);" ERROR: OPERANDS GIVEN DON'T MATCH ANY KNOWN 386 INSTRUCTION. I don't know enough about inline ASM to find what I'm doing wrong. Most of that function was taken from a snipped of ASM code from a tutorial that I converted inline. Any help would be appreciated. -- *********************************************************** * FLATLINE: * flatline AT prolog DOT net * * Stone Cold Dream of * * * a Dead-Hot Cyberjock * * *********************************************************** * Matthew J Freyman * **************************