Attic

Los que tienen ático echan ahí las cosas viejas. Esta página engloba todo mi software que no merece una página para él sólo, bien por ser pequeño o por haber perdido su utilidad.

Todo este software queda liberado bajo la licencia GPL.

Those having an attic drop there their old things. This page holds all my software not worthy of having a page by its own, because of small size or lost usefulness.

All these software is released under the GPL.

KIP (TCP/IP Stack) Library

A principios de 1995, decidí crear una capa de red TCP/IP para ordenadores con MS/DOS basada en packet drivers que permitiera la inclusión en un único ejecutable (la única multitarea que me podía permitir en aquel sistema) de múltiples servidores para diferentes servicios. Además incluía la capacidad de hacer de router entre un máximo de 5 interfaces (1 loopback, 2 ethernets y 2 puertos serie con SLIP). El cacharro funcionó muy bien hasta la llegada de Windows 95, que destruyó todo el software basado en packet drivers. Aunque inicialmente era sólo TCP/IP, finalmente también incluyó librerías para crear sockets IPX (red Novell Netware, utilizado en la última versión de Freaks!!!) y NetBIOS.

El código fuente incluído era para Turbo C y Turbo Assembler.

In the beginning of 1995, I started to write a packet driver-based TCP/IP stack for MS/DOS computers that allowed the inclusion of multiple server inside only one executable. It also had router capabilities, allowing a maximum of 5 interfaces (1 loopback, 2 ethernet cards and 2 serial ports using SLIP). This thing worked fine until the arrival of Windows 95, that destroyed all packet driver-based software. Though initially this library had only TCP/IP, later versions also included code to create IPX sockets (used in the last version of Freaks!!!) and NetBIOS.

The included code was for Turbo C and Turbo Assembler.



kip.zip

KipDJ (KIP for DJGPP)

Más tarde, cuando trabajaba con DJGPP en el Space Plumber, encontré en Internet unos oscuros documentos sobre el acceso a la capa Winsockets desde un cliente DPMI (como eran los programas construídos con DJGPP). Con ellos creé KipDJ. De nuevo, Microsoft volvió a joderla con Windows 98 y esta capa dejó de funcionar.

Later, when I worked in Space Plumber using DJGPP, I found on the Internet some obscure documents to access the Winsockets stack from a DPMI client (programs built with DJGPP were MS/DOS based, DPMI clients). With those documents I created KipDJ. But again, Microsoft screwed it again with Windows 98 and this stack stopped working.



kipdj.zip

KIPTools

Para probar mis librerías de TCP/IP creé una serie de programas imitando los comandos homónimos de los sistemas Unix. Algunas herramientas eran realmente útiles y otras simplemente hacks para probar los protocolos.

Los programas incluídos eran: daytime, finger, lpr, myip (mostraba el ip del cliente), nanotel (telnet simple), nanoweb (servidor web simple), pop (cliente pop), rcp, rexec, rlogin, rsh, rshd (servidor rshd), smtp y systime (sincronizador de reloj, para mi 386/40 que se retrasaba una hora cada día).

El código fuente incluído era compilable en Turbo C (con KIP), DJGPP (con KipDJ) , WIN32 (con el compilador lccwin32) y Unix (probado en Linux y SunOS 4).

To test my TCP/IP libraries I created a bunch of programs mimicking the Unix commands with the same name. Some of these tools were really useful and another simple hacks to test the protocols.

The included program were: daytime, finger, lpr, myip (showed the client IP), nanotel (simple telnet), nanoweb (simple web server), pop (pop client), rcp, rexec, rlogin, rsh, rshd (rshd server), smtp and systime (clock synchroinzer, for my 386/40 that delayed an hour per day).

The source code included here can be compiled using Turbo C (with KIP), DJGPP (with KipDJ), WIN32 (with the lccwin32 compiler) and Unix (tested under Linux and SunOS 4).



kiptools.zip

KPS (Kaplan Print Server)

Cuando trabajaba en el Colegio de Médicos de Madrid, su gestión rastrera y miserable (para ciertas cosas; para otras, era obscenamente rumboso) me obligó a lidiar con hardware obsoleto y a menudo estropeado. Como sólo disponía de un 286/12 como servidor de impresoras y en él el Netware Print Server iba lento y sin posibilidad de interacción alguna (para matar algún trabajo había que entrar desde otro equipo que no tenía para ejecutar el Pconsole; una estupidez más del software propietario), decidí escribir el mío propio. Cuando me fuí de allí aquel 286 con KPS aún se encargaba de 3 impresoras matriciales y una láser (ignoro si aún está allí, pero conociendo la empresa, es probable). Aparte de imprimir y permitir mantenimiento, podía comunicarse con otros servidores KPS y mantener y monitorizar colas remotas. Llegué a tener hasta 3 Tandon 286 dispersos por la red, si bien dos de ellos murieron de muerte natural. Funcionaba monitorizando un directorio; cada fichero que encontraba allí era capturado, impreso y borrado. Permitía rebobinar, cortar y distribuir los trabajos por páginas (suponiendo que el trabajo en cuestión fuese puramente ASCII, lo que era habitual allí entonces). Se incluye un fichero de configuración, pero no es completo; para aprender a configurarlo plenamente habrá que consultar el código.

