{"id":1647,"date":"2022-03-05T20:23:11","date_gmt":"2022-03-05T19:23:11","guid":{"rendered":"https:\/\/www.pagetable.com\/?p=1647"},"modified":"2022-03-05T20:23:11","modified_gmt":"2022-03-05T19:23:11","slug":"the-commodore-modem-1200-model-1670","status":"publish","type":"post","link":"https:\/\/www.pagetable.com\/?p=1647","title":{"rendered":"The Commodore Modem\/1200 (Model 1670)"},"content":{"rendered":"<p>The Commodore 1670, also known as the &ldquo;Modem\/1200&rdquo;, is Commodore&rsquo;s first Hayes-compatible modem: It connects directly to the phone line and supports pulse and tone dialing for 1200 and 300 baud duplex connections. There were two revisions, the original 1670 and the &ldquo;new&rdquo; 1670, a.k.a. CR-1670. (The unit in this article is the later revision.)<\/p>\n<h2 id=\"historical-context\">Historical Context<\/h2>\n<table>\n<thead>\n<tr>\n<th> Year <\/th>\n<th> Name <\/th>\n<th> Model <\/th>\n<th> Description <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> 1982 <\/td>\n<td> <a href=\"https:\/\/www.pagetable.com\/?p=1679\">VICMODEM<\/a> <\/td>\n<td> 1600 <\/td>\n<td> connected to phone&rsquo;s handset connector; manual dialing through phone; Motorola MC14412 <\/td>\n<\/tr>\n<tr>\n<td> 1982 <\/td>\n<td> <a href=\"https:\/\/www.pagetable.com\/?p=1716\">AUTOMODEM<\/a> <\/td>\n<td> 1650 <\/td>\n<td> connected to phone line, pulse dialing in software; Motorola MC14412 <\/td>\n<\/tr>\n<tr>\n<td> 1985 <\/td>\n<td> <a href=\"https:\/\/www.pagetable.com\/?p=1644\">MODEM\/300<\/a> <\/td>\n<td> 1660 <\/td>\n<td>added tone dialing support by feeding SID output into modem; Texas Instruments TMS99532A <\/td>\n<\/tr>\n<tr>\n<td> 1987 <\/td>\n<td> <a href=\"https:\/\/www.pagetable.com\/?p=1647\">MODEM\/1200<\/a> <\/td>\n<td> 1670 <\/td>\n<td> Hayes command set; pulse and tone dialing in hardware; 300\/1200 baud support; U.S. Robotics chipset <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"photos\">Photos<\/h2>\n<p><a href=\"docs\/cbm1670modem\/cbm1670_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/cbm1670_1.jpg\" height=\"403\" width=\"476\" alt=\"\" \/><\/a><\/p>\n<p>On the front, there is the user port connector.<\/p>\n<p><a href=\"docs\/cbm1670modem\/cbm1670_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/cbm1670_2.jpg\" height=\"363\" width=\"452\" alt=\"\" \/><\/a><\/p>\n<p>On the back, there are<\/p>\n<ul>\n<li>two phone line connectors. &ldquo;LINE&rdquo; is connected to the telephone network, and an existing telephone can be connected to the &ldquo;PHONE&rdquo; line.<\/li>\n<li>four DIP switches (default to down):<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th> DIP <\/th>\n<th> Description           <\/th>\n<th> <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> 1   <\/td>\n<td> Auto Answer Enable    <\/td>\n<td> down: auto-answer on second ring disabled <\/td>\n<\/tr>\n<tr>\n<td> 2   <\/td>\n<td> Carrier Detect Enable <\/td>\n<td> down: carrier detect on pin H-K of edge connector (needed for Plus\/4) <\/td>\n<\/tr>\n<tr>\n<td> 3   <\/td>\n<td> Speed Indicate Enable <\/td>\n<td> down: speed indicate on pin J of edge connector <\/td>\n<\/tr>\n<tr>\n<td> 4   <\/td>\n<td> Data Terminal Ready   <\/td>\n<td> down: DTR always on (instead of computer controlled) <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"docs\/cbm1670modem\/back.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/back.jpg\" height=\"463\" width=\"259\" alt=\"\" \/><\/a><\/p>\n<p>The label on the bottom says:<\/p>\n<table>\n<tr>\n<td align=\"center\">\nC= COMMODORE\n<\/td>\n<tr>\n<tr>\n<td>\nMODEL NO. 1670\n<\/td>\n<tr>\n<tr>\n<td>\nSERIAL NO. CA1111714\n<\/td>\n<tr>\n<tr>\n<td>\nCOMPLIES WITH PART 68, FCC RULES; FC<br \/>\nREGISTRATION NUMBER BR98YV-19442-MDE<br \/>\nRINGER EQUIVALENT 0.4A 0.6B; JACK (USOC) RJ11\n<\/td>\n<tr>\n<tr>\n<td>\nCERTIFIED TO COMPLY WITH CLASS B LIMITS,<br \/>\nPART 15, SUBPART J OF FCC RULES. SEE<br \/>\nINSTRUCTIONS IF INTERFERENCE TO RADIO<br \/>\nRECEPTION IS SUSPECTED.\n<\/td>\n<tr>\n<tr>\n<td>\nFCC ID BR98YV1670<br \/>\nMADE IN USA <span style=\"float:right\">310476-03<\/span>\n<\/td>\n<tr>\n<\/table>\n<p><a href=\"docs\/cbm1670modem\/board1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/board1.jpg\" height=\"242\" width=\"480\" alt=\"\" \/><\/a><a href=\"docs\/cbm1670modem\/board2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/board2.jpg\" height=\"257\" width=\"480\" alt=\"\" \/><\/a><\/p>\n<p>The board is marked &ldquo;COMMODORE CR-1670 MODEM&rdquo; and &ldquo;A\/W 311956 REV 4&rdquo;.<\/p>\n<p>The 1670 is based on a U.S. Robotics (&ldquo;USR&rdquo;) chipset:<\/p>\n<ul>\n<li>U2: <code>\u00a9 USR'85 U2J2 \/ OKI C49-387 \/ JAPAN 7X2033<\/code>: This is an OKI MSM80C49-387RS, a <a href=\"docs\/cbm1670modem\/M80C49_OKIelectronic.pdf\">80C49 microcontroller<\/a> with 2KB of mask ROM and 128 bytes of RAM. &ldquo;387&rdquo; indicates which ROM image it contains.<\/li>\n<li>U3: <code>\u00a9 USR'85 U3J2 \/ OKI C49-388 \/ JAPAN 7Y2013<\/code>: This is an OKI MSM80C49-388RS, another 80C49 microcontroller, with a different ROM image (&ldquo;388&rdquo;).<\/li>\n<li>U4: <code>\u00a9 USR86 \/ USR101 16-249 \/ S8749 \/ 35561<\/code>: This socketed IC is probably the ROM that holds the bulk of the modem&rsquo;s firmware.<\/li>\n<\/ul>\n<p><a href=\"docs\/cbm1670modem\/speaker.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/speaker.jpg\" height=\"252\" width=\"336\" alt=\"\" \/><\/a><\/p>\n<p>There is a speaker glued to the top shell that allows monitoring the audio data on the line.<\/p>\n<p><a href=\"docs\/cbm1670modem\/phone_cable.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/phone_cable.jpg\" height=\"218\" width=\"296\" alt=\"\" \/><\/a><\/p>\n<p>The modem comes with a phone cable.<\/p>\n<h2 id=\"box\">Box<\/h2>\n<p><a href=\"docs\/cbm1670modem\/box_front.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/box_front.jpg\" height=\"460\" width=\"292\" alt=\"\" \/><\/a><a href=\"docs\/cbm1670modem\/box_back.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/box_back.jpg\" height=\"460\" width=\"295\" alt=\"\" \/><\/a><br \/>\n<a href=\"docs\/cbm1670modem\/box_side.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/box_side.jpg\" height=\"87\" width=\"447\" alt=\"\" \/><\/a><\/p>\n<h2 id=\"manual\">Manual<\/h2>\n<p><a href=\"docs\/cbm1670modem\/cbm1670modem_manual.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/cbm1670modem_manual.jpg\" height=\"412\" width=\"284\" alt=\"\" \/><\/a><\/p>\n<h2 id=\"quantumlink-material\">QuantumLink Material<\/h2>\n<p><a href=\"docs\/cbm1670modem\/QuantumLink%20Envelope.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/QuantumLink%20Envelope.jpg\" height=\"176\" width=\"216\" alt=\"\" \/><\/a><a href=\"docs\/cbm1670modem\/QuantumLink%20Letter.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/QuantumLink%20Letter.jpg\" height=\"314\" width=\"199\" alt=\"\" \/><\/a><a href=\"docs\/cbm1670modem\/QuantumLink_Registration_Certificate.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/QuantumLink_Registration_Certificate.png\" height=\"142\" width=\"203\" alt=\"\" \/><\/a><a href=\"docs\/cbm1670modem\/QuantumLink%20Quick%20Connect%20Guide.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/QuantumLink%20Quick%20Connect%20Guide.jpg\" height=\"406\" width=\"265\" alt=\"\" \/><\/a><a href=\"docs\/cbm1670modem\/QuantumLink%20Members%20Guide.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/QuantumLink%20Members%20Guide.jpg\" height=\"406\" width=\"265\" alt=\"\" \/><\/a><a href=\"docs\/cbm1670modem\/QuantumLink%20Local%20Access%20Directory.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/QuantumLink%20Local%20Access%20Directory.jpg\" height=\"395\" width=\"266\" alt=\"\" \/><\/a><\/p>\n<h2 id=\"more-box-contents\">More Box Contents<\/h2>\n<p><a href=\"docs\/cbm1670modem\/Warranty%20Card.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/Warranty%20Card.png\" height=\"423\" width=\"255\" alt=\"\" \/><\/a><a href=\"docs\/cbm1670modem\/Sixth%20Sense.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/Sixth%20Sense.png\" height=\"358\" width=\"277\" alt=\"\" \/><\/a><a href=\"docs\/cbm1670modem\/Damaged%20Disk.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/Damaged%20Disk.png\" height=\"224\" width=\"180\" alt=\"\" \/><\/a><\/p>\n<h2 id=\"disk\">Disk<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/disk_label_a.png\" height=\"124\" width=\"384\" alt=\"\" \/> <a href=\"docs\/cbm1670modem\/cbm1670modem_a.d64\"><img decoding=\"async\" src=\"docs\/d64.png\" alt=\"\" \/><\/a><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"docs\/cbm1670modem\/disk_label_b.png\" height=\"124\" width=\"384\" alt=\"\" \/> <a href=\"docs\/cbm1670modem\/cbm1670modem_b.d64\"><img decoding=\"async\" src=\"docs\/d64.png\" alt=\"\" \/><\/a><\/p>\n<h2 id=\"the-hayes\/at-interface\">The Hayes\/AT Interface<\/h2>\n<ul>\n<li>\n<p>ATI\/ATI0 (product code) prints<\/p>\n<pre><code>  121\n\n  OK\n<\/code><\/pre>\n<\/li>\n<li>\n<p>ATI1 (ROM checksum) prints<\/p>\n<pre><code>  1003\n\n  OK\n<\/code><\/pre>\n<\/li>\n<li>\n<p>The manual defines registers (<code>ATSn=a<\/code>, <code>ATSn?<\/code>) 0-8, 10-12 and 16. Except for 16 (self test), they are identical to other U.S. Robotics modems \u2013 as late as the 1997 <a href=\"https:\/\/support.usr.com\/support\/1663\/1663-files\/1663-unkg-Manual.pdf\">Sportster Flash x2<\/a>!<\/p>\n<\/li>\n<li>\n<p>Register 9 is undocumented. Later U.S. Robotics manuals document it as: <\/p>\n<blockquote><p>Sets the required duration, in tenths of a second, of the remote modem\u2019s carrier signal before recognition by your modem. (default: 6)<\/p><\/blockquote>\n<p> On the 1670, register 9 reads back as 6, so it may as well be the same feature.<\/p>\n<\/li>\n<li>\n<p>The registers just seem to map to the 128 bytes of RAM of one of the 80C49 microcontrollers, they wrap around at 128, e.g. 130 is the same as 2. Here is a complete dump after power-on; much of the data may be random, but note the current <code>AT<\/code> command (<code>S19?<\/code>) starting at register 0x11 (17):<\/p>\n<pre><code>  00000000  00 00 2b 0d 0a 08 02 1e |..+.....|\n  00000008  02 06 07 46 32 00 02 00 |...F2...|\n  00000010  00 53 31 39 3f ff ff 00 |.S19?...|\n  00000018  12 01 00 00 00 00 02 04 |........|\n  00000020  20 00 00 04 00 00 20 a4 | ..... .|\n  00000028  00 80 00 00 00 00 50 01 |......P.|\n  00000030  00 00 00 00 00 00 04 00 |........|\n  00000038  20 80 00 00 02 00 00 00 | .......|\n  00000040  98 02 00 00 00 40 02 80 |.....@..|\n  00000048  05 00 10 00 00 7f 47 81 |......G.|\n  00000050  00 00 0a 00 86 10 02 63 |.......c|\n  00000058  d4 23 30 24 bd 63 6e 63 |.#0$.cnc|\n  00000060  00 08 00 00 00 00 04 00 |........|\n  00000068  6b 00 00 00 e5 66 00 08 |k....f..|\n  00000070  80 60 00 65 01 3b 00 07 |.`.e.;..|\n  00000078  01 80 65 00 00 0a 01 00 |..e.....|\n<\/code><\/pre>\n<\/li>\n<li>\n<p>Like all Bell 212A-compatible modems, when on a 1200 baud call, the data rate between the modem and the C64 is actually 1219 bits\/sec. The manual states that it is necessary to specify this manual bitrate when using the KERNAL&rsquo;s software RS232 implementation: <\/p>\n<pre>OPEN2,2,2,CHR$(0)+CHR$(0)+CHR$(61)+CHR$(1)<\/pre>\n<p><a href=\"https:\/\/github.com\/mist64\/ccgmsterm\">Modern versions of CCGMS<\/a> won&rsquo;t work with the 1670 for this reason.<\/p>\n<\/li>\n<\/ul>\n<h2 id=\"open-questions\">Open Questions<\/h2>\n<ul>\n<li>How to dump the ROM chip? I had no success reading it as a 2764..27512.<\/li>\n<li>How to dump the ROM of the 80C49 microcontrollers?<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The Commodore 1670, also known as the &ldquo;Modem\/1200&rdquo;, is Commodore&rsquo;s first Hayes-compatible modem: It connects directly to the phone line and supports pulse and tone dialing for 1200 and 300 baud duplex connections. There were two revisions, the original 1670 and the &ldquo;new&rdquo; 1670, a.k.a. CR-1670. (The unit in this article is the later revision.) &#8230; <a title=\"The Commodore Modem\/1200 (Model 1670)\" class=\"read-more\" href=\"https:\/\/www.pagetable.com\/?p=1647\" aria-label=\"Read more about The Commodore Modem\/1200 (Model 1670)\">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":[5,41,8,20,21],"tags":[],"class_list":["post-1647","post","type-post","status-publish","format-standard","hentry","category-archeology","category-c64","category-commodore","category-literature","category-modem"],"_links":{"self":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/1647","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=1647"}],"version-history":[{"count":0,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/1647\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}