{"id":1641,"date":"2022-02-25T16:32:06","date_gmt":"2022-02-25T15:32:06","guid":{"rendered":"https:\/\/www.pagetable.com\/?p=1641"},"modified":"2022-02-25T16:32:06","modified_gmt":"2022-02-25T15:32:06","slug":"announcing-ccgms-future-0-1","status":"publish","type":"post","link":"https:\/\/www.pagetable.com\/?p=1641","title":{"rendered":"Announcing CCGMS Future 0.1"},"content":{"rendered":"<p>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.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"docs\/ccgms\/ccgms.png\" height=\"272\" width=\"384\" alt=\"\" \/><\/p>\n<h2 id=\"history\">History<\/h2>\n<p>CCGMS has a rich history: It was originally written in 1985-1988 by <a href=\"https:\/\/github.com\/spathiwa\/ccgmsterm\">Craig Smith<\/a>, then <a href=\"https:\/\/commodore.software\/downloads\/category\/59-ccgms\">binary patched<\/a> by many people over the years, and finally maintained again by <a href=\"https:\/\/1200baud.wordpress.com\">alwyz<\/a> from 2016 to 2020, based on the rediscovered source code.<\/p>\n<h2 id=\"cleanup\">Cleanup<\/h2>\n<p>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 \u2013 you can find this version in a <a href=\"https:\/\/github.com\/mist64\/ccgmsterm\/tree\/ccgmsterm2021\">branch<\/a>.<\/p>\n<h2 id=\"fixes\">Fixes<\/h2>\n<p>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.<\/p>\n<h2 id=\"features\">Features<\/h2>\n<p>Finally, I added features to the XMODEM transfer protocol:<\/p>\n<ul>\n<li>The <strong>XMODEM-1K<\/strong> 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.<\/li>\n<li>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 &ldquo;XMODEM&rdquo; (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&rsquo;s choice.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"docs\/ccgms\/protocols.gif\" height=\"272\" width=\"384\" alt=\"\" \/><\/p>\n<p>Because of the added flexibility, the upload and download prompts are now a little clearer about the current settings:<\/p>\n<ul>\n<li><strong>XMODEM\/XMODEM-CRC Upload<\/strong>: forces 128 B blocks, will accept checksum or CRC (more compatible)<\/li>\n<li><strong>XMODEM-1K Upload<\/strong>: forces 1 KB blocks, will accept checksum or CRC (faster)<\/li>\n<li><strong>XMODEM Download<\/strong>: forces checksum, will accept 128 B or 1 KB blocks (more compatible)<\/li>\n<li><strong>XMODEM-CRC\/XMODEM-1K Download<\/strong>: forces CRC16, will accept 128 B or 1 KB blocks (more reliable)<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"docs\/ccgms\/xmodem_up.gif\" height=\"272\" width=\"384\" alt=\"\" \/><img loading=\"lazy\" decoding=\"async\" src=\"docs\/ccgms\/xmodem_down.gif\" height=\"272\" width=\"384\" alt=\"\" \/><\/p>\n<h2 id=\"download\">Download<\/h2>\n<p>The .PRG files for this release are available on <a href=\"https:\/\/github.com\/mist64\/ccgmsterm\/releases\/tag\/v0.1\">GitHub<\/a>.<\/p>\n<h2 id=\"future\">Future<\/h2>\n<p>I set up a <a href=\"https:\/\/github.com\/mist64\/ccgmsterm\">GitHub repository<\/a> for the project, which is licensed under the terms of the 3-clause BSD license.<\/p>\n<p>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!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 &#8230; <a title=\"Announcing CCGMS Future 0.1\" class=\"read-more\" href=\"https:\/\/www.pagetable.com\/?p=1641\" aria-label=\"Read more about Announcing CCGMS Future 0.1\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,41,8,16],"tags":[],"class_list":["post-1641","post","type-post","status-publish","format-standard","hentry","category-2","category-c64","category-commodore","category-github"],"_links":{"self":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/1641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1641"}],"version-history":[{"count":0,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/1641\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}