{"id":695,"date":"2026-09-28T23:22:42","date_gmt":"2026-09-28T13:22:42","guid":{"rendered":"http:\/\/www.vk1zdj.net\/?p=695"},"modified":"2026-09-28T23:22:42","modified_gmt":"2026-09-28T13:22:42","slug":"modifying-the-trs-80-model-100-to-support-ccitt-modem-tones","status":"publish","type":"post","link":"http:\/\/www.vk1zdj.net\/?p=695","title":{"rendered":"Modifying the TRS-80 Model 100 to support CCITT modem tones"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In my teenage years, I was lucky to do some programming work for the Australian National University which resulted in me being able to purchase a TRS-80 Model 100 computer.  It was an amazing machine supporting 32K of inbuilt RAM, an 40 x 8 LCD display, and able to be powered from a set of 4 AA batteries.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I used the machine extensively, but one frustration was that the inbuilt modem was designed to support the BELL 103 tones, not the CCITT V21 tones used in Australia. The MC14412 itself could generate and decode CCITT V.21, but the analogue filters around it had been designed for the Bell 103 frequency bands. Changing the modem standard therefore meant changing both the MC14412 mode selection and retuning the filters.   At the age of 16, I wasn&#8217;t about to change that, so I simply used a SendData Acoustic coupler to allow me to dial into BBS machines and the Schools Authority PDP\/11.  There is a reason why my day job is in IT security \ud83d\ude09 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fast forward a couple of years, during which time I went to TAFE and studied electronics, as well as getting a job at the ANU as a Trainee Technical Officer.  That provided me with a massive understanding of how Operational Amplifiers work, so I could finally address the pesky filter issue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This post is me documenting those changes from random scraps of paper stuffed into the TRS80 Model 100 Technical Reference Manual I have here.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bell 103 vs CCITT V21<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the heady 60&#8217;s, 70&#8217;s and 80&#8217;s there were two common standards for sending 300 baud data across telephone lines.  Bell laboratories in the USA had a standard called Bell 103, which used two sets of tones (one for sending and one for receiving-  The originating station would send 1070Hz \/ 1270Hz , while the answering station would send 2025Hz \/ 2225Hz.  The use of two tone pairs allowed data to be sent bidirectionally at the same time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Europeans chose a different set of tones for their CCITT V21 Standard &#8211; The originating station would sent 980Hz \/ 1180Hz, while the answering station would send 1650Hz \/ 1850Hz.  Again, two tone pairs allowed full duplex communication.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is this different frequency set that stopped my internal modem from operating.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Transmit Filters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The ensuing years have made documenting things so much simpler &#8211; Thanks to Henner Zeller, I have some great diagrams that I can use portions under the Creative Commons Attribution-ShareAlike CC-BY-SA 4.0 license.  <a href=\"https:\/\/github.com\/hzeller\/trs80-100-schematic \">https:\/\/github.com\/hzeller\/trs80-100-schematic <\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the Transmit filter &#8211; We will use it to look at first, because it is simpler:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"552\" height=\"316\" src=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image.png\" alt=\"\" class=\"wp-image-696\" srcset=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image.png 552w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-300x172.png 300w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-80x46.png 80w\" sizes=\"auto, (max-width: 552px) 100vw, 552px\" \/><\/a><figcaption class=\"wp-element-caption\">The output filter is a Variable Frequency Multiple Feedback Band Pass Filter with the center frequency being switched by T4 adding in R42 when in Answer mode.<br><br>The general form of this filter is:<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"717\" height=\"459\" src=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-3.png\" alt=\"\" class=\"wp-image-699\" srcset=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-3.png 717w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-3-300x192.png 300w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-3-80x51.png 80w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/a><figcaption class=\"wp-element-caption\">Variable Frequency Multiple Feedback Band Pass Amplifier<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">When C1 = C2, the center frequency of this type of filter is derived by:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C = C1 = C2.     R1 = R1a || R1b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"316\" height=\"61\" src=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-2.png\" alt=\"\" class=\"wp-image-698\" style=\"width:597px;height:115px\" srcset=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-2.png 316w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-2-300x58.png 300w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-2-80x15.png 80w\" sizes=\"auto, (max-width: 316px) 100vw, 316px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the example above, when in Originate mode, fo = 1.1KHz,  Bw = 2.50Khz and Q = 89.28E-03 &#8211; That lines up with our expectation of sending out 1170Hz as a middle frequency in Bell 103 mode. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When in Answer mode, R1b becomes R45 | | R41 = 1K78, resulting in  fo = 2.3KHz,  Bw = 2.50KHz and Q = 89.28E-03 &#8211; A little higher than the expected 2.1Khz, but close enough given capacitor tolerances.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Transmit Changes for CCITT V21<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">With a little work plugging values into , it was determined that modifying the Transmit filter for CCITT where we either transmit at 1080 or 1750 we simply need to replace R45 with 8.25k and R42 with  5.22k (both 2% values).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>R45 8.25K<\/li>\n\n\n\n<li>R42 5.22K<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">The Receive Filters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The same analysis can be made for the receive filters.  In the TRS80 model 100, the receive filter consists of three stages:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"301\" src=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-4-1024x301.png\" alt=\"\" class=\"wp-image-700\" srcset=\"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-4-1024x301.png 1024w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-4-300x88.png 300w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-4-768x226.png 768w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-4-80x24.png 80w, http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/image-4.png 1327w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In looking at this, we have to remember this is receiving, so the frequency sets are reversed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Answer mode &#8211; Stage 1 &#8211; C=4.7n, R1a=73.2k, R1b=2.05k, R2=590k &#8211; results in fo= 987Hz, BW=721Hz<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage2, C=4.7n, R1a=33.2k, R1b=3.3k, R2=280k &#8211; results in fo=1.21Khz, BW=1.5Khz<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage3, C=4.7n, R1a=52.3k, R1b=1.5k, R2=422k &#8211; results in fo=1.37Khz, BW=1Khz<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Originate mode, Stage 1- C=4.7n, R1a=73.2k, R1b=2.05k, R2=590k &#8211; results in fo=1.84Khz, BW= 721Hz<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage2, C=4.7n, R1a=33.2k, R1b=3.3k, R2=280k &#8211; results in fo=2.11Khz, BW=1.5Khz<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage3, C=4.7n, R1a=52.3k, R1b=460R, R2=422k &#8211; results in fo=2.4Khz, BW=1Khz<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Receive Changes for CCITT V21<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For V.21 we want the low receive pair centred on 1080 Hz, from 980 and 1180 Hz, and the high pair centred on 1750 Hz, from 1650 and 1850 Hz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The original three filters do not all sit exactly on the FSK tones. They form a broader three-stage response around the wanted band. So rather than making all three stages 1080 or 1750 Hz, I would retain approximately the same spread.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That gives sensible V.21 targets of about  905Hz, 1080Hz and 1255 Hz for the Low Band and 1570Hz, 1750Hz and 1920 Hz for the High Band.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If we keep the original 4.7 nF capacitors and R2 values, we end up with:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 1, R2 590 k\u03a9: low-band R1 \u2248 2.37 k\u03a9, high-band effective R1 \u2248 788 \u03a9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 2, R2 280 k\u03a9: low-band R1 \u2248 3.51 k\u03a9, high-band effective R1 \u2248 1.34 k\u03a9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 3, R2 422 k\u03a9: low-band R1 \u2248 1.73 k\u03a9, high-band effective R1 \u2248 737 \u03a9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because the high-frequency setting is obtained by switching another resistor in parallel, the required switched resistors become approximately:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">R13 \u2248 1.18 k\u03a9<br>R27 \u2248 2.16 k\u03a9<br>R24 \u2248 1.29 k\u03a9<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">with the main resistors approximately:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">R16 \u2248 2.37 k\u03a9<br>R28 \u2248 3.51 k\u03a9<br>R25 \u2248 1.73 k\u03a9<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, 6 simple resistor substitutions and a couple of re-routed traces, and the modem now operates beautifully with CCITT V21.   I can positively confirm, as I used it a *lot* cross legged on the floor wherever I could find a spare phone line.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I can share this now, because the entire phone network is digital now, and those affected are long gone \ud83d\ude42 \ud83d\ude42 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Having successfully modified it, I naturally put this new capability to entirely sensible and responsible use.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In my teenage years, I was lucky to do some programming work for the Australian National University which resulted in me being able to purchase a TRS-80 Model 100 computer. It was an amazing machine supporting 32K of&#8230; <\/p>\n","protected":false},"author":1,"featured_media":701,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[34],"tags":[46,47],"class_list":["post-695","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computing","tag-m100","tag-modems"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"http:\/\/www.vk1zdj.net\/wp-content\/uploads\/2023\/10\/Model100-top.png","_links":{"self":[{"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=\/wp\/v2\/posts\/695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=695"}],"version-history":[{"count":2,"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=\/wp\/v2\/posts\/695\/revisions"}],"predecessor-version":[{"id":711,"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=\/wp\/v2\/posts\/695\/revisions\/711"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=\/wp\/v2\/media\/701"}],"wp:attachment":[{"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=695"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.vk1zdj.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}