Punter (protocol)
Punter is a protocol for file transfer developed in the 1980s by Steve Punter. There are various types of Punter such as PET Transfer Protocol (PTP), C1 and C2.
PET Transfer Protocol
The PET Transfer Protocol (PTP), also known as Punter or Old Punter, was developed ca. 1980 by Steve Punter for use with his PETBBS and BBS64 bulletin board system (BBS) software. The "PET" in the name comes from the Commodore PET computer.
Compared to other contemporary protocols, PTP is slower than YMODEM and ZMODEM but faster and more reliable than XMODEM.
The earliest version of Punter supports only 7-bit transfers and uses a back-correction algorithm involving two checksums for failsafes. One of the two checksums is additive, and the other is Boolean in nature (executing EOR instructions), making for an easy to understand algorithm for other programmers to understand and emulate. Having two checksums--both of them being 16 bits wide--makes it significantly more accurate than the single-byte checksum used by XMODEM, its major competitor in the early 1980s. Regardless of the potential for errors to creep in, in comparison to the YMODEM protocol of the late 1980s, which is arguably superior, it has been widely used on Commodore PET and Commodore 64 based bulletin boards.
What It Looks Like to the User
Not all of the transmission is visible to the user. The most noticeable part of the transmission is the report of status codes like ACK, GOO, BAD, and SYN for handshaking results. A typical transmission might look like "ACKGOOGOOGOOGOOBADGOOGOOGOOBADGOO," with bad blocks reported to the user just as frequently as they occurred. This allows users to record the error rate according to hour and day of the week, and determine which hours of the day and which days of the week had cleaner phone lines. Unlike modern computers, the C64 and C128 can poll the User Port (where the modem is interfaced) at slightly different BAUD rates and connection speeds. For instance, a transmission at 1200 BAUD on Sunday evening might actually produce fewer errors than 2400 BAUD on Tuesday afternoon. By choosing slower BAUD rates, files can actually be transmitted faster than at higher BAUD rates, inasmuch as there are fewer resendings in a given transfer.
C1
C1, also known as New Punter, was developed in 1984 by Steve Punter as a successor to PTP. C1 was the standard protocol for use on Commodore BBSes, and was rarely supported by terminal or BBS software for other operating systems.
The C1 specification was rife with inaccuracies and ambiguities, making it difficult to implement from scratch. Nevertheless, the protocol came into widespread use because Punter released the source code for the original implementation into the public domain.
Technical information
C1 could transmit block sizes up to 255 bytes with a recommended (but not enforced) minimum of 40 bytes and an overhead of 7 bytes per block. It is optimized for transferring files stored on Commodore computers, whose DOS treats executable, sequential, and random-access files identically.
Multi-Punter
The term Multi-Punter can refer to any one of three or four mutually incompatible third-party variants of C1 which permit batch-file transfers, as opposed to C1, which was designed for single-file transfers.
One such variant, C2, also known simply as Punter, was developed circa 1985 by Steve Punter. Like C1, it is optimized for transferring files stored by 8-bit Commodore computers.
Another variant was developed circa 1987 by Alan Peters.
External links
- Steve Punter's original C1 specification
- C1 specification with interpretive annotations
- Punter program for IBM PC systems
- Notes on implementing C1 and Peters' Multi-Punter