Announcing CCGMS Future 0.1

The CCGMS Terminal Program for the Commodore 64 is maintained again, and there is a new version: CCGMS Future 0.1, with bug fixes and new features.

History

CCGMS has a rich history: It was originally written in 1985-1988 by Craig Smith, then binary patched by many people over the years, and finally maintained again by alwyz from 2016 to 2020, based on the rediscovered source code.

Cleanup

As a first step, I cleaned up the source of the last version (v2021), splitting it into multiple files, renaming symbols and adding comments. The resulting source uses cc65/ca65 to build and will generate a byte-for-byte identical v2021 PRG file – you can find this version in a branch.

Fixes

Then I started implementing fixes. In v2021, the standard user port driver was broken for PAL systems because of a bug in the lookup of the timings. Similarly, the UP9600 driver had a timing issue on PAL, but it was minor; but the fix may improve data transfer stability.

Features

Finally, I added features to the XMODEM transfer protocol:

  • The XMODEM-1K protocol has been added. This increases the block size to 1 KB (instead of 128 bytes) and will significantly increase throughput. Both regular checksum and CRC are supported with XMODEM-1K, and since the protocol specifies that the sender decides on the block size, CCGMS will accept 128 bytes and 1 KB blocks on receive, no matter the setting.
  • The XMODEM protocol specifies that the receiver decides whether a simple checksum or CRC16 should be used. The original code would only accept its own settings on uploads. For example, if CCGMS was set to regular “XMODEM” (i.e. no CRC16) and the sender used the XMODEM-CRC protocol, the transfer would fail. This has been changed to always accept the sender’s choice.

Because of the added flexibility, the upload and download prompts are now a little clearer about the current settings:

  • XMODEM/XMODEM-CRC Upload: forces 128 B blocks, will accept checksum or CRC (more compatible)
  • XMODEM-1K Upload: forces 1 KB blocks, will accept checksum or CRC (faster)
  • XMODEM Download: forces checksum, will accept 128 B or 1 KB blocks (more compatible)
  • XMODEM-CRC/XMODEM-1K Download: forces CRC16, will accept 128 B or 1 KB blocks (more reliable)

Download

The .PRG files for this release are available on GitHub.

Future

I set up a GitHub repository for the project, which is licensed under the terms of the 3-clause BSD license.

While I am working on further features, I am also more than happy to accept pull requests for features, bug fixes as well as clean up work!

2 thoughts on “Announcing CCGMS Future 0.1”

  1. Compared to other terminal of the time, what features beside 1K X-modem does it offer?

  2. Great to see that you want to maintain CCGMS and that finally XModem1K is implemented (Alwyz refused to do it in 2019/2020).
    Two ideas / requests from me:
    1. am I correct, that Punter still depends on 1MHz timings in your Version ? Means it doesn’t run in Turbo Mode on TC64 / U64 / SCPU ? If yes, I modified Punter Protocol to work in Turbo Mode a while ago for CBASE BBS.
    2. Now that X-Modem1K is in, what about adding some additional Bytes to support Y-Modem batch too which is infact X-Modem1k with Multifile support? I also added that to C*BASE last year.
    I can provide the sources for both if you are interested.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.