CINXE.COM

Ken Shirriff's blog: February 2024

<!DOCTYPE html> <html class='v2' dir='ltr' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> <head> <link href='https://www.blogger.com/static/v1/widgets/3566091532-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <meta content='width=1100' name='viewport'/> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='blogger' name='generator'/> <link href="https://www.righto.com/favicon.ico" rel='icon' type='image/x-icon' /> <link href="https://www.righto.com/2024/02/" rel='canonical' /> <link rel="alternate" type="application/atom+xml" title="Ken Shirriff&#39;s blog - Atom" href="https://www.righto.com/feeds/posts/default" /> <link rel="alternate" type="application/rss+xml" title="Ken Shirriff&#39;s blog - RSS" href="https://www.righto.com/feeds/posts/default?alt=rss" /> <link rel="service.post" type="application/atom+xml" title="Ken Shirriff&#39;s blog - Atom" href="https://www.blogger.com/feeds/6264947694886887540/posts/default" /> <!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> <meta content='http://www.righto.com/2024/02/' property='og:url'/> <meta content='Ken Shirriff&#39;s blog' property='og:title'/> <meta content='Computer history, restoring vintage computers, IC reverse engineering, and whatever' property='og:description'/> <title>Ken Shirriff's blog: February 2024</title> <style type='text/css'>@font-face{font-family:'Play';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/play/v19/6aez4K2oVqwIvtU2Gw.eot);}</style> <style id='page-skin-1' type='text/css'><!-- /* ----------------------------------------------- Blogger Template Style Name: Simple Designer: Blogger URL: www.blogger.com ----------------------------------------------- */ /* Variable definitions ==================== <Variable name="keycolor" description="Main Color" type="color" default="#66bbdd"/> <Group description="Page Text" selector="body"> <Variable name="body.font" description="Font" type="font" default="normal normal 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="body.text.color" description="Text Color" type="color" default="#222222"/> </Group> <Group description="Backgrounds" selector=".body-fauxcolumns-outer"> <Variable name="body.background.color" description="Outer Background" type="color" default="#66bbdd"/> <Variable name="content.background.color" description="Main Background" type="color" default="#ffffff"/> <Variable name="header.background.color" description="Header Background" type="color" default="transparent"/> </Group> <Group description="Links" selector=".main-outer"> <Variable name="link.color" description="Link Color" type="color" default="#2288bb"/> <Variable name="link.visited.color" description="Visited Color" type="color" default="#888888"/> <Variable name="link.hover.color" description="Hover Color" type="color" default="#33aaff"/> </Group> <Group description="Blog Title" selector=".header h1"> <Variable name="header.font" description="Font" type="font" default="normal normal 60px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="header.text.color" description="Title Color" type="color" default="#3399bb" /> </Group> <Group description="Blog Description" selector=".header .description"> <Variable name="description.text.color" description="Description Color" type="color" default="#777777" /> </Group> <Group description="Tabs Text" selector=".tabs-inner .widget li a"> <Variable name="tabs.font" description="Font" type="font" default="normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="tabs.text.color" description="Text Color" type="color" default="#999999"/> <Variable name="tabs.selected.text.color" description="Selected Color" type="color" default="#000000"/> </Group> <Group description="Tabs Background" selector=".tabs-outer .PageList"> <Variable name="tabs.background.color" description="Background Color" type="color" default="#f5f5f5"/> <Variable name="tabs.selected.background.color" description="Selected Color" type="color" default="#eeeeee"/> </Group> <Group description="Post Title" selector="h3.post-title, .comments h4"> <Variable name="post.title.font" description="Font" type="font" default="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> </Group> <Group description="Date Header" selector=".date-header"> <Variable name="date.header.color" description="Text Color" type="color" default="#222222"/> <Variable name="date.header.background.color" description="Background Color" type="color" default="transparent"/> <Variable name="date.header.font" description="Text Font" type="font" default="normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="date.header.padding" description="Date Header Padding" type="string" default="inherit"/> <Variable name="date.header.letterspacing" description="Date Header Letter Spacing" type="string" default="inherit"/> <Variable name="date.header.margin" description="Date Header Margin" type="string" default="inherit"/> </Group> <Group description="Post Footer" selector=".post-footer"> <Variable name="post.footer.text.color" description="Text Color" type="color" default="#666666"/> <Variable name="post.footer.background.color" description="Background Color" type="color" default="#f9f9f9"/> <Variable name="post.footer.border.color" description="Shadow Color" type="color" default="#eeeeee"/> </Group> <Group description="Gadgets" selector="h2"> <Variable name="widget.title.font" description="Title Font" type="font" default="normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/> <Variable name="widget.title.text.color" description="Title Color" type="color" default="#000000"/> <Variable name="widget.alternate.text.color" description="Alternate Color" type="color" default="#999999"/> </Group> <Group description="Images" selector=".main-inner"> <Variable name="image.background.color" description="Background Color" type="color" default="#ffffff"/> <Variable name="image.border.color" description="Border Color" type="color" default="#eeeeee"/> <Variable name="image.text.color" description="Caption Text Color" type="color" default="#222222"/> </Group> <Group description="Accents" selector=".content-inner"> <Variable name="body.rule.color" description="Separator Line Color" type="color" default="#eeeeee"/> <Variable name="tabs.border.color" description="Tabs Border Color" type="color" default="#eeeeee"/> </Group> <Variable name="body.background" description="Body Background" type="background" color="#f6fbf6" default="$(color) none repeat scroll top left"/> <Variable name="body.background.override" description="Body Background Override" type="string" default=""/> <Variable name="body.background.gradient.cap" description="Body Gradient Cap" type="url" default="url(https://resources.blogblog.com/blogblog/data/1kt/simple/gradients_light.png)"/> <Variable name="body.background.gradient.tile" description="Body Gradient Tile" type="url" default="url(https://resources.blogblog.com/blogblog/data/1kt/simple/body_gradient_tile_light.png)"/> <Variable name="content.background.color.selector" description="Content Background Color Selector" type="string" default=".content-inner"/> <Variable name="content.padding" description="Content Padding" type="length" default="10px" min="0" max="100px"/> <Variable name="content.padding.horizontal" description="Content Horizontal Padding" type="length" default="10px" min="0" max="100px"/> <Variable name="content.shadow.spread" description="Content Shadow Spread" type="length" default="40px" min="0" max="100px"/> <Variable name="content.shadow.spread.webkit" description="Content Shadow Spread (WebKit)" type="length" default="5px" min="0" max="100px"/> <Variable name="content.shadow.spread.ie" description="Content Shadow Spread (IE)" type="length" default="10px" min="0" max="100px"/> <Variable name="main.border.width" description="Main Border Width" type="length" default="0" min="0" max="10px"/> <Variable name="header.background.gradient" description="Header Gradient" type="url" default="none"/> <Variable name="header.shadow.offset.left" description="Header Shadow Offset Left" type="length" default="-1px" min="-50px" max="50px"/> <Variable name="header.shadow.offset.top" description="Header Shadow Offset Top" type="length" default="-1px" min="-50px" max="50px"/> <Variable name="header.shadow.spread" description="Header Shadow Spread" type="length" default="1px" min="0" max="100px"/> <Variable name="header.padding" description="Header Padding" type="length" default="30px" min="0" max="100px"/> <Variable name="header.border.size" description="Header Border Size" type="length" default="1px" min="0" max="10px"/> <Variable name="header.bottom.border.size" description="Header Bottom Border Size" type="length" default="0" min="0" max="10px"/> <Variable name="header.border.horizontalsize" description="Header Horizontal Border Size" type="length" default="0" min="0" max="10px"/> <Variable name="description.text.size" description="Description Text Size" type="string" default="140%"/> <Variable name="tabs.margin.top" description="Tabs Margin Top" type="length" default="0" min="0" max="100px"/> <Variable name="tabs.margin.side" description="Tabs Side Margin" type="length" default="30px" min="0" max="100px"/> <Variable name="tabs.background.gradient" description="Tabs Background Gradient" type="url" default="url(https://resources.blogblog.com/blogblog/data/1kt/simple/gradients_light.png)"/> <Variable name="tabs.border.width" description="Tabs Border Width" type="length" default="1px" min="0" max="10px"/> <Variable name="tabs.bevel.border.width" description="Tabs Bevel Border Width" type="length" default="1px" min="0" max="10px"/> <Variable name="post.margin.bottom" description="Post Bottom Margin" type="length" default="25px" min="0" max="100px"/> <Variable name="image.border.small.size" description="Image Border Small Size" type="length" default="2px" min="0" max="10px"/> <Variable name="image.border.large.size" description="Image Border Large Size" type="length" default="5px" min="0" max="10px"/> <Variable name="page.width.selector" description="Page Width Selector" type="string" default=".region-inner"/> <Variable name="page.width" description="Page Width" type="string" default="auto"/> <Variable name="main.section.margin" description="Main Section Margin" type="length" default="15px" min="0" max="100px"/> <Variable name="main.padding" description="Main Padding" type="length" default="15px" min="0" max="100px"/> <Variable name="main.padding.top" description="Main Padding Top" type="length" default="30px" min="0" max="100px"/> <Variable name="main.padding.bottom" description="Main Padding Bottom" type="length" default="30px" min="0" max="100px"/> <Variable name="paging.background" color="#ffffff" description="Background of blog paging area" type="background" default="transparent none no-repeat scroll top center"/> <Variable name="footer.bevel" description="Bevel border length of footer" type="length" default="0" min="0" max="10px"/> <Variable name="mobile.background.overlay" description="Mobile Background Overlay" type="string" default="transparent none repeat scroll top left"/> <Variable name="mobile.background.size" description="Mobile Background Size" type="string" default="auto"/> <Variable name="mobile.button.color" description="Mobile Button Color" type="color" default="#ffffff" /> <Variable name="startSide" description="Side where text starts in blog language" type="automatic" default="left"/> <Variable name="endSide" description="Side where text ends in blog language" type="automatic" default="right"/> */ /* Content ----------------------------------------------- */ body { font: normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif; color: #222222; background: #f6fbf6 none repeat scroll top left; padding: 0 40px 40px 40px; } html body .region-inner { min-width: 0; max-width: 100%; width: auto; } h2 { font-size: 22px; } a:link { text-decoration:none; color: #121fb3; } a:visited { text-decoration:none; color: #121fb3; } a:hover { text-decoration:underline; color: #1a00ff; } .body-fauxcolumn-outer .fauxcolumn-inner { background: transparent url(//www.blogblog.com/1kt/simple/body_gradient_tile_light.png) repeat scroll top left; _background-image: none; } .body-fauxcolumn-outer .cap-top { position: absolute; z-index: 1; height: 400px; width: 100%; } .body-fauxcolumn-outer .cap-top .cap-left { width: 100%; background: transparent url(//www.blogblog.com/1kt/simple/gradients_light.png) repeat-x scroll top left; _background-image: none; } .content-outer { -moz-box-shadow: 0 0 40px rgba(0, 0, 0, .15); -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .15); -goog-ms-box-shadow: 0 0 10px #333333; box-shadow: 0 0 40px rgba(0, 0, 0, .15); margin-bottom: 1px; } .content-inner { padding: 10px 10px; } .content-inner { background-color: #ffffff; } /* Header ----------------------------------------------- */ .header-outer { background: #f6fbf7 url(//www.blogblog.com/1kt/simple/gradients_light.png) repeat-x scroll 0 -400px; _background-image: none; } .Header h1 { font: normal normal 42px Play; color: #666666; text-shadow: 1px 2px 3px rgba(0, 0, 0, .2); } .Header h1 a { color: #666666; } .Header .description { font-size: 140%; color: #666666; } .header-inner .Header .titlewrapper { padding: 22px 30px; } .header-inner .Header .descriptionwrapper { padding: 0 30px; } /* Tabs ----------------------------------------------- */ .tabs-inner .section:first-child { border-top: 0 solid #eeeeee; } .tabs-inner .section:first-child ul { margin-top: -0; border-top: 0 solid #eeeeee; border-left: 0 solid #eeeeee; border-right: 0 solid #eeeeee; } .tabs-inner .widget ul { background: #f5f5f5 url(//www.blogblog.com/1kt/simple/gradients_light.png) repeat-x scroll 0 -800px; _background-image: none; border-bottom: 1px solid #eeeeee; margin-top: 0; margin-left: -30px; margin-right: -30px; } .tabs-inner .widget li a { display: inline-block; padding: .6em 1em; font: normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif; color: #999999; border-left: 1px solid #ffffff; border-right: 1px solid #eeeeee; } .tabs-inner .widget li:first-child a { border-left: none; } .tabs-inner .widget li.selected a, .tabs-inner .widget li a:hover { color: #000000; background-color: #eeeeee; text-decoration: none; } /* Columns ----------------------------------------------- */ .main-outer { border-top: 0 solid #eeeeee; } .fauxcolumn-left-outer .fauxcolumn-inner { border-right: 1px solid #eeeeee; } .fauxcolumn-right-outer .fauxcolumn-inner { border-left: 1px solid #eeeeee; } /* Headings ----------------------------------------------- */ div.widget > h2, div.widget h2.title { margin: 0 0 1em 0; font: normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif; color: #000000; } /* Widgets ----------------------------------------------- */ .widget .zippy { color: #999999; text-shadow: 2px 2px 1px rgba(0, 0, 0, .1); } .widget .popular-posts ul { list-style: none; } /* Posts ----------------------------------------------- */ h2.date-header { font: normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif; } .date-header span { background-color: transparent; color: transparent; padding: inherit; letter-spacing: inherit; margin: inherit; } .main-inner { padding-top: 30px; padding-bottom: 30px; } .main-inner .column-center-inner { padding: 0 15px; } .main-inner .column-center-inner .section { margin: 0 15px; } .post { margin: 0 0 25px 0; } h3.post-title, .comments h4 { font: normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif; margin: .75em 0 0; } .post-body { font-size: 110%; line-height: 1.4; position: relative; } .post-body img, .post-body .tr-caption-container, .Profile img, .Image img, .BlogList .item-thumbnail img { padding: 2px; background: #ffffff; border: 1px solid #ffffff; -moz-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); } .post-body img, .post-body .tr-caption-container { padding: 5px; } .post-body .tr-caption-container { color: #222222; } .post-body .tr-caption-container img { padding: 0; background: transparent; border: none; -moz-box-shadow: 0 0 0 rgba(0, 0, 0, .1); -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .1); box-shadow: 0 0 0 rgba(0, 0, 0, .1); } .post-header { margin: 0 0 1.5em; line-height: 1.6; font-size: 90%; } .post-footer { margin: 20px -2px 0; padding: 5px 10px; color: #666666; background-color: #f9f9f9; border-bottom: 1px solid #eeeeee; line-height: 1.6; font-size: 90%; } #comments .comment-author { padding-top: 1.5em; border-top: 1px solid #eeeeee; background-position: 0 1.5em; } #comments .comment-author:first-child { padding-top: 0; border-top: none; } .avatar-image-container { margin: .2em 0 0; } #comments .avatar-image-container img { border: 1px solid #ffffff; } /* Comments ----------------------------------------------- */ .comments .comments-content .icon.blog-author { background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9BRUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0UpKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg==); } .comments .comments-content .loadmore a { border-top: 1px solid #999999; border-bottom: 1px solid #999999; } .comments .comment-thread.inline-thread { background-color: #f9f9f9; } .comments .continue { border-top: 2px solid #999999; } /* Accents ---------------------------------------------- */ .section-columns td.columns-cell { border-left: 1px solid #eeeeee; } .blog-pager { background: transparent none no-repeat scroll top center; } .blog-pager-older-link, .home-link, .blog-pager-newer-link { background-color: #ffffff; padding: 5px; } .footer-outer { border-top: 0 dashed #bbbbbb; } /* Mobile ----------------------------------------------- */ body.mobile { background-size: auto; } .mobile .body-fauxcolumn-outer { background: transparent none repeat scroll top left; } .mobile .body-fauxcolumn-outer .cap-top { background-size: 100% auto; } .mobile .content-outer { -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15); box-shadow: 0 0 3px rgba(0, 0, 0, .15); } .mobile .tabs-inner .widget ul { margin-left: 0; margin-right: 0; } .mobile .post { margin: 0; } .mobile .main-inner .column-center-inner .section { margin: 0; } .mobile .date-header span { padding: 0.1em 10px; margin: 0 -10px; } .mobile h3.post-title { margin: 0; } .mobile .blog-pager { background: transparent none no-repeat scroll top center; } .mobile .footer-outer { border-top: none; } .mobile .main-inner, .mobile .footer-inner { background-color: #ffffff; } .mobile-index-contents { color: #222222; } .mobile-link-button { background-color: #121fb3; } .mobile-link-button a:link, .mobile-link-button a:visited { color: #ffffff; } .mobile .tabs-inner .section:first-child { border-top: none; } .mobile .tabs-inner .PageList .widget-content { background-color: #eeeeee; color: #000000; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee; } .mobile .tabs-inner .PageList .widget-content .pagelist-arrow { border-left: 1px solid #eeeeee; } .content-outer { max-width: 1400px !important; } /* fix header */ #header-inner { width: 100% !important; background-position: right !important; } .titlewrapper { padding: 11px 30px 0 !important; } .descriptionwrapper { margin-bottom: 0 !important; } .description { font-size: 120% !important; } /* suppress things */ .date-header { display: none; } #Attribution1 { display: none; } .post-author, .post-timestamp, .reaction-buttons { display: none; } /* h2: sidebar titles */ /* h3: post title */ .post-title , .entry-title { font-size: 180% !important; margin-top: 0 !important; } .entry-title a:link, .entry-title a:visited, .entry-title a:active{ color: #a03; } #main h2 { color:#333; margin-bottom:.4em; margin-top: 13px; font-size:140%; } #main h3 { color:#333; margin-bottom:.4em; margin-top: 13px; font-size:110%; } #main h4 { color:#333; margin-bottom:.5em; } #sidebar-right-1 a:link, #sidebar-right-1 a:visited, #sidebar-right-1 a:active { color: #666; } #sidebar-right-1 h2 { font-size: 100%; color: #666; } /* disable image box */ element.style { } table.chargers img { height: 18px; } table.chargers img { height: 18px; } .post-body img, .post-body .tr-caption-container { padding: 5px; } .post-body img, .post-body .tr-caption-container, .Profile img, .Image img, .BlogList .item-thumbnail img { padding: 0; background: #ffffff; border: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } /* Special items */ a:link img.hilite, a:visited img.hilite { color: #fff; } a:hover img.hilite, a:hover img.hilite2 { color: #f66; } a:active img.hilite { color: #33c; } .hilite {cursor:zoom-in} pre {color:#000000;border:1px solid #000000;} pre.repl { background-color:#e0e0f0; font-size:120%;} pre.arc { background-color:#e0e0f0; font-size:120%;} pre.code { background-color:#e0f0e0; font-size:120%; white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;text-wrap:unrestricted;} code { font-size: 100%;} blockquote { font-size: 110%; background: transparent url("//static.righto.com/images/blockquote.gif") no-repeat 0 0; margin: 20px 0px; padding: 0px 40px;} div.cite {font-size: .8em;.; font-style: italic; color: #888; margin-bottom: 9px;} a.ref { color: gray;vertical-align: super; text-decoration: none; font-size:60%;margin-left: 2px;} a img.hilite { border: 1px solid; color: #888; z-index: 2; } a img.hilite2, a:active img.hilite2 { border: 1px solid; color: #f6fbf6; } table.chargers { border-width: 1px; border-spacing: 2px; border-style: outset; border-color: gray; border-collapse: collapse; background-color: white; } table.chargers th.maker { padding-right: 5px; text-align: right; } table.chargers th { border-width: 1px; padding: 3px; border-style: inset; border-color: gray; background-color: white; text-align: center; } table.chargers img { height: 18px; } table.chargers td { text-align: center; border-width: 1px; padding: 2px 8px; border-style: inset; border-color: gray; background-color: white; } --></style> <style id='template-skin-1' type='text/css'><!-- body { min-width: 750px; } .content-outer, .content-fauxcolumn-outer, .region-inner { min-width: 750px; max-width: 750px; _width: 750px; } .main-inner .columns { padding-left: 0px; padding-right: 240px; } .main-inner .fauxcolumn-center-outer { left: 0px; right: 240px; /* IE6 does not respect left and right together */ _width: expression(this.parentNode.offsetWidth - parseInt("0px") - parseInt("240px") + 'px'); } .main-inner .fauxcolumn-left-outer { width: 0px; } .main-inner .fauxcolumn-right-outer { width: 240px; } .main-inner .column-left-outer { width: 0px; right: 100%; margin-left: -0px; } .main-inner .column-right-outer { width: 240px; margin-right: -240px; } #layout { min-width: 0; } #layout .content-outer { min-width: 0; width: 800px; } #layout .region-inner { min-width: 0; width: auto; } --></style> <meta content='width=device-width, initial-scale=1.0, maximum-scale=12.0, minimum-scale=.25, user-scalable=yes' name='viewport'/> <meta content='mw8ww70r3jW0GzXY6j1d' name='follow_it-verification-code'/> <link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=6264947694886887540&amp;zx=3c6b5127-1bf4-49a7-9645-31cfcd883d0b' media='none' onload='if(media!=&#39;all&#39;)media=&#39;all&#39;' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=6264947694886887540&amp;zx=3c6b5127-1bf4-49a7-9645-31cfcd883d0b' rel='stylesheet'/></noscript> <meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> <meta name='google-adsense-platform-domain' content='blogspot.com'/> </head> <body class='loading'> <div class='navbar no-items section' id='navbar'> </div> <div class='body-fauxcolumns'> <div class='fauxcolumn-outer body-fauxcolumn-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <div class='content'> <div class='content-fauxcolumns'> <div class='fauxcolumn-outer content-fauxcolumn-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <div class='content-outer'> <div class='content-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left content-fauxborder-left'> <div class='fauxborder-right content-fauxborder-right'></div> <div class='content-inner'> <header> <div class='header-outer'> <div class='header-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left header-fauxborder-left'> <div class='fauxborder-right header-fauxborder-right'></div> <div class='region-inner header-inner'> <div class='header section' id='header'><div class='widget Header' data-version='1' id='Header1'> <div id='header-inner' style='background-image: url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-4KXwYe0lQ4HFzhAye9vvRlij2ZYvMbfPCnqEE__1o85Fjo3XgefxJQhWRdwR3EzNWNMWT3yMaj2QZaT9GazqQx3C6oWa3-hBNlRHG7f-Oib-lv1Wq_C2_A0rt8xZgs87iNqzRVKK7H0A/s800/background.jpg"); background-position: left; width: 550px; min-height: 105px; _height: 105px; background-repeat: no-repeat; '> <div class='titlewrapper' style='background: transparent'> <h1 class='title' style='background: transparent; border-width: 0px'> <a href="https://www.righto.com/"> Ken Shirriff's blog </a> </h1> </div> <div class='descriptionwrapper'> <p class='description'><span>Computer history, restoring vintage computers, IC reverse engineering, and whatever</span></p> </div> </div> </div></div> </div> </div> <div class='header-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </header> <div class='tabs-outer'> <div class='tabs-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left tabs-fauxborder-left'> <div class='fauxborder-right tabs-fauxborder-right'></div> <div class='region-inner tabs-inner'> <div class='tabs no-items section' id='crosscol'></div> <div class='tabs no-items section' id='crosscol-overflow'></div> </div> </div> <div class='tabs-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <div class='main-outer'> <div class='main-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left main-fauxborder-left'> <div class='fauxborder-right main-fauxborder-right'></div> <div class='region-inner main-inner'> <div class='columns fauxcolumns'> <div class='fauxcolumn-outer fauxcolumn-center-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <div class='fauxcolumn-outer fauxcolumn-left-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <div class='fauxcolumn-outer fauxcolumn-right-outer'> <div class='cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left'> <div class='fauxborder-right'></div> <div class='fauxcolumn-inner'> </div> </div> <div class='cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <!-- corrects IE6 width calculation --> <div class='columns-inner'> <div class='column-center-outer'> <div class='column-center-inner'> <div class='main section' id='main'><div class='widget Blog' data-version='1' id='Blog1'> <div class='blog-posts hfeed'> <div class="date-outer"> <div class="date-posts"> <div class='post-outer'> <div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='https://static.righto.com/images/arma-microcomputer/arma_1-w500.png' itemprop='image_url'/> <meta content='6264947694886887540' itemprop='blogId'/> <meta content='5949199793608744516' itemprop='postId'/> <a name='5949199793608744516'></a> <h3 class='post-title entry-title' itemprop='name'> <a href="https://www.righto.com/2024/02/the-first-microcomputer-transfluxor.html">The first microcomputer: The transfluxor-powered Arma Micro Computer from 1962</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-5949199793608744516' itemprop='description articleBody'> What would you say is the first microcomputer?<span id="fnref:firsts"><a class="ref" href="#fn:firsts">1</a></span> The Apple I from 1976? The Altair 8800 from 1974? Perhaps the lesser-known <a href="https://en.wikipedia.org/wiki/Micral">Micral N</a> (1973) or <a href="https://www.tomshardware.com/desktops/house-cleaners-find-two-of-the-worlds-first-desktop-pcs-in-random-boxes">Q1</a> (1972)? How about the Arma Micro Computer from way back in 1962. The Arma Micro Computer was a compact 20-pound transistorized computer, designed for applications in space such as inertial or celestial navigation, steering, radar, or engine control.</p> <p>Obviously, the Arma Micro Computer is not a microcomputer according to modern definitions, since its processor was made from discrete components. But it's an interesting computer in many ways. First, it is an example of the aerospace computers of the 1960s, advanced systems that are now almost entirely forgotten. People think of 1960s computers as room-filling mainframes, but there was a whole separate world of cutting-edge miniaturized aerospace computers. (Taking up just 0.4 cubic feet, the Arma Micro Computer was smaller than an Apple II.) Second, the Arma Micro Computer used strange components such as transfluxors and had an unusual 22-bit serial architecture. Finally, the Arma Micro Computer evolved into a series of computers used on Navy ships and submarines, the E-2C Hawkeye airborne early warning plane, the Concorde, and even Air Force One.</p> <h2>The Arma Micro Computer</h2> <p><a href="https://static.righto.com/images/arma-microcomputer/arma_1.png"><img alt="The Arma Micro Computer, with a circuit board on top. Click this image (or any other) for a larger version. Photo courtesy of Daniel Plotnick." class="hilite" height="403" src="https://static.righto.com/images/arma-microcomputer/arma_1-w500.png" title="The Arma Micro Computer, with a circuit board on top. Click this image (or any other) for a larger version. Photo courtesy of Daniel Plotnick." width="500" /></a><div class="cite">The Arma Micro Computer, with a circuit board on top. Click this image (or any other) for a larger version. Photo courtesy of Daniel Plotnick.</div></p> <p>The Micro Computer used 22-bit words, which may seem like a strange size from the modern perspective. But there's no inherent need for a word size to be a power of 2. In particular, the Micro Computer was designed for mathematical calculations, not dealing with 8-bit characters. The word size was selected to provide enough accuracy for its navigational tasks.</p> <p>Another strange aspect of the Micro Computer is that it was a serial machine, sequentially operating on one bit of a word at a time.<span id="fnref:spaceborne"><a class="ref" href="#fn:spaceborne">2</a></span> This approach was often used in early machines because it substantially reduced the amount of hardware required: it only needs a 1-bit data bus and a 1-bit ALU. The downside is that a serial machine is much slower because each 22-bit word takes 22 clock cycles (plus 5 cycles of overhead). As a result, the Micro Computer executed just 36000 operations per second, despite its 1 megahertz clock speed.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/arma-shopping.jpg"><img alt="Ad for the Arma Micro Computer (called the MICRO here). Source: Electronics, July 27, 1962." class="hilite" height="732" src="https://static.righto.com/images/arma-microcomputer/arma-shopping-w400.jpg" title="Ad for the Arma Micro Computer (called the MICRO here). Source: Electronics, July 27, 1962." width="400" /></a><div class="cite">Ad for the Arma Micro Computer (called the MICRO here). Source: <a href="https://www.worldradiohistory.com/Archive-Electronics/60s/62/Electronics-1962-07-27.pdf#page=76">Electronics</a>, July 27, 1962.</div></p> <p>The Micro Computer had a small instruction set of 19 instructions.<span id="fnref:instructions"><a class="ref" href="#fn:instructions">3</a></span> It included multiply, divide, and square root, instructions that weren't implemented in early microprocessors. This illustrates how early microprocessors were a significant step backward in functionality. Moreover, the multiply, divide, and square root instructions used a separate arithmetic unit, so they could execute in parallel with other arithmetic instructions. Because the Micro Computer needed to interact with spacecraft systems, it had a focus on I/O, with 120 digital inputs or outputs, configured as needed for a particular mission.</p> <h2>Circuits</h2> <p>The Micro Computer was built from silicon transistors and diodes, using diode-transistor logic. The construction technique was somewhat unusual. The basic circuits were the flip-flop, the complementary buffer (i.e. an inverter), and the diode gate. Each basic circuit was constructed on a small wafer, .77 inches on a side.<span id="fnref:wafers"><a class="ref" href="#fn:wafers">5</a></span> The photo below shows wafers for a two-transistor flip-flop and two diode gates. Each wafer had up to 16 connection tabs on the edges. These wafers are analogous to integrated circuits, but constructed from discrete components.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/arma_6.png"><img alt="Three circuit modules from the Arma Micro Computer. Image from &quot;The Arma Micro Computer for Space Applications&quot;." class="hilite" height="499" src="https://static.righto.com/images/arma-microcomputer/arma_6-w300.png" title="Three circuit modules from the Arma Micro Computer. Image from &quot;The Arma Micro Computer for Space Applications&quot;." width="300" /></a><div class="cite">Three circuit modules from the Arma Micro Computer. Image from "The Arma Micro Computer for Space Applications".</div></p> <p>The wafers were mounted on printed circuit boards, with up to 22 wafers on a board. Pairs of boards were mounted back to back with polyurethane foam between the boards to form a "sandwich", which was conformally coated. The result was a module that was protected against the harsh environment of a missile or spacecraft. The computer could handle a shock of 100 g's and temperatures of 0&deg;C to 85&deg;C as well as 100% humidity or a vacuum.</p> <p>Because the Micro Computer was a serial machine, its bits were constantly moving. For register storage such as the accumulator, it used six magnetostrictive torsional delay lines, storing a sequence of bits as physical twists that formed pulses racing through a long coil of wire.</p> <p>The photo below shows the Arma Micro Computer with the case removed. If you look closely, you can see the 22 small circuit wafers mounted on each printed circuit board. The memory driver boards and delay lines are towards the back, spaced more widely than the other printed circuit boards. The cable harness underneath the boards provides the connections between boards.<span id="fnref:block-diagram"><a class="ref" href="#fn:block-diagram">4</a></span></p> <p><a href="https://static.righto.com/images/arma-microcomputer/arma_10.png"><img alt="Circuit boards inside the Arma Micro Computer. Photo courtesy of Daniel Plotnick." class="hilite" height="297" src="https://static.righto.com/images/arma-microcomputer/arma_10-w500.png" title="Circuit boards inside the Arma Micro Computer. Photo courtesy of Daniel Plotnick." width="500" /></a><div class="cite">Circuit boards inside the Arma Micro Computer. Photo courtesy of Daniel Plotnick.</div></p> <h2>Transfluxors</h2> <p>One of the most unusual parts of the Micro Computer was its storage. Computers at the time typically used magnetic core memory, with each bit stored in a tiny ferrite ring, magnetized either clockwise or counterclockwise to store a 0 or 1. One drawback of standard core memory was that the process of reading a core also cleared the core, requiring data to be written back after a read.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/storage-grid.jpg"><img alt="Diagram of Arma&#39;s memory system. From patent 3048828." class="hilite" height="346" src="https://static.righto.com/images/arma-microcomputer/storage-grid-w500.jpg" title="Diagram of Arma&#39;s memory system. From patent 3048828." width="500" /></a><div class="cite">Diagram of Arma's memory system. From <a href=https://patents.google.com/patent/US3048828)">patent 3048828</a>.</div></p> <p>The Micro Computer used ferrite cores, but these were "two-aperture" cores, with a larger hole and a smaller hole, as shown above. Data is written to the "major aperture" and read from the "minor aperture". Although the minor aperture switches state and is erased during a read, the major aperture retains the bit, allowing the minor aperture to be switched back to its original state. Thus, unlike regular core memory, transfluxors don't lose their data when reading.</p> <p>The resulting system is called non-destructive readout (NDRO), compared to the destructive readout (DRO) of regular core memory.<span id="fnref:transfluxors"><a class="ref" href="#fn:transfluxors">6</a></span> The Micro Computer used non-destructive readout memory to ensure that the program memory remained uncorrupted. In contrast, if a program is stored in regular core memory, each instruction must be written back as it is executed, creating the possibility that a transient could corrupt the software. By using transfluxors, this possibility of error is eliminated. (In either case, core memory has the convenient property that data is preserved when power is removed, since data is stored magnetically. With modern semiconductor memory, you lose data when the power goes off.)</p> <p>The photo below shows a compact transfluxor-based storage module used in the Micro Computer, holding 512 words. In total, the computer could hold up to 7808 words of program memory and 256 words of data memory. It appears that transfluxors didn't live up to their promise, since most computers used regular core memory until semiconductor memory took over in the early 1970s.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/arma_9.png"><img alt="Transfluxor-based core memory module from the Arma Micro Computer. Image from &quot;The Arma Micro Computer for Space Applications&quot;." class="hilite" height="438" src="https://static.righto.com/images/arma-microcomputer/arma_9-w500.png" title="Transfluxor-based core memory module from the Arma Micro Computer. Image from &quot;The Arma Micro Computer for Space Applications&quot;." width="500" /></a><div class="cite">Transfluxor-based core memory module from the Arma Micro Computer. Image from "The Arma Micro Computer for Space Applications".</div></p> <h2>Arma's history and the path to the Micro Computer</h2> <p>The Arma Engineering Company was founded in 1918 and built advanced military equipment.<span id="fnref:capitalization"><a class="ref" href="#fn:capitalization">7</a></span> Its first product was a searchlight for the Navy, followed by a gyroscopic compass and analog computers for naval gun targeting. In 1939, Arma produced the Torpedo Data Computer, a remarkable electromechanical analog computer. US submarines used this computer to track target ships and automatically aim torpedos. The Torpedo Data Computer performed complex trigonometric calculations and integration to account for the motion of the target ship and the submarine. While the Torpedo Data Computer performed well, the Navy's Mark 14 torpedo had many <a href="https://en.wikipedia.org/wiki/Mark_14_torpedo#Problems">problems</a>&mdash;running too deep, exploding too soon, or failing to explode&mdash;making torpedoes often ineffectual even with a perfect hit.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/tdc.jpg"><img alt="The Torpedo Data Computer Mark III in the USS Pampanito." class="hilite" height="580" src="https://static.righto.com/images/arma-microcomputer/tdc-w400.jpg" title="The Torpedo Data Computer Mark III in the USS Pampanito." width="400" /></a><div class="cite">The Torpedo Data Computer Mark III in the USS Pampanito.</div></p> <p>Arma underwent major corporate changes due to World War II. Before the war, the German-owned Bosch Company built vehicle starters and aircraft magnetos in the United States. When the US entered World War II in 1941, the government was concerned that a German-controlled company was manufacturing key military hardware so the Office of Alien Property Custodian took over the Bosch plant. In 1948, the banking group that controlled Arma bought Bosch from the Office of the Alien Property Custodian, merging them into the American Bosch Arma Corporation (AMBAC).<span id="fnref:history"><a class="ref" href="#fn:history">8</a></span> (Arma had earlier received the rights to gyrocompass technology from the German Anschutz company, <a href="https://archive.navalsubleague.org/1999/short-history-of-arma-gyrocompass-messrs-pekelney-lindell">seized</a> by the Navy after World War I, so Arma benefitted twice from wartime government seizures.)</p> <p>In the mid-1950s, Arma moved into digital computers, building an inertial guidance computer for the Atlas nuclear missile program. America's first ICBM was the <a href="https://en.wikipedia.org/wiki/SM-65_Atlas">Atlas missile</a>, which became operational in 1959. The first Atlas missiles used radio guidance from the launch site to direct the missile. Since radio signals could be jammed by the enemy, this wasn't a robust solution. </p> <!-- Atlas details https://www.hsdl.org/?view&did=485671 Originally for Titan but redirected to Atlas. Navigation system located in Atlas bulge https://www.designation-systems.net/dusrm/m-16.html --> <p>The solution to missile guidance was an <a href="https://en.wikipedia.org/wiki/Inertial_navigation_system">inertial navigation system</a>. By using sensitive gyroscopes and accelerometers, a missile could continuously track its position and velocity without any external input, making it unjammable. A key developer of this system was Arma's <a href="https://en.wikipedia.org/wiki/Wen_Tsing_Chow">Wen Tsing Chow</a>, one of the driving forces behind digital aviation computers. He faced extreme skepticism in the 1950s for the idea of putting a computer in a missile. One general mocked him, asking "Where are you going to put the five Harvard professors you'll need to keep it running?" But computerized navigation was successful and in 1961, the Atlas missile was updated to use the Arma inertial guidance computer. It was said to be the first production airborne digital computer.<span id="fnref:tradic"><a class="ref" href="#fn:tradic">9</a></span> Wen Tsing Chow also invented the programmable read-only memory (PROM), allowing missile targeting information to be programmed into a computer outside the factory.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/wtc.png"><img alt="Wen Tsing Chow, computer engineer, with Arma Micro Computer. From Control Engineering, January 1963, page 19. Courtesy of Daniel Plotnick." class="hilite" height="464" src="https://static.righto.com/images/arma-microcomputer/wtc-w500.png" title="Wen Tsing Chow, computer engineer, with Arma Micro Computer. From Control Engineering, January 1963, page 19. Courtesy of Daniel Plotnick." width="500" /></a><div class="cite">Wen Tsing Chow, computer engineer, with Arma Micro Computer. From Control Engineering, January 1963, page 19. Courtesy of Daniel Plotnick.</div></p> <p>The photo below shows the Atlas ICBM's guidance system. The Arma W-107A computer is at the top and the gyroscopes are in the middle. This computer was an 18-bit serial machine running at 143.36 kHz. It ran a hard-wired program that integrated the accelerometer information and solved equations for the crossrange error function, range error function, and gravity, making these computations every half second.<span id="fnref:heiderstadt"><a class="ref" href="#fn:heiderstadt">10</a></span> The computer weighed 240 pounds and consumed 1000 watts. The computer contained about 36,000 components: discrete transistors, diodes, resistors, and capacitors mounted on 9.5" &times; 6.5" printed-circuit boards. On the ground, the computer was air-cooled to 55 &deg;F, but there was no cooling after launch as the computer only operated for five minutes of powered flight and wouldn't overheat during that time.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/AtlasInertialGuidanceSystem-Heiderstadt-3.png"><img alt="Guidance system for Atlas ICBM. From &quot;Atlas Inertial Guidance System&quot; by John Heiderstadt. Photo unclassified in 1967." class="hilite" height="630" src="https://static.righto.com/images/arma-microcomputer/AtlasInertialGuidanceSystem-Heiderstadt-3-w400.png" title="Guidance system for Atlas ICBM. From &quot;Atlas Inertial Guidance System&quot; by John Heiderstadt. Photo unclassified in 1967." width="400" /></a><div class="cite">Guidance system for Atlas ICBM. From "Atlas Inertial Guidance System" by John Heiderstadt. Photo unclassified in 1967.</div></p> <p>The Atlas wasn't originally designed for a computerized guidance system so there wasn't room inside the missile for the computer. To get around this, a large pod was stuck on the side of the missile to hold the computer and gyroscopes, as indicated in the photo below. This doesn't look aerodynamic, but I guess it worked.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/atlas.jpg"><img alt="Atlas missile. Arrow indicates the pod containing the Arma guidance computer and inertial navigation system. Original photo by Robert DuHamel, CC BY-SA 3.0." class="hilite" height="553" src="https://static.righto.com/images/arma-microcomputer/atlas-w300.jpg" title="Atlas missile. Arrow indicates the pod containing the Arma guidance computer and inertial navigation system. Original photo by Robert DuHamel, CC BY-SA 3.0." width="300" /></a><div class="cite">Atlas missile. Arrow indicates the pod containing the Arma guidance computer and inertial navigation system. Original photo by <a href="https://commons.wikimedia.org/wiki/File:Atlas_Missile_-_panoramio_-_Robert_DuHamel.jpg">Robert DuHamel</a>, <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a>.</div></p> <p>The Atlas guidance computer (left, below) consisted of three aluminum sections called "decks". The top deck held two replaceable target constant units, each providing 54 navigation constants that specified a target. The constants were stored in a stack of printed circuit boards 16" &times; 8" &times; 1.5", covered in over a thousand diodes, Wen Tsing Chow's PROM memory. A target was programmed into the stack by a rack of equipment that would selectively burn out diodes, changing the corresponding bit to a 1. (This is why programming a PROM is referred to as "burning the PROM".<span id="fnref:burning"><a class="ref" href="#fn:burning">11</a></span>) The diode matrix was later replaced with a transfluxor memory array, which had the advantage that it could be reprogrammed as necessary. The top deck also had connectors for the accelerometer inputs, the outputs, and connections for ground support equipment. The bottom deck had power connectors for 28 volts DC and 115V 400 Hz 3-phase AC. In the bottom deck, quartz delay lines were used for storage, representing bits as acoustic waves. Twelve circuit cards, each with a faceted quartz block four inches in diameter, provided a total of 32 words of storage.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/Arma-Three-Generations.png"><img alt="Three generations of Arma Computers: the W-107A Atlas ICBM guidance computer, the Lightweight Airborne Digital Computer, and the Arma Micro Computer (perhaps a prototype). Photo courtesy of Daniel Plotnick." class="hilite" height="334" src="https://static.righto.com/images/arma-microcomputer/Arma-Three-Generations-w500.png" title="Three generations of Arma Computers: the W-107A Atlas ICBM guidance computer, the Lightweight Airborne Digital Computer, and the Arma Micro Computer (perhaps a prototype). Photo courtesy of Daniel Plotnick." width="500" /></a><div class="cite">Three generations of Arma Computers: the W-107A Atlas ICBM guidance computer, the Lightweight Airborne Digital Computer, and the Arma Micro Computer (perhaps a prototype). Photo courtesy of Daniel Plotnick.</div></p> <p>Arma considered the Micro Computer the third generation of its airborne computers. The first generation was the Atlas guidance computer, constructed from germanium transistors and diodes (in the pre-silicon era). The second-generation computer moved to silicon transistors and diodes. The third-generation computers still used discrete components, but mounted on the small square wafers. The third generation also had a general-purpose architecture and programmable transfluxor memory instead of a hard-wired program.</p> <!-- Micro C info https://books.google.com/books?id=1G0t_0MviUMC&pg=RA11-PA2&dq=%22arma%22+%22micro+c%22+%22computer%22&hl=en&newbks=1&newbks_redir=0&sa=X&ved=2ahUKEwjnqOPL-pCEAxWblGoFHYC1DA0Q6AF6BAgJEAI#v=onepage&q=%22arma%22%20%22micro%20c%22%20%22computer%22&f=false --> <h2>After the Micro Computer</h2> <p>Arma continued to develop computers, improving the Arma Micro Computer. The Micro C computer (1965) was developed for Navy ships and submarines. Much like the original Micro, the Micro C used transfluxor storage, but increased the clock frequency to 972 kHz. The computer was much larger: 3.87 cubic feet and 150 pounds. This <a href="https://nsarchive.gwu.edu/document/16941-office-naval-research-mathematical-science">description</a> states that "the machine is an outgrowth of the ARMA product line of micro computers and is logically and electrically similar to micro-computers designed for missile environments."</p> <p><a href="https://static.righto.com/images/arma-microcomputer/micro-c.png"><img alt="Module from the Arma Micro-C Computer. Photo courtesy of Daniel Plotnick." class="hilite" height="313" src="https://static.righto.com/images/arma-microcomputer/micro-c-w400.png" title="Module from the Arma Micro-C Computer. Photo courtesy of Daniel Plotnick." width="400" /></a><div class="cite">Module from the Arma Micro-C Computer. Photo courtesy of Daniel Plotnick.</div></p> <p>In mid-1966, Arma introduced the Micro D computer, built from TTL integrated circuits. Like the original Micro, this computer was serial, but the Micro D had a word length of 18 bits and ran at 1.5 MHz. It weighed 5.25 pounds and was very compact, just 0.09 ft<sup>3</sup>. Instead of transfluxors, the Micro D used regular magnetic core memory, 4K to 31K words.</p> <!-- Micro-D: https://www.bitsavers.org/pdf/bellcomm/TM67-1031-1_State_Of_The_Art_Of_Aerospace_Digital_Computers_62-67_Jun67.pdf#page=20 Characteristics: https://www.osti.gov/servlets/purl/4623576#page=10 Also https://ntrs.nasa.gov/api/citations/19690025249/downloads/19690025249.pdf --> <p><a href="https://static.righto.com/images/arma-microcomputer/Arma-Micro-D-1801.jpg"><img alt="The Arma Micro-D 1801 computer. The 1808 was a slightly larger model. Photo courtesy of Daniel Plotnick." class="hilite" height="296" src="https://static.righto.com/images/arma-microcomputer/Arma-Micro-D-1801-w500.jpg" title="The Arma Micro-D 1801 computer. The 1808 was a slightly larger model. Photo courtesy of Daniel Plotnick." width="500" /></a><div class="cite">The Arma Micro-D 1801 computer. The 1808 was a slightly larger model. Photo courtesy of Daniel Plotnick.</div></p> <p>The widely-used Litton LTN-51 inertial navigation system was built around the Arma Micro-D computer.<span id="fnref:ltn-51"><a class="ref" href="#fn:ltn-51">12</a></span> This navigation system was designed for commercial aircraft, but was also used for military applications, ships, and NASA aircraft. Aircraft from early Concordes to Air Force One used the LTN-51 for navigation. The photo below shows a navigation unit with the Arma Micro-D computer in the lower left and the gyroscope unit on the right.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/ltn-51.jpg"><img alt="Litton LTN-51 inertial navigation system. Photo courtesy of pascal mz, concordescopia.com." class="hilite" height="385" src="https://static.righto.com/images/arma-microcomputer/ltn-51-w700.jpg" title="Litton LTN-51 inertial navigation system. Photo courtesy of pascal mz, concordescopia.com." width="700" /></a><div class="cite">Litton LTN-51 inertial navigation system. Photo courtesy of pascal mz, <a href="http://concordescopia.com">concordescopia.com</a>.</div></p> <p>In early 1968, the Arma Portable Micro D was introduced, a 14-pound battery-powered computer also called the Celestial Data Processor. This handheld computer was designed for navigation in crewed earth orbital flight, determining orbital parameters from stadimeter and sextant measurements performed by astronauts. As far as I can tell, this computer never made it beyond the prototype stage.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/cdp.jpg"><img alt="The Arma Celestial Data Processor (source)." class="hilite" height="561" src="https://static.righto.com/images/arma-microcomputer/cdp-w350.jpg" title="The Arma Celestial Data Processor (source)." width="350" /></a><div class="cite">The Arma Celestial Data Processor (<a href="https://www.sciencedirect.com/science/article/pii/S1474667017688207">source</a>).</div></p> <h2>Conclusions</h2> <p>The Arma Micro Computer is just one of the dozens of compact aerospace computers of the 1960s, a category that is mostly forgotten and ignored. Another example is the Delco <a href="https://www.righto.com/2020/03/the-delco-magic-line-of-aerospace.html">MAGIC I</a> (1961), said to be the "first complete airborne computer to have its logic functions mechanized exclusively with integrated circuits". IBM's 4 Pi series started in 1966 and was used in many systems from the F-15 to the Space Shuttle. By 1968, denser MOS/LSI chips were used in general-purpose aerospace computers such as the <a href="https://dl.acm.org/doi/pdf/10.1145/1476589.1476701">Rockwell MOS GP</a> and the Texas Instruments <a href="https://www.bitsavers.org/magazines/Datamation/19700715.pdf#page=92">Model 2502</a> LSI Computer. <span id="fnref:aerospace"><a class="ref" href="#fn:aerospace">13</a></span></p> <!-- The Burroughs D210 Magnetic Computer (1961) used magnetic logic as well as [rope memory](http://www.bitsavers.org/pdf/afips/1963-11_%2324.pdf#page=52), read-only memory made more famous by the Apollo Guidance Computer. The SAAB CK 37 (mid-1964) was a 26-bit computer built from integrated circuits, becoming the [central computer](https://www.datasaab.se/Papers/Articles/Viggenck37.pdf) for the Saab 37 Viggen combat aircraft. --> <p>Arma also illustrates that a company can be on the cutting edge of technology for decades and then suddenly go out of business and be forgotten. After some struggles, Arma was acquired by United Technologies in 1978 for $210 million and was then shut down in 1982. (The German Bosch corporation remains, now a large multinational known for products such as dishwashers, auto parts, and power tools.) Looking at a <a href="https://ntrs.nasa.gov/api/citations/19690025249/downloads/19690025249.pdf#page=8">list of aerospace computers</a> shows many innovative but vanished companies: Univac, Burroughs, Sperry (now all Unisys), AC Electronics (now part of Raytheon), Autonetics (acquired by Boeing), RCA (bought by GE), and TRW (acquired by Northrop Grumman).</p> <p>Finally, the Micro Computer illustrates that terms such as "microcomputer" are not objective categories but are social constructs. At first, it seems obvious that the Arma Micro Computer is not a real microcomputer. If you consider a microcomputer to be a computer built around a microprocessor, that's true. (Although "microprocessor" is also <a href="https://spectrum.ieee.org/the-surprising-story-of-the-first-microprocessors">not as clear</a> as you might think.) But a microcomputer can also be defined as "A small computer that includes one or more input/output units and sufficient memory to execute instructions" (according to the IBM Dictionary of Computing, 1994)<span id="fnref:ibm"><a class="ref" href="#fn:ibm">14</a></span> and the Arma Micro Computer meets that definition. The "microcomputer" is a shifting concept, changing from the 1960s to the 1990s to today.</p> <p>For more, follow me on Twitter <a href="https://twitter.com/kenshirriff">@kenshirriff</a> or <a href="https://www.righto.com/feeds/posts/default">RSS</a> for updates. I'm also on Mastodon as <a href="https://oldbytes.space/@kenshirriff">@<span class="__cf_email__" data-cfemail="ee858b809d86879c9c878888ae81828a8c979a8b9dc09d9e8f8d8b">[email&#160;protected]</span></a>. Thanks to Daniel Plotnick for providing a great deal of information and photos. Thanks to John Hartman for obtaining an obscure conference proceedings for me.</p> <h2>Notes and references</h2> <div class="footnote"> <ol> <li id="fn:firsts"> <p>I should mention the danger of "firsts" from a historical perspective. Historian Michael Williams advised "not to use the word 'first'" and said, "If you add enough adjectives to a description you can always claim your own favorite." (See <a href="https://amzn.to/3wnsf4H">ENIAC in Action</a>, p7.)</p> <!-- Computer Historian Michael Mahoney also talks about "firsts" in "Histories of Computing" (p44), in particular the risk of "retrospective judgements, where the first X had always been known as a Y." --> <p>The first usage of "micro-computer" that I could find is from 1956. In Isaac Asimov's short story "The Dying Night", he mentions a "micro-computer" in passing: "In recent years, it [the handheld scanner] had become the hallmark of the scientist, much as the stethoscope was that of the physician and the micro-computer that of the statistician."</p> <p>Another interesting example of a "micro-computer" is the Texas Instruments Semiconductor Network Computer. This palm-sized computer is often considered the first integrated-circuit computer. It was an 11-bit serial computer running at 100 kHz, built out of RS flip-flops, NOR gates, and logic drivers. The 1961 article below described this computer as a "micro-computer", although this was a one-off use of the term, not the computer's name. This <a href="https://s3data.computerhistory.org/brochures/ti.molecular.1961.102646283.pdf">brochure</a> describes the Semiconductor Network Computer in more detail and Semiconductor Networks are described in detail in <a href="https://www.worldradiohistory.com/Archive-Electronics/60s/60/Electronics-1960-05-13.pdf#page=67">this article</a>. Unlike modern ICs, these integrated circuits used flying wires for internal connections rather than a deposited metal layer, making their design a dead end.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/ti.jpg"><img alt="The Texas Instruments Semiconductor Network Computer. From Computers and Automation, Dec. 1961." class="hilite" height="362" src="https://static.righto.com/images/arma-microcomputer/ti-w500.jpg" title="The Texas Instruments Semiconductor Network Computer. From Computers and Automation, Dec. 1961." width="500" /></a><div class="cite">The Texas Instruments Semiconductor Network Computer. From <a href="https://archive.org/details/sim_computers-and-people_1961-12_10_12/page/85/mode/1up">Computers and Automation</A>, Dec. 1961.</div></p> <p><!-- -->&#160;<a class="footnote-backref" href="#fnref:firsts" title="Jump back to footnote 1 in the text">&#8617;</a></p> </li> <li id="fn:spaceborne"> <p>Most of the information on the Arma Micro Computer in this article is from "The Arma Micro Computer for Space Applications", by E. Keonjian and J. Marx, Spaceborne Computing Engineering Conference, 1962, pages 103-116.&#160;<a class="footnote-backref" href="#fnref:spaceborne" title="Jump back to footnote 2 in the text">&#8617;</a></p> </li> <li id="fn:instructions"> <p>The Arma Micro Computer's instruction set consisted of 19 22-bit instructions, shown below.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/instructions.png"><img alt="Instruction set of the Arma Micro Computer. Figure from &quot;The Arma Micro Computer for Space Applications&quot;." class="hilite" height="562" src="https://static.righto.com/images/arma-microcomputer/instructions-w450.png" title="Instruction set of the Arma Micro Computer. Figure from &quot;The Arma Micro Computer for Space Applications&quot;." width="450" /></a><div class="cite">Instruction set of the Arma Micro Computer. Figure from "The Arma Micro Computer for Space Applications".</div></p> <p><!-- -->&#160;<a class="footnote-backref" href="#fnref:instructions" title="Jump back to footnote 3 in the text">&#8617;</a></p> </li> <li id="fn:block-diagram"> <p>This block diagram shows the structure of the Micro Computer. The accumulator register (AC) is used for all data transfers as well as addition and subtraction. The multiply-divide register is used for multiplication, division, and square roots. The product register (PR), quotient register (QR), and square root register (SR) are used by the corresponding instructions. The data buffer register (S) holds data moving in or out of storage; it is shown with two 11-bit parts.</p> <p><a href="https://static.righto.com/images/arma-microcomputer/arma_2.png"><img alt="Block diagram of the Arma Micro Computer. Figure from &quot;The Arma Micro Computer for Space Applications&quot;." class="hilite" height="468" src="https://static.righto.com/images/arma-microcomputer/arma_2-w600.png" title="Block diagram of the Arma Micro Computer. Figure from &quot;The Arma Micro Computer for Space Applications&quot;." width="600" /></a><div class="cite">Block diagram of the Arma Micro Computer. Figure from "The Arma Micro Computer for Space Applications".</div></p> <p>For control logic, the location counter (L) is the 13-bit program counter. For a subroutine call, the current address can be stored in the recall register (RR), which acts as a link register to hold the return address. (The RR is not shown on the diagram because it is held in memory.) Instruction decoding uses the instruction register (I), with the next instruction in the instruction buffer (B). The operand register (P) contains the 13-bit address from an instruction, while the remaining register (R) is used for I/O addressing.&#160;<a class="footnote-backref" href="#fnref:block-diagram" title="Jump back to footnote 4 in the text">&#8617;</a></p> </li> <li id="fn:wafers"> <p>Arma's <a href="https://www.electronicdesign.com/technologies/industrial/boards/article/21772791/microminiature-guidance-computer">original plan</a> was to mount circuits on ceramic wafers. Resistors would be printed onto the wafer and wiring silk-screened. (This is similar to IBM's SLT modules (1964), although IBM mounted diode and transistors as bare dies rather than components.) However, the Micro Computer ended up using epoxy-glass wafers with small, but discrete components: standard TO-46 transistors, "fly-speck" diodes, and 1/10 watt resistors. I don't see much advantage to these wafers over mounting the components directly on the printed-circuit board; maybe standardization is the benefit.&#160;<a class="footnote-backref" href="#fnref:wafers" title="Jump back to footnote 5 in the text">&#8617;</a></p> </li> <li id="fn:transfluxors"> <p>The Micro Computer used an unusual mechanism to select a word to read or write. Most computers used a grid of selection wires; by energizing an X and a Y wire at the same time, the corresponding core was selected. The key idea of this "coincident-current" approach is that each wire has half the current necessary to flip a core, so the core with the energized X and Y wires will have enough current to flip. This puts tight constraints on the current level, since too much current will flip all the cores along the wire, but not enough current will not flip the selected core. What makes this difficult is that the properties of a core change with temperature, so either the cores need to be temperature-stabilized or the current needs to be adjusted based on the temperature.</p> <p>The Micro Computer instead used a separate wire for each word, so as long as the current is large enough, the cores will flip. This approach avoids the issues with temperature sensitivity, an important concern for a computer that needs to handle the large temperature swings of a spacecraft, not an air-conditioned data center. Unfortunately, it requires much more wiring. Specifically, the large advantage of the coincident-current approach is that an N&times;N grid of wires lets you select N<sup>2</sup> words. With the Micro Computer approach, N wires only select N words, so the scalability is much worse.</p> <p>For more on Arma's memory systems, see patents: <a href="https://patents.google.com/patent/US3048828A">Memory Device, 3048828</a> and <a href="https://patents.google.com/patent/US3289181A">Multiaperture Core Memory Matrix, 3289181</a>.&#160;<a class="footnote-backref" href="#fnref:transfluxors" title="Jump back to footnote 6 in the text">&#8617;</a></p> </li> <li id="fn:capitalization"> <p>The capitalization of Arma vs. ARMA is inconsistent. It often appears in all-caps, but both forms are used, sometimes in the same article. "Arma" is not an acronym; the name came from the names of its founders: Arthur Davis and David Mahood (source: <a href="https://s3.amazonaws.com/arena-attachments/2260731/51714a4d7f394844dffe73c2a4351902.pdf?1528090951">Between Human and Machine</a>, p54). I suspect a 1960s corporate branding effort was responsible for the use of all-caps.&#160;<a class="footnote-backref" href="#fnref:capitalization" title="Jump back to footnote 7 in the text">&#8617;</a></p> </li> <li id="fn:history"> <p>For more on the corporate history of Arma, see <a href="https://www.ieee.li/pulse/pulse_1958_03.pdf">IRE Pulse</a>, March 1958, p9-10. Details of corporate politics and what went wrong are <a href="https://downunderpatriot.blogspot.com/2014/11/arma-division-american-bosch-arma.html">here</a>. More information on the financial ups and downs of Arma is in "Charles Perelle's Spacemanship", Fortune, January 1959, an article that focused on Charles Perelle, the president of American Bosch Arma.&#160;<a class="footnote-backref" href="#fnref:history" title="Jump back to footnote 8 in the text">&#8617;</a></p> </li> <li id="fn:tradic"> <p>Wikipedia <a href="https://en.wikipedia.org/wiki/Wen_Tsing_Chow#:~:text=production%20airborne%20digital%20computer">says</a> that Arma's guidance computer was "the first production airborne digital computer". However, the Hughes Digitair (1958) has also been <a href="https://www.rfcafe.com/references/radio-news/airborne-digital-computer-radio-tv-news-february-1958.htm">called</a> "the first airborne digital computer in actual production." Another <a href="https://web.archive.org/web/20110722175532/http://www.afspc.af.mil/shared/media/document/AFD-100405-081.pdf">source</a> says the Arma computer was the "first all-solid-state, high-reliability, space-borne digital computer." The <a href="https://en.wikipedia.org/wiki/TRADIC">TRADIC</a> (Transistorized Airborne Digital Computer) (1954) was earlier, but was a prototype system, not a production system. In turn, the TRADIC is said by some to be the first fully transistorized computer, but that depends on exactly how you interpret "fully".</p> <p>This is another example of how the "first" depends on the specific adjectives used.&#160;<a class="footnote-backref" href="#fnref:tradic" title="Jump back to footnote 9 in the text">&#8617;</a></p> </li> <li id="fn:heiderstadt"> <p>The information on the Arma W-107A computer is from "Atlas Inertial Guidance System: As I Remember It" by Principal Engineer John Heiderstadt.&#160;<a class="footnote-backref" href="#fnref:heiderstadt" title="Jump back to footnote 10 in the text">&#8617;</a></p> </li> <li id="fn:burning"> <p>Chow Wen Tsing's <a href="https://patents.google.com/patent/US3028659A">PROM patent</a> discusses the term "burning", explaining that it refers to burning out the diodes electrically. To widen the patent, he clarifies that "The term 'blowing out' or 'burning out' further includes any process which, by means less drastic than actual destruction of the non-linear elements, effects a change of the circuit impedance to a level which makes the particular circuit inoperative." This description prevented someone from trying to get around the patent by stating that nothing was <em>really</em> burning.&#160;<a class="footnote-backref" href="#fnref:burning" title="Jump back to footnote 11 in the text">&#8617;</a></p> </li> <li id="fn:ltn-51"> <p>Details on the LTN-51 navigation system and its uses are in <a href="https://www.osti.gov/servlets/purl/4623576#page=8">this document</a>.&#160;<a class="footnote-backref" href="#fnref:ltn-51" title="Jump back to footnote 12 in the text">&#8617;</a></p> </li> <li id="fn:aerospace"> <p>For more information on early aerospace computers, see <a href="https://bitsavers.org/pdf/bellcomm/TM67-1031-1_State_Of_The_Art_Of_Aerospace_Digital_Computers_62-67_Jun67.pdf">State-of-the-art of Aerospace Digital Computers</a> (1967), updated as <a href="https://ntrs.nasa.gov/api/citations/19690025249/downloads/19690025249.pdf">Trends in Aerospace Digital Computer Design</a> (1969). Also see the 1970 <a href="https://www.bitsavers.org/magazines/Datamation/19700715.pdf#page=89">Survey of Military CPUs</a>. <a href="https://dl.acm.org/doi/10.1145/1476589.1476699">Efficient partitioning for the batch-fabricated fourth generation computer</a> (1968) discusses how "The computer industry is on the verge of an upheaval" from new hardware including LSI and fast ROMs, and describes various LSI aerospace computers.&#160;<a class="footnote-backref" href="#fnref:aerospace" title="Jump back to footnote 13 in the text">&#8617;</a></p> </li> <li id="fn:ibm"> <p>The "IBM Dictionary of Computing" (1994) has two definitions of "microcomputer": "(1) A digital computer whose processing unit consists of one or more microprocessors, and includes storage and input/output facilities. (2) A small computer that includes one or more input/output units and sufficient memory to execute instructions; for example a personal computer. The essential components of a microcomputer are often contained within a single enclosure." The latter definition was from an ISO/IEC draft standard for terminology so it is somewhat "official".&#160;<a class="footnote-backref" href="#fnref:ibm" title="Jump back to footnote 14 in the text">&#8617;</a></p> </li> </ol> </div> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'><span class='post-comment-link'> <a class='comment-link' href='https://www.blogger.com/comment/fullpage/post/6264947694886887540/5949199793608744516' onclick=''> 11 comments: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/6264947694886887540/5949199793608744516' title='Email Post'> <img alt='' class='icon-action' height='13' src='http://img1.blogblog.com/img/icon18_email.gif' width='18'/> </a> </span> <span class='item-control blog-admin pid-1138732533'> <a href='https://www.blogger.com/post-edit.g?blogID=6264947694886887540&postID=5949199793608744516&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <span class='post-backlinks post-comment-link'> </span> <div class='post-share-buttons goog-inline-block'> <a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=5949199793608744516&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=5949199793608744516&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=5949199793608744516&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=5949199793608744516&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=5949199793608744516&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a> </div> </div> <div class='post-footer-line post-footer-line-2'><span class='post-labels'> Labels: <a href="https://www.righto.com/search/label/aerospace" rel='tag'>aerospace</a>, <a href="https://www.righto.com/search/label/space" rel='tag'>space</a> </span> </div> <div class='post-footer-line post-footer-line-3'></div> </div> </div> </div> </div></div> <div class="date-outer"> <div class="date-posts"> <div class='post-outer'> <div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='https://static.righto.com/images/bendix-motor/cadc-view-w400.jpg' itemprop='image_url'/> <meta content='6264947694886887540' itemprop='blogId'/> <meta content='1307320839994543151' itemprop='postId'/> <a name='1307320839994543151'></a> <h3 class='post-title entry-title' itemprop='name'> <a href="https://www.righto.com/2024/02/bendix-cadc-servomotor-tachometer.html">Inside the mechanical Bendix Air Data Computer, part 5: motor/tachometers</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-1307320839994543151' itemprop='description articleBody'> The Bendix Central Air Data Computer (CADC) is an electromechanical analog computer that uses gears and cams for its mathematics. It was a key part of military planes such as the F-101 and the F-111 fighters, computing airspeed, Mach number, and other "air data". The rotating gears are powered by six small servomotors, so these motors are in a sense the fundamental component of the CADC. In the photo below, you can see one of the cylindrical motors near the center, about 1/3 of the way down.</p> <p>The servomotors in the CADC are unlike standard motors. Their name&mdash;"Motor-Tachometer Generator" or "Motor and Rate Generator"<span id="fnref:part-numbers"><a class="ref" href="#fn:part-numbers">1</a></span>&mdash;indicates that each unit contains both a motor and a speed sensor. Because the motor and generator use two-phase signals, there are a total of eight colorful wires coming out, many more than a typical motor. Moreover, the direction of the motor can be controlled, unlike typical AC motors. I couldn't find a satisfactory explanation of how these units worked, so I bought one and disassembled it. This article (part 5 of my series on the CADC<span id="fnref:series"><a class="ref" href="#fn:series">2</a></span>) provides a complete teardown of the motor/generator and explain how it works.</p> <p><a href="https://static.righto.com/images/bendix-motor/cadc-view.jpg"><img alt="The Bendix MG-1A Central Air Data Computer with the case removed, showing the compact gear mechanisms inside. Click this image (or any other) for a larger version." class="hilite" height="688" src="https://static.righto.com/images/bendix-motor/cadc-view-w400.jpg" title="The Bendix MG-1A Central Air Data Computer with the case removed, showing the compact gear mechanisms inside. Click this image (or any other) for a larger version." width="400" /></a><div class="cite">The Bendix MG-1A Central Air Data Computer with the case removed, showing the compact gear mechanisms inside. Click this image (or any other) for a larger version.</div></p> <p>The image below shows a closeup of two motors powering one of the pressure signal outputs. Note the bundles of colorful wires to each motor, entering in two locations. At the top, the motors drive complex gear trains. The high-speed motors are geared down by the gear trains to provide much slower rotations with sufficient torque to power the rest of the CADC's mechanisms.</p> <p><a href="https://static.righto.com/images/bendix-motor/motors.jpg"><img alt="Two motor/generators in the pressure section of the CADC. The one at the back is mostly hidden." class="hilite" height="376" src="https://static.righto.com/images/bendix-motor/motors-w250.jpg" title="Two motor/generators in the pressure section of the CADC. The one at the back is mostly hidden." width="250" /></a><div class="cite">Two motor/generators in the pressure section of the CADC. The one at the back is mostly hidden.</div></p> <p>The motor/tachometer that we disassembled is shorter than the ones in the CADC (despite having the same part number), but the principles are the same. We started by removing a small C-clip on the end of the motor and and unscrewing the end plate. The unit is pretty simple mechanically. It has bearings at each end for the rotor shaft. There are four wires for the motor and four wires for the tachometer.<span id="fnref:wiring"><a class="ref" href="#fn:wiring">3</a></span></p> <p><a href="https://static.righto.com/images/bendix-motor/teardown.jpg"><img alt="The motor disassembled to show the internal components." class="hilite" height="541" src="https://static.righto.com/images/bendix-motor/teardown-w600.jpg" title="The motor disassembled to show the internal components." width="600" /></a><div class="cite">The motor disassembled to show the internal components.</div></p> <p>The rotor (below) has two parts on the shaft. the left part is for the motor and the right drum is for the tachometer. The left part is a <a href="https://en.wikipedia.org/wiki/Squirrel-cage_rotor">squirrel-cage rotor</a><span id="fnref:angle"><a class="ref" href="#fn:angle">4</a></span> for the motor. It consists of conducting bars (light-colored) on an iron core. The conductors are all connected at both ends by the conductive rings at either end. The metal drum on the right is used by the tachometer. Note that there are no electrical connections between the rotor components and the rest of the motor: there are no brushes or slip rings. The interaction between the rotor and the windings in the body of the motor is purely magnetic, as will be explained.</p> <p><a href="https://static.righto.com/images/bendix-motor/rotor.jpg"><img alt="The rotor and shaft." class="hilite" height="223" src="https://static.righto.com/images/bendix-motor/rotor-w600.jpg" title="The rotor and shaft." width="600" /></a><div class="cite">The rotor and shaft.</div></p> <p>The motor/tachometer contains two cylindrical stators that create the magnetic fields, one for the motor and one for the tachometer. The photo below shows the motor stator inside the unit after removing the tachometer stator. The stators are encased in hard green plastic and tightly pressed inside the unit. In the center, eight metal poles are visible. They direct the magnetic field onto the rotor.</p> <p><a href="https://static.righto.com/images/bendix-motor/motor-inside.jpg"><img alt="Inside the motor after removing the tachometer winding." class="hilite" height="332" src="https://static.righto.com/images/bendix-motor/motor-inside-w300.jpg" title="Inside the motor after removing the tachometer winding." width="300" /></a><div class="cite">Inside the motor after removing the tachometer winding.</div></p> <p>The photo below shows the stator for the tachometer, similar to the stator for the motor. Note the shallow notches that look like black lines in the body on the lower left. These are probably adjustments to the tachometer during manufacturing to compensate for imperfections. The adjustments ensure that the magnetic fields are nulled out so the tachometer returns zero voltage when stationary. The metal plate on top shields the tachometer from the motor's magnetic fields.</p> <p><a href="https://static.righto.com/images/bendix-motor/windings3.jpg"><img alt="The stator for the tachometer." class="hilite" height="286" src="https://static.righto.com/images/bendix-motor/windings3-w300.jpg" title="The stator for the tachometer." width="300" /></a><div class="cite">The stator for the tachometer.</div></p> <p>The poles and the metal case of the stator look solid, but they are not. Instead, they are formed from a stack of thin laminations. The reason to use laminations instead of solid metal is to reduce eddy currents in the metal. Each lamination is varnished, so it is insulated from its neighbors, preventing the flow of eddy currents.</p> <p><a href="https://static.righto.com/images/bendix-motor/lamination.jpg"><img alt="One lamination from the stack of laminations that make up the winding. The lamination suffered some damage during disassembly; it was originally round." class="hilite" height="281" src="https://static.righto.com/images/bendix-motor/lamination-w300.jpg" title="One lamination from the stack of laminations that make up the winding. The lamination suffered some damage during disassembly; it was originally round." width="300" /></a><div class="cite">One lamination from the stack of laminations that make up the winding. The lamination suffered some damage during disassembly; it was originally round.</div></p> <p>In the photo below, I removed some of the plastic to show the wire windings underneath. The wires look like bare copper, but they have a very thin layer of varnish to insulate them. There are two sets of windings (orange and blue, or red and black) around alternating metal poles. Note that the wires run along the pole, parallel to the rotor, and then wrap around the pole at the top and bottom, forming oblong coils around each pole.<span id="fnref:cross-section"><a class="ref" href="#fn:cross-section">5</a></span> This generates a magnetic field through each pole.</p> <p><a href="https://static.righto.com/images/bendix-motor/windings2.jpg"><img alt="Removing the plastic reveals the motor windings." class="hilite" height="288" src="https://static.righto.com/images/bendix-motor/windings2-w300.jpg" title="Removing the plastic reveals the motor windings." width="300" /></a><div class="cite">Removing the plastic reveals the motor windings.</div></p> <h2>The motor</h2> <p>The motor part of the unit is a two-phase induction motor with a squirrel-cage rotor.<span id="fnref:servomotor"><a class="ref" href="#fn:servomotor">6</a></span> There are no brushes or electrical connections to the rotor, and there are no magnets, so it isn't obvious what makes the rotor rotate. The trick is the "squirrel-cage" rotor, shown below. It consists of metal bars that are connected at the top and bottom by rings. Assume (for now) that the fixed part of the motor, the stator, creates a rotating magnetic field. The important principle is that a <em>changing</em> magnetic field will produce a current in a wire loop.<span id="fnref:faraday"><a class="ref" href="#fn:faraday">7</a></span> As a result, each loop in the squirrel-cage rotor will have an induced current: current will flow up<span id="fnref:signs"><a class="ref" href="#fn:signs">9</a></span> the bars facing the north magnetic field and down the south-facing bars, with the rings on the end closing the circuits.</p> <p><a href="https://static.righto.com/images/bendix-motor/squirrel-cage.png"><img alt="A squirrel-cage rotor. The numbered parts are (1) shaft, (2) end cap, (3) laminations, and (4) splines to hold the laminations. Image from Robo Blazek." class="hilite" height="225" src="https://static.righto.com/images/bendix-motor/squirrel-cage-w300.png" title="A squirrel-cage rotor. The numbered parts are (1) shaft, (2) end cap, (3) laminations, and (4) splines to hold the laminations. Image from Robo Blazek." width="300" /></a><div class="cite">A squirrel-cage rotor. The numbered parts are (1) shaft, (2) end cap, (3) laminations, and (4) splines to hold the laminations. Image from <a href="https://commons.wikimedia.org/wiki/File:AM_Klietka.png">Robo Blazek</a>.</div></p> <p>But how does the stator produce a rotating magnetic field? And how do you control the direction of rotation? The next important principle is that current flowing through a wire produces a magnetic field.<span id="fnref:ampere"><a class="ref" href="#fn:ampere">8</a></span> As a result, the currents in the squirrel cage rotor produce a magnetic field perpendicular to the cage. This magnetic field causes the rotor to turn in the same direction as the stator's magnetic field, driving the motor. Because the rotor is powered by the induced currents, the motor is called an induction motor.</p> <p>The diagram below shows how the motor is wired, with a control winding and a reference winding. Both windings are powered with AC, but the control voltage either lags the reference winding by 90&deg; or leads the reference winding by 90&deg;, due to the capacitor. Suppose the current through the control winding lags by 90&deg;. First, the reference voltage's sine wave will have a peak, producing the magnetic field's north pole at A. Next (90&deg; later), the control voltage will peak, producing the north pole at B. The reference voltage will go negative, producing a south pole at A and thus a north pole at C. The control voltage will go negative, producing a south pole at B and a north pole at D. This cycle will repeat, with the magnetic field rotating counter-clockwise from A to D. Conversely, if the control voltage leads the reference voltage, the magnetic field will rotate clockwise. This causes the motor to spin in one direction or the other, with the direction controlled by the control voltage. (The motor has four poles for each winding, rather than the one shown below; this increases the torque and reduces the speed.)</p> <p><a href="https://static.righto.com/images/bendix-motor/servomotor.jpg"><img alt="Diagram showing the servomotor wiring." class="hilite" height="298" src="https://static.righto.com/images/bendix-motor/servomotor-w350.jpg" title="Diagram showing the servomotor wiring." width="350" /></a><div class="cite">Diagram showing the servomotor wiring.</div></p> <p>The purpose of the capacitor is to provide the 90&deg; phase shift so the reference voltage and the control voltage can be driven from the same single-phase AC supply (in this case, 26 volts, 400 hertz). Switching the polarity of the control voltage reverses the direction of the motor.</p> <p>There are a few interesting things about induction motors. You might expect that the motor would spin at the same rate as the rotating magnetic field. However, this is not the case. Remember that a <em>changing</em> magnetic field induces the current in the squirrel-cage rotor. If the rotor is spinning at the same rate as the magnetic field, the rotor will encounter an unchanging magnetic field and there will be no current in the bars of the rotor. As a result, the rotor will not generate a magnetic field and there will be no torque to rotate it. The consequence is that the rotor must spin somewhat slower than the magnetic field. This is called "slippage" and is typically a few percent of the full speed, with more slippage as more torque is required.</p> <p>Many household appliances use induction motors, but how do they generate a rotating magnetic field from a single-phase AC winding? The problem is that the magnetic field in a single AC winding will just flip back and forth, so the motor will not turn in either direction. One solution is a <a href="https://en.wikipedia.org/wiki/Shaded-pole_motor">shaded-pole motor</a>, which puts a copper bar around part of each pole to break the symmetry and produce a weakly rotating magnetic field. More powerful induction motors use a startup winding with a capacitor (analogous to the control winding). This winding can either be switched out of the circuit once the motor starts spinning,<span id="fnref:single-phase"><a class="ref" href="#fn:single-phase">10</a></span> or used continuously, called a permanent-split capacitor (PSC) motor. The best solution is three-phase power (if available); a three-phase winding automatically produces a rotating magnetic field.</p> <h2>Tachometer/generator</h2> <p>The second part of the unit is the tachometer generator, sometimes called the rate unit.<span id="fnref:tachometers"><a class="ref" href="#fn:tachometers">11</a></span> The purpose of the generator is to produce a voltage proportional to the speed of the shaft. The unusual thing about this generator is that it produces a 400-hertz output that is either in phase with the input or 180&deg; out of phase. This is important because the phase indicates which direction the shaft is turning. Note that a "normal" generator is different: the output frequency is proportional to the speed.</p> <p>The diagram below shows the principle behind the generator. It has two stator windings: the reference coil that is powered at 400 Hz, and the output coil that produces the output signal. When the rotor is stationary (A), the magnetic flux is perpendicular to the output coil, so no output voltage is produced. But when the rotor turns (B), eddy currents in the rotor distort the magnetic field. It now couples with the output coil, producing a voltage. As the rotor turns faster, the magnetic field is distorted more, increasing the coupling and thus the output voltage. If the rotor turns in the opposite direction (C), the magnetic field couples with the output coil in the opposite direction, inverting the output phase. (This diagram is more conceptual than realistic, with the coils and flux 90&deg; from their real orientation, so don't take it too seriously. As shown earlier, the coils are perpendicular to the rotor so the real flux lines are completely different.)</p> <p><a href="https://static.righto.com/images/bendix-motor/drag-cup.jpg"><img alt="Principle of the drag-cup rate generator. From Navy electricity and electronics training series: Principles of synchros, servos, and gyros, Fig 2-16" class="hilite" height="419" src="https://static.righto.com/images/bendix-motor/drag-cup-w600.jpg" title="Principle of the drag-cup rate generator. From Navy electricity and electronics training series: Principles of synchros, servos, and gyros, Fig 2-16" width="600" /></a><div class="cite">Principle of the drag-cup rate generator. From <a href="https://books.google.com/books?id=rRAqVWwRVeAC">Navy electricity and electronics training series: Principles of synchros, servos, and gyros</a>, Fig 2-16</div></p> <p>But why does the rotating drum change the magnetic field? It's easier to understand by considering a tachometer that uses a squirrel-cage rotor instead of a drum. When the rotor rotates, currents will be induced in the squirrel cage, as described earlier with the motor. These currents, in turn, generate a perpendicular magnetic field, as before. This magnetic field, perpendicular to the orginal field, will be aligned with the output coil and will be picked up. The strength of the induced field (and thus the output voltage) is proportional to the speed, while the direction of the field depends on the direction of rotation. Because the primary coil is excited at 400 hertz, the currents in the squirrel cage and the resulting magnetic field also oscillate at 400 hertz. Thus, the output is at 400 hertz, regardless of the input speed.</p> <p>Using a drum instead of a squirrel cage provides higher accuracy because there are no fluctuations due to the discrete bars. The operation is essentially the same, except that the currents pass through the metal of the drum continuously instead of through individual bars. The result is eddy currents in the drum, producing the second magnetic field. The diagram below shows the eddy currents (red lines) from a metal plate moving through a magnetic field (green), producing a second magnetic field (blue arrows). For the rotating drum, the situation is similar except the metal surface is curved, so both field arrows will have a component pointing to the left. This creates the directed magnetic field that produces the output.</p> <p><a href="https://static.righto.com/images/bendix-motor/eddy-currents.png"><img alt="A diagram showing eddy currents in a metal plate moving under a magnet, Image from Chetvorno." class="hilite" height="279" src="https://static.righto.com/images/bendix-motor/eddy-currents-w500.png" title="A diagram showing eddy currents in a metal plate moving under a magnet, Image from Chetvorno." width="500" /></a><div class="cite">A diagram showing eddy currents in a metal plate moving under a magnet, Image from <a href= "https://commons.wikimedia.org/wiki/File:Eddy_currents_due_to_magnet.svg">Chetvorno</a>.</div></p> <h2>The servo loop</h2> <p>The motor/generator is called a servomotor because it is used in a servo loop, a control system that uses feedback to obtain precise positioning. In particular, the CADC uses the rotational position of shafts to represent various values. The servo loops convert the CADC's inputs (static pressure, dynamic pressure, temperature, and pressure correction) into shaft positions. The rotations of these shafts power the gears, cams, and differentials that perform the computations.</p> <p>The diagram below shows a typical servo loop in the CADC. The goal is to rotate the output shaft to a position that exactly matches the input voltage. To accomplish this, the output position is converted into a feedback voltage by a potentiometer that rotates as the output shaft rotates.<span id="fnref:feedback"><a class="ref" href="#fn:feedback">12</a></span> The error amplifier compares the input voltage to the feedback voltage and generates an error signal, rotating the servomotor in the appropriate direction. Once the output shaft is in the proper position, the error signal drops to zero and the motor stops. To improve the dynamic response of the servo loop, the tachometer signal is used as a negative feedback voltage. This ensures that the motor slows as the system gets closer to the right position, so the motor doesn't overshoot the position and oscillate. (This is sort of like a <a href="https://en.wikipedia.org/wiki/Proportional%E2%80%93integral%E2%80%93derivative_controller">PID controller</a>.)</p> <p><a href="https://static.righto.com/images/bendix-motor/servo-loop.jpg"><img alt="Diagram of a servo loop in the CADC." class="hilite" height="180" src="https://static.righto.com/images/bendix-motor/servo-loop-w500.jpg" title="Diagram of a servo loop in the CADC." width="500" /></a><div class="cite">Diagram of a servo loop in the CADC.</div></p> <p>The error amplifier and motor drive circuit for a pressure transducer are shown below. Because of the state of electronics at the time, it took three circuit boards to implement a single servo loop. The amplifier was implemented with germanium transistors (since silicon transistors were later). The transistors weren't powerful enough to drive the motors directly. Instead, <a href="https://spectrum.ieee.org/the-vacuum-tubes-forgotten-rival">magnetic amplifiers</a> (the yellow transformer-like modules at the front) powered the servomotors. The large rectangular capacitors on the right provided the phase shift required for the control voltage.</p> <p><a href="https://static.righto.com/images/bendix-motor/amplifier-stack.jpg"><img alt="One of the three-board amplifiers for the pressure transducer." class="hilite" height="424" src="https://static.righto.com/images/bendix-motor/amplifier-stack-w400.jpg" title="One of the three-board amplifiers for the pressure transducer." width="400" /></a><div class="cite">One of the three-board amplifiers for the pressure transducer.</div></p> <h2>Conclusions</h2> <p>The Bendix CADC used a variety of electromechanical devices including synchros, control transformers, servo motors, and tachometer generators. These were expensive military-grade components driven by complex electronics. Nowadays, you can get a PWM servo motor for a <a href="https://www.adafruit.com/product/169">few dollars</a> with the gearing, feedback, and control circuitry inside the motor housing. These motors are widely used for hobbyist robotics, drones, and other applications. It's amazing that servo motors have gone from specialized avionics hardware to an easy-to-use, inexpensive commodity.</p> <p><a href="https://static.righto.com/images/bendix-motor/servo2.jpg"><img alt="A modern DC servo motor. Photo by Adafruit (CC BY-NC-SA 2.0 DEED)." class="hilite" height="308" src="https://static.righto.com/images/bendix-motor/servo2-w400.jpg" title="A modern DC servo motor. Photo by Adafruit (CC BY-NC-SA 2.0 DEED)." width="400" /></a><div class="cite">A modern DC servo motor. Photo by <a href="https://www.adafruit.com/product/169">Adafruit</a> (<a href="https://creativecommons.org/licenses/by-nc-sa/2.0/">CC BY-NC-SA 2.0 DEED</a>).</div></p> <p>Follow me on Twitter <a href="https://twitter.com/kenshirriff">@kenshirriff</a> or <a href="https://www.righto.com/feeds/posts/default">RSS</a> for updates. I'm also on Mastodon as <a href="https://oldbytes.space/@kenshirriff">@oldbytes.space@kenshirriff</a>. Thanks to Joe for providing the CADC. Thanks to Marc Verdiell for disassembling the motor.</p> <h2>Notes and references</h2> <div class="footnote"> <ol> <li id="fn:part-numbers"> <p>The two types of motors in the CADC are part number "FV-101-19-A1" and part number "FV-101-5-A1" (or FV101-5A1). They are called either a "Tachometer Rate Generator" or "Tachometer Motor Generator", with both names applied to the same part number. The "19" and "5" units look the same, with the "19" used for one pressure servo loop and the "5" used everywhere else.</p> <p>The motor that I got is similar to the ones in the CADC, but shorter. The difference in size is mysterious since both have the Bendix part number FV-101-5-A1.</p> <p>For reference, the motor I disassembled is labeled: <div style="white-space:pre-wrap;">Cedar Division Control Data Corp. ST10162 Motor Tachometer F0: 26V C0: 26V TACH: 18V 400 CPS DSA-400-70C-4651 FSN6105-581-5331 US BENDIX FV-101-5-A1 </div></p> <p>I wondered why the motor listed both Control Data and Bendix. In 1952, the Cedar Engineering Company was spun off from the Minneapolis Honeywell Regulator Company (better known as Honeywell, the name it took in <a href="https://hrcaz.org/PermPages/HoneywellHistory.html#:~:text=1964%20The%20company%20name%20was,began%20at%20Honeywell%20Aero%20Division.">1964</a>). Cedar Engineering produced motors, servos, and aircraft actuators. In 1957, Control Data <a href="https://gallery.lib.umn.edu/exhibits/show/digital-state/control-data-corporation">bought</a> Cedar Engineering, which became the Cedar Division of CDC. Then, Control Data <a href="https://www.worldradiohistory.com/Archive-Electronics/60s/63/Electronics-1963-03-15.pdf#page=10">acquired</a> Bendix's computer division in 1963. Thus, three companies were involved.&#160;<a class="footnote-backref" href="#fnref:part-numbers" title="Jump back to footnote 1 in the text">&#8617;</a></p> </li> <li id="fn:series"> <p>My previous articles on the CADC are: <ul> <li><a href="https://www.righto.com/2023/02/bendix-central-air-data-computer-cadc.html">Overview</a> <li><a href="https://www.righto.com/2023/10/bendix-cadc-reverse-engineering.html">Top section</a> <li><a href="https://www.righto.com/2024/01/bendix-cadc-pressure-transducers.html">Pressure transducers</a> <li><a href="https://www.righto.com/2024/02/reverse-engineering-analog-bendix-air.html">Mach section</a> </ul>&#160;<a class="footnote-backref" href="#fnref:series" title="Jump back to footnote 2 in the text">&#8617;</a></p> </li> <li id="fn:wiring"> <p>From testing the motor, here is how I believe it is wired: <br/> Motor reference (power): red and black <br/> Motor control: blue and orange <br/> Generator reference (power): green and brown <br/> Generator out: white and yellow&#160;<a class="footnote-backref" href="#fnref:wiring" title="Jump back to footnote 3 in the text">&#8617;</a></p> </li> <li id="fn:angle"> <p>The bars on the squirrel-cage rotor are at a slight angle. Parallel bars would go in and out of alignment with the stator, causing fluctuations in the force, while the angled bars avoid this problem.&#160;<a class="footnote-backref" href="#fnref:angle" title="Jump back to footnote 4 in the text">&#8617;</a></p> </li> <li id="fn:cross-section"> <p>This cross-section through the stator shows the windings. On the left, each winding is separated into the parts on either side of the pole. On the right, you can see how the wires loop over from one side of the pole to the other. Note the small circles in the 12 o'clock and 9 o'clock positions: cross sections of the input wires. The individual horizontal wires near the circumference connect alternating windings.</p> <p><a href="https://static.righto.com/images/bendix-motor/cross-section.jpg"><img alt="A cross-section of the stator, formed by sanding down the plastic on the end." class="hilite" height="472" src="https://static.righto.com/images/bendix-motor/cross-section-w500.jpg" title="A cross-section of the stator, formed by sanding down the plastic on the end." width="500" /></a><div class="cite">A cross-section of the stator, formed by sanding down the plastic on the end.</div></p> <p><!-- -->&#160;<a class="footnote-backref" href="#fnref:cross-section" title="Jump back to footnote 5 in the text">&#8617;</a></p> </li> <li id="fn:servomotor"> <p>It's hard to find explanations of AC servomotors since they are an old technology. One discussion is in <a href="https://archive.org/details/electromechanica00davi/page/234/mode/2up?view=theater">Electromechanical components for servomechanisms</a> (1961). This book points out some interesting things about a servomotor. The stall torque is proportional to the control voltage. Servomotors are generally high-speed, but low-torque devices, heavily geared down. Because of their high speed and their need to change direction, rotational inertia is a problem. Thus, servomotors typically have a long, narrow rotor compared with typical motors. (You can see in the teardown photo that the rotor is long and narrow.) Servomotors are typically designed with many poles (to reduce speed) and smaller air gaps to increase inductance. These small airgaps (e.g. 0.001") require careful manufacturing tolerance, making servomotors a precision part.&#160;<a class="footnote-backref" href="#fnref:servomotor" title="Jump back to footnote 6 in the text">&#8617;</a></p> </li> <li id="fn:faraday"> <p>The principle is <a href="https://en.wikipedia.org/wiki/Faraday%27s_law_of_induction">Faraday's law of induction</a>: "The electromotive force around a closed path is equal to the negative of the time rate of change of the magnetic flux enclosed by the path."&#160;<a class="footnote-backref" href="#fnref:faraday" title="Jump back to footnote 7 in the text">&#8617;</a></p> </li> <li id="fn:ampere"> <p><a href="">Amp猫re's law</a> states that "the integral of the magnetizing field <em>H</em> around any closed loop is equal to the sum of the current flowing through the loop."&#160;<a class="footnote-backref" href="#fnref:ampere" title="Jump back to footnote 8 in the text">&#8617;</a></p> </li> <li id="fn:signs"> <p>The direction of the current flow (up or down) depends on the direction of rotation. I'm not going to worry about the specific direction of current flow, magnetic flux, and so forth in this article.&#160;<a class="footnote-backref" href="#fnref:signs" title="Jump back to footnote 9 in the text">&#8617;</a></p> </li> <li id="fn:single-phase"> <p>Once an induction motor is spinning, it can be powered from a single AC phase since the stator is rotating with respect to the magnetic field. This works for the servomotor too. I noticed that once the motor is spinning, it can operate without the control voltage. This isn't the normal way of using the motor, though.&#160;<a class="footnote-backref" href="#fnref:single-phase" title="Jump back to footnote 10 in the text">&#8617;</a></p> </li> <li id="fn:tachometers"> <p>A long discussion of tachometers is in the book <a href="https://archive.org/details/electromechanica0000unse_d6y6/page/188/mode/2up?view=theater">Electromechanical Components for Servomechanisms</a> (1961). The AC induction-generator tachometer is described starting on page 193.</p> <p>For a mathematical analysis of the tachometer generator, see <a href="https://apps.dtic.mil/sti/tr/pdf/AD0655862.pdf#page=67">Servomechanisms, Section 2, Measurement and Signal Converters, MCP 706-137, U.S. Army</a>. This source also discusses sources of errors in detail. Inexpensive tachometer generators may have an error of 1-2%, while precision devices can have an error of about 0.1%. Accuracy is worse for small airborne generators, though. Since the Bendix CADC uses the tachometer output for damping, not as a signal output, accuracy is less important.&#160;<a class="footnote-backref" href="#fnref:tachometers" title="Jump back to footnote 11 in the text">&#8617;</a></p> </li> <li id="fn:feedback"> <p>Different inputs in the CADC use different feedback mechanisms. The temperature servo uses a potentiometer for feedback. The angle of attack correction uses a synchro control transformer, which generates a voltage based on the angle error. The pressure transducers contain inductive pickups that generate a voltage based on the pressure error. For more details, see my article on the CADC's <a href="https://www.righto.com/2024/01/bendix-cadc-pressure-transducers.html">pressure transducer servo circuits</a>.&#160;<a class="footnote-backref" href="#fnref:feedback" title="Jump back to footnote 12 in the text">&#8617;</a></p> </li> </ol> </div> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'><span class='post-comment-link'> <a class='comment-link' href='https://www.blogger.com/comment/fullpage/post/6264947694886887540/1307320839994543151' onclick=''> 3 comments: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/6264947694886887540/1307320839994543151' title='Email Post'> <img alt='' class='icon-action' height='13' src='http://img1.blogblog.com/img/icon18_email.gif' width='18'/> </a> </span> <span class='item-control blog-admin pid-1138732533'> <a href='https://www.blogger.com/post-edit.g?blogID=6264947694886887540&postID=1307320839994543151&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <span class='post-backlinks post-comment-link'> </span> <div class='post-share-buttons goog-inline-block'> <a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=1307320839994543151&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=1307320839994543151&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=1307320839994543151&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=1307320839994543151&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=1307320839994543151&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a> </div> </div> <div class='post-footer-line post-footer-line-2'><span class='post-labels'> Labels: <a href="https://www.righto.com/search/label/aerospace" rel='tag'>aerospace</a>, <a href="https://www.righto.com/search/label/cadc" rel='tag'>cadc</a>, <a href="https://www.righto.com/search/label/electronics" rel='tag'>electronics</a>, <a href="https://www.righto.com/search/label/reverse-engineering" rel='tag'>reverse-engineering</a>, <a href="https://www.righto.com/search/label/teardown" rel='tag'>teardown</a> </span> </div> <div class='post-footer-line post-footer-line-3'></div> </div> </div> </div> </div></div> <div class="date-outer"> <div class="date-posts"> <div class='post-outer'> <div class='post hentry' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='https://static.righto.com/images/bendix-mach/cadc-side-w600.jpg' itemprop='image_url'/> <meta content='6264947694886887540' itemprop='blogId'/> <meta content='4399278445047699785' itemprop='postId'/> <a name='4399278445047699785'></a> <h3 class='post-title entry-title' itemprop='name'> <a href="https://www.righto.com/2024/02/reverse-engineering-analog-bendix-air.html">Reverse-engineering an analog Bendix air data computer: part 4, the Mach section</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-4399278445047699785' itemprop='description articleBody'> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script> <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script> <script> MathJax = { tex: { inlineMath: [['$', '$'], ['\\(', '\\)']] }, svg: { fontCache: 'global' }, chtml: { displayAlign: 'left' } }; </script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ "HTML-CSS": { scale: 175} }); </script> <style type="text/css"> .MathJax {font-size: 1em !important} </style> <p>In the 1950s, many fighter planes used the Bendix Central Air Data Computer (CADC) to compute airspeed, Mach number, and other "air data". The CADC is an analog computer, using tiny gears and specially-machined cams for its mathematics. In this article, part 4 of my series,<span id="fnref:series"><a class="ref" href="#fn:series">1</a></span> I reverse engineer the Mach section of the CADC and explain its calculations. (In the photo below, the Mach section is the middle section of the CADC.)</p> <p><a href="https://static.righto.com/images/bendix-mach/cadc-side.jpg"><img alt="The Bendix MG-1A Central Air Data Computer with the case removed, showing the compact gear mechanisms inside. Click this image (or any other) for a larger version." class="hilite" height="330" src="https://static.righto.com/images/bendix-mach/cadc-side-w600.jpg" title="The Bendix MG-1A Central Air Data Computer with the case removed, showing the compact gear mechanisms inside. Click this image (or any other) for a larger version." width="600" /></a><div class="cite">The Bendix MG-1A Central Air Data Computer with the case removed, showing the compact gear mechanisms inside. Click this image (or any other) for a larger version.</div></p> <p>Aircraft have determined airspeed from air pressure for over a century. A port in the side of the plane provides the static air pressure,<span id="fnref:static"><a class="ref" href="#fn:static">2</a></span> the air pressure outside the aircraft. A pitot tube points forward and receives the "total" air pressure, a higher pressure due to the air forced into the tube by the speed of the airplane. The airspeed can be determined from the ratio of these two pressures, while the altitude can be determined from the static pressure.</p> <p>But as you approach the speed of sound, the fluid dynamics of air change and the calculations become very complicated. With the development of supersonic fighter planes in the 1950s, simple mechanical instruments were no longer sufficient. Instead, an analog computer calculated the "air data" (airspeed, air density, Mach number, and so forth) from the pressure measurements. This computer then transmitted the air data electrically to the systems that needed it: instruments, weapons targeting, engine control, and so forth. Since the computer was centralized, the system was called a Central Air Data Computer or CADC, manufactured by Bendix and other companies.</p> <p><a href="https://static.righto.com/images/bendix-mach/gears.jpg"><img alt="A closeup of the numerous gears inside the CADC. Three differential gear mechanisms are visible." class="hilite" height="367" src="https://static.righto.com/images/bendix-mach/gears-w600.jpg" title="A closeup of the numerous gears inside the CADC. Three differential gear mechanisms are visible." width="600" /></a><div class="cite">A closeup of the numerous gears inside the CADC. Three differential gear mechanisms are visible.</div></p> <p>Each value in the Bendix CADC is indicated by the rotational position of a shaft. Compact electric motors rotate the shafts, controlled by the pressure inputs. Gears, cams, and differentials perform computations, with the results indicated by more rotations. Devices called synchros converted the rotations to electrical outputs that are connected to other aircraft systems. The CADC is said to contain 46 synchros, 511 gears, 820 ball bearings, and a total of 2,781 major parts (but I haven't counted). These components are crammed into a compact cylinder: just 15 inches long and weighing 28.7 pounds.</p> <p>The equations computed by the CADC are impressively complicated. For instance, one equation is:</p> <p>\[~~~\frac{P_t}{P_s} = \frac{166.9215M^7}{( 7M^2-1)^{2.5}}\]</p> <p>It seems incredible that these functions could be computed mechanically, but three techniques make this possible. The fundamental mechanism is the differential gear, which adds or subtracts values. Second, logarithms are used extensively, so multiplications and divisions are implemented by additions and subtractions performed by a differential, while square roots are calculated by gearing down by a factor of 2. Finally, specially-shaped cams implement functions: logarithm, exponential, and application-specific functions. By combining these mechanisms, complicated functions can be computed mechanically, as I will explain below.</p> <!-- Aerodynamics for Naval Aviators (1965) https://www.faa.gov/sites/faa.gov/files/regulations_policies/handbooks_manuals/aviation/00-80T-80.pdf --> <h3>The differential</h3> <p>The differential gear assembly is the mathematical component of the CADC, as it performs addition or subtraction.<span id="fnref:gearing"><a class="ref" href="#fn:gearing">3</a></span> The differential takes two input rotations and produces an output rotation that is the sum or difference of these rotations.<span id="fnref:differential"><a class="ref" href="#fn:differential">4</a></span> Since most values in the CADC are expressed logarithmically, the differential computes multiplication and division when it adds or subtracts its inputs.</p> <p><a href="https://static.righto.com/images/bendix-mach/differential-closeup.png"><img alt="A closeup of a differential mechanism." class="hilite" height="332" src="https://static.righto.com/images/bendix-mach/differential-closeup-w350.png" title="A closeup of a differential mechanism." width="350" /></a><div class="cite">A closeup of a differential mechanism.</div></p> <p>While the differential functions like the differential in a car, it is constructed differently, with a <a href="https://en.wikipedia.org/wiki/Differential_(mechanical_device)#Spur-gear_design">spur-gear</a> design. This compact arrangement of gears is about 1 cm thick and 3 cm in diameter. The differential is mounted on a shaft along with three co-axial gears: two gears provide the inputs to the differential and the third provides the output. In the photo, the gears above and below the differential are the input gears. The entire differential body rotates with the sum, connected to the output gear at the top through a concentric shaft. (In practice, any of the three gears can be used as the output.) The two thick gears inside the differential body are part of the mechanism.</p> <h3>The cams</h3> <p>The CADC uses cams to implement various functions. Most importantly, cams compute logarithms and exponentials. Cams also implement complicated functions of one variable such as ${M}/{\sqrt{1 + .2 M^2}}$. The function is encoded into the cam's shape during manufacturing, so a hard-to-compute nonlinear function isn't a problem for the CADC. The photo below shows a cam with the follower arm in front. As the cam rotates, the follower moves in and out according to the cam's radius.</p> <p><a href="https://static.righto.com/images/bendix-mach/cam.jpg"><img alt="A cam inside the CADC implements a function." class="hilite" height="444" src="https://static.righto.com/images/bendix-mach/cam-w500.jpg" title="A cam inside the CADC implements a function." width="500" /></a><div class="cite">A cam inside the CADC implements a function.</div></p> <p>However, the shape of the cam doesn't provide the function directly, as you might expect. The main problem with the straightforward approach is the discontinuity when the cam wraps around. For example, if the cam implemented an exponential directly, its radius would spiral exponentially and there would be a jump back to the starting value when it wraps around. Instead, the CADC uses a clever <a href="https://patents.google.com/patent/US2969910A&quot;">patented</a> method: the cam encodes the <em>difference</em> between the desired function and a straight line. For example, an exponential curve is shown below (blue), with a line (red) between the endpoints. The height of the gray segment, the difference, specifies the radius of the cam (added to the cam's fixed minimum radius). The point is that this difference goes to 0 at the extremes, so the cam will no longer have a discontinuity when it wraps around. Moreover, this technique significantly reduces the size of the value (i.e. the height of the gray region is smaller than the height of the blue line), increasing the cam's accuracy.<span id="fnref:cam-shape"><a class="ref" href="#fn:cam-shape">5</a></span></p> <p><a href="https://static.righto.com/images/bendix-mach/exponential.png"><img alt="An exponential curve (blue), linear curve (red), and the difference (gray)." class="hilite" height="216" src="https://static.righto.com/images/bendix-mach/exponential-w300.png" title="An exponential curve (blue), linear curve (red), and the difference (gray)." width="300" /></a><div class="cite">An exponential curve (blue), linear curve (red), and the difference (gray).</div></p> <p>To make this work, the cam position must be added to the linear value to yield the result. This is implemented by combining each cam with a differential gear; watch for the paired cams and differentials below. As the diagram below shows, the input (23) drives the cam (30) and the differential (25, 37-41). The follower (32) tracks the cam and provides a second input (35) to the differential. The sum from the differential produces the desired function (26).</p> <p><a href="https://static.righto.com/images/bendix-mach/differential-patent.png"><img alt="This diagram, from Patent 2969910, shows how the cam and follower are connected to a differential." class="hilite" height="312" src="https://static.righto.com/images/bendix-mach/differential-patent-w350.png" title="This diagram, from Patent 2969910, shows how the cam and follower are connected to a differential." width="350" /></a><div class="cite">This diagram, from <a href="https://patents.google.com/patent/US2969910A">Patent 2969910</a>, shows how the cam and follower are connected to a differential.</div></p> <h3>The synchro outputs</h3> <p>A synchro is an interesting device that can transmit a rotational position electrically over three wires. In appearance, a synchro is similar to an electric motor, but its internal construction is different, as shown below. Before digital systems, synchros were very popular for transmitting signals electrically through an aircraft. For instance, a synchro could transmit an altitude reading to a cockpit display or a targeting system. Two synchros at different locations have their stator windings connected together, while the rotor windings are driven with AC. Rotating the shaft of one synchro causes the other to rotate to the same position.<span id="fnref:synchro"><a class="ref" href="#fn:synchro">6</a></span></p> <p><a href="https://static.righto.com/images/bendix-mach/synchro-cutaway.png"><img alt="Cross-section diagram of a synchro showing the rotor and stators." class="hilite" height="306" src="https://static.righto.com/images/bendix-mach/synchro-cutaway-w350.png" title="Cross-section diagram of a synchro showing the rotor and stators." width="350" /></a><div class="cite">Cross-section diagram of a synchro showing the rotor and stators.</div></p> <p>For the CADC, most of the outputs are synchro signals, using compact synchros that are about 3 cm in length. For improved resolution, many of the CADC outputs use two synchros: a coarse synchro and a fine synchro. The two synchros are typically geared in an 11:1 ratio, so the fine synchro rotates 11 times as fast as the coarse synchro. Over the output range, the coarse synchro may turn 180&deg;, providing the approximate output unambiguously, while the fine synchro spins multiple times to provide more accuracy.</p> <h2>Examining the Mach section of the CADC</h2> <p><a href="https://static.righto.com/images/bendix-mach/side.jpg"><img alt="Another view of the CADC." class="hilite" height="343" src="https://static.righto.com/images/bendix-mach/side-w600.jpg" title="Another view of the CADC." width="600" /></a><div class="cite">Another view of the CADC.</div></p> <p>The Bendix CADC is constructed from modular sections. In this blog post, I'm focusing on the middle section, called the "Mach section" and indicated by the arrow above. This section computes log static pressure, impact pressure, pressure ratio, and Mach number and provides these outputs electrically as synchro signals. It also provides the log pressure ratio and log static pressure to the rest of the CADC as shaft rotations. The left section of the CADC computes values related to airspeed, air density, and temperature.<span id="fnref:left"><a class="ref" href="#fn:left">7</a></span> The right section has the pressure sensors (the black domes), along with the servo mechanisms that control them.</p> <p>I had feared that any attempt at disassembly would result in tiny gears flying in every direction, but the CADC was designed to be taken apart for maintenance. Thus, I could remove the left section of the CADC for analysis. Unfortunately, we lost the gear alignment between the sections and don't have the calibration instructions, so the CADC no longer produces accurate results.</p> <p>The diagram below shows the internal components of the Mach section after disassembly. The synchros are in pairs to generate coarse and fine outputs; the coarse synchros can be distinguished because they have spiral anti-backlash springs installed. These springs prevent wobble in the synchro and gear train as the gears change direction. The gears and differentials are not visible from this angle as they are underneath the metal plate. The Pressure Error Correction (PEC) subsystem has a motor to drive the shaft and a control transformer for feedback. The Mach section has two D-sub connectors. The one on the right links the Mach section and pressure section to the front section of the CADC. The Position Error Correction (PEC) servo amplifier board plugs into the left connector. The static pressure and total pressure input lines have fittings so the lines can be disconnected from the lines from the front of the CADC.<span id="fnref:connectors"><a class="ref" href="#fn:connectors">8</a></span></p> <p><a href="https://static.righto.com/images/bendix-mach/mach-labeled.jpg"><img alt="The Mach section with components labeled." class="hilite" height="490" src="https://static.righto.com/images/bendix-mach/mach-labeled-w600.jpg" title="The Mach section with components labeled." width="600" /></a><div class="cite">The Mach section with components labeled.</div></p> <p>The photo below shows the left section of the CADC. This section meshes with the Mach section shown above. The two sections have parts at various heights, so they join in a complicated way. Two gears receive the pressure signals \( log ~ P_t / P_s \) and \( log ~ P_s \) from the Mach section. The third gear sends the log total temperature to the rest of the CADC. The electrical connector (a standard 37-pin D-sub) supplies 120 V 400 Hz power to the Mach section and pressure transducers and passes synchro signals to the output connectors.</p> <p><a href="https://static.righto.com/images/bendix-mach/back-labeled.jpg"><img alt="The left part of the CADC that meshes with the Mach section." class="hilite" height="480" src="https://static.righto.com/images/bendix-mach/back-labeled-w500.jpg" title="The left part of the CADC that meshes with the Mach section." width="500" /></a><div class="cite">The left part of the CADC that meshes with the Mach section.</div></p> <h2>The position error correction servo loop</h2> <!-- The Bendix CADC has two pneumatic inputs through tubes: the static pressure and the total pressure. It also receives the total temperature from a platinum temperature probe. From these, it computes many outputs: true air speed, Mach number, log static pressure, differential pressure, air density, air density &times; the speed of sound, total temperature, and log true free air temperature. --> <p>The CADC receives two pressure inputs and two pressure transducers convert the pressures into rotational positions, providing the indicated static pressure \( P_{si} \) and the total pressure \( P_t \) as shaft rotations to the rest of the CADC. (I explained the pressure transducers in detail in the <a href="https://www.righto.com/2024/01/bendix-cadc-pressure-transducers.html">previous article</a>.)</p> <p>There's one complication though. The static pressure \( P_s \) is the atmospheric pressure outside the aircraft. The problem is that the static pressure measurement is perturbed by the airflow around the aircraft, so the measured pressure (called the indicated static pressure \( P_{si} \)) doesn't match the real pressure. This is bad because a "static-pressure error manifests itself as errors in indicated airspeed, altitude, and Mach number to the pilot."<span id="fnref:pec"><a class="ref" href="#fn:pec">9</a></span></p> <p>The solution is a correction factor called the Position Error Correction. This factor gives the ratio between the real pressure \( P_s \) and the measured pressure \( P_{si} \). By applying this correction factor to the indicated (i.e. measured) pressure, the true pressure can be obtained. Since this correction factor depends on the shape of the aircraft, it is generated outside the CADC by a separate cylindrical unit called the Compensator, customized to the aircraft type. The position error computation depends on two parameters: the Mach number provided by the CADC and the angle of attack provided by an aircraft sensor. The compensator determines the correction factor by using a three-dimensional cam. The vintage photo below shows the components inside the compensator.</p> <p><a href="https://static.righto.com/images/bendix-mach/compensator.jpg"><img alt="&quot;Static Pressure and Angle of Attack Compensator Type X1254115-1 (Cover Removed)&quot; from Air Data Computer Mechanization." class="hilite" height="438" src="https://static.righto.com/images/bendix-mach/compensator-w350.jpg" title="&quot;Static Pressure and Angle of Attack Compensator Type X1254115-1 (Cover Removed)&quot; from Air Data Computer Mechanization." width="350" /></a><div class="cite">"Static Pressure and Angle of Attack Compensator Type X1254115-1 (Cover Removed)" from Air Data Computer Mechanization.</div></p> <p>The correction factor is transmitted from the compensator to the CADC as a synchro signal over three wires. To use this value, the CADC must convert the synchro signal to a shaft rotation. The CADC uses a motorized servo loop that rotates the shaft until the shaft position matches the angle specified by the synchro input.</p> <p><a href="https://static.righto.com/images/bendix-mach/servo-diagram.png"><img alt="The servo loop ensures that the shaft position matches the input angle." class="hilite" height="226" src="https://static.righto.com/images/bendix-mach/servo-diagram-w500.png" title="The servo loop ensures that the shaft position matches the input angle." width="500" /></a><div class="cite">The servo loop ensures that the shaft position matches the input angle.</div></p> <p>The key to the servo loop is a <em>control transformer</em>. This device looks like a synchro and has five wires like a synchro, but its function is different. Like the synchro motor, the control transformer has three stator wires that provide the angle input. Unlike the synchro, the control transformer also uses the shaft position as an input, while the rotor winding generates an output voltage indicating the error. This output voltage indicates the error between the control transformer's shaft position and the three-wire angle input. The control transformer provides its error signal as a 400 Hz sine wave, with a larger signal indicating more error.<span id="fnref:phase"><a class="ref" href="#fn:phase">10</a></span></p> <p>The amplifier board (below) drives the motor in the appropriate direction to cancel out the error. The power transformer in the upper left is the largest component, powering the amplifier board from the CADC's 115-volt, 400 Hertz aviation power. Below it are two transformer-like components; these are the magnetic amplifiers. The relay in the lower-right corner switches the amplifier into test mode. The rest of the circuitry consists of transistors, resistors, capacitors, and diodes. The construction is completely different from modern printed circuit boards. Instead, the amplifier uses point-to-point wiring between plastic-insulated metal pegs. Both sides of the board have components, with connections between the sides through the metal pegs.</p> <p><a href="https://static.righto.com/images/bendix-mach/pec-amplifier.jpg"><img alt="The amplifier board for the position error correction." class="hilite" height="466" src="https://static.righto.com/images/bendix-mach/pec-amplifier-w500.jpg" title="The amplifier board for the position error correction." width="500" /></a><div class="cite">The amplifier board for the position error correction.</div></p> <p>The amplifier board is implemented with a transistor amplifier driving two magnetic amplifiers, which control the motor.<span id="fnref:schematic"><a class="ref" href="#fn:schematic">11</a></span> (Magnetic amplifiers are an old technology that can amplify AC signals, allowing the relatively weak transistor output to control a larger AC output.<span id="fnref:magamps"><a class="ref" href="#fn:magamps">12</a></span>) The motor is a "Motor / Tachometer Generator" unit that also generates a voltage based on the motor's speed. This speed signal provides negative feedback, limiting the motor speed as the error becomes smaller and ensuring that the feedback loop doesn't overshoot. The photo below shows how the amplifier board is mounted in the middle of the CADC, behind the static pressure tubing.</p> <!-- The CADC is powered by standard avionics power of 115 volts AC, 400 hertz. The servo circuit has a simple power supply running off this AC, using a multi-winding power transformer. One winding and diode produce DC for the transistor amplifier. Other windings supply AC (controlled by the magnetic amplifiers) to power the motor, and AC for the magnetic amplifier control signal. The transformer ensures that the transducer circuitry is electrically isolated from other parts of the CADC and the aircraft. --> <p><a href="https://static.righto.com/images/bendix-mach/side-with-board.jpg"><img alt="Side view of the CADC." class="hilite" height="310" src="https://static.righto.com/images/bendix-mach/side-with-board-w600.jpg" title="Side view of the CADC." width="600" /></a><div class="cite">Side view of the CADC.</div></p> <h2>The equations</h2> <p>Although the CADC looks like an inscrutable conglomeration of tiny gears, it is possible to trace out the gearing and see exactly how it computes the air data functions. With considerable effort, I have reverse-engineered the mechanisms to create the diagram below, showing how each computation is broken down into mechanical steps. Each line indicates a particular value, specified by a shaft rotation. The &#8853; symbol indicates a differential gear, adding or subtracting its inputs to produce another value. The cam symbol indicates a cam coupled to a differential gear. Each cam computes either a specific function or an exponential, providing the value as a rotation. At the right, the outputs are either shaft rotations to the rest of the CADC or synchro outputs.</p> <p><a href="https://static.righto.com/images/bendix-mach/dataflow.png"><img alt="This diagram shows how the values are computed. The differential numbers are my own arbitrary numbers. Click for a larger version." class="hilite" height="331" src="https://static.righto.com/images/bendix-mach/dataflow-w800.png" title="This diagram shows how the values are computed. The differential numbers are my own arbitrary numbers. Click for a larger version." width="800" /></a><div class="cite">This diagram shows how the values are computed. The differential numbers are my own arbitrary numbers. Click for a larger version.</div></p> <p>I'll go through each calculation briefly.</p> <h3>log static pressure</h3> <p>The static pressure is calculated by dividing the indicated static pressure by the pressure error correction factor. Since these values are all represented logarithmically, the division turns into a subtraction, performed by a differential gear. The output goes to two synchros, geared to provide coarse and fine outputs.<span id="fnref:coarse"><a class="ref" href="#fn:coarse">13</a></span></p> <p>\[log ~ P_s = log ~ P_{si} - log ~ P_{si} / P_s \]</p> <!-- https://apps.dtic.mil/sti/pdfs/ADA614715.pdf --> <h3>Impact pressure</h3> <p>The impact pressure is the pressure due to the aircraft's speed, the difference between the total pressure and the static pressure. To compute the impact pressure, the log pressure values are first converted to linear values by exponentiation, performed by cams. The linear pressure values are then subtracted by a differential gear. Finally, the impact pressure is output through two synchros, coarse and fine in an 11:1 ratio.</p> <p>\[ P_t - P_s = exp(log ~ P_t) - exp(log ~ P_s) \]</p> <h3>log pressure ratio</h3> <p>The log pressure ratio \( P_t/P_s \) is the ratio of total pressure to static pressure. This value is important because it is used to compute the Mach number, true airspeed, and log free air temperature. The Mach number is computed in the Mach section as described below. The true airspeed and log free air temperature are computed in the left section. The left section receives the log pressure ratio as a rotation. Since the left section and Mach section can be separated for maintenance, a direct shaft connection is not used. Instead, each section has a gear and the gears mesh when the sections are joined.</p> <p>Computing the log pressure ratio is straightforward. Since the log total pressure and log static pressure are both available, subtracting the logs with a differential yields the desired value. That is,</p> <p>\[log ~ P_t/P_s = log ~ P_t - log ~ P_s \]</p> <h3>Mach number</h3> <p>The Mach number is defined in terms of \(P_t/P_s \), with separate cases for subsonic and supersonic:<span id="fnref:equations"><a class="ref" href="#fn:equations">14</a></span></p> <p>\[M&lt;1:\] \[~~~\frac{P_t}{P_s} = ( 1+.2M^2)^{3.5}\]</p> <p>\[M &gt; 1:\]</p> <p>\[~~~\frac{P_t}{P_s} = \frac{166.9215M^7}{( 7M^2-1)^{2.5}}\]</p> <p>Although these equations are very complicated, the solution is a function of one variable \(P_t/P_s\) so M can be computed with a single cam. In other words, the mathematics needed to be done when the CADC was manufactured, but once the cam exists, computing M is easy, using the log pressure ratio computed earlier:</p> <p>\[ M = f(log ~ P_t / P_s) \]</p> <h2>Conclusions</h2> <p>The CADC performs nonlinear calculations that seem way too complicated to solve with mechanical gearing. But reverse-engineering the mechanism shows how the equations are broken down into steps that can be performed with cams and differentials, using logarithms for multiplication and division. The diagram below shows the complex gearing in the Mach section. Each differential below corresponds to a differential in the earlier equation diagram.</p> <p><a href="https://static.righto.com/images/bendix-mach/mach-gearing.jpg"><img alt="A closeup of the gears and cams in the Mach section. The differential for the pressure ratio is hidden in the middle." class="hilite" height="389" src="https://static.righto.com/images/bendix-mach/mach-gearing-w800.jpg" title="A closeup of the gears and cams in the Mach section. The differential for the pressure ratio is hidden in the middle." width="800" /></a><div class="cite">A closeup of the gears and cams in the Mach section. The differential for the pressure ratio is hidden in the middle.</div></p> <p>Follow me on Twitter <a href="https://twitter.com/kenshirriff">@kenshirriff</a> or <a href="https://www.righto.com/feeds/posts/default">RSS</a> for more reverse engineering. I'm also on Mastodon as <a href="https://oldbytes.space/@kenshirriff">@oldbytes.space@kenshirriff</a>. Thanks to Joe for providing the CADC. Thanks to Nancy Chen for obtaining a hard-to-find document for me.<span id="fnref:refs"><a class="ref" href="#fn:refs">15</a></span> Marc Verdiell and Eric Schlaepfer are working on the CADC with me. CuriousMarc's video shows the CADC in action: </p> <p> <iframe width="560" height="315" src="https://www.youtube.com/embed/LQkDi3cjY3U?si=67_xTUBMCdxaQahX" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> </p> <!-- AiResearch F-14A air data computer with solid state pressure sensor https://www.google.com/books/edition/Aircraft_Yearbook/KnVGAAAAYAAJ?hl=en&gbpv=1&pg=PA85&printsec=frontcover F-104 lawsuit over whether CADC is essential: https://www.google.com/books/edition/United_States_Customs_Court_Reports/7p1ypJhUYukC?hl=en&gbpv=1&dq=electronic+air+data+computer&pg=PA331&printsec=frontcover Bendix digital air data computer https://patentimages.storage.googleapis.com/ae/55/07/f72bf49c914d2c/US3564222.pdf https://www.google.com/books/edition/Aircraft_Yearbook/KnVGAAAAYAAJ?hl=en&gbpv=1&dq=%22digital+air+data+computer%22&pg=RA1-PA190&printsec=frontcover https://patents.google.com/patent/US3564222A/en --> <h2>Notes and references</h2> <div class="footnote"> <ol> <li id="fn:series"> <p>My articles on the CADC are: <ul> <li><a href="https://www.righto.com/2023/02/bendix-central-air-data-computer-cadc.html">Overview</a> <li><a href="https://www.righto.com/2023/10/bendix-cadc-reverse-engineering.html">Top section</a> <li><a href="https://www.righto.com/2024/01/bendix-cadc-pressure-transducers.html">Pressure transducers</a> </ul></p> <p>There is a lot of overlap between the articles, so skip over parts that seem repetitive :-)&#160;<a class="footnote-backref" href="#fnref:series" title="Jump back to footnote 1 in the text">&#8617;</a></p> </li> <li id="fn:static"> <p>The static air pressure can also be provided by holes in the side of the pitot tube; this is the typical approach in fighter planes.&#160;<a class="footnote-backref" href="#fnref:static" title="Jump back to footnote 2 in the text">&#8617;</a></p> </li> <li id="fn:gearing"> <p>Multiplying a rotation by a constant factor doesn't require a differential; it can be done simply with the ratio between two gears. (If a large gear rotates a small gear, the small gear rotates faster according to the size ratio.) Adding a constant to a rotation is even easier, just a matter of defining what shaft position indicates 0. For this reason, I will ignore constants in the equations.&#160;<a class="footnote-backref" href="#fnref:gearing" title="Jump back to footnote 3 in the text">&#8617;</a></p> </li> <li id="fn:differential"> <p>Strictly speaking, the output of the differential is the sum of the inputs divided by two. I'm ignoring the factor of 2 because the gear ratios can easily cancel it out. It's also arbitrary whether you think of the differential as adding or subtracting, since it depends on which rotation direction is defined as positive.&#160;<a class="footnote-backref" href="#fnref:differential" title="Jump back to footnote 4 in the text">&#8617;</a></p> </li> <li id="fn:cam-shape"> <p>The diagram below shows a typical cam function in more detail. The input is \(log~ dP/P_s\) and the output is \(log~M / \sqrt{1+.2KM^2}\). The small humped curve at the bottom is the cam correction. Although the input and output functions cover a wide range, the difference that is encoded in the cam is much smaller and drops to zero at both ends.</p> <p><a href="https://static.righto.com/images/bendix-mach/cam-diagram.jpg"><img alt="This diagram, from Patent 2969910, shows how a cam implements a complicated function." class="hilite" height="439" src="https://static.righto.com/images/bendix-mach/cam-diagram-w350.jpg" title="This diagram, from Patent 2969910, shows how a cam implements a complicated function." width="350" /></a><div class="cite">This diagram, from <a href="https://patents.google.com/patent/US2969910A">Patent 2969910</a>, shows how a cam implements a complicated function.</div></p> <p><!-- -->&#160;<a class="footnote-backref" href="#fnref:cam-shape" title="Jump back to footnote 5 in the text">&#8617;</a></p> </li> <li id="fn:synchro"> <p>Internally, a synchro has a moving rotor winding and three fixed stator windings. When AC is applied to the rotor, voltages are developed on the stator windings depending on the position of the rotor. These voltages produce a torque that rotates the synchros to the same position. In other words, the rotor receives power (26 V, 400 Hz in this case), while the three stator wires transmit the position. The diagram below shows how a synchro is represented schematically, with rotor and stator coils.</p> <p><a href="https://static.righto.com/images/bendix-mach/synchro-symbol.jpg"><img alt="The schematic symbol for a synchro." class="hilite" height="240" src="https://static.righto.com/images/bendix-mach/synchro-symbol-w250.jpg" title="The schematic symbol for a synchro." width="250" /></a><div class="cite">The schematic symbol for a synchro.</div></p> <p>A control transformer has a similar structure, but the rotor winding provides an output, instead of being powered.&#160;<a class="footnote-backref" href="#fnref:synchro" title="Jump back to footnote 6 in the text">&#8617;</a></p> </li> <li id="fn:left"> <p>Specifically, the left part of the CADC computes true airspeed, air density, total temperature, log true free air temperature, and air density &times; speed of sound. I discussed the left section in detail <a href="https://www.righto.com/2023/10/bendix-cadc-reverse-engineering.html">here</a>.&#160;<a class="footnote-backref" href="#fnref:left" title="Jump back to footnote 7 in the text">&#8617;</a></p> </li> <li id="fn:connectors"> <p>From the outside, the CADC is a boring black cylinder, with no hint of the complex gearing inside. The CADC is wired to the rest of the aircraft through round military connectors. The front panel interfaces these connectors to the D-sub connectors used internally. The two pressure inputs are the black cylinders at the bottom of the photo.</p> <p><a href="https://static.righto.com/images/bendix-mach/exterior.jpg"><img alt="The exterior of the CADC. It is packaged in a rugged metal cylinder. It is sealed by a soldered metal band, so we needed a blowtorch to open it." class="hilite" height="470" src="https://static.righto.com/images/bendix-mach/exterior-w300.jpg" title="The exterior of the CADC. It is packaged in a rugged metal cylinder. It is sealed by a soldered metal band, so we needed a blowtorch to open it." width="300" /></a><div class="cite">The exterior of the CADC. It is packaged in a rugged metal cylinder. It is sealed by a soldered metal band, so we needed a blowtorch to open it.</div></p> <p><!-- -->&#160;<a class="footnote-backref" href="#fnref:connectors" title="Jump back to footnote 8 in the text">&#8617;</a></p> </li> <li id="fn:pec"> <p>The concepts of position error correction are described <a href="https://apps.dtic.mil/sti/pdfs/ADA614715.pdf">here</a>.&#160;<a class="footnote-backref" href="#fnref:pec" title="Jump back to footnote 9 in the text">&#8617;</a></p> </li> <li id="fn:phase"> <p>The phase of the signal is 0&deg; or 180&deg;, depending on the direction of the error. In other words, the error signal is proportional to the driving AC signal in one direction and flipped when the error is in the other direction. This is important since it indicates which direction the motor should turn. When the error is eliminated, the signal is zero.&#160;<a class="footnote-backref" href="#fnref:phase" title="Jump back to footnote 10 in the text">&#8617;</a></p> </li> <li id="fn:schematic"> <p>I reverse-engineered the circuit board to create the schematic below for the amplifier. The idea is that one magnetic amplifier or the other is selected, depending on the phase of the error signal, causing the motor to turn counterclockwise or clockwise as needed. To implement this, the magnetic amplifier control windings are connected to opposite phases of the 400 Hz power. The transistor is connected to both magnetic amplifiers through diodes, so current will flow only if the transistor pulls the winding low during the half-cycle that the winding is powered high. Thus, depending on the phase of the transistor output, one winding or the other will be powered, allowing that magnetic amplifier to pass AC to the motor.</p> <p><a href="https://static.righto.com/images/bendix-mach/schematic.png"><img alt="This reverse-engineered schematic probably has a few errors. Click the schematic for a larger version." class="hilite" height="358" src="https://static.righto.com/images/bendix-mach/schematic-w600.png" title="This reverse-engineered schematic probably has a few errors. Click the schematic for a larger version." width="600" /></a><div class="cite">This reverse-engineered schematic probably has a few errors. Click the schematic for a larger version.</div></p> <p>The CADC has four servo amplifiers: this one for pressure error correction, one for temperature, and two for pressure. The amplifiers have different types of inputs: the temperature input is the probe resistance, the pressure error correction uses an error voltage from the control transformer, and the pressure inputs are voltages from the inductive pickups in the sensor. The circuitry is roughly the same for each amplifier&mdash;a transistor amplifier driving two magnetic amplifiers&mdash;but the details are different. The largest difference is that each pressure transducer amplifier drives two motors (coarse and fine) so each has two transistor stages and four magnetic amplifiers.&#160;<a class="footnote-backref" href="#fnref:schematic" title="Jump back to footnote 11 in the text">&#8617;</a></p> </li> <li id="fn:magamps"> <p>The basic idea of a magnetic amplifier is a controllable inductor. Normally, the inductor blocks alternating current. But applying a relatively small DC signal to a control winding causes the inductor to saturate, permitting the flow of AC. Since the magnetic amplifier uses a small signal to control a much larger signal, it provides amplification.</p> <p>In the early 1900s, magnetic amplifiers were used in applications such as dimming lights. Germany improved the technology in World War II, using magnetic amplifiers in ships, rockets, and trains. The magnetic amplifier had a resurgence in the 1950s; the Univac Solid State computer used magnetic amplifiers (rather than vacuum tubes or transistors) as its logic elements. However, improvements in transistors made the magnetic amplifier obsolete except for specialized applications. (See my IEEE Spectrum article on <a href="https://spectrum.ieee.org/the-vacuum-tubes-forgotten-rival">magnetic amplifiers</a> for more history of magnetic amplifiers.)&#160;<a class="footnote-backref" href="#fnref:magamps" title="Jump back to footnote 12 in the text">&#8617;</a></p> </li> <li id="fn:coarse"> <p>The CADC specification defines how the parameter values correspond to rotation angles of the synchros. For instance, for the log static pressure synchros, the CADC supports the parameter range 0.8099 to 31.0185 inches of mercury. The spec defines the corresponding synchro outputs as 16,320&deg; rotation of the fine synchro and 175.48&deg; rotation of the coarse synchro over this range. The synchro null point corresponds to 29.92 inches of mercury (i.e. zero altitude). The fine synchro is geared to rotate 93 times as fast as the coarse synchro, so it rotates over 45 times during this range, providing higher resolution than a single synchro would provide. The other synchro pairs use a much smaller 11:1 ratio; presumably high accuracy of the static pressure was important.&#160;<a class="footnote-backref" href="#fnref:coarse" title="Jump back to footnote 13 in the text">&#8617;</a></p> </li> <li id="fn:equations"> <p>Although the CADC's equations may seem <em>ad hoc</em>, they can be derived from fluid dynamics principles. These equations were standardized in the 1950s by various government organizations including the National Bureau of Standards and NACA (the precursor of NASA).&#160;<a class="footnote-backref" href="#fnref:equations" title="Jump back to footnote 14 in the text">&#8617;</a></p> </li> <li id="fn:refs"> <p>It was very difficult to find information about the CADC. The official military specification is MIL-C-25653C(USAF). After searching everywhere, I was finally able to get a copy from the Technical Reports &amp; Standards unit of the Library of Congress. The other useful document was in an obscure conference proceedings from 1958: "Air Data Computer Mechanization" (Hazen), Symposium on the USAF Flight Control Data Integration Program, Wright Air Dev Center US Air Force, Feb 3-4, 1958, pp 171-194.&#160;<a class="footnote-backref" href="#fnref:refs" title="Jump back to footnote 15 in the text">&#8617;</a></p> </li> </ol> </div> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'><span class='post-comment-link'> <a class='comment-link' href='https://www.blogger.com/comment/fullpage/post/6264947694886887540/4399278445047699785' onclick=''> 1 comment: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/6264947694886887540/4399278445047699785' title='Email Post'> <img alt='' class='icon-action' height='13' src='http://img1.blogblog.com/img/icon18_email.gif' width='18'/> </a> </span> <span class='item-control blog-admin pid-1138732533'> <a href='https://www.blogger.com/post-edit.g?blogID=6264947694886887540&postID=4399278445047699785&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <span class='post-backlinks post-comment-link'> </span> <div class='post-share-buttons goog-inline-block'> <a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4399278445047699785&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4399278445047699785&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4399278445047699785&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4399278445047699785&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=6264947694886887540&postID=4399278445047699785&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a> </div> </div> <div class='post-footer-line post-footer-line-2'><span class='post-labels'> Labels: <a href="https://www.righto.com/search/label/analog" rel='tag'>analog</a>, <a href="https://www.righto.com/search/label/reverse-engineering" rel='tag'>reverse-engineering</a> </span> </div> <div class='post-footer-line post-footer-line-3'></div> </div> </div> </div> </div></div> </div> <div class='blog-pager' id='blog-pager'> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href="https://www.righto.com/search?updated-max=2024-08-02T20:46:00-07:00&max-results=7&reverse-paginate=true" id='Blog1_blog-pager-newer-link' title='Newer Posts'>Newer Posts</a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href="https://www.righto.com/search?updated-max=2024-02-11T09:44:00-08:00&max-results=7" id='Blog1_blog-pager-older-link' title='Older Posts'>Older Posts</a> </span> <a class='home-link' href="https://www.righto.com/">Home</a> </div> <div class='clear'></div> </div></div> </div> </div> <div class='column-left-outer'> <div class='column-left-inner'> <aside> </aside> </div> </div> <div class='column-right-outer'> <div class='column-right-inner'> <aside> <div class='sidebar section' id='sidebar-right-1'><div class='widget HTML' data-version='1' id='HTML2'> <div class='widget-content'> <style> @import url('https://fonts.googleapis.com/css?family=Montserrat:300,400,500,700'); .form-preview { display: flex; flex-direction: column; justify-content: center; margin-top: 30px; padding: clamp(17px, 5%, 40px) clamp(17px, 7%, 50px); max-width: 350px; min-height: 200px; border-radius: 6px; box-shadow: 0 5px 25px rgba(34, 60, 47, 0.25); } .form-preview, .form-preview *{ box-sizing: border-box; } .form-preview .preview-heading { width: 100%; } .form-preview .preview-heading h5{ margin-top: 0; margin-bottom: 0; } .form-preview .preview-input-field { margin-top: 20px; width: 100%; } .form-preview .preview-input-field input { width: 100%; height: 40px; border-radius: 6px; border: 2px solid #e9e8e8; background-color: #fff; outline: none; } .form-preview .preview-input-field input::placeholder, .form-preview .preview-input-field input { opacity: 0.5; color: #000; font-family: "Montserrat"; font-size: 14px; font-weight: 500; line-height: 20px; text-align: center; } .form-preview .preview-submit-button { margin-top: 10px; width: 100%; } .form-preview .preview-submit-button button { width: 100%; height: 40px; border: 0; border-radius: 6px; line-height: 0px; } .form-preview .preview-submit-button button:hover { cursor: pointer; } </style><form data-v-4c58e686="" action="https://api.follow.it/subscription-form/U3NBTmZKVkI1YVpCa000a0RCZHFiQ3FYMko1cWRTZTN6K3hJdWM2QWxJbE1uVXdXUHZZVzJVQzVLZGh5Y0RCVXB2d2JSTzBobGhuY0FsZnlHbVdFZ2VTN2Q4Vy84RnIxUTgzVlcrbXNIR0Y0aW93d3REM2J6VS9RL0gxWURnV1d8ZWN0YStwUWdWWUFiOTIyWDVGWjdYYVdGZEVNcC9qODZacjlwWXRIcEJQRT0=/8" method="post"><div data-v-4c58e686="" class="form-preview" style="background-color: rgb(255, 255, 255); border-style: solid; border-width: 1px; border-color: rgb(204, 204, 204); position: relative;"><div data-v-4c58e686="" class="preview-heading"><h5 data-v-4c58e686="" style="font-family: Montserrat; font-weight: bold; color: rgb(0, 0, 0); font-size: 12px; text-align: center;">Get new posts by email:</h5></div> <div data-v-4c58e686="" class="preview-input-field"><input data-v-4c58e686="" type="email" name="email" placeholder="Enter your email" spellcheck="false" /></div> <div data-v-4c58e686="" class="preview-submit-button"><button data-v-4c58e686="" type="submit" style="font-family: Montserrat; font-weight: bold; color: rgb(255, 255, 255); font-size: 12px; text-align: center; background-color: rgb(0, 0, 0);">Subscribe</button></div></div></form> </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML3'> <h2 class='title'>About the site</h2> <div class='widget-content'> <a href="https://www.righto.com/p/index.html">Contact info and site index</a> </div> <div class='clear'></div> </div><div class='widget PopularPosts' data-version='1' id='PopularPosts1'> <h2>Popular Posts</h2> <div class='widget-content popular-posts'> <ul> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href="https://www.righto.com/2025/02/origin-of-mainframe-term.html" target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_uUSLDU2931XuYvrrvqGycQOuaXlkpp8ov_PPpv38ooW8n-dxySEXVchhTlvbeKYTKYOOx5_KaOQScIA-QyYT_1kT8Q6he0rAstIK00H3AEWZ5YE6U01B76wDhEuKPQT59jMA=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href="https://www.righto.com/2025/02/origin-of-mainframe-term.html">The origin and unexpected evolution of the word "mainframe"</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href="https://www.righto.com/2024/05/blog-post.html" target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vKARwRFh7dj63gpeTj5RAqT9JZgTtgVX4TSs1QmgqO5ZBzObFwZk8xyR6t4WEub5vYhyCoVmwfzBAhWB_r8JoEiiDpE3Ew6hRzjnw_iyAPdSGhz3_lU9I3AZjyUbW2G0WKsZygj9KZk8qqiga01qSL=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href="https://www.righto.com/2024/05/blog-post.html">Inside a vintage aerospace navigation computer of uncertain purpose</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href="https://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html" target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_uUAIn8nekPsJ_HMP8TTxeLj6KSgacauiuvnziiH3ErwXutz36tHOkMIwfqDv8q2_ZEC5dOGnkhieuUSLC25C84Y7yByQE8yRzVoM4-eF6V9ik=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href="https://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html">A Multi-Protocol Infrared Remote Library for the Arduino</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href="https://www.righto.com/2012/05/apple-iphone-charger-teardown-quality.html" target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_t72EY6fouywsHxNGekIpRfeoa9ov1rofB3G8bq7OJAW9hfV1CxaF_qXYAcAC2oKlwV19w6CE6IyMcZdIH-ajXcdW3RBxoQTIsGObeauHkrcMcpmOG6FOSxUfoan2DYZ1fhj6aXkgQl9q4-9HWdBqSAIjY=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href="https://www.righto.com/2012/05/apple-iphone-charger-teardown-quality.html">Apple iPhone charger teardown: quality in a tiny expensive package</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href="https://www.righto.com/2014/12/inside-intel-1405-die-photos-of-shift.html" target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_s32DFYp635n0-RweMHo5hAm8Ly-6Hvf88sMRslAK-lNPVfLMbaWP4moDU7Vvbyt8eyNJoh5pAN7DcgArHFDZ6F02BfDnQhVH-q_v3RgruS-DucCy13_q8VgyHhMFHZhw=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href="https://www.righto.com/2014/12/inside-intel-1405-die-photos-of-shift.html">Inside the Intel 1405: die photos of a shift register memory from 1970</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href="https://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html" target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sct5h7PbshlEnfkugP4XiAfuUdGqlDglxkhCM-fBLbuHCCM9DFTSevNe1vAAAYVHlkchVmg0Xn-MwUV3ZrHpLkFtBu0YNhYEw_MEo16FGnsm7lr3iAcQHNUyOM78D1mQr6=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href="https://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html">Mining Bitcoin with pencil and paper: 0.67 hashes per day</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href="https://www.righto.com/2012/10/a-dozen-usb-chargers-in-lab-apple-is.html" target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_tfp_WqVz8KzduLPXeFag1Uca8jmCJ4uo1fUPsfFG47cxY8VsC0KCXxwc0Fu517d2RBwUd1HDTiwU4MczFkoFUv_S9Sej_O0GgQx55cUX5Q33WrbwTSGOLjC-sedVI=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href="https://www.righto.com/2012/10/a-dozen-usb-chargers-in-lab-apple-is.html">A dozen USB chargers in the lab: Apple is very good, but not quite the best</a></div> </div> <div style='clear: both;'></div> </li> <li> <div class='item-thumbnail-only'> <div class='item-thumbnail'> <a href="https://www.righto.com/2025/01/its-time-to-abandon-cargo-cult-metaphor.html" target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vE6pB3GEyHwq4LeqW-fopQjM2z5hq-H2BiY8ul3Wl35jt7q-OspvFd7PXv68bXphaTAvAWthtpHhdY_sQmWfUfSgpPZvP8RI8oLvwjK1Bzq0T0btVHLqHGvqk8vuaMIw=w72-h72-p-k-no-nu'/> </a> </div> <div class='item-title'><a href="https://www.righto.com/2025/01/its-time-to-abandon-cargo-cult-metaphor.html">The origin of the cargo cult metaphor</a></div> </div> <div style='clear: both;'></div> </li> </ul> <div class='clear'></div> </div> </div><div class='widget BlogSearch' data-version='1' id='BlogSearch1'> <h2 class='title'>Search This Blog</h2> <div class='widget-content'> <div id='BlogSearch1_form'> <form action="https://www.righto.com/search" class='gsc-search-box' target='_top'> <table cellpadding='0' cellspacing='0' class='gsc-search-box'> <tbody> <tr> <td class='gsc-input'> <input autocomplete='off' class='gsc-input' name='q' size='10' title='search' type='text' value=''/> </td> <td class='gsc-search-button'> <input class='gsc-search-button' title='search' type='submit' value='Search'/> </td> </tr> </tbody> </table> </form> </div> </div> <div class='clear'></div> </div><div class='widget Label' data-version='1' id='Label1'> <h2>Labels</h2> <div class='widget-content cloud-label-widget-content'> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/386">386</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/6502">6502</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/8008">8008</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/8085">8085</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href="https://www.righto.com/search/label/8086">8086</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/8087">8087</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/8088">8088</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/aerospace">aerospace</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/alto">alto</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/analog">analog</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/Apollo">Apollo</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/apple">apple</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href="https://www.righto.com/search/label/arc">arc</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/arduino">arduino</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/arm">arm</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/beaglebone">beaglebone</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/bitcoin">bitcoin</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href="https://www.righto.com/search/label/c%23">c#</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/cadc">cadc</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/calculator">calculator</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href="https://www.righto.com/search/label/chips">chips</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/css">css</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href="https://www.righto.com/search/label/datapoint">datapoint</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/dx7">dx7</a> </span> <span class='label-size label-size-5'> <a dir='ltr' href="https://www.righto.com/search/label/electronics">electronics</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href="https://www.righto.com/search/label/f%23">f#</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href="https://www.righto.com/search/label/fairchild">fairchild</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/fpga">fpga</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/fractals">fractals</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/genome">genome</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/globus">globus</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href="https://www.righto.com/search/label/haskell">haskell</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href="https://www.righto.com/search/label/HP">HP</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/html5">html5</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/ibm">ibm</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/ibm1401">ibm1401</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/ibm360">ibm360</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href="https://www.righto.com/search/label/intel">intel</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/ipv6">ipv6</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/ir">ir</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/java">java</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/javascript">javascript</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/math">math</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/microcode">microcode</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/oscilloscope">oscilloscope</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/Pentium">Pentium</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/photo">photo</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href="https://www.righto.com/search/label/power%20supply">power supply</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href="https://www.righto.com/search/label/random">random</a> </span> <span class='label-size label-size-5'> <a dir='ltr' href="https://www.righto.com/search/label/reverse-engineering">reverse-engineering</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/sheevaplug">sheevaplug</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/snark">snark</a> </span> <span class='label-size label-size-3'> <a dir='ltr' href="https://www.righto.com/search/label/space">space</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/spanish">spanish</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/synth">synth</a> </span> <span class='label-size label-size-4'> <a dir='ltr' href="https://www.righto.com/search/label/teardown">teardown</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/theory">theory</a> </span> <span class='label-size label-size-1'> <a dir='ltr' href="https://www.righto.com/search/label/unicode">unicode</a> </span> <span class='label-size label-size-2'> <a dir='ltr' href="https://www.righto.com/search/label/Z-80">Z-80</a> </span> <div class='clear'></div> </div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <h2>Blog Archive</h2> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2025/"> 2025 </a> <span class='post-count' dir='ltr'>(5)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2025/02/"> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2025/01/"> January </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> &#9660;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/"> 2024 </a> <span class='post-count' dir='ltr'>(21)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/12/"> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/11/"> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/10/"> October </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/09/"> September </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/08/"> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/07/"> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/06/"> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/05/"> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/04/"> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/03/"> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> &#9660;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/02/"> February </a> <span class='post-count' dir='ltr'>(3)</span> <ul class='posts'> <li><a href="https://www.righto.com/2024/02/the-first-microcomputer-transfluxor.html">The first microcomputer: The transfluxor-powered A...</a></li> <li><a href="https://www.righto.com/2024/02/bendix-cadc-servomotor-tachometer.html">Inside the mechanical Bendix Air Data Computer, pa...</a></li> <li><a href="https://www.righto.com/2024/02/reverse-engineering-analog-bendix-air.html">Reverse-engineering an analog Bendix air data comp...</a></li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2024/01/"> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/"> 2023 </a> <span class='post-count' dir='ltr'>(35)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/12/"> December </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/11/"> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/10/"> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/09/"> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/08/"> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/07/"> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/05/"> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/04/"> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/03/"> March </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/02/"> February </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2023/01/"> January </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/"> 2022 </a> <span class='post-count' dir='ltr'>(18)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/11/"> November </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/08/"> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/07/"> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/06/"> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/05/"> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/04/"> April </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/03/"> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/02/"> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2022/01/"> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/"> 2021 </a> <span class='post-count' dir='ltr'>(26)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/12/"> December </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/11/"> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/09/"> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/08/"> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/07/"> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/06/"> June </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/05/"> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/04/"> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/03/"> March </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/02/"> February </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2021/01/"> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/"> 2020 </a> <span class='post-count' dir='ltr'>(33)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/12/"> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/11/"> November </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/10/"> October </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/09/"> September </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/08/"> August </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/07/"> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/06/"> June </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/05/"> May </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/04/"> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/03/"> March </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2020/01/"> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2019/"> 2019 </a> <span class='post-count' dir='ltr'>(18)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2019/11/"> November </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2019/10/"> October </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2019/09/"> September </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2019/08/"> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2019/07/"> July </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2019/04/"> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2019/02/"> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2019/01/"> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/"> 2018 </a> <span class='post-count' dir='ltr'>(17)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/12/"> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/09/"> September </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/08/"> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/06/"> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/05/"> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/04/"> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/03/"> March </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/02/"> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2018/01/"> January </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/"> 2017 </a> <span class='post-count' dir='ltr'>(21)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/12/"> December </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/11/"> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/10/"> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/08/"> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/07/"> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/06/"> June </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/04/"> April </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/03/"> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/02/"> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2017/01/"> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/"> 2016 </a> <span class='post-count' dir='ltr'>(34)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/12/"> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/10/"> October </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/09/"> September </a> <span class='post-count' dir='ltr'>(8)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/08/"> August </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/07/"> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/06/"> June </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/05/"> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/04/"> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/03/"> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/02/"> February </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2016/01/"> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2015/"> 2015 </a> <span class='post-count' dir='ltr'>(12)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2015/12/"> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2015/11/"> November </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2015/10/"> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2015/08/"> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2015/05/"> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2015/03/"> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2015/02/"> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2014/"> 2014 </a> <span class='post-count' dir='ltr'>(13)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2014/12/"> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2014/10/"> October </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2014/09/"> September </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2014/05/"> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2014/03/"> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2014/02/"> February </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/"> 2013 </a> <span class='post-count' dir='ltr'>(24)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/11/"> November </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/09/"> September </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/08/"> August </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/07/"> July </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/06/"> June </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/04/"> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/03/"> March </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/02/"> February </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2013/01/"> January </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2012/"> 2012 </a> <span class='post-count' dir='ltr'>(10)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2012/12/"> December </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2012/11/"> November </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2012/10/"> October </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2012/05/"> May </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2012/03/"> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2012/02/"> February </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2011/"> 2011 </a> <span class='post-count' dir='ltr'>(11)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2011/12/"> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2011/07/"> July </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2011/05/"> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2011/04/"> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2011/03/"> March </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2011/02/"> February </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/"> 2010 </a> <span class='post-count' dir='ltr'>(22)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/12/"> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/11/"> November </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/10/"> October </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/08/"> August </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/06/"> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/05/"> May </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/04/"> April </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/03/"> March </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2010/01/"> January </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/"> 2009 </a> <span class='post-count' dir='ltr'>(22)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/12/"> December </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/11/"> November </a> <span class='post-count' dir='ltr'>(5)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/09/"> September </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/08/"> August </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/07/"> July </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/06/"> June </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/04/"> April </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/03/"> March </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/02/"> February </a> <span class='post-count' dir='ltr'>(2)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2009/01/"> January </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2008/"> 2008 </a> <span class='post-count' dir='ltr'>(27)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2008/07/"> July </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2008/06/"> June </a> <span class='post-count' dir='ltr'>(1)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2008/05/"> May </a> <span class='post-count' dir='ltr'>(3)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2008/04/"> April </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2008/03/"> March </a> <span class='post-count' dir='ltr'>(10)</span> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> &#9658;&#160; </span> </a> <a class='post-count-link' href="https://www.righto.com/2008/02/"> February </a> <span class='post-count' dir='ltr'>(6)</span> </li> </ul> </li> </ul> </div> </div> <div class='clear'></div> </div> </div></div> </aside> </div> </div> </div> <div style='clear: both'></div> <!-- columns --> </div> <!-- main --> </div> </div> <div class='main-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <footer> <div class='footer-outer'> <div class='footer-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left footer-fauxborder-left'> <div class='fauxborder-right footer-fauxborder-right'></div> <div class='region-inner footer-inner'> <div class='foot no-items section' id='footer-1'></div> <table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'> <tbody> <tr> <td class='first columns-cell'> <div class='foot no-items section' id='footer-2-1'></div> </td> <td class='columns-cell'> <div class='foot no-items section' id='footer-2-2'></div> </td> </tr> </tbody> </table> <!-- outside of the include in order to lock Attribution widget --> <div class='foot section' id='footer-3'><div class='widget Attribution' data-version='1' id='Attribution1'> <div class='widget-content' style='text-align: center;'> Powered by <a href='https://www.blogger.com' target='_blank'>Blogger</a>. </div> <div class='clear'></div> </div></div> </div> </div> <div class='footer-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </footer> <!-- content --> </div> </div> <div class='content-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <script type='text/javascript'> window.setTimeout(function() { document.body.className = document.body.className.replace('loading', ''); }, 10); </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/2725212210-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY66iPCKgE4lV05ZhbtSKxMeSgw4MA:1740641296061';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d6264947694886887540','//www.righto.com/2024/02/','6264947694886887540'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '6264947694886887540', 'title': 'Ken Shirriff\x27s blog', 'url': 'http://www.righto.com/2024/02/', 'canonicalUrl': 'http://www.righto.com/2024/02/', 'homepageUrl': 'http://www.righto.com/', 'searchUrl': 'http://www.righto.com/search', 'canonicalHomepageUrl': 'http://www.righto.com/', 'blogspotFaviconUrl': 'http://www.righto.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': false, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'UA-3782444-1', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Ken Shirriff\x26#39;s blog - Atom\x22 href\x3d\x22http://www.righto.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Ken Shirriff\x26#39;s blog - RSS\x22 href\x3d\x22http://www.righto.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Ken Shirriff\x26#39;s blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/6264947694886887540/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/74cfe181c1bbb7a1', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'archive', 'pageName': 'February 2024', 'pageTitle': 'Ken Shirriff\x27s blog: February 2024'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Ken Shirriff\x27s blog', 'description': 'Computer history, restoring vintage computers, IC reverse engineering, and whatever', 'url': 'http://www.righto.com/2024/02/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': true, 'isLabelSearch': false, 'archive': {'year': 2024, 'month': 2, 'rangeMessage': 'Showing posts from February, 2024'}}}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', 'sidebar-right-1', document.getElementById('HTML2'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML3', 'sidebar-right-1', document.getElementById('HTML3'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_PopularPostsView', new _WidgetInfo('PopularPosts1', 'sidebar-right-1', document.getElementById('PopularPosts1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogSearchView', new _WidgetInfo('BlogSearch1', 'sidebar-right-1', document.getElementById('BlogSearch1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar-right-1', document.getElementById('Label1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar-right-1', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', document.getElementById('Attribution1'), {}, 'displayModeFull')); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10