Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2007
LordGarfio LordGarfio is offline
Registrado
 
Registrado: jul 2007
Posts: 3
Poder: 0
LordGarfio Va por buen camino
Question Modo de Video en Consola Windows

En Microsoft Visual C++ v6 escribí un pequeño trozo de código para consola Windows la cual me debe permitir cambiar el modo gráfico a 320x200 sin exito, pues, el sistema me muestra la pantalla Azul diciéndome que se ha producido un Fallo de Protección General.... durante la ejecución.

El trozo de código que se encarga de tal camio es el siguiente:

( Utilizando la directiva: _asm directive )
xor ah,ah
mov al,0x13h ; Poner el Modo de Video a 320x200 pixeles.
int 10h ; Llamar a la interrucción 0x10 de la Bios.

El trozo de código de arriba funciona perfectamente compilando con el Watcom C++.

¿ Alguien sabe como puedo cambiar el video a 320x200 utilizando la BIOS en una aplicación de consola bajo Windows ?

Saludos.
Responder Con Cita
  #2  
Antiguo 05-07-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
no puedes ejecutar una interrupción de hardware de esa forma en modo protegido dentro de windows, solo en modo real, de cualquier forma para cambiar las propiedades de la consola debes usar la api de windows checate como funciona SetConsoleTextAttribute

Última edición por courtois fecha: 05-07-2007 a las 08:05:44.
Responder Con Cita
  #3  
Antiguo 05-07-2007
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por LordGarfio
¿ Alguien sabe como puedo cambiar el video a 320x200 utilizando la BIOS en una aplicación de consola bajo Windows ?
Como ya ha dicho curtois, no se puede porque la BIOS está protegida al acceso directo. Te recomiendo que, para esos menesteres, utilices Allegro (o Allegro.pas).
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #4  
Antiguo 05-07-2007
LordGarfio LordGarfio is offline
Registrado
 
Registrado: jul 2007
Posts: 3
Poder: 0
LordGarfio Va por buen camino
Gracias chicos por vuestra ayuda.

Ya veo que no puede hacer una llamada a la Interrupción 0x10h desde el Modo Protegido en Windows, usando el Microsoft Visual C++

¿ Qué hace el Watcom C++ entonces ? que no da ningún problema.

Estuve mirando esta página para intentar aclararme: http://www.missl.cs.umd.edu/winint/index1.html

En mi aplicación despues de poner el video en consola a 320x200 pixeles, cargo una gráfico y lo pinto en pantalla escribiendo en la siguiente dirección:

BYTE *memVideo = (BYTE *) 0xA0000;

De todas maneras si se os ocurre algo, aconsejarme.

Saludos.
Responder Con Cita
  #5  
Antiguo 06-07-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
No se por que me dio la impresión que querias escribir texto en 320x200, pero en fin, por lo que puedo ver, dado que es asm de 16 bits lo que ejecutas asumo que el exe que generas realmente es para ms-dos, cuando ejecutas exe de ms-dos en windows, se activa el subsistema de 16 bits, con una ventana de ms-dos que usa una cpu virtual y media entre el sistema y la aplicacion, asi que es windows y no watcom c++ quien hace que esto funcione, obviamente no funciona con vc++ porque este solo genera exes de consola de 32 bits para windows, y en ese modo una instruccion asi no es permitida, igualmente si compilaras tu aplicación con watcom para que te genere un exe de consola de windows, no funcionaría, ahora, no se para que desees usar cga estando dentro de windows, teniendo muchas opciones para dibujar como la api de windows, opengl o directdraw, y si usas delphi además las clases y métodos del canvas.
saludos
Responder Con Cita
  #6  
Antiguo 06-07-2007
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Ya veo que estás más perdido que un pulpo en un garaje (creo que tendré que cambiar mi status )
Cita:
Empezado por LordGarfio
Ya veo que no puede hacer una llamada a la Interrupción 0x10h desde el Modo Protegido en Windows, usando el Microsoft Visual C++

¿ Qué hace el Watcom C++ entonces ? que no da ningún problema.
Hacer no hace nada que no haga MS-Visual C++. Lo que pasa es que, como ha explicado courtois perfectamente, Watcom C++ es un compilador para DOS, que es un sistema operativo total, completa e inequívocamente distinto a MS-Windows, aunque este es capaz de emularlo en ciertas condiciones. Es cierto que Windows utiliza (en principio) el mismo vector de interrupciones que DOS (como también lo hacen OS/2, GNU/Linux para PC, etc., pero no MacOS X, GNU/Linux, BeOS...), pero utilizar interrupciones BIOS en un SO que no sea DOS es incómodo, innecesario y, casi siempre, peligroso.

Si estás interesado en saber el por qué, busca y leete el libro "Sistemas Operativos Modernos" de Andrew S. Tanenbaum. Te prevengo de que es un texto universitario así que preparate.

Cita:
Empezado por LordGarfio
En mi aplicación despues de poner el video en consola a 320x200 pixeles, cargo una gráfico y lo pinto en pantalla escribiendo en la siguiente dirección:

BYTE *memVideo = (BYTE *) 0xA0000;

De todas maneras si se os ocurre algo, aconsejarme.
Me repito: utiliza Allegro, no te arrepentirás. Te recomendaría OpenGL pero te veo muy principiante como para eso (No te lo tomes a mal, que yo también fui novato ). Cuando tengas más mundo ya podrás pegarte con OpenGL.

Y si alguien te ofrece DirectX (o DirectDraw), sé valente y di: No, gracias. Que luego la desintoxicación sale cara
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 06-07-2007 a las 08:28:12.
Responder Con Cita
  #7  
Antiguo 06-07-2007
LordGarfio LordGarfio is offline
Registrado
 
Registrado: jul 2007
Posts: 3
Poder: 0
LordGarfio Va por buen camino
DIOS!, no quiero ver nada del Sr. Andrew S. Tanenbaum, ya tuve bastante con su libro de Redes de Computadores.

Gracias compañeros por vuestras ayudas
Responder Con Cita
  #8  
Antiguo 08-07-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
Cita:
Empezado por Ñuño Martínez
Y si alguien te ofrece DirectX (o DirectDraw), sé valente y di: No, gracias. Que luego la desintoxicación sale cara
jajaja, vamos ñuño, si va de chulada eso, no le saques, mira que hay wrappers para delphi
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener el nombre de la aplicacion en modo consola jlrbotella API de Windows 2 05-03-2009 06:39:39
Insertar Video, o vista preeliminar de video JuanErasmo .NET 0 10-01-2007 20:27:20
Nuevo modo de gestión de claves de activación con Windows Vista vtdeleon Noticias 2 20-11-2006 09:30:26
Modo diseño y modo ejecución buildero_d OOP 3 11-09-2005 06:45:00
Consola con IB1.5 Iván Firebird e Interbase 5 21-05-2003 09:56:42


La franja horaria es GMT +2. Ahora son las 11:11:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi