Lunes 18 de Noviembre de 2024, 01:19
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Libreria Dos.h
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Libreria Dos.h (Leído 13263 veces)
HenrypunkXP
Nuevo Miembro
Mensajes: 11
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....
Tweet
LeGatoRojo
Miembro HIPER activo
Mensajes: 552
Nacionalidad:
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 bien
dos.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
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
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
/*******************************************/
/* Solucionada por: */
/* Copyright (C) 2000 por David A. Capello */
/*******************************************/
#include <dos.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void borrar_pantalla()
{
union REGS regs;
regs.h.ah = 0x06;
regs.h.al = 25; /* number of lines to scroll */
regs.h.bh = 7; /* attribute to be used on blank line */
regs.h.ch = 0; /* row of upper left corner of scroll window */
regs.h.cl = 0; /* column of upper left corner of scroll window */
regs.h.dh = 24; /* row of lower right corner of scroll window */
regs.h.dl = 79; /* column of lower right corner of scroll window */
int86(0x10, ®s, ®s);
}
/* X, Y son igual como en el gotoxy (comienzan del punto 1,1) */
void imprimir_caracter(char chr, int x, int y, int repeticiones)
{
union REGS regs;
x--;
y--;
if ((x>=0) && (y>=0) && (x<80) && (y<25)) {
/* cambiar la posici¢n del cursor */
regs.h.ah = 0x02;
regs.h.bh = 0; /* page number */
/* positions relative to 0,0 origin */
regs.h.dh = y; /* row */
regs.h.dl = x; /* column */
int86(0x10, ®s, ®s);
/* escribir el texto en la posici¢n indicada anteriormente */
regs.h.ah = 0x09;
regs.h.al = chr; /* ASCII character to write */
regs.h.bh = 0; /* display page */
regs.h.bl = 7; /* character attribute */
regs.x.cx = repeticiones; /* count of characters to write */
int86(0x10, ®s, ®s);
}
}
/* ver `imprimir_caracter' para m s informaci¢n sobre X, Y */
void imprimir_cadena(char *str, int x, int y)
{
int i;
for (i=0; str[i]; i++)
imprimir_caracter(str[i], x++, y, 1);
}
void dibujar(void)
{
char *msg[] = { "El\0", "Lenguaje\0", "C++\0", "Es\0", "el\0", "Mejor!!!\0",
"ESC: Salir\0", "ESPACIO:Repetir...\0" };
long i, j;
borrar_pantalla();
/* primer animaci¢n */
for (i=0; i<=1000; i++) {
j = 12 - 12 * i / 1000;
imprimir_caracter(' ', 40, 12-j-1, strlen(msg[0]));
imprimir_cadena(msg[0], 40, 12-j);
j = 34 - 34 * i / 1000;
imprimir_caracter(' ', 34-j-1, 13, 1);
imprimir_cadena(msg[1], 34-j, 13);
j = 46 - 46 * i / 1000;
imprimir_caracter(' ', 46+j+strlen(msg[2]), 13, 1);
imprimir_cadena(msg[2], 46+j, 13);
}
/* segunda animaci¢n */
for (i=0; i<=1000; i++) {
j = 31 - 31 * i / 1000;
imprimir_caracter(' ', 31-j-1, 14, 1);
imprimir_cadena(msg[3], 31-j, 14);
j = 14 - 14 * i / 1000;
imprimir_caracter(' ', 40, 14+j+1, strlen(msg[4]));
imprimir_cadena(msg[4], 40, 14+j);
j = 49 - 49 * i / 1000;
imprimir_caracter(' ', 49+j+strlen(msg[5]), 14, 1);
imprimir_cadena(msg[5], 49+j, 14);
}
imprimir_cadena(msg[6], 10, 25);
imprimir_cadena(msg[7], 52, 25);
}
int obtener_tecla()
{
union REGS regs;
regs.h.ah = 0x00;
int86(0x16, ®s, ®s);
return regs.h.al;
}
int main(void)
{
int tecla = ' ';
/* ESC (27), para el programa */
while (tecla != 27) {
/* ESPACIO (32), dibuja la pantalla */
if (tecla == ' ')
dibujar();
tecla = obtener_tecla();
}
return 0;
}
Geo
Miembro de PLATA
Mensajes: 1011
Nacionalidad:
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:
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:
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
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
Re: Libreria Dos.h
«
Respuesta #8 en:
Miércoles 21 de Junio de 2006, 19:05 »
0
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]
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Libreria Dos.h