El código fuente es compilable en Turbo C y, lamentablemente, es muy dependiente de MSDOS, aunque no de Novell Netware.

When I worked for the Medical College of Madrid, its stupid management forced me to work with obsolete and frequently broken, old hardware. As I only had a 286/12 as a print server and Netware's own worked so slow and without any possible interaction (to stop a job it made necessary to enter from another computer that I didn't have), I decided to write my own print server that I called Kaplan Print Server. When I leaved that cave that old 286 with KPS still was serving three matrix printers and a laser (I don't know if it's still there, but knowing that enterprise, may be). It not only allowed printing, but it also could communicate with other KPS servers to monitor remote queues. It made possible to rewind jobs, split them and distribute them by pages in several queues (supposing the print jobs were ASCII, common there in that time). The downloadable package includes a sample configuration file, but it's not complete; to learn how to use it, it can be necessary to take a look to the source code.

This source code is compilable under Turbo C and, sadly, it's very MS/DOS dependent (not upon Novell Netware, however).



kps.zip

c2html

Este fue un rápido hack de 1 hora que convierte código fuente C en HTML, para imprimirlo con 'syntax highlight'. Está escrito en C porque era lo único que tenía a mano y el código tenía que ser entregado impreso de forma 'bonita' con urgencia. Había una versión que funcionaba como CGI, pero se ha perdido (¿dónde va el código fuente que desaparece para siempre...?).

This was a quick 1 hour hack to convert C source code to HTML, to print syntax highlighted files. It's written in C because it was the only thing that I had at hand in that moment and the code needed to be urgently pretty-printed. There was a version that also worked as a CGI, but I lost it.



c2html.c

The Wailer

The Wailer fue uno de los muchos lectores de mensajes para el BBS Galletas / CRCOK. En su momento, era el único BBS que corría en Unix de España, y tal era el nivel técnico de sus gentes que en ciertas ocasiones el número de programas diferentes para leer los mensajes se acercaba peligrosamente al número de usuarios. Mi aportación fue ésta; había versiones de The Wailer para MS Windows, MSDOS y Unix. Aquí están los fuentes de algunas de ellas.

The Wailer was one of the mail and news readers unsed in Galletas and CRCOK BBSs. It was the only BBS in Spain that run under Unix in those days. There were versions of The Wailer for MS Windows, MSDOS and Unix. You can download the source code for some of them.



The Wailer 1.x (MS Windows)
The Wailer 2.x (MS Windows)
The X Wailer (X Window + Athena Widgets)

Tagit

Anterior aún a The Wailer, Tagit fue mi primer programa para el BBS Galletas. Su funcionamiento es simple: elige aleatoriamente un párrafo de un fichero de citas, lo concatena a la firma del usuario y lo añade al final de cada mensaje de correo electrónico. Tras un par de modificaciones, ahora se puede usar con el mutt añadiendo a .muttrc la siguiente línea:

Before The Wailer, Tagit was my first program for the Galletas BBS. It works pretty simply: takes randomly a paragraph from a tags file, it appends it to the user signature and adds it to the end of each email message. With a bit of editing, it can be used with mutt by adding the following line to .muttrc:

send-hook . set signature=tagit|
Tagit utiliza dos ficheros: .signature y .quotes, ambos situados en el directorio $HOME del usuario. El primero es la firma clásica y el segundo es un fichero de texto simple en el que los párrafos van separados por una línea en blanco. La primera línea, si no está en blanco, se añadirá al final. En mi caso, tengo en mi fichero .quotes los cantos completos del Infierno y el Purgatorio de la Divina Comedia de Dante, y el nombre del autor y la obra en la primera línea. Echa un ojo al código fuente, porque hay más cosas.
Tagit uses two files: .signature and .quotes, both living the user $HOME. The first is the usual signature and the second is a simple text file where the paragraphs are separated from each other by a blank line. The first line of the file, if not empty, is appended to the end. In my own case, I have in my .quotes file the Hell and Purgatorium from Dante's Divina Commedia, and the author and book's names in the first line. Take a look inside the source code, as there are more things.


tagit.c

Dbfrep

Dbfrep es un reparador de bases de datos DBF (las usadas por dBase III/IV y Clipper). Comprueba lo siguiente:

  • Que la marca sea válida.
  • Que la longitud de la cabecera coincida con el campo de control de la misma.
  • Que el número de registros según la cabecera coincida que el número de registros real.
  • Que la marca de borrado sea un carácter válido.
  • Que no existan valores con ASCII menor que 32, que ocasionan problemas en el tratamiento de cadenas.

Este software salvó mis bases de datos de varias catastrofes de hardware. Era compilable bajo Turbo C.

Dbfrep is a repairing tool for DBF databases (those used in dBase III/IV and Clipper). It tests the following:

  • Signature validity.
  • That the header length field in the header matches the real length.
  • That the number of records field in the header matches the real number of records.
  • That the delete mark is a valid character.
  • That the strings does not contain ASCII values lower than 32.

This piece of software saved my databases from several hard disk crashes. It could be compiled using Turbo C.



dbfrep.c

Continuará...

To be continued...


-

Home | Artwork | Ann Hell | Software | Libros y Relatos | Misc