Un naufragio personal


This page contains very old and/or outdated software projects.

All these software is released into the public domain.

KIP (TCP/IP Stack) Library

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.


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.


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 programs were:

  • daytime
  • finger
  • lpr
  • myip (show the client IP)
  • nanotel (simple telnet)
  • nanoweb (simple web server)
  • pop (pop client)
  • rcp
  • rexec
  • rlogin
  • rsh
  • rshd (rshd server)
  • smtp
  • systime (clock synchronizer, for my 386/40 that delayed an hour per day).

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

KPS (Kaplan Print Server)

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).

The Wailer

The Wailer was one of the mail and news readers unsed in Galletas and CRCOK BBSs. It was the only BBS in Spain that ran 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.


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 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.


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.