• Domingo 22 de Diciembre de 2024, 23:32

Autor Tema:  Libreria Dos.h  (Leído 13286 veces)

HenrypunkXP

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Libreria Dos.h
« en: Sábado 17 de Junio de 2006, 04:09 »
0
Bueno quisiera poder si hay alguien que me pueda explicar parq ue sirve DOS.h  y mayormente para que se usa y las funciones que contiene.

De antemano gracias por sus respuestas.... :P  :P

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Libreria Dos.h
« Respuesta #1 en: Sábado 17 de Junio de 2006, 07:44 »
0
Lo que su nombre dice, usa instrucciones utiles para trabajar con el sistema dos, en general funciones de bajo nivel, puertos, memoria, subrutinas asm, etc.
Para ver las funciones del dos.h abre la libreria o biendos.h
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Libreria Dos.h
« Respuesta #2 en: Sábado 17 de Junio de 2006, 16:47 »
0
entre otras cosas getvect();  y secvect(); que son funciones poco conocidas
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


HenrypunkXP

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Libreria Dos.h
« Respuesta #3 en: Lunes 19 de Junio de 2006, 00:24 »
0
Bueno mi Pregunta se debio a que encontre este codigo usando la libreria DOS.H y me parecio una libreria interesante de aprender

Código: Text
  1.  
  2. /*******************************************/
  3. /* Solucionada por:                        */
  4. /* Copyright (C) 2000 por David A. Capello */
  5. /*******************************************/
  6.  
  7. #include <dos.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <stdlib.h>
  11.  
  12.  
  13.  
  14. void borrar_pantalla()
  15. {
  16.   union REGS regs;
  17.  
  18.   regs.h.ah = 0x06;
  19.   regs.h.al = 25; /* number of lines to scroll */
  20.   regs.h.bh = 7; /* attribute to be used on blank line */
  21.   regs.h.ch = 0; /* row of upper left corner of scroll window */
  22.   regs.h.cl = 0; /* column of upper left corner of scroll window */
  23.   regs.h.dh = 24; /* row of lower right corner of scroll window */
  24.   regs.h.dl = 79; /* column of lower right corner of scroll window */
  25.  
  26.   int86(0x10, &regs, &regs);
  27. }
  28.  
  29.  
  30.  
  31. /* X, Y son igual como en el gotoxy (comienzan del punto 1,1) */
  32. void imprimir_caracter(char chr, int x, int y, int repeticiones)
  33. {
  34.   union REGS regs;
  35.  
  36.   x--;
  37.   y--;
  38.  
  39.   if ((x>=0) && (y>=0) && (x<80) && (y<25)) {
  40.     /* cambiar la posici¢n del cursor */
  41.  
  42.     regs.h.ah = 0x02;
  43.     regs.h.bh = 0; /* page number */
  44.     /* positions relative to 0,0 origin */
  45.     regs.h.dh = y; /* row */
  46.     regs.h.dl = x; /* column */
  47.  
  48.     int86(0x10, &regs, &regs);
  49.  
  50.     /* escribir el texto en la posici¢n indicada anteriormente */
  51.     regs.h.ah = 0x09;
  52.     regs.h.al = chr; /* ASCII character to write */
  53.     regs.h.bh = 0; /* display page */
  54.     regs.h.bl = 7; /* character attribute */
  55.     regs.x.cx = repeticiones; /* count of characters to write */
  56.  
  57.     int86(0x10, &regs, &regs);
  58.   }
  59. }
  60.  
  61.  
  62.  
  63. /* ver `imprimir_caracter' para m s informaci¢n sobre X, Y */
  64. void imprimir_cadena(char *str, int x, int y)
  65. {
  66.   int i;
  67.  
  68.   for (i=0; str[i]; i++)
  69.     imprimir_caracter(str[i], x++, y, 1);
  70. }
  71.  
  72.  
  73.  
  74. void dibujar(void)
  75. {
  76.   char *msg[] = { "El\0", "Lenguaje\0", "C++\0", "­­­Es\0", "el\0", "Mejor!!!\0",
  77.                   "ESC: Salir\0", "ESPACIO:Repetir...\0" };
  78.   long i, j;
  79.  
  80.   borrar_pantalla();
  81.  
  82.   /* primer animaci¢n */
  83.   for (i=0; i<=1000; i++) {
  84.     j = 12 - 12 * i / 1000;
  85.     imprimir_caracter(' ', 40, 12-j-1, strlen(msg[0]));
  86.     imprimir_cadena(msg[0], 40, 12-j);
  87.  
  88.     j = 34 - 34 * i / 1000;
  89.     imprimir_caracter(' ', 34-j-1, 13, 1);
  90.     imprimir_cadena(msg[1], 34-j, 13);
  91.  
  92.     j = 46 - 46 * i / 1000;
  93.     imprimir_caracter(' ', 46+j+strlen(msg[2]), 13, 1);
  94.     imprimir_cadena(msg[2], 46+j, 13);
  95.   }
  96.  
  97.   /* segunda animaci¢n */
  98.   for (i=0; i<=1000; i++) {
  99.     j = 31 - 31 * i / 1000;
  100.     imprimir_caracter(' ', 31-j-1, 14, 1);
  101.     imprimir_cadena(msg[3], 31-j, 14);
  102.  
  103.     j = 14 - 14 * i / 1000;
  104.     imprimir_caracter(' ', 40, 14+j+1, strlen(msg[4]));
  105.     imprimir_cadena(msg[4], 40, 14+j);
  106.  
  107.     j = 49 - 49 * i / 1000;
  108.     imprimir_caracter(' ', 49+j+strlen(msg[5]), 14, 1);
  109.     imprimir_cadena(msg[5], 49+j, 14);
  110.   }
  111.  
  112.   imprimir_cadena(msg[6], 10, 25);
  113.   imprimir_cadena(msg[7], 52, 25);
  114. }
  115.  
  116.  
  117.  
  118. int obtener_tecla()
  119. {
  120.   union REGS regs;
  121.  
  122.   regs.h.ah = 0x00;
  123.  
  124.   int86(0x16, &regs, &regs);
  125.  
  126.   return regs.h.al;
  127. }
  128.  
  129.  
  130.  
  131. int main(void)
  132. {
  133.   int tecla = ' ';
  134.  
  135.   /* ESC (27), para el programa */
  136.   while (tecla != 27) {
  137.     /* ESPACIO (32), dibuja la pantalla */
  138.     if (tecla == ' ')
  139.       dibujar();
  140.  
  141.     tecla = obtener_tecla();
  142.   }
  143.  
  144.   return 0;
  145. }
  146.  
  147.  
  148.  

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Libreria Dos.h
« Respuesta #4 en: Martes 20 de Junio de 2006, 05:09 »
0
Si, es interesante (y el aprender da muchas ideas). Pero DOS ya es casi arcaico.

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Libreria Dos.h
« Respuesta #5 en: Martes 20 de Junio de 2006, 08:39 »
0
Pues por mas arcacico que sea, el S.O. windows aun se basa en esta plataforma.No digo que para la mayoria de nosotros ya no nos sirva, peropara programadores que tienen un buen nivel cosas como estas son las que andan programando, asm y como hacer sistemas operativos y no en alto nivel
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Libreria Dos.h
« Respuesta #6 en: Martes 20 de Junio de 2006, 10:13 »
0
Por eso digo que es interesante, y muy útil. Lo de que sea "cuasiarcaico" es porque ya prácticamente no se hace uso de aplicaciones creadas exclusivamente para DOS.

Pero tienes razón, el programar a bajo nivel (no programar para DOS) es un área más de desarrollo, muy útil y demandante (optimización, sistemas operativos, dispositivos embebidos y toda la gama nueva de "aparatos programables" que vayan surgiendo).

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Libreria Dos.h
« Respuesta #7 en: Miércoles 21 de Junio de 2006, 19:01 »
0
en este caso lo que alcanzo a ver de la libreria dos (y de un vistazo muy rapido) es la obtencion los los parametros de las interrupciones como lo son AX,BX,CX,DX
y obvio sus nibbles superior e inferior, mediante el uso de la funcion
int86(0x16, ®s, ®s); en lo particular nunca me gusto pero para eso es que se usa esta libreria en este codigo en especial.
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Libreria Dos.h
« Respuesta #8 en: Miércoles 21 de Junio de 2006, 19:05 »
0
:P  :P  :P

Ahh por cierto la libreria de dos.h si es muy interesante aunque hoy día si es arcaica, es cierto que Windows se sigue basando en la misma plataforma, pero el acceso al vector de interrupciones, esta limitado en sistemas opertivos como XP y Vista y en especial por programas creados con C++.
Aun asi no deja de ser interesante y nunca esta de más los conocimientos.
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]