HispaMSX

Constructividad

2004-03-29 15:58:02
Después de esta brainstorn, y después de haberme quedado media noche acostado 
pero pensando en el desarrollo del MNBIOS, me dí cuenta que después de todo 
estas críticas por parte de Adriano, después de todos van a tener su efecto 
constructivo.

Conceptos a saber:

1. Adriano me prguntaba que porque una aplicación NO SELECCIONADA podía 
redibujar o REDISEÑAR su ventana y la misma aplicación en proceso de fondo no 
iba a poder....lo que implicaba que el simple ejemplo del relojito del sistema 
no iba a poder ser.

La respuesta era obvia para mí, el re-dibujado de cualquier ventana es un 
evento que se lleva a cabo solo durante la ejecución de ciertas funciones por 
parte de la aplicación activa..... mientras que un proceso de fondo 
generalmente interrumpe a la aplicación activa en cualquier momento de su 
código y si ambos accesan al VDP van a surgir conflictos....el conflicto más 
común que se me ocurre es que el proceso de fondo alteraría el puntero a la 
VRAM que tiene el VDP... y si la aplicación activa justo estaba haciendo uso 
del mismo sería un desastre...

En el sistema UZIX de mi querido Adriano así como según él me contó los 
sistemas UNIX en general, solo dan soporte a consolas virtuales de texto. (lo 
que no sé es si cada aplicación está en fullscreen o puede haber visualizandose 
2 aplicaciones al mismo tiempo en ventanas). Y si una aplicación desea usar 
gráficos es problema de la aplicación cuidar que no haya conflictos. Claro, 
tengamos en cuenta que el sistema UNIX fué diseñado para aplicaciones de 
servidores, de ahí que es multiusiarios - grupos de usuarios, multitarea en 
general. Es decir, son diferentes metas que motivaron su desarrollo.

Es una meta del MNBIOS ser el sistema operativo más completo para el ambiente 
MSX y diseñado exclusivamente para tal. Por lo tanto no nos podemos quedar en 
los modos textos, ni siquiera soportarlos porque para hacer un sistema así ya 
existe el MSX-DOS...

El MNBIOS no solo pretende ser completo sino también ser una capa para aislar a 
las aplicaciones del hardware. Para el día de mañana no depender tanto de los 
chips que dejaron de producirse. Pero al mismo tiempo se diseñaron las 
funciones de acceso al VDP más rápidas posibles de armar, cualquier programador 
que haga algunos timings estará sorprendido.

A que vamos con decir que queremos las rutinas más rápidas. Ya que de esa forma 
el programador no encontrará razones para hacer acceso directo al chip mediante 
I/O y usará la capa del kernel porque da lo mismo en cuanto a timing.

Si yo insertara código en esas rápidas funciones para evitar el problema del 
conflicto que se generaría con el puntero de I/O a la VRAM estaría en contra de 
la regla 1 que es "VELOCIDAD". Esta opción es guardar en memoria en forma 
actualizada el valor del puntero y antes de volver de los procesos de fondo 
usar esa información para reestablecer el valor del puntero.

Pero el puntero es solo 1 tema en conflicto cuando ambos procesos (aplicación 
activa y procesos de fondo) hacen uso sinmultaneo del VDP.

Acá quiero aclarar algo, el objetivo del MNBIOS es ser una capa que aisle a las 
aplicaciones del chip, sin embargo soporta funciones de acceso directo a la 
VRAM y acceso a los registros... Si la aplicación hace uso de ese juego de 
funciones, la aplicación automáticamente es CHIP dependiente....como el mnbios 
soporta un juego de funciones alternativas, esta es una decisión que debe tomar 
el programador y la pregunta es ¿Puedo programar lo que tengo pensado hacer sin 
accesar a la VRAM o registros?, si por cuestiones de complejidad la respuesta 
es NO, entonces tendrá una aplicación chip dependiente.

Cual es la solución para evitar que ambos procesos, el de fondo, y el activo no 
se molesten en el VDP...la respuesta que cumple con los objetivos de 
"VELOCIDAD" y "EXPANDIBILIDAD" es crear 1 función que deberá ser ejecutada por 
cualquier aplicación que sea desarrollado para el MNBIOS.

Cuestiones a considerar....

. Normalmente cuando una aplicación hace uso de funciones de acceso a la VRAM, 
es porque quiere realizar un proceso de dibujado de una complejidad tal que no 
es suficiente las funciones que trabajan con vectores del bitmap.

. Ahora esa función a ejecutar va a consistir solamente en un LD A,valor + LD 
(flag),A + RET... algo sencillisimo, que a nadie le va a molestar ejecutarlo 
antes de empezar el proceso de dibujado, y otra vez después de concluir ese 
proceso de dibujado.

Que se busca aca?, que ese FLAG indique si los procesos de fondo pueden o no 
ser ejecutados... de modo que un proceso de fondo no se ejecute en un mal 
momento...

A no abusar... la idea es activar el FLAG solo en momentos puntuales y 
pasajeros... este sistema sería útil también para salvar otros posibles puntos 
de conflictos..

Aclarando que un proceso de fondo solo puede ejecutarse si se interrumpe código 
pertenecienta a la aplicación activa.... no puede durante la ejecución de 
código drivers o kernel.

Mediante este sistema y una apadpación del sistema windowing es posible que 
cualquier aplicación tenga salida a la pantalla en forma de proceso de fondo.

Por lo tanto el MNBIOS sí será multitarea según los requisitos de Adriano...y 
sin perder velocidad...

Adaptar el sistema windowing, requerirá abrir un código que desde hace 3 años 
que está cerrado y perfectamente programado.... son rutinas en extremo 
complejas... y esto solo trae postergar la fecha de lanzamiento un o dos meses.



Saludos

Flyguille











[Se han eliminado los trozos de este mensaje que no contenían texto]


<Anterior en la conversación] Conversación actual [Siguiente en la conversación>
  • Constructividad, Flyguille <=