IP-Stack for Turbo Pascal with UDP-sockets

Download current version: tppktip-09.zip (97.882 bytes)


The source for tftp is not yet included (needs cleanup), but here's a precompiled demo for the tftp client (still with debugging messages, but works).

If you find comments that are still in german, please tell me.

News (18-Nov-2007):
I have added a socket interface (similar to use as sockets in linux and windows) and made tftp to transfer files through firewalls with SPF or routers with NAT.

Newsgroup: comp.lang.pascal.borland
From: Klaus Hartnegg
Date: 5 Jan 2007 16:16:12
Subject: IP-Stack for Turbo Pascal: UDP ready, TCP missing, interested?


I'm currently developing a set of units for Borland Turbo Pascal 7,
that implement IP and run on a packet driver interface.

Yes, this means re-inventing the wheel, but the existing wheels
(that I could find) are either buggy or don't fit my needs.

It's being developed and tested both in a dos window of Windows 98
with ndis3pkt.zip (virtual packet driver) and in plain DOS with packed
driver. My main intended use is on devices with a microcontroller
that's 386 compatible, has NE2000 compatible ethernet and runs FreeDos.

Implemented are ARP, IP, UDP, BOOTP, DHCP, ICMP ECHO, DNS-Query.
My next plan is TFTP, maybe also APIPA and RLP (RFC887).

Please note that TCP/IP is missing in the above list and TFTP runs
over UDP. If you don't understand the implications of this note, stop
reading here and forget what you already read (or rather what you
think that you read), this unit doesn't do what you want.

Of course TCP would be real nice to have, but it's not needed for the
application that I'm developing this for. Thus I won't do that. Don't
ask, the answer is no!

However if you want to extend it, you are welcome to do so. Contact me
and I'll send you what I currently have with a GNU LGPL license. But I
don't have any time to answer questions that are answered in the
relevant RFCs. Please don't ask what RFCs are, this unit is of no use
for people who don't know this.

Most source is Pascal, only the interrupt handler is Assembler.
The source is very well documented and thus easy to understand
(for people who know the contents of the relevant RFCs).