FPS en ensamblador



En FPS con GRAPH.LIB, habíamos concluido con el análisis y resultados de diferentes implementaciones gráficas en C bajo DOS.

Os adelantaba que en ensamblador la diferencia de rendimiento no iba a ser demasiado elevada, y que el motivo era que la implementación de memcpy, era ya muy eficiente en los compiladores de C.

Pero me apetecía probar Jwasm, por lo que a pesar de todo lo implementé en ensamblador. Me lo estaba pasando bien, así que le apliqué algunos trucos que espero que os resulten interesantes.

Lo primero es que estoy mezclando instrucciones de 8, 16 y 32 bits. En general lo más veloz es usar de 32 bits, pero éstas van a consumir más espacio y memoria, por lo que salvo que estuviera en un punto crítico, he usado el menor tamaño posible para hacer la operación.…

Continuar leyendo...

¿Cuánto dura la carga de los relojes?



Tras haber repasado la precisión de los relojes, hoy vamos a hablar de la duración de su carga, también denominada reserva de marcha.

Típicamente los relojes alimentados por pilas de botón, tienen una autonomía de entre 2 y 15 años. Esta cifra depende primero de todo del tipo de reloj. Los analógicos consumen más que los digitales. Influye también el tipo de pila que montan, cuanta más capacidad tenga, y de mayor calidad sea, más tiempo durará. Por último es importante el uso que le demos. Así por ejemplo en los modelos analógicos el uso de cronógrafos aumenta la demanda de energía, mientras que en los digitales es la luz.…

Continuar leyendo...

Comentarios de cine (XXVII)



A continuación os dejo con la 27ª edición de comentarios de cine:

Argo: 7/10. Asombrosa ambientación en cuanto a lugares y época. Sin duda una gran sorpresa con Ben Affleck, que tanto a nivel de actuación, como de dirección, resulta muy convincente.

Death race 3: La carrera de la muerte, inferno:: 4/10. Sin demasiadas novedades respecto a la anterior entrega, no es de extrañar que resulte todavía algo más floja.

Efectos secundarios: 7/10. Habla de efectos secundarios en la psiquiatría, tocando de paso a la industria farmacéutica, y planteando algunos dilemas intensos e interesantes, que incluyen varios giros de guión.…

Continuar leyendo...

FPS con GRAPH.LIB



En la anterior entrega (FPS con BIOS), vimos el funcionamiento de los servicios de BIOS. Lo que hoy haremos será exactamente lo mismo, pero usando las bibliotecas bibliotecas gráficas del compilador, en nuestro caso graph.lib de Watcom C/C++, es decir, como nos enseñarían a hacerlo, incluso en la universidad.

El código tiene un aspecto bastante distinto. En vez de BIOS, usamos _setvideomode para asignar el modo gráfico, _remappalette para fijar la paleta de colores y la combinación de kbhit y getch para comprobar el estado del teclado. Sin embargo a nivel estructural es equivalente, y el dibujo se hace también sobre píxeles individuales, que requieren para cada uno de ellos una llamada a _setcolor y _setpixel.…

Continuar leyendo...

Comentarios de libros (XXI)



Hemos superado la veintena, y seguimos con los comentarios de libros:

Caballeros permanezcan sentados (Robert A. Heinlein): 7/10. Un cuento corto, original, con mucho ritmo, y bastante emoción.

Crimen en marte (Arthur C. Clarke): 7/10. Un cuento corto que se lee bien, con un desenlace muy bien justificado.

Desgraciadamente (Fredric Brown): 7/10. Brevísimo cuento que nos habla de una extraña civilización en Arturo.

El astronauta muerto (J. G. Ballard): 7/10. Cuento ambientado en esa atmósfera triste y desoladora de Ballard, donde se da una vuelta de tuerca a la basura espacial, y las instalaciones abandonadas.…

Continuar leyendo...

J’hayber Atolón



Impresionado con la calidad y el saber hacer de las J’hayber New Olimpo, he decidido agenciarme las Atolón Marino, donde J’hayber demuestra su buen hacer, y viene a darnos un poco más de lo mismo.

Nos encontramos con una caja de cartón exactamente igual a la de las Olimpo, es decir, más bien discreta y sin nada destacable, Dentro, cada zapatilla en bolsas de plástico transparante para protegerlas, pero sin ningún papel en su interior para evitar que se deformen. La etiqueta del fabricante, nos vuelve a sorprender de manera agradable con un “Fabricado en España”.

Como la mayoría de productos de la gama classic (Atenas, Olimpia, Isla, y Pista), el diseño de las Atolón, recuerda enormemente al de las Olimpo, es decir horma ancha y cómoda, gruesa suela de poliuretano inyectado (Voralast).…

Continuar leyendo...

FPS con BIOS



Después del artículo sobre Portabilidad, me apetecía retomar los programas y las técnicas de 500 FPS en un PC y 100 FPS en un PC (16 bits), para mostrarlo como sería el mismo proceso usando los servicios que ofrece la BIOS para video. Probablemente el método que usaríamos para implementarlo en una primera fase de aprendizaje.

La BIOS, Basic Input-Output System, hace de mediador entre el hardware, y el programador, ofreciendo servicios de bajo nivel que nos permiten acceder al mismo. A diferencia del acceso directo al hardware, el objetivo de BIOS es garantizar la compatibilidad. La idea inicial era que no importaba como estuviera diseñado un PC en concreto, siempre y cuando expusiera una interfaz común.…

Continuar leyendo...

Comentarios de series X



Seguimos con los comentarios de series, no X, sino décima edición:

5 días para morir (5ive)
JT Neumeyer, un profesor de Física, recibe un maletín con una enigmática información en donde se demuestra que va a ser asesinado en cinco días. En un principio piensa que se trata de una broma macabra perpetrada por algún estudiante vengativo, pero cuando una serie de situaciones reflejadas en los papeles que hay en el maletín empiezan a sucederse, JT se da cuenta de que puede ser una amenaza real de alguien que quiere verlo muerto, por lo que tendrá que encontrar una manera de cambiar su fatídico destino.…

Continuar leyendo...

DOS/32 Advanced



Cuando preparaba el artículo Portabilidad, me di cuenta que dentro de contrib\extender\dos32a estaba todavía incluído DOS/32 Advanced 7.20, la versión en la que tuve mucho que ver. Como en MAME y yo, es algo que tenía hace tiempo olvidado.

A principios de 2000, con el abandono de Watcom C/C++ por parte de Sybase, y el subsiguiente anuncio de liberarlo como código abierto, fue una decisión que me entusiasmó, por lo que no es de extrañar que tuviera cierta implicación personal en aquellos años.

En 2001, con la primera versión 11.0c, me centré en los extensores DOS. Watcom soportaba una gran variedad de ellos, y no quedaba muy claro cual era el mejor, pero probablemente no era DOS/4GW.…

Continuar leyendo...

Portabilidad



Como excusa para revisar los progresos de los snapshots diarios (27 MB en formato TAR.BZ2 vía FTP), decidí unificar los fuentes de 100 FPS en un PC (16 bits) y 500 FPS en un PC, para mostrar el funcionamiento del preprocesador de C, de cara a mantener la portabilidad entre plataformas.

El artículo pretendía explicar el uso de #define, #ifdef/#if defined, pero incitado de nuevo por los poderes ocultos de Watcom, me dediqué a ver hasta cuánto podía mejorar el original, sin necesidad de usar ensamblador. ¡Qué tiempos con el #pragma aux!

Lo primero que hice fue sustituir las llamadas a kbhit y getch, por una implementación directa basada en los servicios de teclado de la BIOS.…

Continuar leyendo...