• Viernes 8 de Noviembre de 2024, 14:42

Autor Tema:  Ejecutar Programa Ccon Interrupciones Del Dos  (Leído 869 veces)

albert_sps

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Ejecutar Programa Ccon Interrupciones Del Dos
« en: Miércoles 19 de Marzo de 2008, 00:03 »
0
Hola, estoy intentando cargar y ejecutar archivos .COM desde otro programa, SIN utilizar el EXEC explicitamente, solo llamadas al sistema de DOS ( Funcion INTDOS).

El problema es cuando trato de enviar un BLOQUE DE PARAMETROS para pasarle parametros al .COM que se ejecutará.

Ejemplo:   c:\ejecutar  archivo_com  [parametros]

Este es el codigo pero se queda sin responder:

// ejecutar.c
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <sys\types.h>

int main(int argc, char near  *argv[ ])
{
   int len, i, j, retorna, tam;

   union REGS registros;
   char f1[20] = "0000000000000000000\0";   // FCB1 en blanco
   char f2[20] = "0000000000000000000\0";

   // bloque de parametros para pasar al BX
   struct  parametros {
      short int segmento;
      char* lineacomando;
      char* fcb1;
      char* fcb2;

   } par;

   char *cmd;   // linea de comando

   cmd[0] = (char) strlen(argv[2]);
   strcpy(&cmd[1],argv[2]);
   strcat(&cmd[1],"\0");

  // estableciendo el bloque de parametros
   par.segmento = 0;
   par.lineacomando = cmd;
   par.fcb1 = f1;
   par.fcb2 = f2;

   registros.h.ah = 0x4b;
   registros.h.al = 0x00;
   registros.x.dx = (unsigned) argv[1];
  registros.x.bx = (unsigned int) ∥

   retorna = intdos(®istros, ®istros);
   if (!(registros.x.cflag ? retorna : 0))
            { printf("CARRY FLAG IS CLEAR\n"); };

   printf("Comando terminado: %s", argv[2]);
   return 0;
}