What it is
DOS BBS software and door games talk to the serial port through a FOSSIL driver, a small memory-resident program that gives them one standard interface (INT 14h) whatever the hardware. KFOSSIL is a new one, written from the FidoNet FOSSIL specification (revision 5).
- Runs on any PC from an 8088 up, with DOS 2 or later, and in DOSBox, dosemu and FreeDOS.
- Small: about 2.3K resident, plus 3K of buffers for each port.
- Handles one to four ports, and unloads again with
KFOSSIL /U.
Using it
Load it once, before the BBS, for example in AUTOEXEC.BAT or the batch file that starts your board:
KFOSSIL ; COM1 at 3F8, IRQ 4
KFOSSIL 1 2 ; COM1 and COM2
KFOSSIL 1:3F8,4,38400 ; COM1, rate locked at 38400 (8N1)
KFOSSIL /C 1 ; COM1, carrier detect always on
KFOSSIL /U ; take it out of memory again
KFOSSIL /? ; help
It checks each port for a UART before loading and says what it found:
COM1 at 03F8, IRQ 4, 16550A FIFOs, locked at 38400
Use /C with a null-modem cable that has no carrier detect line, and in DOSBox, whose nullmodem port has none. Without it, doors may think the caller has hung up.
Port settings
Each port is given as port[:base[,irq[,rate]]]:
port 1 to 4
base the I/O address in hex (defaults 3F8, 2F8, 3E8, 2E8)
irq 2 to 15 (defaults 4, 3, 4, 3)
rate lock the port at this rate, 8N1: 2400, 9600, 19200, 38400, 57600, 115200 ...
A locked rate is the usual set-up for a modem or a fast null-modem link: programs can't change it, so the BBS and all its doors use the same rate. Ports can share an IRQ, such as COM1 and COM3 on IRQ 4.
What it supports
Serial
- COM1 to COM4 at any address, IRQ 2 to 15
- 2K receive and 1K send buffer per port
- 8250, 16450 and 16550A UARTs; FIFOs used on a 16550A
Flow control
- RTS/CTS: RTS drops when the buffer is 3/4 full
- XON/XOFF either way
- Break, ^C/^K checking
FOSSIL functions
- All of 00h to 1Bh
- Carrier detect, watchdog, block reads and writes
- Timer tick chain and driver information
Calls for ports KFOSSIL isn't handling go on to whatever had INT 14h before, normally the BIOS. The full list of functions is in KFOSSIL.TXT.
Testing
KFOSSIL 1.0 was tested in DOSBox with its serial port connected over TCP: 20,000 random bytes echoed back cleanly, RTS/CTS flow control both ways with 30,000 bytes in order, a 20,000-byte send through function 01h, and a real door game, Ember Reach's REACH.EXE, played through it.
It has not yet been tried on a real PC with a real modem, with two ports at once, with XON/XOFF, or on IRQs above 7. Reports from anyone who tries it on real hardware are very welcome.
Downloads
Version 1.0, November 2026: the first release.
KFOSSIL 1.0 for DOS
KFOSSIL.COM, the manual, the NASM source, FTEST.COM (a small echo program for testing a link) with its source, and the licence.
SHA-256 ad9d959800778207fb4cd18e69d91fcd5de78f143685e6b1a501805850cada16
Also on the BBS in the file area Heisenbergs Files. The manual: KFOSSIL.TXT.
Licence and source
KFOSSIL is Copyright © 2026 Michael Slater. It is free software: you may copy, change and share it under the GNU General Public License, version 2 or (at your option) any later version. It comes with no warranty. The NASM source (kfossil.asm) is in the zip; build it with nasm -f bin -o KFOSSIL.COM kfossil.asm.
The FOSSIL interface is the one in the FidoNet FOSSIL specification (FSC-0015, revision 5).
Contact
Questions and bug reports are welcome. Email slaterm@theiguru.au, or leave a message for the sysop on the Kalgoorlie Retro BBS (telnet bbs.theiguru.au).