Newsgroup: it.comp.lang.c++
Titolo: problema with asm in DevC++

Ciao a tutti, scrivo perchč  ho un problema coi compilatori mingw/cygwin e
DevC++.
Lavorando con il tool IDE Dev C++, ho provato a sviluppare alcune funzioni
grafiche, ma ho trovato un sacco di problemi, non ho mai avuto problemi con
altri compilatori.
Ho provato a scrivere le mie funzioni in assembler, ma non lo so perchč il
sistema va in crash, quando le mando in esecuzione.
La funzione č molto semplice, chiama l'interruzione 10h della Bios.
Quello che devo fare in pratica č:
   AX=13h
   INT 10h
Con l'assembly di Intel io posso scrivere:
  mov ax,013h
  int 10h
Con l'assembler usato da DevC++/Mingw/CygWin ho provato:
void vga( )
{
  __asm__("
     movb $0x00,%ah /n
     movb $0x13,&al /n
     int $0x10 /n
    ");
}
Il sistema compila, ma il programma manda in un crash irreversibile Windows
95 ( Ho Win 95 Installato ).
Allora ho provato questo:
void vga( )
{
  asm (".byte 184,19,0,205,16");
}
Il sistema compila, ma va in un crash reversibile ma comunque va in crash.
Ho studiato un po' il problema e ho scoperto che č possibile risolverlo con
una sintassi C con la libreria "dmpi.h"
void vga()
{
   __dpmi_regs rg;
 
rg.x.ax
 = 0x13;
   __dpmi_int(0x10, &rg);
}
void txt()
{
   __dpmi_regs rg;
 
rg.x.ax
 = 0x03;
   __dpmi_int(0x10, &rg);
}
Ho cercato la libreria nelle directori di sistema, ma non l'ho trovata!
La mia domanda č, come posso realizzare con i compilatori usati da DevC++
cioč Mingw/Cygwin l'operazioni "AX=13h" e "Int 10h"?
Dove posso trovare la libreria dmpi.h?
E' possibile realizzare le stesse cose con librerie di sistema?
Grazie se qualcuno mi puo' indirizzare su questi problemi.
Hello all, i write because i ' ve some problems with mingw/cygwin and DevC++
compilers.
I operate with IDE tool called Dev C++, i 'm tring to do some graphic
function, but i encountered a lot of problems, i never had with others
compiler.
I ' tryed to write my function in assembler, but i don't know why, the
system go in crash, when i run it.
The function is very simple, it call BIOS interrupt 10h
what i must do is that:
   AX=13h
   INT 10h
With Intel Assembly i can do it with:
  mov ax,013h
  int 10h
With Assembley used by DevC++/Mingw/CygWin i tried that:
void vga( )
{
  __asm__("
     movb $0x00,%ah /n
     movb $0x13,&al /n
     int $0x10 /n
    ");
}
The system compile, but program go in irreversible crash on Windows 95 ( I
have Win 95 installed ).
So i tried also:
void vga( )
{
  asm (".byte 184,19,0,205,16");
}
The system compile, but program go in a reversible crash, but however is
crash.
I studyed a lot the problem and i discovered who could be possible resolve
this my problem with a complete C sintax with the library "dmpi.h".
void vga()
{
   __dpmi_regs rg;
 
rg.x.ax
 = 0x13;
   __dpmi_int(0x10, &rg);
}
void txt()
{
   __dpmi_regs rg;
 
rg.x.ax
 = 0x03;
   __dpmi_int(0x10, &rg);
}
I searched for this lib into system libraries directory but i didn't found
it!
So my question is, how can i realize with DevC++/Mingw/Cygwin compiler
operation  AX=13h and Int 10h?
Where can i found dmpi.h library?
Is it possible to do the same things with system libraries?
Thanks if anyone can tell me about this problems.
--
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                           Giovanni Ceglia
                WebMaster & WebDesigner
 
http://www.xungame.com/
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
newsgroups.borland.com
 (prevalentemente in 
                inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti