Hola tenia la de como entrar al modo gráfico en C... estuve buscando y me encuentro que hay que invocar una interrupción de la BIOS... "INT 10h", esa exactamente pero el problema que tengo es que no tengo ni la mejor idea de como hacerlo... si alguien sabe que me quiera ayudar
¿A qué te refieres con modo gráfico? ¿Quieres hacer una interfaz para tu programa?
Igualmente, 10h es una interrupción de 16 bits (http://en.wikipedia.org/wiki/INT_10H (http://en.wikipedia.org/wiki/INT_10H)) y no la puedes utilizar en programas de 32/64 bits.
MM... para que me entiendas un ejemplo en ASM:
MOV AH, 0Fh ;Las primeras tres instrucciones guardan
INT 10h ;el modo actual de video que esta usando
PUSH AX ;el sistema operativo
CALL MODO_GRAF
CALL GRAFICAR
CALL PAUSA
POP AX ;Y aqui reestablece el modo que estaba usando
MOV AH, 0 ;el sistema operativo
INT 10h
INT 20h
MODO_GRAF:
MOV AX, 0010H ;Establece el modo de video (AH=0)
INT 10h ;AL=10H modo grafico: 640x350
MOV AH, 0BH ;Establece la paleta de 16 colores
MOV BX, 000BH ;BH=Page=0, BL=Color Verde claro
INT 10H ;Para el fondo de pantalla
RET
GRAFICAR:
MOV BX, 0 ;BL=Color, BH=No. de pagina=0
MOV CX, 64 ;CX es la columna de pixel, coord. X
MOV DX, 70 ;DX es la linea de pixel, coord Y
G10:
MOV AH, 0Ch
MOV AL, BL ;En BL se guardo el color
INT 10h
INC CX ;Incrementa posiscion en x
CMP CX, 576 ;hasta la posicion 576
JNE G10
MOV CX, 64 ;mueve 64 a CX para usarlo para decrementar
INC BL ;Incrementa el color BL (0-F)
INC DX ;Incrementa en posicion en y
CMP DX, 280 ;hasta la posicion 280
JNE G10
RET
PAUSA: ;Espera a que se pulse una tecla
MOV AH, 10h
INT 16h
RET
http://expo.itch.edu.mx/view.php?f=asm_33 (http://expo.itch.edu.mx/view.php?f=asm_33)
Este ejemplo no es mio pero esta sencillo y muy completo
Sí, esto está programado para 16 bits, o sea, es actualmente obsoleto.
Para "simular" estas interrupciones tienes que usar la API de Windows (para consola):
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682073.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682073.aspx)
Y encontrarás funciones como SetConsoleTextAttribute para cambiar el color de las letras, el fondo...
Cita de: Queta en 4 Abril 2012, 13:17 PM
Sí, esto está programado para 16 bits, o sea, es actualmente obsoleto.
No Importa
Cita de: Queta en 4 Abril 2012, 13:17 PM
Para "simular" estas interrupciones tienes que usar la API de Windows (para consola):
No quiero llamar la librería de windows...
nada mas quiero llamar la int 10h desde C -.-".
Pero muchas gracias por tratar de ayudarme
Mira tengo un boot y ya lice e link con mi main.c entiendes estoy booteando desde el CD sin sistema operativo...
Usa inline assembly.