Archivo de la categoría Programación

Lotus, Intel y Microsoft



Ahora puede resultar curioso o lejano, pero hubo un tiempo en que Lotus (ahora IBM), Intel, y Microsoft, se unieron para desarrollar la especificación que posteriormente se denominaría LIM, como acrónimo de sus siglas: Lotus-Intel-Microsoft.

Hablamos del año 1984, dónde por primera vez la frase de que 640 Kb. deberían ser suficientes, deja de ser válida, gracias a la hoja de cálculo Lotus 1-2-3, que en determinados ámbitos, se quedaba corta de memoria RAM para almacenar la matriz de filas y columnas.

Así surge LIM EMS 3.2, el estándard de memoria expandida, que mediante un tarjeta de expansión ISA, permite ampliar la memoria de cualquier PC, para ser usada por programas diseñados a tal efecto.…

Continuar leyendo...

CP/M en vivo



Ya os hablé hace bastante tiempo de CP/M (Control Program for Microcomputers), lo que hoy os traigo es un video de alta calidad, que muestra brevemente su funcionamiento.

Si no lo pudisteis disfrutar en su día, os va a servir para haceros una idea más clara de como era, y sobre todo, para valorar justamente la innovación que aportara hoy hace casi 35 años, en 1975.



Continuar leyendo...

90 FPS en HTML 5



Después de JS ZX LOAD "" SCREEN$, he dado una vuelta de hoja más, esta vez para poder comprobar el rendimiento de blitting en HTML 5.

Para ello he partido del código en 800 FPS en un PC, y lo he adaptado en menos de 15 minutos.

Los resultados, un equipo que daba con el binario para Windows x64 1300 FPS, consigue con la versión de HTML 5 bajo Chrome 6 unos 90 FPS (75 FPS en Opera 10.6 y 60 FPS en Firefox 3.7 x64), es decir, un rendimiento bastante similar al de la versión para DOS de 16 bits.

Como de costumbre, el código lo tienes aquí (2 Kb. en formato HTML).



Continuar leyendo...

SQLite compilado para DOS (386)



No me di cuenta, pero el ejecutable que publiqué en SQLite compilado para DOS, tenía un problema. No era realmente un bug, ni nada por el estilo, sino un problema de concepto.

El asunto está en que Visual C++ 2008, genera instrucciones de Pentium y superiores a la hora de compilar, que en general no sería un problema si hablamos de Win32, pero lo es absolutamente si hablamos de DOS, pues recordemos que DOS, es capaz de funcionar incluso en equipos basados en procesadores 8088.

Para ello, he actualizado los fuentes del artículo original para SQLite 3.6.23.1 (en vez de la 3.6.21), y los he compilado con OpenWatcom 1.9 RC5, esta vez generando código para 386, sin FPU, y optimizando para tamaño en vez de para velocidad.…

Continuar leyendo...

PHP 5.2+ lento al concatenar



Tras actualizar a PHP 5.3, he podido comprobar que ciertas aplicaciones funcionaban mucho más lentas. Una vez descartado que los problemas no estaban en el paso de ISAPI a FastCGI, he dado con la clave, que es la issue #46198.

Parece ser que si concatemanos asignado la cadena original, en la forma como:
$sCadena = $sCadena . 'Valor';

El resultado es tremendamente ineficiente. Según mis pruebas entre 3 y 30 veces más lento que haciéndolo así:
$sCadena .= 'Valor';

El argumento que aducen es que en el primer caso, la cadena debe ser copiada, mientras que en el segundo no. Personalmente, y aunque sigo siendo bastante entusiasta de PHP, lo encuentro intolerable.…

Continuar leyendo...

JS ZX LOAD "" SCREEN$



Después del primer experimento que publiqué usando HTML, JS Noise, ahora le llega el turno a algo un poquito más avanzado, y que he titulado como en laguísimo, y poco original nombre de JS ZX LOAD "" SCREEN$.

Esta vez de lo que se trata, es usando canvas de HTML 5, simular las cargas de pantallas gráficas de nuestro queridísimo Sinclair ZX Spectrum.

La demostración en custión imita el borde de carga, el dibujo progresivo de la imagen, así como la carga final de sus atributos. Le he añadido al principio una recreación de cómo se cargaban este tipo de pantallas. El efecto es bastante resultón después de todo, a pesar que no se incluye por ejemplo el efecto de la carga de la cabecera del archivo, y que naturalmente no se está emulando la memoria de video del Spectrum, de manera que tanto las lineas, como los atributos, son una pura recreación.…

Continuar leyendo...

Funciones Javascript en Dreamweaver CS5



Actualizo el artículo que en su día publiqué sobre las funciones Javascript incluídas por Adobe en Dreamweaver CS 5 (11.0.4909).

Las tienes para descargar aquí (15 Kb. en formato JS), para que puedas utilizarlas en tus proyectos web, con o sin Dreamweaver.



Continuar leyendo...

Simulador de Casio W-59 en Flash



Hace casi 3 años, comencé un simulador de reloj digital Casio W-59 en Flash CS4 con Actionscript 3. Por esas cosas extrañas que a veces ocurren, después de la tarde inicial que invertí en desarrollarlo, el proyecto quedó en el olvido.

Hace algunas semanas lo reencontré, y planeé reescribirlo con Flash CS5, simulando todas sus funcionalidades. Sin embargo, por falta de tiempo, y otras prioridades, el momento de aplicar todos esos cambios nunca llega, de manera que me he decidido a publicarlo, incluyendo sus fuentes, para que podáis incrustarlo en vuestras páginas, o para que lo podáis modificar y ampliar como deseeis.…

Continuar leyendo...

Blinker



La necesidad de actualización, y los rápidos avances han hecho que Blinkinc haya dado finalmente sus últimos coletazos. Anteriormente conocidos como ASM Inc, fueron los creadores de Blinker, y los no tan populares Shrinker y DeltaPatch.

Blinker tuvo mucho éxito entre los desarrolladores Clipper, debido a ser un enlazador rapidísimo, y que era el complemento ideal a Clipper, en sustitución del vetusto RTLink, aportando grandes mejoras de productividad. Tanto es así, que al final, Blinker, aunque fuera una versión antigua, venía incluído en el paquete de Clipper.

Como es lógico, Blinker no estaba destinado solamente a Clipper, y permitía enlazar otros programas DOS, Win16 y Win32 escritos en otros lenguajes, y gracias al hecho de estar bien codificado, y escrito en ensamblador, ser más veloz de TLINK y por supuesto LINK.…

Continuar leyendo...

JS Noise



Como hice en 2007 con AS3 Fire, he reimplementando un algoritmo de los usados en las clásicas demos. El caso escogido esta vez es el efecto de ruido blanco, típico de las televisiones analógicas desintonizadas. El lenguaje, Javascript, haciendo uso del objeto canvas de HTML 5.

Para ser sinceros, la implementación es realmente más sencilla que el del fuego, lo cual he hecho a propósito por problemas de tiempo.

El código en cuestión, es especialmente cuidadoso a la hora de acceder a canvas, para ser compatible con las diferentes implementaciones, y tiene ciertas optimizaciones en cuanto a velocidad como es el uso de FastRandom.…

Continuar leyendo...