In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Usando C y ASM

Foro de Xailer profesional en español
Responder
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Usando C y ASM

Mensaje por zeasoftware »

Estoy queriendo pasar ua funcion que encontre entre mis cosas, la cual me sirve para leer la etqueta y la serie de un disco duro, pero, ya me atore por mucho rato.
Alguien podria ayudarme a corregirlo y ponerlo de nuevo en el foro, a mucho sppodria servirnos.
#pragma BEGINDUMP
#include "windows.h"
#include "xailer.h"
#include "winsock2.h"
// #include "extend.api"
#define AX_GETSERIAL 2150 //h0866
#define AX_SETSERIAL 2118 //h0846
#define UPPER ('a' - 'A')
#define islower(p) ( 'a' <= (p) && (p) <= 'z' )
#define toupper(p) ( islower(p) ? ((p) - UPPER) : ((p)) )
XA_FUNC( ZVOLUME )
{
WSADATA wsa;
char *name = (char *) hb_xgrab( 25 );
unsigned int iDrive = ISNUM(1) ? hb_parni(1) : 0 ;
int iCX = AX_GETSERIAL;
int iReturn = 0;
int iFree = 0;
if ISCHAR(1)
iDrive = toupper(hb_parc(1)[0]) - 64 ;
if (ISCHAR(2) && (hb_parclen(2) == 25) )
{
iCX = AX_SETSERIAL ;
name = hb_parc(2);
}
else
{
iFree = 1;
name = hb_xalloc(25) ;
}
//en lo que sigue marca error
_asm
{ push ds
push dx
push cx
lds dx, [name] ; load name address in DS:DX
mov AX,440Dh
mov BX,iDrive
mov CX,iCX
int 21h
JNC noerror
mov iReturn, AX
noerror:
pop cx
op dx
pop ds
}
hb_retc("");
if ( iReturn == 0 )
hb_retclen(name,25);
if (iFree)
{
WSACleanup();
hb_xfree(name);
}
}
#pragma ENDDUMP
Saludos.
--
Ramón Zea
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoft/
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Usando C y ASM

Mensaje por zeasoftware »

marca esto a pesar que ya grabe el tasm32.exe en bcc55bin
Compilando zBIOSPC.prg...
Warning W8002 zBIOSPC.prg 109: Restarting compile using assembly in function HB_FUN_ZVOLUME
Error E2133: Unable to execute command 'tasm32.exe'
1 Warnings, 1 Errors
Alguna sugerencia?
--
Ramón Zea
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoft/
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Usando C y ASM

Mensaje por jfgimenez »

Ramón,
esa función es para 16 bits, y en 32 bits no te va a funcionar. Es más, no
creo ni siquiera que consigas compilarla, ya que está llamando a la int 21h,
que era el punto de entrada al API de MS-DOS, y que como puedes imaginar, en
Win32 no existe.
--
Un saludo,
José F. Giménez
http://www.xailer.com
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Usando C y ASM

Mensaje por zeasoftware »

Gracias, JFG.
Alguien tiene su equivalente o puede pasarlo a 32 bits?
Saludos.
--
Ramón Zea
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoft/
Responder