In the spring of 2000 the idea was born to write a new digipeater (kind of digital relay) for use in a mode called APRS. For this task access to raw AX25 frames was needed and also the ability to transmit raw AX.25 frames. This is needed because our program should have full control over the contents of the AX.25 frame, including all digipeater field, source and destination; all bits and pieces. We did however not want to reinventing the wheel or used of a bulky and hard to configure layer. But still it should cover a lot of different hardware, the more the better. Since our new program should be used on cheap PC's like a 80286 it should run under DOS and be available as public source.
That a lot of demands, but the ideal candidate for this was found in TFPCX. Other options would have been BPQ and FlexNet - but then this would not be GNU but closed source. Also BPQ and FlexNet are not really light-weight since there were designed with another task in mind.
The TFPCX program was suitable for a large range of modems and the author DG0FT kindly donated his source under the GNU Public License, which states that you make use the source as long as you publish the changed source also under the GPL license. This is what I intended to do anyway so this suited me fine.
The protocol stack in TFPCX, which is TF27b by NORD> The lowest level of driver code was extracted from TFPCX and put into AX25_MAC. Some glue ware was added to it to add some buffering.
When AX25_MAC is loaded you can send was AX.25 frames to the program. AX.25_MAC will add the CRC and send this frame exactly as is through whatever modem you defined. So the sender is not bothered about the modem specifics this way. For reception AX25_MAC will get the data from the modem and check the CRC. Packets with a valid CRC are then offered to the program using the AX25_MAC layer.
The use of AX25_MAC makes a program that has to send an receive raw AX.25 frames modem independent. Besides that the TFPCX drivers were proven to be stable for many years. We will therefore not run into difficult problems although driving a modem error free and stable is not always a trivial task and debugging can be a real pain. TFPCX provided us with stable drivers for AX25_MAC so we could concentrate on the application without bothering about the driver. And AX25_MAC lived up to this expectation and is as stable as TFPCX was.