CINXE.COM

Ken Shirriff's blog: April 2019

<!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/2019/04/" 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/2019/04/' 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: April 2019</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=5c17d3ef-c617-4260-b3af-15e58810b101' 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=5c17d3ef-c617-4260-b3af-15e58810b101' 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='http://static.righto.com/images/ibm-360-mem/memory-cables-w500.jpg' itemprop='image_url'/> <meta content='6264947694886887540' itemprop='blogId'/> <meta content='7886102068431496005' itemprop='postId'/> <a name='7886102068431496005'></a> <h3 class='post-title entry-title' itemprop='name'> <a href="https://www.righto.com/2019/04/a-look-at-ibm-s360-core-memory-in-1960s.html">A look at IBM S/360 core memory: In the 1960s, 128 kilobytes weighed 610 pounds</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-7886102068431496005' itemprop='description articleBody'> <p>I recently received a vintage core memory array, part of an IBM System/360 mainframe computer. These arrays were used in a 128-kilobyte core memory system that filled a large cabinet weighing 610 pounds.<span id="fnref:weight"><a class="ref" href="#fn:weight" rel="footnote">1</a></span> This article explains how core memory worked, how this core array was used in mainframes, and why core memory was so bulky.</p> <p><a href="http://static.righto.com/images/ibm-360-mem/memory-cables.jpg"><img alt="A 64 KB core array from the IBM S/360 Model 50. There are 18 core planes stacked front-to-back. The blue cables are the sense/inhibit lines. Driver cards are plugged into the front of this array." class="hilite" height="352" src="http://static.righto.com/images/ibm-360-mem/memory-cables-w500.jpg" title="A 64 KB core array from the IBM S/360 Model 50. There are 18 core planes stacked front-to-back. The blue cables are the sense/inhibit lines. Driver cards are plugged into the front of this array." width="500" /></a><div class="cite">A 64 KB core array from the IBM S/360 Model 50. There are 18 core planes stacked front-to-back. The blue cables are the sense/inhibit lines. Driver cards are plugged into the front of this array.</div></p> <!-- Admittedly, IBM wasn't trying to minimize weight of the S/360. In comparison, if you look at the Apollo Guidance Computer (which went to the Moon, so weight was critical), it weighed 70 pounds and had approximately 4 KB of core RAM that took up about 1/8 of the computer. That works out to about 2 pounds per kilobyte, a bit under half the weight per byte of the S/360 memory. Thus, the IBM weight isn't absurd. --> <p>The IBM System/360 was a groundbreaking family of mainframe computers <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PR360.html">announced</a> introduced in 1964, and much of the success of System/360 was due to core memory technology. The S/360 was an extremely risky "bet-the-company" project that cost IBM over <a href="http://www.computer-museum.ru/books/archiv/ibm36040.pdf">$5 billion</a>. The project was nearly derailed as the operating system OS/360 grew out of control: it was originally targeted for 16 KB systems, but grew to require 32 KB and then 64 KB. <!-- Design of Design p334 --> Fortunately, IBM was able to build larger core memories at a price that customers could still afford, so the operating system was usable.<span id="fnref:memories"><a class="ref" href="#fn:memories" rel="footnote">2</a></span> The System/360 project ended up being a huge success and ensured IBM's dominance of the computer industry for the next two decades. (For more about the System/360, see my <a href="https://www.righto.com/2019/04/iconic-consoles-of-ibm-system360.html">recent article</a>.)</p> <h2>How core memory worked</h2> <p>Core memory was the dominant form of computer storage from the 1950s until it was replaced by semiconductor memory chips in the early 1970s. Core memory was built from tiny ferrite rings called cores, storing one bit in each core. Each core stored a bit by being magnetized either clockwise or counterclockwise. A core was magnetized by sending a pulse of current through a wire threaded through the core. The magnetization could be reversed by sending a pulse in the opposite direction. Thus, each core could store a 0 or 1.</p> <p>To read the value of a core, a current pulse flipped the core to the 0 state. If the core was in the 1 state previously, the changing magnetic field created a voltage in a sense wire. But if the core was already in the 0 state, the magnetic field wouldn't change and the sense line wouldn't pick up a voltage. Thus, the value of the bit in the core could be read by resetting the core to 0 and testing the tiny voltage on the sense wire. (An important side effect was that the process of reading a core erased its value so it needed to be rewritten.)</p> <p><a href="http://static.righto.com/images/ibm-360-mem/core-closeup2.jpg"><img alt="Closeup of an IBM 360 Model 50 core plane. There are three wires through each core. The X and Y wires select one core from the grid. The green wire is the sense/inhibit line. These cores are 30 mils in diameter (.8mm)." class="hilite" height="199" src="http://static.righto.com/images/ibm-360-mem/core-closeup2-w350.jpg" title="Closeup of an IBM 360 Model 50 core plane. There are three wires through each core. The X and Y wires select one core from the grid. The green wire is the sense/inhibit line. These cores are 30 mils in diameter (.8mm)." width="350" /></a><div class="cite">Closeup of an IBM 360 Model 50 core plane. There are three wires through each core. The X and Y wires select one core from the grid. The green wire is the sense/inhibit line. These cores are 30 mils in diameter (.8mm).</div></p> <p>Using a separate wire for each core would be impractical, but in the 1950s a technique called "coincident-current" was developed that used a grid of wires to select a core. This depended on a special property of cores called hysteresis: a small current had no effect on a core, but a current above a threshold would magnetize the core. This allowed a grid of X and Y lines to select one core from the grid. By energizing one X line and one Y line each with half the necessary current, only the core where both lines crossed would get enough current to flip while the other cores were unaffected.</p> <p><a href="http://static.righto.com/images/ibm-360-mem/core-plane-50.jpg"><img alt="A Model 50 core plane is arranged as a grid of cores. The Y lines run horizontally. X and sense/inhibit lines run vertically. The sense/inhibit lines form loops at the top and bottom. Each of the four vertical pairs of blocks has separate sense/inhibit lines. Each core plane was about 10&#190; &#215; 6&#190; &#215; &#8539; inches." class="hilite" height="312" src="http://static.righto.com/images/ibm-360-mem/core-plane-50-w600.jpg" title="A Model 50 core plane is arranged as a grid of cores. The Y lines run horizontally. X and sense/inhibit lines run vertically. The sense/inhibit lines form loops at the top and bottom. Each of the four vertical pairs of blocks has separate sense/inhibit lines. Each core plane was about 10&#190; &#215; 6&#190; &#215; &#8539; inches." width="600" /></a><div class="cite">A Model 50 core plane is arranged as a grid of cores. The Y lines run horizontally. X and sense/inhibit lines run vertically. The sense/inhibit lines form loops at the top and bottom. Each of the four vertical pairs of blocks has separate sense/inhibit lines. Each core plane was about 10&#190; &#215; 6&#190; &#215; &#8539; inches.</div></p> <p>To store a word of memory, multiple core planes were stacked together, one plane for each bit in the word. The X and Y drive lines passed through all the core planes, selecting one bit of the word from each plane. Each plane had a separate sense line to read that bit.<span id="fnref:senseamps"><a class="ref" href="#fn:senseamps" rel="footnote">7</a></span> The IBM core stack below stored a 16-bit word along with two parity bits, so there were 18 core planes.</p> <p><a href="http://static.righto.com/images/ibm-360-mem/core-module-bench.jpg"><img alt="The core memory consisted of 18 core planes stacked in horizontal layers. Connections to the edge of each plane are visible at the front. The cores themselves are not visible in this assembled array." class="hilite" height="309" src="http://static.righto.com/images/ibm-360-mem/core-module-bench-w600.jpg" title="The core memory consisted of 18 core planes stacked in horizontal layers. Connections to the edge of each plane are visible at the front. The cores themselves are not visible in this assembled array." width="600" /></a><div class="cite">The core memory consisted of 18 core planes stacked in horizontal layers. Connections to the edge of each plane are visible at the front. The cores themselves are not visible in this assembled array.</div></p> <p>Writing to core memory required additional wires called the inhibit lines, one per core plane. In the write process, a current passed through the X and Y lines, flipping the selected cores (one per plane) to the 1 state, storing all 1's in the word. To write a 0 in a bit position, the plane's inhibit line was energized with half current, opposite to the X line. The currents canceled out, so the core in that plane would not flip to 1 but would remain 0. Thus, the inhibit line inhibited the core from flipping to 1.</p> <p>To summarize, a typical core memory plane had four wires through each core: X and Y drive lines, a sense line, and an inhibit line. These planes were stacked to form an array, one plane for each bit in the word. By energizing an X line and a Y line, one core in each plane could be magnetized, either for reading or writing. The sense line was used to read the contents of the bit, while the inhibit line was used to write a 0 (by inhibiting the writing of a 1).</p> <h2>Some interesting features of the IBM core memory stack</h2> <p>The IBM core memory I examined was fairly advanced, so there were some enhancements to the generic core memory described above. This core memory used the same wire for sense and inhibit, so there were three wires through each core instead of four, as you can see in the earlier closeup photo. This made manufacturing simpler, but complicated the circuitry. In addition, the core plane has some unusual features to reduce the amount of noise picked up by the sense wire, making it feasible to detect the tiny voltage in the sense wire. First, each plane had four sense/inhibit wires, not one. Since a sense wire only passed through 1/4 of the plane, it picked up less noise.<span id="fnref:senseamps"><a class="ref" href="#fn:senseamps" rel="footnote">7</a></span> In addition, the sense wire was shifted between the top half of the plane and the bottom half, so noise induced by an X line in one half would be canceled out in the second half. The photo below shows the sense wire (green) shifting over.</p> <p><a href="http://static.righto.com/images/ibm-360-mem/sense-shift.jpg"><img alt="This closeup of the core plane shows the X and Y wires (red) and the sense wire (green) threaded through cores. Note that the sense wire shifts over two columns in the middle of the plane to reduce noise. Building planes with this shift used a patented manufacturing technique. Wires are connected to the frame of the core plane on the right." class="hilite" height="297" src="http://static.righto.com/images/ibm-360-mem/sense-shift-w500.jpg" title="This closeup of the core plane shows the X and Y wires (red) and the sense wire (green) threaded through cores. Note that the sense wire shifts over two columns in the middle of the plane to reduce noise. Building planes with this shift used a patented manufacturing technique. Wires are connected to the frame of the core plane on the right." width="500" /></a><div class="cite">This closeup of the core plane shows the X and Y wires (red) and the sense wire (green) threaded through cores. Note that the sense wire shifts over two columns in the middle of the plane to reduce noise. Building planes with this shift used a <a href="https://patents.google.com/patent/US3314131A/en?oq=3314131">patented</a> manufacturing technique. Wires are connected to the frame of the core plane on the right.</div></p> <p>Each core plane in this memory array was rectangular, with 130 Y drive lines and 256 X drive lines. Since there was a core at each intersection, this yielded 33,280 cores. You might notice that this isn't a power of 2; the core plane held 32,768 cores for regular storage (32K) along with 512 extra cores for I/O storage. This extra storage was called "bump" storage. It was not part of the address space but was accessed through special circuitry.<span id="fnref:bump"><a class="ref" href="#fn:bump" rel="footnote">3</a></span></p> <p><a href="http://static.righto.com/images/ibm-360-mem/end-panel.jpg"><img alt="After passing through all the planes, the drive lines reached this circuit board. The Y lines (left and right sides) were returned to the drive circuitry through the yellow cables in the center. The X lines (top and bottom) were sent back through the stack for phase reversal." class="hilite" height="268" src="http://static.righto.com/images/ibm-360-mem/end-panel-w500.jpg" title="After passing through all the planes, the drive lines reached this circuit board. The Y lines (left and right sides) were returned to the drive circuitry through the yellow cables in the center. The X lines (top and bottom) were sent back through the stack for phase reversal." width="500" /></a><div class="cite">After passing through all the planes, the drive lines reached this circuit board. The Y lines (left and right sides) were returned to the drive circuitry through the yellow cables in the center. The X lines (top and bottom) were sent back through the stack for phase reversal.</div></p> <p>The X and Y drive lines in a core array pass through all the planes in the stack. Core arrays typically used jumper wires between the core planes, requiring a large number of soldered connections. One innovation in IBM's core memory design was to weld the planes together directly. Alternating pins along the edges of the plane were bent up or down and welded to the neighboring plane, simplifying manufacturing. This structure is shown in the photo below. <!-- Pugh page 189 --></p> <!-- ![Alternating pins in a plane are welded to the previous or next plane to join all the X and Y drive wires.](plane-wiring-diagram.png "w300") --> <p><a href="http://static.righto.com/images/ibm-360-mem/stack.jpg"><img alt="Eighteen core planes were stacked to store two bytes along with two parity bits. Each plane had metal pins that were alternately bent up and down, and welded to tabs on the neighboring planes. The black and yellow wires connected the lines to the driver circuitry. The X lines are visible in this photo." class="hilite" height="333" src="http://static.righto.com/images/ibm-360-mem/stack-w350.jpg" title="Eighteen core planes were stacked to store two bytes along with two parity bits. Each plane had metal pins that were alternately bent up and down, and welded to tabs on the neighboring planes. The black and yellow wires connected the lines to the driver circuitry. The X lines are visible in this photo." width="350" /></a><div class="cite">Eighteen core planes were stacked to store two bytes along with two parity bits. Each plane had metal pins that were alternately bent up and down, and welded to tabs on the neighboring planes. The black and yellow wires connected the lines to the driver circuitry. The X lines are visible in this photo.</div></p> <h2>Systems using this core memory</h2> <p>I'll now take a detour to describe the systems that used this core array, and then discuss the circuitry that supported the array. IBM used several different core memory systems in the S/360 line. The core array in this article was used in the Model 40, Model 50, and the FAA's IBM 9020 air traffic control system.</p> <h3>IBM System/360 Model 40</h3> <p>The Model 40 was a popular midrange computer for scientific and commercial applications and was one of IBM's most profitable computers. It <a href="https://books.google.com/books?id=pFzxLUAnSS8C&amp;lpg=PA88&amp;dq=ibm%20360%20rental%20price%20%22model%2030%22%20-computerworld&amp;pg=PA88#v=onepage&amp;q=ibm%20360%20&amp;f=false">typically</a> <a href="https://books.google.com/books?id=xLTiBQAAQBAJ&amp;lpg=PA213&amp;dq=ibm%20360%20rental%20price%20%22model%2050%22%20-computerworld&amp;pg=PA213#v=onepage&amp;q=%20%22model%2040%22%20&amp;f=false">rented</a> for about $9,000-$17,000 per month and brought IBM over a billion dollars in revenue by 1972. <!-- Pugh page 790 note 34 --> To achieve better performance than the low-end models, the Model 40 used a two-byte datapath; the core memory system was designed to fetch two bytes at a time rather than one. <!--http://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/Padegs-IBM360-sep81.pdf--></p> <p><a href="http://static.righto.com/images/ibm-360-mem/IBM360-40-photo.jpg"><img alt="The IBM S/360 Model 40. Photo source unknown." class="hilite" height="300" src="http://static.righto.com/images/ibm-360-mem/IBM360-40-photo-w450.jpg" title="The IBM S/360 Model 40. Photo source unknown." width="450" /></a><div class="cite">The IBM S/360 Model 40. Photo source unknown.</div></p> <p>The IBM S/360 Model 40 was a compact system (for the time), with the computer in one frame known as the main frame. This frame held the circuit cards that make up the CPU, along with the power supplies, microcode (stored on metalized mylar sheets read by transformers), and core memory storage. (In contrast, large 360 systems might have dozens of frames.) <!-- 40Maint page 161 --> The 128 KB core memory unit was mounted in the front right of the Model 40's frame, behind the console. The Model 40 could support an additional 128 KB of core memory, but this required a second storage frame, a five foot by two foot cabinet weighing 610 pounds.</p> <h3>IBM System/360 Model 50</h3> <p><a href="http://static.righto.com/images/ibm-360-mem/ibm-360-50.png"><img alt="IBM S/360 Model 50. The console was attached to the main frame, about 5 feet deep. The storage frame and power frame are the black cabinets at the back. Photo from Pinterest." class="hilite" height="308" src="http://static.righto.com/images/ibm-360-mem/ibm-360-50-w450.png" title="IBM S/360 Model 50. The console was attached to the main frame, about 5 feet deep. The storage frame and power frame are the black cabinets at the back. Photo from Pinterest." width="450" /></a><div class="cite">IBM S/360 Model 50. The console was attached to the main frame, about 5 feet deep. The storage frame and power frame are the black cabinets at the back. Photo from <a href="https://www.pinterest.com/pin/123145371033491049/">Pinterest</a>.</div></p> <p>The Model 50 was a powerful mid-range machine in the System/360 lineup, significantly faster than the Model 40. The Model 50 <a href="https://books.google.com/books?id=pFzxLUAnSS8C&amp;lpg=PA88&amp;dq=ibm%20360%20rental%20price%20%22model%2030%22%20-computerworld&amp;pg=PA88#v=onepage&amp;q=ibm%20360%20&amp;f=false">typically</a> <a href="https://books.google.com/books?id=xLTiBQAAQBAJ&amp;lpg=PA213&amp;dq=ibm%20360%20rental%20price%20%22model%2050%22%20-computerworld&amp;pg=PA213#v=onepage&amp;q=%20%22model%2040%22%20&amp;f=false">rented</a> for about $18,000 - $32,000 per month. The diagram below shows how the Model 50 consisted of three frames: the CPU frame (main frame) in front with the console, a power frame holding the power supplies, and the storage frame. In the photo above, the main frame is orange and about 2.5 feet wide by 5 feet deep. The power frame is the black cabinet behind the main frame, about 5 feet wide and 2 feet deep. The storage frame is the same size, on the left behind the women. The storage frame could hold up to 256 KB; by adding a second storage frame behind it, the Model 50 could be expanded to 512 KB. <!-- It could support 8 more megabytes externally by adding IBM 2361 "Large Capacity Storage" units; each held 2 megabytes of core memory and weighed a ton. --></p> <p><a href="http://static.righto.com/images/ibm-360-mem/ibm-360-50-frames.png"><img alt="This diagram shows the three frames that made up the basic S/360 Model 50. Source: Model 50 Maintenance Manual page 138." class="hilite" height="326" src="http://static.righto.com/images/ibm-360-mem/ibm-360-50-frames-w500.png" title="This diagram shows the three frames that made up the basic S/360 Model 50. Source: Model 50 Maintenance Manual page 138." width="500" /></a><div class="cite">This diagram shows the three frames that made up the basic S/360 Model 50. Source: <a href="http://www.bitsavers.org/pdf/ibm/360/fe/2050/SY22-2832-4_360-50Maint.pdf">Model 50 Maintenance Manual</a> page 138.</div></p> <h3>The FAA's IBM 9020 multiprocessor system</h3> <p>The core memory array I examined was from an air traffic control system called the IBM 9020. In the mid-1960s, the FAA realized that computerization was necessary to handle increased air traffic. From the early 1970s to the 1990s, the FAA used the <a href="https://en.wikipedia.org/wiki/IBM_9020">IBM 9020</a> to track flights and integrate radar data. The 9020 was a multiprocessor system designed for reliability, consisting of up to 12 mainframes connected together, driving dozens of air traffic displays (the classic round CRT displays). The system used modified Model 65 computers to process data and used modified Model 50 computers for I/O control (essentially expensive DMA controllers).<span id="fnref:modifications"><a class="ref" href="#fn:modifications" rel="footnote">4</a></span></p> <p><a href="http://static.righto.com/images/ibm-360-mem/jacksonville.jpg"><img alt="FAA center in Jacksonville using multiple IBM mainframes. Three Model 65s are along the left wall, while three Model 50s are towards the back. The control panel in front of the Model 50s is not a computer but a system monitoring panel. From FAA: A historical perspective, chapter 4." class="hilite" height="383" src="http://static.righto.com/images/ibm-360-mem/jacksonville-w500.jpg" title="FAA center in Jacksonville using multiple IBM mainframes. Three Model 65s are along the left wall, while three Model 50s are towards the back. The control panel in front of the Model 50s is not a computer but a system monitoring panel. From FAA: A historical perspective, chapter 4." width="500" /></a><div class="cite">FAA center in Jacksonville using multiple IBM mainframes. Three Model 65s are along the left wall, while three Model 50s are towards the back. The control panel in front of the Model 50s panel is not a computer but a system monitoring panel. From <a href="https://www.faa.gov/about/history/historical_perspective/">FAA: A historical perspective</a>, chapter 4.</div></p> <h1>The complete core memory system</h1> <!-- Main Frame: 40Maint page 143 --> <!-- Memory system diagram in FE Diagram page 14 --> <!-- Memory unit with dimensions: 40 FE Handbook page 37 --> <p>The stack of core planes isn't enough to implement a working memory; a lot of circuitry is required to generate the appropriate X and Y signals, amplify the sense line signals for reads, and drive the inhibit lines for writes. In this section, I explain how the stack of core memory planes was used as part of a full memory system.</p> <p>Each X and Y line through the core plane required two transistor drivers, one to generate the current pulse for reading and one to generate the opposite current pulse for writing. Thus, with 128 X lines and 128 Y lines,<span id="fnref:count"><a class="ref" href="#fn:count" rel="footnote">5</a></span> a total of 512 drive transistors were required, a very large number of transistors. These were provided by 16 "driver gate" cards, each with 32 drive transistors, plugged into each core stack.<span id="fnref:driver"><a class="ref" href="#fn:driver" rel="footnote">10</a></span> The photo below shows the 16 driver gate boards (each with 32 transistors) plugged into the core array. </p> <!-- [^minimize]: Many core memory systems, such as the [IBM 1401](http://www.righto.com/2015/08/examining-core-memory-module-inside.html) minimized the number of drive transistors required through matrix drive techniques. The S/360 designers used transistors that could generate the high-current pulses directly, eliminating the complex matrix drive, but requiring many transistors. --> <p><a href="http://static.righto.com/images/ibm-360-mem/module-with-boards.jpg"><img alt="Core memory array with transistor driver boards." class="hilite" height="470" src="http://static.righto.com/images/ibm-360-mem/module-with-boards-w500.jpg" title="Core memory array with transistor driver boards." width="500" /></a><div class="cite">Core memory array with transistor driver boards.</div></p> <p>The photo below shows a closeup one of the transistor "driver gate" cards, with a transistor and diode for each line.<span id="fnref:drivecard"><a class="ref" href="#fn:drivecard" rel="footnote">6</a></span> Cards like this with discrete transistors were unusual in the IBM System/360, which for the most part used <a href="https://en.wikipedia.org/wiki/IBM_Solid_Logic_Technology">SLT modules</a>, hybrid modules somewhat like integrated circuits.</p> <p><a href="http://static.righto.com/images/ibm-360-mem/transistor-card.jpg"><img alt="Each core array used 16 of these driver cards for the X and Y drive lines. Each card had 32 drive transistors, as well as diodes." class="hilite" height="314" src="http://static.righto.com/images/ibm-360-mem/transistor-card-w400.jpg" title="Each core array used 16 of these driver cards for the X and Y drive lines. Each card had 32 drive transistors, as well as diodes." width="400" /></a><div class="cite">Each core array used 16 of these driver cards for the X and Y drive lines. Each card had 32 drive transistors, as well as diodes.</div></p> <p>The core array and the drive transistors generated significant heat so the assembly was cooled by a fan mounted underneath. Plastic covers over the boards directed the airflow, as well as providing protection for the boards. The photo below shows the core memory mounted on a metal frame with the fan attached.</p> <p><a href="http://static.righto.com/images/ibm-360-mem/memory-unit-with-covers1.jpg"><img alt="Core memory array with the fan mounted below and plastic covers installed. The core planes are at the back and the circuit cards are at the front. This assembly is about 2 feet tall." class="hilite" height="504" src="http://static.righto.com/images/ibm-360-mem/memory-unit-with-covers1-w350.jpg" title="Core memory array with the fan mounted below and plastic covers installed. The core planes are at the back and the circuit cards are at the front. This assembly is about 2 feet tall." width="350" /></a><div class="cite">Core memory array with the fan mounted below and plastic covers installed. The core planes are at the back and the circuit cards are at the front. This assembly is about 2 feet tall.</div></p> <p>The photo below shows the 128 KB unit, consisting of two core arrays (on the left), along with about 62 small circuit cards of supporting circuitry. This unit was rather bulky, almost three feet long and two feet high.<span id="fnref:dimensions"><a class="ref" href="#fn:dimensions" rel="footnote">8</a></span> Over half of these circuit cards were sense preamplifiers to read the weak signals from the core planes.<span id="fnref:senseamps"><a class="ref" href="#fn:senseamps" rel="footnote">7</a></span> Other cards decoded the address to select the right lines<span id="fnref:addressing"><a class="ref" href="#fn:addressing" rel="footnote">9</a></span>, handled timing, or did other tasks. The slower Model 40 computer accessed one of the two arrays at a time, reading 16 bits (a half-word). In contrast, the Model 50 accessed both arrays in parallel, reading a full 32-bit word at once for higher performance.</p> <p><a href="http://static.righto.com/images/ibm-360-mem/core-module.png"><img alt="128 KB core module assembly. Two core memory stacks are at the left, and the supporting circuitry is on the right. Fans (black) are at the bottom. Photo from IBM&#39;s 360 and Early 370 Systems." class="hilite" height="391" src="http://static.righto.com/images/ibm-360-mem/core-module-w400.png" title="128 KB core module assembly. Two core memory stacks are at the left, and the supporting circuitry is on the right. Fans (black) are at the bottom. Photo from IBM&#39;s 360 and Early 370 Systems." width="400" /></a><div class="cite">128 KB core module assembly. Two core memory stacks are at the left, and the supporting circuitry is on the right. Fans (black) are at the bottom. Photo from <a href="https://amzn.to/2U0NBMk">IBM's 360 and Early 370 Systems</a>.</div></p> <p>The diagram below shows how two of these core memory units (i.e. four stacks of 18 planes) were installed in the Model 50's storage frame, providing 256 kilobytes of storage. This frame was about 5 feet by 2 feet and 6 feet tall and weighed 1150 pounds. <!-- 50Maint page 128 shows layout of the frames, page 138 shows the frames. --> <!-- Diagram of storage system FE Handbook page 39 --> The storage frame also held the optional "storage protect" feature, that protected memory blocks from access by other programs. Note that even though the core planes themselves were fairly compact, the entire storage frame was rather large. This diagram also illustrates why the cabinets were called frames: it was built from a frame of metal bars with side panels hung off the frame to enclose it.</p> <p><a href="http://static.righto.com/images/ibm-360-mem/ibm-360-50-mem-frame-colored.png"><img alt="The storage frame of the Model 50 held two 128-kilobyte core memory units (red and blue), along with other memory circuitry. Diagram based on the Parts Catalog." class="hilite" height="492" src="http://static.righto.com/images/ibm-360-mem/ibm-360-50-mem-frame-colored-w350.png" title="The storage frame of the Model 50 held two 128-kilobyte core memory units (red and blue), along with other memory circuitry. Diagram based on the Parts Catalog." width="350" /></a><div class="cite">The storage frame of the Model 50 held two 128-kilobyte core memory units (red and blue), along with other memory circuitry. Diagram based on the <a href="S123-0420-4_2050_Illust_Parts_Cat_Jul70.pdf">Parts Catalog</a>.</div></p> <!-- [^storageframe]: According to the [Maintenance Manual](http://bitsavers.org/pdf/ibm/360/fe/2050/SY22-2832-4_360-50Maint.pdf), the main frame held the microcode (CROS), while the storage frame held the small "storage protect" core memory that allowed programs to protect their memory from other programs. page 138, 139 The [Parts Catalog](http://bitsavers.org/pdf/ibm/360/fe/2050/S123-0420-4_2050_Illust_Parts_Cat_Jul70.pdf) describes the opposite; it shows (pages 63 and 83) that the storage frame held the microcode (CROS). The main frame held storage protect memory (page 43) in Gate A (see FE Handbook page 24). Apparently the location of the microcode storage changed during the course of the Model 50. FE Handbook page 51 shows storage protect in storage frame. --> <h1>Other IBM S/360 memory systems</h1> <p>I've described the core memory used in the Model 40 and Model 50, but high-end models used even larger core memory systems based on different core planes. The photo below shows a high-performance Model 85 system. The four cabinets in front are IBM 2365 Processor Storage; each one held 256 kilobytes of core memory and weighed over a ton. High-end systems could also use the 2385 Processor Storage holding 2 megabytes of memory in a sprawling 400 square foot unit that weighed almost 8 tons. The IBM 2361 <a href="https://en.wikipedia.org/wiki/IBM_2361_Large_Capacity_Storage">Large Capacity Storage</a> (LCS) also held 2 megabytes; it was slower but weighed just one ton. It used large 4-foot core planes that looked more like screen doors than typical core planes.<span id="fnref:weight"><a class="ref" href="#fn:weight" rel="footnote">1</a></span></p> <p><a href="http://static.righto.com/images/ibm-360-mem/model85.jpg"><img alt="IBM System/360 Model 85. The double-H cabinet in the middle is the processor. Each cabinet in the front left held 256 kilobytes of storage. Photo from IBM." class="hilite" height="285" src="http://static.righto.com/images/ibm-360-mem/model85-w450.jpg" title="IBM System/360 Model 85. The double-H cabinet in the middle is the processor. Each cabinet in the front left held 256 kilobytes of storage. Photo from IBM." width="450" /></a><div class="cite">IBM System/360 Model 85. The double-H cabinet in the middle is the processor. Each cabinet in the front left held 256 kilobytes of storage. Photo from IBM.</div></p> <h1>Conclusion</h1> <p>Computers in the early 1950s used memory technologies such as mercury delay lines and Williams tubes that were small and slow. Core memory was much superior and it led to the rise of the computer era in the late 1950s and 1960s. As manufacturing technology improved, the price of core memory rapidly dropped, from several dollars per bit to a penny per bit. By 1970, IBM was producing over 20 billion cores per year. <!-- Memories that shaped an industry page 243 --></p> <p>However, even with its steady improvements, core memory was not able to survive the introduction of integrated circuits and semiconductor memory in the late 1960s. <!-- 1967: Systme/360 91 used semiconductor memory for storage protect. --> In 1968, IBM switched its development efforts from core memory to semiconductor memory. This led to the introduction in 1971 of the world's first commercial computer with semiconductor memory, the IBM S/370 Model 145. <!-- Memories that shaped an industry page 253 --> The capacity of integrated circuit memories grew exponentially as their price fell, as described by Moore's law. As a result, semiconductors took over the memory market from magnetic cores by the end of the 1970s. Now, thanks to DRAM memories, modern computers have memory measured in gigabytes rather than kilobytes and memory comes in a small <a href="https://en.wikipedia.org/wiki/DIMM">DIMM</a> module rather than a large cabinet.</p> <!-- Sales 16,000 S/360 systems in use as of 1968 (over 60% of IBM computers were S/360) Model 30 had highest value installed base, Model 40 second "system profit" for Model 30 was 32%, Model 40 35%, 65 24%, 75 and 85 -17% https://people.cs.clemson.edu/~mark/acs_end.html Models 30 and 40 were most profitable, over half of systems sold. https://en.wikipedia.org/wiki/IBM_System/360_Model_30 5000 Model 40 or larger installed by end of 1970 evans 1986 --> <p>I announce my latest blog posts on Twitter, so follow me <a href="https://twitter.com/kenshirriff">@kenshirriff</a> for future articles. I also have an <a href="https://www.righto.com/feeds/posts/default">RSS feed</a>. I've written before about <a href="https://www.righto.com/2015/08/examining-core-memory-module-inside.html">core memory in the IBM 1401</a> and <a href="https://www.righto.com/2019/01/inside-apollo-guidance-computers-core.html">core memory in the Apollo Guidance Computer</a>. Thanks to Robert Garner for supplying the core array. Thanks to Gio Wiederhold and Marianne Siroker for research assistance.</p> <h1>More information</h1> <p>In the video below, Marc, Carl, and I wired up a different type of IBM core memory plane and manually read and wrote a bit. It was harder than we expected; the signal from a flipping core is very small and hard to distinguish from noise.</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/AwsInQLmjXc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <p>The book <a href="https://amzn.to/2D4x2cK">Memories That Shaped an Industry</a> describes the history of core memory in detail, with a focus on IBM. The book <a href="https://amzn.to/2E7ZxqP">IBM's 360 and early 370 systems</a> thoroughly describes the history of the S/360. The memory system used in the System/360 Model 40 is explained in <a href="http://bitsavers.org/pdf/ibm/360/fe/2040/SY22-2843-1_Model_40_Functional_Units_Mar70.pdf">Model 40 Functional Units</a>, page 141 onwards. See <a href="http://ibm360.info">ibm360.info</a> for documents on the FAA's IBM 9020 system.</p> <!-- Processing unit diagram: 50Maint p136, p15 Diagram of storage: 40Maint p137 Main explanation Model_40_Functional_Units p143 on. Plane diagram p175. Cards p184. --> <h2>Notes and references</h2> <div class="footnote"> <ol> <li id="fn:weight"> <p>The weight of additional memory depended on the computer model. For the Model 40, adding 128K to get the "H" configuration requires the addition of Frame 2, weighing 610 pounds. For the Model 50, the first 256K ("H" configuration) fit in Frame 2 (1150 pounds), while the next 256K ("I" configuration) required the addition of Frame 4, which weighed 1500 pounds. So, depending on the particular computer, 128K weighed 575, 610, or 750 pounds. For details, see the <a href="http://www.bitsavers.org/pdf/ibm/360/fe/GC22-6820-12_System_360_Installation_Manual_Physical_Planning.pdf">physical planning guide</a>, which provides the dimensions and weight of the various S/360 components.&#160;<a class="footnote-backref" href="#fnref:weight" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p> </li> <li id="fn:memories"> <p>The book <a href="https://amzn.to/2X9mIrj">Memories That Shaped an Industry</a> discusses how IBM's leadership in core memory development made the IBM System/360 possible. IBM's near-disaster in developing software for the S/360 led to the legendary book <a href="https://amzn.to/2Z9a6Cv">The Mythical Man-Month</a> by Fred Brooks, who managed development of the S/360 hardware and operating system.&#160;<a class="footnote-backref" href="#fnref:memories" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p> </li> <li id="fn:bump"> <p>Each core planes used in the Model 40 and 50 computers had an extra 512 bits of "bump" storage. This extra storage held information on I/O operations (the "unit control word") without using the main storage. The computers also had "local storage", a separate small core storage used for registers.&#160;<a class="footnote-backref" href="#fnref:bump" rev="footnote" title="Jump back to footnote 3 in the text">&#8617;</a></p> </li> <li id="fn:modifications"> <p>The computers used in the IBM 9020 system were based on the S/360 Model 50 and Model 65, but had modifications to operate in a networked high-availability system. For instance, most console controls were disabled except during maintenance to avoid accidental button presses. The computers also included address translation so they could access multiple shared external storage units, allowing failover of storage. The Model 65's instruction set was extended with highly specialized instructions such as CVWL (convert weather lines) that converted weather data coordinates for the displays, as well as instructions for multiprocessing. (Details in <a href="http://www.ibm360.info/7201%20FETOM.pdf">FETOM</a>.)</p> <p>The IBM 9020 network architecture, using Model 50 computers as I/O controllers connected to Model 65 computers, may seem pointlessly complex. It turns out that is the case. According to <a href="https://amzn.to/2G9NVDp">Brooks</a>, <!-- pages 130-132 --> IBM originally designed a reasonable FAA system with just Model 50 computers. However, the (somewhat arbitrary) design specification created by MITRE required separate processing and I/O tiers in the network, so IBM added the Model 65 computers even though they were unnecessary and made the system less reliable.&#160;<a class="footnote-backref" href="#fnref:modifications" rev="footnote" title="Jump back to footnote 4 in the text">&#8617;</a></p> </li> <li id="fn:count"> <p>The core plane had 256 X lines and 130 Y lines, but the circuitry drove 128 X lines and 128 Y lines, so you might wonder why the numbers don't match. There are two factors here. First, a technique called "phase reversal"<span id="fnref:phasereversal"><a class="ref" href="#fn:phasereversal" rel="footnote">11</a></span> used each X line twice, in opposite directions, so the 256 physical X lines through the core plane only required 128 X drivers, reducing the amount of drive hardware required. Second, the 2 extra Y lines for bump storage were driven by separate circuitry. &#160;<a class="footnote-backref" href="#fnref:count" rev="footnote" title="Jump back to footnote 5 in the text">&#8617;</a></p> </li> <li id="fn:drivecard"> <p>An X or Y line was connected to a read gate card at one end, and a write gate card at the other end; these lines had a high-current (360 mA) pulse for 400-700 nanoseconds to flip a core. The current path through a line was as follows: the +60V supply was connected through a terminating resistor to a "terminator gate", a transistor that controlled the timing. Then through the diode on a gate card, through the cores, and through a transistor on the gate card at the other end. Finally, the current passed through a driver card to ground. (The gate card is the card full of transistors plugged directly into the array while the driver card does part of the address decoding.) The memory system is explained in <a href="http://bitsavers.org/pdf/ibm/360/fe/2040/SY22-2843-1_Model_40_Functional_Units_Mar70.pdf">Model 40 Functional Units</a>, page 141 onwards. &#160;<a class="footnote-backref" href="#fnref:drivecard" rev="footnote" title="Jump back to footnote 6 in the text">&#8617;</a></p> </li> <li id="fn:senseamps"> <p>One unusual feature of this core plane is that it had four separate sense/inhibit lines, each covering 1/4 of the plane. This reduced the length of each sense line and thus reduced the noise it picked up, but required four times as many amplifiers to read the sense lines. Since there were 18 planes (18 bits) in the core array, 72 sense pre-amplifiers were required for each of the two core arrays. The pre-amplifiers were differential amplifiers, amplifying the difference between the two sense line inputs. (The idea is that noise on both inputs will cancel out, yielding just the desired signal.) The outputs from all the pre-amplifiers were fed into 18 "final amplifiers" yielding the 18-bit output (2 bytes + 2 parity bits) from the array. The sense and inhibit lines were shared in this core plane, so there also 72 inhibit lines. One circuit card implemented both the sense preamp and the inhibit driver for 4 lines, so the two stacks of core planes required 36 Sense Preamp and Z [i.e. inhibit] Driver cards.&#160;<a class="footnote-backref" href="#fnref:senseamps" rev="footnote" title="Jump back to footnote 7 in the text">&#8617;</a></p> </li> <li id="fn:dimensions"> <p>The diagram below shows the dimensions of the 128 KB core memory unit, containing two sets of core planes. Each colored block is a core array of 18 planes, corresponding to the array shown at the beginning of this article.</p> <p><a class="footnote-backref" href="#fnref:dimensions" rev="footnote" title="Jump back to footnote 8 in the text">&#8617;</a><a href="http://static.righto.com/images/ibm-360-mem/memory-unit-labeled.png"><img alt="The 128 KB core memory unit contained two arrays and was almost three feet long." class="hilite" height="449" src="http://static.righto.com/images/ibm-360-mem/memory-unit-labeled-w500.png" title="The 128 KB core memory unit contained two arrays and was almost three feet long." width="500" /></a><div class="cite">The 128 KB core memory unit contained two arrays and was almost three feet long.</div></p> </li> <li id="fn:addressing"> <p>The Model 50 core unit with two core arrays held 128 kilobytes as 32K words of 32 bits plus parity. Addressing one of 32K words required 15 address bits, decoded as follows. For X, 4 bits selected one of 16 "gate decoder lines" and 3 bits selected one of 8 "drivers". These two selections were combined in the transistor matrix to select one of the 128 X drive lines. The Y address was decoded similarly, with 7 bits selecting one of 128 Y lines. One bit controls "phase reversal", selecting the polarity of the Y drive line. Although the System/360 was byte-addressable, accessing a specific byte in a word was done by the processor, rather than by the memory system. Because the Model 40 read half-words at a time from memory, it used a slightly different decoding scheme. One address bit was used to select between the two core arrays in the unit and only one array was accessed at a time.&#160;<a class="footnote-backref" href="#fnref:addressing" rev="footnote" title="Jump back to footnote 9 in the text">&#8617;</a></p> </li> <li id="fn:driver"> <p>Each gate driver card had 32 transistors in a grid, with 8 inputs to transistor emitters and 4 inputs to transistor bases. By activating one base input and one emitter input, the corresponding transistor turned on, energizing the corresponding line. Thus, each card allowed 32 lines to be controlled by selecting one of 4 inputs, and one of 8 inputs. Each card also had 32 diodes that provided the current into the appropriate line. If a transistor was activated, the diode on the card connected to the opposite end of the line sourced the current.&#160;<a class="footnote-backref" href="#fnref:driver" rev="footnote" title="Jump back to footnote 10 in the text">&#8617;</a></p> </li> <li id="fn:phasereversal"> <p>One subtlety of the coincident-current design is that if the wires pass through the core in opposite directions, the currents subtract instead of add. In the diagram below, the wires pass through the left core in the same direction so the currents coincide. But in the right core, the wires pass through in opposite directions, so the currents cancel out. This is important because neighboring cores are rotated 90&deg; to prevent magnetic coupling. In order for currents to coincide, the direction of current must be reversed in every other line. To accomplish this reversal, lines through the core stack were wired alternating bottom-to-top versus top-to-bottom.</p> <p><a href="http://static.righto.com/images/ibm-360-mem/core-cancel.png"><img alt="If currents pass through a core in the same direction, they add. This is the principle behind &quot;coincident-current&quot; core memory. However, if currents pass through a core in opposite directions (as on the right), the currents cancel." class="hilite" height="152" src="http://static.righto.com/images/ibm-360-mem/core-cancel-w250.png" title="If currents pass through a core in the same direction, they add. This is the principle behind &quot;coincident-current&quot; core memory. However, if currents pass through a core in opposite directions (as on the right), the currents cancel." width="250" /></a><div class="cite">If currents pass through a core in the same direction, they add. This is the principle behind "coincident-current" core memory. However, if currents pass through a core in opposite directions (as on the right), the currents cancel.</div></p> <p>The "phase reversal" technique used this cancellation to cut the number of X drive lines in half for this core memory plane. The trick was to run the X lines through half of the core plane normally, and then through the other half of the core plane "backward". When an X line and a Y line are activated, two cores will receive both X and Y currents. But only one of these cores will receive the currents in the same direction and will flip; for the other core, the currents will cancel out. On the other hand, by reversing the current through the Y line, the opposite cancellation will occur and the other core will be selected. Thus, phase reversal allows the system to support twice as many cores with essentially the same driver hardware, just switching the Y current direction as needed.</p> <p><a class="footnote-backref" href="#fnref:phasereversal" rev="footnote" title="Jump back to footnote 11 in the text">&#8617;</a><a href="http://static.righto.com/images/ibm-360-mem/phase-reversal-diagram.png"><img alt="On the left, the coincident currents select a core in segment A. By reversing the direction of the Y current, a core in segment B is selected instead. With this phase reversal technique, one wire went through two X rows. Diagram based on Model 40 Functional Units page 147." class="hilite" height="316" src="http://static.righto.com/images/ibm-360-mem/phase-reversal-diagram-w600.png" title="On the left, the coincident currents select a core in segment A. By reversing the direction of the Y current, a core in segment B is selected instead. With this phase reversal technique, one wire went through two X rows. Diagram based on Model 40 Functional Units page 147." width="600" /></a><div class="cite">On the left, the coincident currents select a core in segment A. By reversing the direction of the Y current, a core in segment B is selected instead. With this phase reversal technique, one wire went through two X rows. Diagram based on <a href="http://bitsavers.org/pdf/ibm/360/fe/2040/SY22-2843-1_Model_40_Functional_Units_Mar70.pdf">Model 40 Functional Units</a> page 147.</div></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/7886102068431496005' onclick=''> 19 comments: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/6264947694886887540/7886102068431496005' 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=7886102068431496005&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=7886102068431496005&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=7886102068431496005&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=7886102068431496005&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=7886102068431496005&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=7886102068431496005&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/ibm360" rel='tag'>ibm360</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='http://static.righto.com/images/ibm-360/model85-w500.jpg' itemprop='image_url'/> <meta content='6264947694886887540' itemprop='blogId'/> <meta content='8760983637929999128' itemprop='postId'/> <a name='8760983637929999128'></a> <h3 class='post-title entry-title' itemprop='name'> <a href="https://www.righto.com/2019/04/iconic-consoles-of-ibm-system360.html">Iconic consoles of the IBM System/360 mainframes, 55 years old</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-8760983637929999128' itemprop='description articleBody'> <p>The IBM System/360 was a groundbreaking family of mainframe computers <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PR360.html">announced</a> on April 7, 1964. Designing the System/360 was an extremely risky "bet-the-company" project for IBM, costing over <a href="http://www.computer-museum.ru/books/archiv/ibm36040.pdf">$5 billion</a>. Although the project ran into <a href="https://spectrum.ieee.org/tech-history/silicon-revolution/building-the-system360-mainframe-nearly-destroyed-ibm">severe problems</a>, especially with <a href="https://amzn.to/2IgPnqa">the software</a>, it was a huge success, one of the top three <a href="https://www.ibm.com/ibm/history/ibm100/us/en/icons/system360/">business accomplishments</a> of all time. System/360 set the direction of the computer industry for decades and popularized features such as the byte, 32-bit words, microcode, and standardized interfaces. The S/360 architecture was so successful that it is still supported by IBM's latest <a href="https://en.wikipedia.org/wiki/Z/Architecture">z/Architecture</a> mainframes, 55 years later.</p> <p>Prior to the System/360, IBM (like most computer manufacturers) produced multiple computers with entirely incompatible architectures. The System/360, on the other hand, was <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PR360.html">a complete line</a> of computers sharing a single architecture. The fastest model in the original lineup was 50 times as powerful as the slowest,<span id="fnref:performance"><a class="ref" href="#fn:performance" rel="footnote">1</a></span> but they could all run the same software.<span id="fnref:instructionsets"><a class="ref" href="#fn:instructionsets" rel="footnote">2</a></span> The general-purpose System/360 handled business and scientific applications and its name <a href="https://www.ibm.com/support/knowledgecenter/zosbasics/com.ibm.zos.zmainframe/zconc_s360history.htm">symbolized</a> "360 degrees to cover the entire circle of possible uses."<span id="fnref:fourpi"><a class="ref" href="#fn:fourpi" rel="footnote">3</a></span><span id="fnref:ibm370"><a class="ref" href="#fn:ibm370" rel="footnote">4</a></span></p> <p><a href="http://static.righto.com/images/ibm-360/model85.jpg"><img alt="Large computer room with an IBM System/360 Model 85. The CPU, the double-H unit in the center, weighed over 7 tons. Cabinets in front are core memory storage, holding 256 kilobytes each. Cabinets on the right are I/O channels, connected to I/O devices at the back: tape drives, printers, disk drives, and card readers. Photo from IBM." class="hilite" height="316" src="http://static.righto.com/images/ibm-360/model85-w500.jpg" title="Large computer room with an IBM System/360 Model 85. The CPU, the double-H unit in the center, weighed over 7 tons. Cabinets in front are core memory storage, holding 256 kilobytes each. Cabinets on the right are I/O channels, connected to I/O devices at the back: tape drives, printers, disk drives, and card readers. Photo from IBM." width="500" /></a><div class="cite">Large computer room with an IBM System/360 Model 85. The CPU, the double-H unit in the center, weighed over 7 tons. Cabinets in front are core memory storage, holding 256 kilobytes each. Cabinets on the right are I/O channels, connected to I/O devices at the back: tape drives, printers, disk drives, and card readers. Photo from IBM.</div></p> <p>Although the S/360 models shared a common architecture, internally they were completely different to support the wide range of cost and performance levels. Low-end models used simple hardware and an 8-bit datapath while advanced models used features such as wide datapaths, fast semiconductor registers, out-of-order instruction execution, and caches. These differences were reflected in the distinctive front panels of these computers, covered with lights and switches.</p> <p>This article describes the various S/360 models and how to identify them from the front panels. I'll start with the Model 30, a popular low-end system, and then go through the remaining models in order. Conveniently IBM assigned model numbers rationally, with the size and performance increasing with the model number, from the stripped-down but popular Model 20 to the high-performance Model 195.</p> <h2>IBM System/360 Model 30</h2> <p>The photo below shows a Model 30, one of the lower-end S/360 machines, with 8 to 64 kilobytes of magnetic core memory. The CPU cabinet was 5 feet high, 2'6" wide and 5'8" deep and weighed 1700 pounds, enormous by modern standards but a smaller computer for the time. System/360 computers were built from fingernail-sized modules called <a href="https://en.wikipedia.org/wiki/IBM_Solid_Logic_Technology">Solid Logic Technology</a> (SLT) that contained a few transistors and resistors, not as dense as integrated circuits. Although the Model 30 was the least powerful model when the System/360 line was announced, it was very popular and profitable, <a href="https://books.google.com/books?id=pFzxLUAnSS8C&amp;lpg=PA88&amp;dq=ibm%20360%20rental%20price%20%22model%2030%22%20-computerworld&amp;pg=PA88#v=onepage&amp;q=ibm%20360%20&amp;f=false">renting</a> for $8,000 a month and bringing IBM over a billion dollars in revenue by 1972. <!-- Pugh page 790 note 34 --> <!-- With a compatibility feature, the Model 30 provided a convenient upgrade path for customers using the earlier IBM 1401 computer. --></p> <p><a href="http://static.righto.com/images/ibm-360/ibm-30-chm.jpg"><img alt="IBM S/360 Model 30 on display at the Computer History Museum." class="hilite" height="414" src="http://static.righto.com/images/ibm-360/ibm-30-chm-w400.jpg" title="IBM S/360 Model 30 on display at the Computer History Museum." width="400" /></a><div class="cite">IBM S/360 Model 30 on display at the Computer History Museum.</div></p> <p>You might wonder why these computers had such complex consoles.<span id="fnref:silkscreen"><a class="ref" href="#fn:silkscreen" rel="footnote">5</a></span> There were three main uses for the console.<span id="fnref:opconsole"><a class="ref" href="#fn:opconsole" rel="footnote">6</a></span> The first use was basic "operator control" tasks such as turning the system on, booting it, or powering it off, using the controls shown below. These controls were consistent across the S/360 line and were usually the only controls the operator needed. The three hexadecimal dials selected the I/O unit that held the boot software.<span id="fnref:unitaddress"><a class="ref" href="#fn:unitaddress" rel="footnote">7</a></span> Once the system had booted, the operator generally typed commands into the system rather than using the console.</p> <p><a href="http://static.righto.com/images/ibm-360/operator-controls.jpg"><img alt="The &quot;operator control&quot; section of the control panel was used for basic tasks such as booting the system (called Initial Program Load or IPL). The buttons provided &quot;Power On&quot;, &quot;Power Off&quot;, &quot;Interrupt&quot;, and &quot;Load&quot;, while the lights indicated if the system was running." class="hilite" height="268" src="http://static.righto.com/images/ibm-360/operator-controls-w250.jpg" title="The &quot;operator control&quot; section of the control panel was used for basic tasks such as booting the system (called Initial Program Load or IPL). The buttons provided &quot;Power On&quot;, &quot;Power Off&quot;, &quot;Interrupt&quot;, and &quot;Load&quot;, while the lights indicated if the system was running." width="250" /></a><div class="cite">The "operator control" section of the control panel was used for basic tasks such as booting the system (called Initial Program Load or IPL). The buttons provided "Power On", "Power Off", "Interrupt", and "Load", while the lights indicated if the system was running.</div></p> <p>The second console function was "operator intervention": program debugging tasks such as examining and modifying memory or registers and setting breakpoints. The Model 30 console controls below were used for operator intervention. To display memory contents, the operator selected an address with the four hexadecimal dials on the left and pushed the Display button, displaying data on the lights above the dials. To modify memory, the operator entered a byte using the two hex dials on the far right and pushed the Store button. (Although the Model 30 had a 32-bit architecture, it operated on one byte at a time, trading off speed for lower cost.) The Address Compare knob in the upper right set a breakpoint.</p> <p><a href="http://static.righto.com/images/ibm-360/intervention-30.jpg"><img alt="The lower part of the Model 30 console was used for operator intervention. Note the binary-to-hexadecimal conversion chart below the hexadecimal dials." class="hilite" height="237" src="http://static.righto.com/images/ibm-360/intervention-30-w600.jpg" title="The lower part of the Model 30 console was used for operator intervention. Note the binary-to-hexadecimal conversion chart below the hexadecimal dials." width="600" /></a><div class="cite">The lower part of the Model 30 console was used for operator intervention. Note the binary-to-hexadecimal conversion chart below the hexadecimal dials.</div></p> <p>The third console function was supporting system maintenance and repair performed by an IBM customer engineer. The customer engineering displays took up most of the console and provided detailed access to the computer's complex internal state. On the Model 30 console above, the larger middle knob (Display Store Selection) selected any of the internal registers for display or modification. The rows of lights below showed the microcode instruction being executed from "read only storage" and operations on the I/O channel.</p> <p><a href="http://static.righto.com/images/ibm-360/ibm-30-console-ros.jpg"><img alt="Closeup of the IBM S/360 Model 30 console showing indicators for the microcode (read only storage) and I/O channel. These registers were used internally and were not visible to the programmer." class="hilite" height="264" src="http://static.righto.com/images/ibm-360/ibm-30-console-ros-w350.jpg" title="Closeup of the IBM S/360 Model 30 console showing indicators for the microcode (read only storage) and I/O channel. These registers were used internally and were not visible to the programmer." width="350" /></a><div class="cite">Closeup of the IBM S/360 Model 30 console showing indicators for the microcode (read only storage) and I/O channel. These registers were used internally and were not visible to the programmer.</div></p> <p>The consoles also included odometer-style usage meters, below the Emergency Power Off knob.<span id="fnref:epo"><a class="ref" href="#fn:epo" rel="footnote">10</a></span> The standard IBM rental price covered a 40-hour week and a customer would be billed extra for excess usage. However, customers were not charged for computer time during maintenance. When repairing the system, the customer engineer turned the keyswitch, causing time to be recorded on the lower service meter instead of the customer usage meter.</p> <p><a href="http://static.righto.com/images/ibm-360/epo-30.jpg"><img alt="The Emergency Power Off knob shut down the entire system. Below it were the usage meters. The keyswitch selected the maintenance meter, so customers would not be charged for computer operation during maintenance." class="hilite" height="277" src="http://static.righto.com/images/ibm-360/epo-30-w200.jpg" title="The Emergency Power Off knob shut down the entire system. Below it were the usage meters. The keyswitch selected the maintenance meter, so customers would not be charged for computer operation during maintenance." width="200" /></a><div class="cite">The Emergency Power Off knob shut down the entire system. Below it were the usage meters. The keyswitch selected the maintenance meter, so customers would not be charged for computer operation during maintenance.</div></p> <h2>IBM System/360 Model 20</h2> <p>Moving now to the bottom of the S/360 line, the Model 20 was intended for business applications.<span id="fnref:timesharing"><a class="ref" href="#fn:timesharing" rel="footnote">9</a></span> Its storage was limited, just 4K to 32K bytes of core storage, and it was extremely slow even by 1960s standards, performing about 5700 additions per second. This slow CPU was enough to generate business reports from punch cards since the card reader only read 8 cards per second. To reduce its price, the Model 20 implemented a subset of the S/360 instructions and used half-sized registers,<span id="fnref:germany"><a class="ref" href="#fn:germany" rel="footnote">8</a></span> making it incompatible with the rest of the S/360 line. Despite its limitations, the Model 20 was the most popular S/360 model due to its low price, with more than 7,400 Model 20s in operation by the end of 1970. <!-- IBM and the US Data Processing Industry, p153--> The monthly rental price of the Model 20 <a href="https://books.google.com/books?id=u5gE1JEvZjkC&amp;dq=rental+for+System%2F360+Model+20+begins+at+%241%2C280%2C&amp;focus=searchwithinvolume&amp;q=%22monthly+rental+for+the+system%22">started</a> at $1280 with the purchase price starting at $62,710. <!-- IBM's 360 and early 370 systems, page 639--></p> <p><a href="http://static.righto.com/images/ibm-360/IBM_system_360_20.jpg"><img alt="The low-end IBM System/360 Model 20 computer. The computer and its console were smaller than other systems in the S/360 line. Photo by Waelder, CC BY-SA 2.5." class="hilite" height="347" src="http://static.righto.com/images/ibm-360/IBM_system_360_20-w400.jpg" title="The low-end IBM System/360 Model 20 computer. The computer and its console were smaller than other systems in the S/360 line. Photo by Waelder, CC BY-SA 2.5." width="400" /></a><div class="cite">The low-end IBM System/360 Model 20 computer. The computer and its console were smaller than other systems in the S/360 line. Photo by <a href="https://commons.wikimedia.org/wiki/File:IBM_system_360.JPG">Waelder</a>, <a href="https://creativecommons.org/licenses/by-sa/2.5/deed.en">CC BY-SA 2.5</a>.</div></p> <p>The Model 20's small console (above) allowed the operator to turn the computer on and off, load a program, and so forth. A few rows of lights showed the contents of the computer's registers and hexadecimal dials loaded a byte (left two dials) into a memory address (next four dials). Another dial let the operator debug a program by modifying memory, setting a breakpoint, or single-stepping through a program. The Emergency Power Off knob and usage meters are at the far right.</p> <p>The Model 20 hid a separate control panel for customer engineers behind a cover (below). This panel provided additional controls and lights for diagnostics and access to the microcode. Because the Model 20 was simpler internally than the Model 30, not as much information needed to be displayed to the customer engineer. <!-- Console described in chapter 6 of http://bitsavers.org/pdf/ibm/360/fe/2020/Z33-1021-0_2020_Processing_Unit_FETOM_May68.pdf --> <!-- Photo https://www.flickr.com/photos/voulez-vous/7006608931/in/photostream/ --></p> <p><a href="http://static.righto.com/images/ibm-360/ibm-360-20-ce.jpg"><img alt="Customer engineering control panel for the IBM S/360 Model 20. Photo by Ben Franske, CC BY-SA 2.5." class="hilite" height="240" src="http://static.righto.com/images/ibm-360/ibm-360-20-ce-w400.jpg" title="Customer engineering control panel for the IBM S/360 Model 20. Photo by Ben Franske, CC BY-SA 2.5." width="400" /></a><div class="cite">Customer engineering control panel for the IBM S/360 Model 20. Photo by <a href="https://commons.wikimedia.org/wiki/File:DM_IBM_S360.jpg">Ben Franske</a>, <a href="https://creativecommons.org/licenses/by-sa/2.5/deed.en">CC BY-SA 2.5</a>.</div></p> <h2>IBM System/360 Model 22</h2> <p>The Model 22 was a cut-down version of the Model 30 at 1/3 the price, providing about 5 times the performance of the Model 20. <!-- https://archive.org/details/computerworld5126unse14 --> It was the last S/360 computer introduced, announced in 1971. <!-- a year after the Model 30 was withdrawn from production. --> IBM <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2022.html">said</a> the Model 22 "combined intermediate-scale data processing capability with small-system economy."</p> <p>A base Model 22 CPU <a href="https://archive.org/details/computerworld5126unse14">rented</a> <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2022.html">for</a> $850 a month (less than the Model 25 or most Model 20s) with a purchase price of $32,000 to $44,000. A typical configuration with three disk drives, line printer and card reader cost considerably more, renting for about $5,600 or purchased for $246,000. The processing unit weighed 1500 pounds and was about the size of two refrigerators.<span id="fnref:size"><a class="ref" href="#fn:size" rel="footnote">11</a></span> Unlike the Model 20, the Model 22 was compatible with the rest of the S/360 line.</p> <p><a href="http://static.righto.com/images/ibm-360/IBM-360-22.jpg"><img alt="IBM System/360 Model 22. Photo from IBM." class="hilite" height="439" src="http://static.righto.com/images/ibm-360/IBM-360-22-w500.jpg" title="IBM System/360 Model 22. Photo from IBM." width="500" /></a><div class="cite">IBM System/360 Model 22. Photo from <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_2423PH2022.html">IBM</a>.</div></p> <p>The Model 22's console was very similar to the Model 30's, since the Model 22 was derived from the Model 30. The Model 22 had fewer rows of lights, though, and the bulbs projected from the console in individual holders, rather than being hidden behind the Model 30's flat overlay. Because of its late introduction date, the Model 22 used <a href="https://www.ljw.me.uk/ibm360/">semiconductor memory</a> rather than magnetic core memory.</p> <h2>IBM System/360 Model 25</h2> <p>The Model 25 was another low-end system, designed to be less expensive than the Model 30 but without the incompatibility of the Model 20. A typical Model 25 <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2025.html">rented</a> for $5,330 a month with a purchase price of $253,000. It was introduced in 1968, late in the S/360 line but before the Model 22.</p> <p>It was a <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2025.html">compact system</a>, packaging I/O controllers in the main cabinet (unlike other S/360 systems). Unlike other low-end systems, it had a two-byte datapath for higher performance. One of the Model 25's features was a smaller <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2025.html">easy-to-use console</a>; on the Model 25, many operations used the console typewriter rather than the control panel. In the picture below, note the squat control panel, about 2/3 the height of the black computer cabinet behind it. The control panel reused dials for multiple functions (such as address and data), making it more compact than the Model 30 panel.</p> <p><a href="http://static.righto.com/images/ibm-360/ibm-360-25.jpg"><img alt="IBM System/360 Model 25. Photo from IBM." class="hilite" height="274" src="http://static.righto.com/images/ibm-360/ibm-360-25-w400.jpg" title="IBM System/360 Model 25. Photo from IBM." width="400" /></a><div class="cite">IBM System/360 Model 25. Photo from <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_2423PH2025.html">IBM</a>.</div></p> <h2>IBM System/360 Model 40</h2> <p>The Model 40 was a popular midrange model, more powerful than the Model 30. It <a href="https://books.google.com/books?id=pFzxLUAnSS8C&amp;lpg=PA88&amp;dq=ibm%20360%20rental%20price%20%22model%2030%22%20-computerworld&amp;pg=PA88#v=onepage&amp;q=ibm%20360%20&amp;f=false">typically</a> <a href="https://books.google.com/books?id=xLTiBQAAQBAJ&amp;lpg=PA213&amp;dq=ibm%20360%20rental%20price%20%22model%2050%22%20-computerworld&amp;pg=PA213#v=onepage&amp;q=%20%22model%2040%22%20&amp;f=false">rented</a> for about $9,000-$17,000 per month and brought IBM over a billion dollars in revenue by 1972. <!-- Pugh page 790 note 34 --> For improved performance, the Model 40 used a two-byte datapath (unlike the Model 30, which handled data one byte at a time) <!--http://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/Padegs-IBM360-sep81.pdf--></p> <p><a href="http://static.righto.com/images/ibm-360/IBM-30-boston.jpg"><img alt="IBM System/360 Model 40. Photo by Daderot." class="hilite" height="509" src="http://static.righto.com/images/ibm-360/IBM-30-boston-w500.jpg" title="IBM System/360 Model 40. Photo by Daderot." width="500" /></a><div class="cite">IBM System/360 Model 40. Photo by <a href="https://commons.wikimedia.org/wiki/File:Museum_of_Science,_Boston,_MA_-_IMG_3166.JPG">Daderot</a>.</div></p> <p>In the photo above, you can see that the Model 40 console is considerably more complex than the Model 30 console, reflecting the increased internal complexity of the system. Like the other models, it had three hex dials in the lower right to boot the system. But instead of hex dials for address and data entry, the Model 40 had rows of toggle switches: one for the address and one for the data.</p> <p>To keep the number of lights manageable, the Model 40 used two "rollers" that allowed each row of lights to display eight different functions. Each roller had an 8-position knob on the right side of the console, allowing a particular register or display to be selected. The knob physically rotated the legend above the lights to show the meaning of each light for the selected function.</p> <p><a href="http://static.righto.com/images/ibm-360/knobs-labeled.png"><img alt="Multi-function rollers on the S/360 Model 40 allowed more data to be displayed on the console." class="hilite" height="244" src="http://static.righto.com/images/ibm-360/knobs-labeled-w500.png" title="Multi-function rollers on the S/360 Model 40 allowed more data to be displayed on the console." width="500" /></a><div class="cite">Multi-function rollers on the S/360 Model 40 allowed more data to be displayed on the console.</div></p> <h2>IBM System/360 Model 44</h2> <p>IBM's competitors in the scientific computing market offered cheaper but faster systems designed specifically for numerical computing. IBM created the Model 44 to address this gap, giving it faster floating point and data acquisition instructions while dropping business-oriented instructions (decimal arithmetic and variable field length instructions).<span id="fnref:fourpi"><a class="ref" href="#fn:fourpi" rel="footnote">3</a></span> These changes made the Model 44 somewhat incompatible with the rest of the S/360 line, but it was 30 to 60 percent faster than the more-expensive Model 50 on suitable workloads. <!-- funcChar page 5 --> Despite the improved performance, the Model 44 met with limited customer success.</p> <p><a href="http://static.righto.com/images/ibm-360/ibm-360-44-lcm.jpg"><img alt="IBM System/360 Model 44 control panel." class="hilite" height="565" src="http://static.righto.com/images/ibm-360/ibm-360-44-lcm-w400.jpg" title="IBM System/360 Model 44 control panel." width="400" /></a><div class="cite">IBM System/360 Model 44 control panel.</div></p> <p>The Model 44's console was superficially similar to the Model 40's, with toggle switches and two roller knobs, but on the Model 44, one of the rollers changed the function of the toggle switches. The two models were entirely different internally; for higher performance, the Model 44 used a hard-wired control system instead of microcode. It also used a four-byte datapath, moving data twice as fast as the Model 40, <!--http://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/Padegs-IBM360-sep81.pdf--> so it has had twice as many lights and switches in each row on the console (32 data bits + 4 parity bits).<span id="fnref:model44"><a class="ref" href="#fn:model44" rel="footnote">12</a></span></p> <p>One unusual feature of the Model 44's console was a rotary knob (bottom knob on the left) to select floating point precision; reducing the precision increased speed. Another feature unique to the Model 44 was a disk drive built into the side of the computer. The removable <a href="https://en.wikipedia.org/wiki/Disk_pack#Disk_cartridge">disk cartridge</a> held about 1 megabyte of data. The buttons in the lower left of the console controlled the disk drive.</p> <p><a href="http://static.righto.com/images/ibm-360/model-44-disk.jpg"><img alt="The Model 44 had a disk drive or two in the side of the computer that used a removable IBM 2315 Disk Cartridge. Photo from Model 44 Functional Characteristics. " class="hilite" height="301" src="http://static.righto.com/images/ibm-360/model-44-disk-w400.jpg" title="The Model 44 had a disk drive or two in the side of the computer that used a removable IBM 2315 Disk Cartridge. Photo from Model 44 Functional Characteristics. " width="400" /></a><div class="cite">The Model 44 had a disk drive or two in the side of the computer that used a removable IBM 2315 Disk Cartridge. Photo from <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6875-5_360-44_funcChar.pdf">Model 44 Functional Characteristics</a>. <!-- Figure 5 --></div></p> <h2>IBM System/360 Model 50</h2> <p>The Model 50 had significantly higher performance than the Model 40, partly because it used a four-byte datapath for higher performance. <!--http://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/Padegs-IBM360-sep81.pdf--> Physically, the Model 50 was considerably larger than the lower models: the CPU with 512 KB of memory was 5 large frames weighing over 3 tons. The Model 50 <a href="https://books.google.com/books?id=pFzxLUAnSS8C&amp;lpg=PA88&amp;dq=ibm%20360%20rental%20price%20%22model%2030%22%20-computerworld&amp;pg=PA88#v=onepage&amp;q=ibm%20360%20&amp;f=false">typically</a> <a href="https://books.google.com/books?id=xLTiBQAAQBAJ&amp;lpg=PA213&amp;dq=ibm%20360%20rental%20price%20%22model%2050%22%20-computerworld&amp;pg=PA213#v=onepage&amp;q=%20%22model%2040%22%20&amp;f=false">rented</a> for about $18,000 - $32,000 per month. It could be expanded with 8 more megabytes externally; each IBM 2361 "Large Capacity Storage" unit held 2 megabytes of core memory and weighed a ton.</p> <p><a href="http://static.righto.com/images/ibm-360/IBM_system_360-50_console_-_MfK_Bern.jpg"><img alt="IBM System/360 Model 50 control panel. The dataflow diagram in the upper right illustrates the system&#39;s internal design. Photo by Sandstein, CC BY-SA 3.0" class="hilite" height="533" src="http://static.righto.com/images/ibm-360/IBM_system_360-50_console_-_MfK_Bern-w400.jpg" title="IBM System/360 Model 50 control panel. The dataflow diagram in the upper right illustrates the system&#39;s internal design. Photo by Sandstein, CC BY-SA 3.0" width="400" /></a><div class="cite">IBM System/360 Model 50 control panel. The dataflow diagram in the upper right illustrates the system's internal design. Photo by <a href="https://commons.wikimedia.org/wiki/File:IBM_system_360-50_console_-_MfK_Bern.jpg">Sandstein</a>, <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a></div></p> <p>The Model 50's console was more complex than the Model 40 or Model 44. Like the Model 44, the toggle switches and lights are 32 bits + parity because of the 4-byte datapath. The Model 50 used four roller knobs to support multiple functions on each row of lights. The voltmeter and voltage control knobs in the upper left were used by an IBM customer engineer for "marginal checking". By raising and lowering the voltage levels about 5% and checking for failures, borderline components could be detected and replaced before they caused problems.</p> <p><a href="http://static.righto.com/images/ibm-360/ibm-360-50-marc.jpg"><img alt="Control panel of the IBM System/360 Model 50. This panel has marginal check controls for auxiliary storage in the upper right, replacing the dataflow diagram." class="hilite" height="613" src="http://static.righto.com/images/ibm-360/ibm-360-50-marc-w450.jpg" title="Control panel of the IBM System/360 Model 50. This panel has marginal check controls for auxiliary storage in the upper right, replacing the dataflow diagram." width="450" /></a><div class="cite">Control panel of the IBM System/360 Model 50. This panel has marginal check controls for auxiliary storage in the upper right, replacing the dataflow diagram.</div></p> <h2>IBM System/360 Models 60, 62, 65 and 67</h2> <p>The models in the 60 series were very similar, designed for large scale business and scientific computation. Models 60 and 62 were announced at the S/360 launch, but they were never shipped. Competitors announced faster machines so IBM improved the core memory to create the Model 65; it had fast .75渭s memory, obsoleting the Model 60 (2渭s) and Model 62 (1渭s) before they shipped. <!-- Pugh page 193 --> <!-- Memories that shaped an industry p 237: the 65 used the M-4I (improved) memory with 13-21 mil cores instead of 19-32 cores. --> The Model 65 typically <a href="https://books.google.com/books?id=pFzxLUAnSS8C&amp;lpg=PA88&amp;dq=ibm%20360%20rental%20price%20%22model%2030%22%20-computerworld&amp;pg=PA88#v=onepage&amp;q=ibm%20360%20&amp;f=false">rented</a> for $50,000 a month.</p> <p><a href="http://static.righto.com/images/ibm-360/ibm-360-60.png"><img alt="IBM System/360 Model 60 with peripherals. Photo from IBM 360 System Summary page 10." class="hilite" height="281" src="http://static.righto.com/images/ibm-360/ibm-360-60-w400.png" title="IBM System/360 Model 60 with peripherals. Photo from IBM 360 System Summary page 10." width="400" /></a><div class="cite">IBM System/360 Model 60 with peripherals. Photo from <a href="http://www.bitsavers.org/pdf/ibm/360/systemSummary/A22-6810-0_360sysSummary64.pdf">IBM 360 System Summary</a> page 10.</div></p> <!--http://bitsavers.org/pdf/ibm/360/systemSummary/A22-6810-0_360sysSummary64.pdf--> <p>The Model 65's console had much in common with the Model 50, although it had 6 rollers instead of 4 to display more information. The Model 60 and higher models used an eight-byte datapath and storage interleaving for highest memory performance.<span id="fnref:interleaving"><a class="ref" href="#fn:interleaving" rel="footnote">13</a></span> <!--http://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/Padegs-IBM360-sep81.pdf--> To support the wide datapath, the console had two rows of toggle switches for data, as well as more address toggle switches to support the larger address range. Each roller controlled 36 lights (4 bytes + parity), so the 64-bit registers were split across two rows of lights.</p> <p><a href="http://static.righto.com/images/ibm-360/IBM360-65-1.corestore.jpg"><img alt="IBM System/360 Model 65. From Michael J. Ross." class="hilite" height="502" src="http://static.righto.com/images/ibm-360/IBM360-65-1.corestore-w400.jpg" title="IBM System/360 Model 65. From Michael J. Ross." width="400" /></a><div class="cite">IBM System/360 Model 65. From <a href="https://commons.wikimedia.org/wiki/File:IBM360-65-1.corestore.jpg">Michael J. Ross</a>.</div></p> <p>The Model 67 was announced in 1965 and shipped in 1966 <!-- IBM's 360 and early 370 systems, page 597--> to support the demand for time-sharing systems, computers that could support numerous users at the same time. (Most computers back then were "batch" systems, running a single program at a time.) The Model 67 was essentially a Model 65 with the addition of virtual memory, called Dynamic Address Translation. It supported "on-line" computing with remote users, time-sharing, and multiple concurrent users. Unfortunately, due to delays in releasing the operating system the Model 67 was not a large success, with only 52 installations by the end of 1970. <!-- IBM and the US Data Processing Industry p 167 --></p> <p>The 60-series models were physically large, especially with multiple memory units attached. They could also be configured as a two-processor "duplex" multiprocessor, weighing over four tons and occupying about 400 square feet; note the two consoles in the photo below.</p> <p><a href="http://static.righto.com/images/ibm-360/ibm-360-67-bitsavers.png"><img alt="IBM System/360 Model 67, duplex system. From IBM System/360 System Summary page 6-13" class="hilite" height="276" src="http://static.righto.com/images/ibm-360/ibm-360-67-bitsavers-w550.png" title="IBM System/360 Model 67, duplex system. From IBM System/360 System Summary page 6-13" width="550" /></a><div class="cite">IBM System/360 Model 67, duplex system. From <a href="http://www.bitsavers.org/pdf/ibm/360/systemSummary/GA22-6810-12_360sysSumJan74.pdf">IBM System/360 System Summary</a> page 6-13</div></p> <h2>IBM System/360 Models 70 and 75</h2> <p>The high-end Model 70 was announced in April 1964, but as with the Model 60, improvements in memory speed caused the Model 70 to be replaced by the faster Model 75 before it shipped. <!-- Func Char page 5--> The Model 75's console was much larger than the lower models with a remarkable number of lights, for two reasons.<span id="fnref:model75"><a class="ref" href="#fn:model75" rel="footnote">14</a></span> First, the Model 75's internal architecture was complex, with multiple data paths and internal registers to improve performance, resulting in more data to display. Second, instead of using rollers to display different functions, the Model 75 displayed everything at once on its vast array of lights.</p> <p><a href="http://static.righto.com/images/ibm-360/ibm-360-75.jpg"><img alt="IBM System/360 Model 75. This version has 1 megabyte of storage in four 2365 Processor Storage units, four of the &quot;fins&quot; off the central spine. From Model 75 Functional Characteristics page 4." class="hilite" height="228" src="http://static.righto.com/images/ibm-360/ibm-360-75-w600.jpg" title="IBM System/360 Model 75. This version has 1 megabyte of storage in four 2365 Processor Storage units, four of the &quot;fins&quot; off the central spine. From Model 75 Functional Characteristics page 4." width="600" /></a><div class="cite">IBM System/360 Model 75. This version has 1 megabyte of storage in four 2365 Processor Storage units, four of the "fins" off the central spine. From <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6889-0_360-75_funcChar.pdf">Model 75 Functional Characteristics</a> page 4.</div></p> <p>I'll point out some of the highlights of the console. The standard operator dials to boot the system were in the lower right (section N), next to the usage meters (P). To examine and modify memory, the operator used the address switches (R), 64 data switches (M), and lights (M). Most of the other sections were for customer engineers. The voltmeter (K) was used for marginal checking. Other sections included bus control (A), high-speed storage (B), variable field length instructions (C), instruction controls (E), and registers (F, L).</p> <!-- ![IBM System/360 Model 75 console. From <a href="http://www.bitsavers.org/pdf/ibm/360/systemSummary/GA22-6810-12_360sysSumJan74.pdf">IBM System/360 System Summary</a> page 6-16.](ibm-360-75-bitsavers.png "w600") --> <p><a href="http://static.righto.com/images/ibm-360/ibm-360-75-console.png"><img alt="The IBM S/360 Model 75 had a very large console. Diagram from Model 75 Functional Characteristics page 14." class="hilite" height="319" src="http://static.righto.com/images/ibm-360/ibm-360-75-console-w600.png" title="The IBM S/360 Model 75 had a very large console. Diagram from Model 75 Functional Characteristics page 14." width="600" /></a><div class="cite">The IBM S/360 Model 75 had a very large console. Diagram from <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6889-0_360-75_funcChar.pdf">Model 75 Functional Characteristics</a> page 14.</div></p> <p>The Model 75 had a monthly <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2075.html">rental price</a> of $50,000 to $80,000 and a purchase price from $2.2 million to $3.5 million. IBM considered the Model 75 a 1-MIPS computer, executing about 1 Million Instructions Per Second. <!-- Pugh p419 --> (This would put its performance a bit below an Intel 80286, or about 1/10,000 the performance of a modern Intel Core I7.)</p> <h2>IBM System/360 Model 85</h2> <p>The high-end Model 85 was a later model in the S/360 line, introduced in 1968. Its massive processing unit consisted of a dozen frames and weighed about 7 tons, as shown in the photo at the beginning of the article. A key innovation of the Model 85 was the memory cache to speed up memory accesses. While caches are ubiquitous in modern computers, the Model 85 was the first commercial computer with a main-memory cache. <!--http://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/Padegs-IBM360-sep81.pdf--> The Model 85 was also IBM's first computer to use integrated circuits (which IBM called Monolithic System Technology or MST). Unfortunately, the Model 85 was not a success with customers; <!-- Pugh p 419 --> its price was relatively high at a time when the data processing industry was going through a slowdown. As a result, only about 30 Model 85 systems were ever built.</p> <p>The Model 85 used a radically different approach for the console.<span id="fnref:display"><a class="ref" href="#fn:display" rel="footnote">15</a></span> The <a href="http://static.righto.com/images/ibm-360/ibm-360-85.png">control panel</a> of lights and switches was small compared to other S/360 systems. Instead, a CRT display and keyboard were used for many operator functions, visible in front of the operator below. To the left of the operator, an "indicator viewer" replaced most of the panel lights. The indicator viewer combined 240 lights with a microfiche projector that displayed the appropriate labels for ten different configurations, a more advanced version of the rollers that provided the equivalent of 2400 individual lights. The system also included a microfiche document viewer (far left of photo), replacing binders of maintenance documentation with compact microfiche cards.</p> <!-- For more information, see [Operator's Guide for Display Consoles](http://bitsavers.org/pdf/ibm/360/os/R21.0_Mar72/CG27-6949-1_Operators_Guide_For_Display_Consoles_Rel21_Mar72.pdf). --> <p><a href="http://static.righto.com/images/ibm-360/Supercomputer_NSA-IBM360_85.jpg"><img alt="Console for the IBM System/360 Model 85 at NSA (source)." class="hilite" height="283" src="http://static.righto.com/images/ibm-360/Supercomputer_NSA-IBM360_85-w400.jpg" title="Console for the IBM System/360 Model 85 at NSA (source)." width="400" /></a><div class="cite">Console for the IBM System/360 Model 85 at NSA (<a href="https://commons.wikimedia.org/wiki/File:Supercomputer_NSA-IBM360_85.jpg">source</a>).</div></p> <h2>IBM System/360 Models 90, 91, 92 and 95</h2> <p>The Model 90 was just a footnote in the original S/360 announcement, a <a href="https://pdfs.semanticscholar.org/ceea/f56b486b7290c8638d3781e53de3229efda7.pdf">conceptual</a> "super computer". <!-- Journal of Data Management 1966 --> <!-- Computerworld May 23, 1963 --> The improved Model 92 was announced a few months later but then scaled back to create the Model 91. <!-- Pugh page 388 --> <!-- Pugh page 390 --> The Model 91 was intended to compete with the CDC 6600 supercomputer (designed by Cray), but ended up shipping in 1967, about two years after the CDC 6600.<span id="fnref:janitor"><a class="ref" href="#fn:janitor" rel="footnote">16</a></span> <!-- This illustrates a problem of the S/360 architecture at the high-end - it was easier to design a computer from the start for high performance (such as the CDC), than to extend the general-purpose S/360 architecture. --> As a result, the Model 91 was rather unsuccessful with only <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_195">15</a> to <a href="http://mprc.pku.edu.cn/courses/architecture/autumn2007/comp-eng-model-91-flynn.pdf">20</a> Model 91's produced, despite cuts to the $6,000,000 price tag. <!--Office Equipment & Methods, Volume 13--> In comparison, CDC built more than 200 computers in the 6000 series. <!-- Pugh page 395, Computerworld --></p> <p>The Model 91 was architecturally advanced; it was highly pipelined with out-of-order execution and multiple functional units. Reflecting its complex architecture, the Model 91 had a massive control panel filled with lights and switches. The lower part of the main panel had the "operator intervention" functions, including toggle switches for a 24-bit address and 8 bytes of data. <!-- In the lower left were voltage controls for marginal checks. --> The remainder of the lights showed detailed system status for IBM customer engineers. The basic operator controls (power, boot) were not on the main panel, but on a <a href="http://static.righto.com/images/ibm-360/model-91-operator-control.png">small panel</a> below and to the right of the main console. (It is visible in the photo below, just to the left of the operator's head.) The operator also used the CRT for many tasks.<span id="fnref:display"><a class="ref" href="#fn:display" rel="footnote">15</a></span></p> <p><a href="http://static.righto.com/images/ibm-360/datacenter-91.png"><img alt="Console of the IBM System/360 Model 91. The very large computer itself is not visible in this photo. Photo source unknown." class="hilite" height="381" src="http://static.righto.com/images/ibm-360/datacenter-91-w600.png" title="Console of the IBM System/360 Model 91. The very large computer itself is not visible in this photo. Photo source unknown." width="600" /></a><div class="cite">Console of the IBM System/360 Model 91. The very large computer itself is not visible in this photo. Photo source unknown.</div></p> <p>The Model 91 was a room-filling system as the central processor consisted of seven stand-alone units: the CPU itself, three power supplies (not counting the motor-generator set), a power distribution unit, a coolant distribution unit, and a system console. <!-- 195 Functional characteristics page 9 --> In addition, an installation had the usual storage control unit, I/O channel boxes, and I/O devices. The Model 91 was the first IBM system to use semiconductor memory, in its small "storage protect" memory but not the main memory. <!-- IBM and the US Data Processing Industry p340 --></p> <p>As for the Model 95, IBM started researching thin-film storage as a replacement for core memory in 1951. After years of difficulty, in 1968 IBM shipped thin-film memory in the Model 95 (which was otherwise the same as the Model 91). Although this was the fastest megabyte memory for many years, <!-- Pugh Section 8.3, page 458 --> IBM sold just two Model 95 computers (to NASA) and then abandoned thin-film memory.</p> <h2>IBM System/360 Model 195</h2> <p>The Model 195 was "designed for ultrahigh-speed, large-scale computer applications." <!-- http://www.bitsavers.org/pdf/ibm/360/funcChar/GA22-6943-1_360-195_funcChar_Aug70.pdf --> It was a reimplementation of the Model 91 using integrated circuits (called "monolithic circuitry", still in IBM's SLT-style packages), and also included a 32K byte memory cache. <!--http://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/Padegs-IBM360-sep81.pdf--> It <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2195.html">rented</a> for $165,000 to $275,000 a month, with purchase prices from $7 million to $12.5 million. The Model 195's performance was comparable to the <a href="https://en.wikipedia.org/wiki/CDC_7600">CDC 7600</a> supercomputer, but as with the Model 91, the Model 195 was delivered about two years later than the comparable CDC machine, limiting sales. <!-- Pugh page 422 --></p> <p>The Model 195's console (below) was very similar to the Model 95's. As with the Model 91, the Model 195 used a CRT<span id="fnref:display"><a class="ref" href="#fn:display" rel="footnote">15</a></span> for many operator tasks and had a separate small <a href="http://static.righto.com/images/ibm-360/ibm-195-operator-console.png">operator console</a> (not shown). <!-- Operator procedures for each model in http://www.bitsavers.org/pdf/ibm/360/os/R21.0_Mar72/GC28-6692-2_OS_Operator_Procedures_Release_21_May72.pdf --> <span id="fnref:s370-195"><a class="ref" href="#fn:s370-195" rel="footnote">17</a></span></p> <p><a href="http://static.righto.com/images/ibm-360/ibm-195.jpg"><img alt="Console for the IBM System/360 Model 195. This console has the dark color scheme used for S/370 consoles even though it was an S/360 system. With approximately 2000 light bulbs, the console has complex wiring, visible below the console. Photo from Science Museum Group." class="hilite" height="503" src="http://static.righto.com/images/ibm-360/ibm-195-w500.jpg" title="Console for the IBM System/360 Model 195. This console has the dark color scheme used for S/370 consoles even though it was an S/360 system. With approximately 2000 light bulbs, the console has complex wiring, visible below the console. Photo from Science Museum Group." width="500" /></a><div class="cite">Console for the IBM System/360 Model 195. This console has the dark color scheme used for S/370 consoles even though it was an S/360 system. With approximately 2000 light bulbs, the console has complex wiring, visible below the console. Photo from <a href="https://collection.sciencemuseum.org.uk/objects/co62560/ibm-system-360-195-computer-1971-1978-personal-computer">Science Museum Group</a>.</div></p> <!-- IBM found that the small sales of high-end computers combined with high development costs for advanced technology made these systems much less profitable than smaller models with a large customer base. --> <!-- Pugh page 422 --> <h1>Identification at a glance</h1> <p>It can be hard to distinguish the consoles of the common Models 30, 40, 50 and 65. The diagram below shows the main features that separate these consoles, helping to identify them in photographs. The Model 30 had a flat silkscreened panel without individual indicators and toggle switches. It can also be distinguished by the 9 dials at the bottom, and the group of four dials on the right. The Model 40 had two rollers, and the group of four dials on the left. The Model 50 had four rollers, and a voltmeter next to a dozen knobs. The Model 65 had six rollers, and a voltmeter with just a couple knobs.</p> <p><a href="http://static.righto.com/images/ibm-360/consoles-labeled.jpg"><img alt="Common IBM System/360 consoles, with distinguishing features identified. The number of roller knobs on the right (0, 2, 4, or 6) provides a convenient way to tell the models apart." class="hilite" height="580" src="http://static.righto.com/images/ibm-360/consoles-labeled-w600.jpg" title="Common IBM System/360 consoles, with distinguishing features identified. The number of roller knobs on the right (0, 2, 4, or 6) provides a convenient way to tell the models apart." width="600" /></a><div class="cite">Common IBM System/360 consoles, with distinguishing features identified. The number of roller knobs on the right (0, 2, 4, or 6) provides a convenient way to tell the models apart.</div></p> <h1>Conclusion</h1> <p>By modern standards the System/360 computers were unimpressive: the Model 20 was much slower and had less memory than the VIC-20 home computer (1980), while at the top of the line, the Model 195 was comparable to a Macintosh IIFX (1990), with about 1/1000 the compute power of an iPhone X. On the other hand, these mainframes could handle a room full of I/O devices and dozens of simultaneous users. Even with their low performance, they were running large companies, planning the mission to the Moon, and managing the nation's air traffic control.</p> <p>Mainframe computers aren't thought about much nowadays, but they are still used more than you might expect; <a href="https://blog.syncsort.com/2018/06/mainframe/9-mainframe-statistics/">92 of the top 100 banks</a> use mainframes, for instance. Mainframe sales are still a billion-dollar market, and IBM continues to release new mainframes in its <a href="https://en.wikipedia.org/wiki/IBM_Z">Z series</a>. Although these are modern 64-bit processors, amazingly they are still backward-compatible with the System/360 and customers can still run their 1964 programs. Thus, the S/360 architecture lives on, 55 years later, making it probably the longest-lasting computer architecture. </p> <!-- The System/360 was a huge success for IBM, but contained the seeds of IBM's decline. The complexity of the S/360 architecture made it difficult for IBM to support the low end of the market. The cheapest S/360 system, the Model 20, achieved its low cost by breaking full compatibility, essentially implementing a 16-bit version of the S/360. IBM introduced the [System/3](https://en.wikipedia.org/wiki/IBM_System/3) "[midrange computer](https://en.wikipedia.org/wiki/Midrange_computer)" in 1969 to capture more of the low-end market; essentially a minicomputer, it was incompatible with the S/360 but half the price of the Model 20. IBM introduced other low-end systems, but it was the [IBM Personal Computer](https://en.wikipedia.org/wiki/IBM_Personal_Computer) (1981) that became a big success, dominating the computer market. Unfortunately for IBM, the cheap personal computer decimated the mainframe market, while most of the PC profits went to competitors ratehr than IBM, leading IBM to lose three quarters of its stock value between 1987 and 1993. --> <!-- Sales 16,000 S/360 systems in use as of 1968 (over 60% of IBM computers were S/360) Model 30 had highest value installed base, Model 40 second "system profit" for Model 30 was 32%, Model 40 35%, 65 24%, 75 and 85 -17% https://people.cs.clemson.edu/~mark/acs_end.html Models 30 and 40 were most profitable, over half of systems sold. https://en.wikipedia.org/wiki/IBM_System/360_Model_30 5000 Model 40 or larger installed by end of 1970 evans 1986 --> <p>I announce my latest blog posts on Twitter, so follow me <a href="https://twitter.com/kenshirriff">@kenshirriff</a> for future articles. I also have an <a href="https://www.righto.com/feeds/posts/default">RSS feed</a>.</p> <h1>More information</h1> <p>The book <a href="https://amzn.to/2E7ZxqP">IBM's 360 and Early 370 Systems</a> describes the history of the S/360 in great detail. IBM lists <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_FS360.html">data</a> on each model, including dates, data flow width, cycle time, storage, and microcode size. Another list with model details is <a href="https://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/Padegs-IBM360-sep81.pdf">here</a>. Diagrams of S/360 consoles are at <a href="http://www.quadibloc.com/comp/pan04.htm">quadibloc</a>. The article <a href="http://www.ece.ucdavis.edu/~vojin/CLASSES/EEC272/S2005/Papers/Padegs-IBM360-sep81.pdf">System/360 and Beyond</a> has lots of info. A list of 360 models and brief descriptions is <a href="http://www.beagle-ears.com/lars/engineer/comphist/model360.htm">here</a>.</p> <p>Here are some links for each specific model:</p> <p>Model 20: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A26-5847-3_360-20_funChar_Apr67.pdf">Functional Characteristics</a> manual, <a href="http://bitsavers.org/pdf/ibm/360/fe/2020/">Field Engineering</a> manuals, <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_20">Wikipedia</a>. <br>Model 22: <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_22">Wikipedia</a>, <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2022.html">IBM</a>. <br>Model 25: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A24-3510-0_360-25_funcChar_Jan68.pdf">Functional Characteristics</a> manual, <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_25">Wikipedia</a>, <a href="http://bitsavers.org/pdf/ibm/360/fe/2025/">Field Engineering</a> manuals. <br>Model 30: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/GA24-3231-7_360-30_funcChar.pdf">Functional Characteristics</a> manual, <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_30">Wikipedia</a>, <a href="http://bitsavers.org/pdf/ibm/360/fe/2030/">Field Engineering</a> manuals, photos <a href="http://www.glennsmuseum.com/ibm/ibm.html">here</a>, <a href="https://en.wikipedia.org/wiki/IBM_System/360 Model 360_Model_30#/media/File:IBM_System_360_model_30_profile.agr.jpg">here</a>, <a href="https://commons.wikimedia.org/wiki/File:IBM_System_360-30_front_panel.agr.jpg">here</a>, <a href="https://commons.wikimedia.org/wiki/File:IBM_System/360_Mainframe.jpg">here</a>, <a href="https://commons.wikimedia.org/wiki/File:IBM_system_360_-_mnactec.JPG">here</a>. <br>Model 40: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6881-2_360-40_funcChar.pdf">Functional Characteristics</a> manual, <a href="http://bitsavers.org/pdf/ibm/360/fe/2040/">Field Engineering</a> manuals, <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_40">Wikipedia</a>. Other photos <a href="http://static.righto.com/images/ibm-360/ibm-360-40-bitsavers.png">here</a> (from <a href="http://www.bitsavers.org/pdf/ibm/360/systemSummary/GA22-6810-12_360sysSumJan74.pdf">IBM System/360 System Summary</a> page 6-7), <a href="https://commons.wikimedia.org/wiki/File:IBM_System_360_Model_40_with_open_gates.jpg">here</a>, <a href="http://infolab.stanford.edu/pub/voy/museum/pictures/display/3-1.htm">here</a>. The photo <a href="https://www.techrepublic.com/pictures/photos-looking-back-to-the-birth-of-the-mainframe/">here</a> apparently shows a prototype console with a roller. <br>Model 44: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6875-5_360-44_funcChar.pdf">Functional Characteristics</a> manual, <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_44">Wikipedia</a>, <a href="https://www.vintagecomputer.net/ibm/360/44/IBM_360-44_pamphlet.pdf">brochure</a>. The photo <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2044.html">here</a> shows an <a href="http://www.quadibloc.com/comp/pan05.htm">earlier prototype</a> with a different console. Some interesting notes are <a href="https://web.archive.org/web/20070919000126/http://www.thegalleryofoldiron.com/2044.HTM">here</a>. <br>Model 50: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6898-1_360-50_funcChar_1967.pdf">Functional Characteristics</a> manual, <a href="http://bitsavers.org/pdf/ibm/360/fe/2050/">Field Engineering</a> manuals, <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_50">Wikipedia</a>, photos <a href="http://infolab.stanford.edu/pub/voy/museum/pictures/display/3-1.htm">here</a> and <a href="https://commons.wikimedia.org/wiki/File:ERMETH_input.jpg">here</a>, <a href="https://www.youtube.com/watch?v=WS-WtjwAAO0">CuriousMarc video</a>. <br>Model 65: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6884-3_360-65_funcChar.pdf">Functional Characteristics</a> manual, <a href="http://bitsavers.org/pdf/ibm/360/fe/2065/">Field Engineering</a> manuals, <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_65">Wikipedia</a>, photo <a href="http://infolab.stanford.edu/pub/voy/museum/pictures/display/3-1.htm">here</a>. <br>Model 67: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A27-2719-0_360-67_funcChar.pdf">Functional Characteristics</a> manual, <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_67">Wikipedia</a>, photos <a href="https://commons.wikimedia.org/wiki/File:IBM360-67AtUmichWithMikeAlexander.jpg">here</a>, <a href="http://infolab.stanford.edu/pub/voy/museum/pictures/display/3-1.htm">here</a>. <br>Model 75: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6889-0_360-75_funcChar.pdf">Functional Characteristics</a> manual, <a href="http://bitsavers.org/pdf/ibm/360/fe/2075/">Field Engineering</a> manuals (<a href="http://static.righto.com/images/ibm-360/model-75-console-big.png">console diagram</a>), <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_75">Wikipedia</a>. <br>Model 85: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6916-1_360-85_funcChar_Jun68.pdf">Functional Characteristics</a> manual (<a href="http://static.righto.com/images/ibm-360/ibm-360-85.png">console diagram</a>, page 20), <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_85">Wikipedia</a>. <br>Model 91: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/A22-6907-2_360-91_funcChar.pdf">Functional Characteristics</a> manual, <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_91">Wikipedia</a>. Other photos <a href="https://commons.wikimedia.org/wiki/File:IBM_System_360_Model_91_(1966)_console_-_Computer_History_Museum_(2007-11-10_23.06.26_by_Carlo_Nardone).jpg">here</a>, <a href="https://commons.wikimedia.org/wiki/File:IBM_System_36091.sj.jpg">here</a> <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_91#/media/File:IBM_Model_91_Front_Panel.jpg">here</a> <a href="https://commons.wikimedia.org/wiki/File:IBM_System_360_91.mh.jpg">here</a> and <a href="http://www.columbia.edu/cu/computinghistory/36091.html">here</a>. <br>Model 92: <a href="https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2095.html">IBM info</a> with photo. <br>Model 195: <a href="http://www.bitsavers.org/pdf/ibm/360/funcChar/GA22-6943-1_360-195_funcChar_Aug70.pdf">Functional Characteristics</a> and <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_195">Wikipedia</a>, photo <a href="http://www.chilton-computing.org.uk/ca/literature/annual_reports/p007.htm">here</a>.</p> <h2>Notes and references</h2> <div class="footnote"> <ol> <li id="fn:performance"> <p>Many sources give the eventual performance range of the S/360 range as 200 to 1. However, if you include the extremely slow Model 20, the performance ratio is about 3000 to 1. between the powerful Model 195 and the Model 20. <a href="https://www.researchgate.net/publication/318793156_Computer_Speeds_From_Instruction_Mixes_pre-1960_to_1971">Based</a> <a href="https://frc.ri.cmu.edu/~hpm/book97/ch3/processor.list.txt">on</a> <a href="http://www.jcmit.net/cpu-performance.htm">several</a> <a href="http://www.roylongbottom.org.uk/whetstone.htm">sources</a>, the Model 20 had the dismal performance of 2 to 5.7 KIPS (thousand instructions per second), while the Model 195 was about 10 to 17.3 MIPS (million instructions per second). The Model 20 started at 4K of storage, while the Model 195 went up to 8 megabytes, a 2000:1 ratio.</p> <p>To compare with microprocessor systems, a 6502 performed about 430 KIPS. People claim the iPhone X does 600 billion instructions per second, but those are "neural processor" instructions, so not really comparable; based on benchmarks, about 15 billion instructions per second seems more realistic.&#160;<a class="footnote-backref" href="#fnref:performance" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p> </li> <li id="fn:instructionsets"> <p>The System/360 architecture is described in detail in the <a href="http://bitsavers.trailing-edge.com/pdf/ibm/360/princOps/A22-6821-0_360PrincOps.pdf">Principles of Operation</a>. However, the System/360 didn't completely meet the goal of a compatible architecture. IBM split out the business and scientific markets on the low-end machines by marketing subsets of the instruction set. The basic instructions were provided in the "standard" instruction set. On top of this, decimal instructions (for business) were in the "commercial" instruction set and floating point was in the "scientific" instruction set. The "universal" instruction set provided all these instructions plus storage protection (i.e. memory protection between programs). Additionally, cost-cutting on the low-end Model 20 made it incompatible with the S/360 architecture, and the Model 44 was somewhat incompatible to improve performance on scientific applications.&#160;<a class="footnote-backref" href="#fnref:instructionsets" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p> </li> <li id="fn:fourpi"> <p>The <a href="https://en.wikipedia.org/wiki/IBM_System/4_Pi">IBM System/4 Pi</a> family contained several incompatible models. The high-performance Model EP (Extended Performance) was based on the S/360 Model 44's (somewhat incompatible) instruction set, while other 4 Pi models were entirely incompatible with the S/360 line.&#160;<a class="footnote-backref" href="#fnref:fourpi" rev="footnote" title="Jump back to footnote 3 in the text">&#8617;</a></p> </li> <li id="fn:ibm370"> <p>In 1970, IBM introduced the <a href="https://en.wikipedia.org/wiki/IBM_System/370">System/370</a>, with "370" representing the 360 for the 1970s. Similarly, IBM introduced the <a href="https://en.wikipedia.org/wiki/IBM_System/390">System/390</a> in 1990. The initial IBM 370 model numbers generally added 105 to the corresponding S/360 model numbers. For example, the S/370 Models 135, 145, 155, 165 were based on the S/360 Models 30, 40, 50 and 65. The S/370 Model 195 was very similar to the S/360 Model 195. <!-- Pugh page 482 -->&#160;<a class="footnote-backref" href="#fnref:ibm370" rev="footnote" title="Jump back to footnote 4 in the text">&#8617;</a></p> </li> <li id="fn:silkscreen"> <p>Most S/360 models had console lights in round sockets that project from the panel. In contrast, the console lights on the Model 30 were hidden behind a flat silkscreened overlay. This is probably because the Model 30 was designed at IBM's Endicott site, the same site that built the low-end IBM 1401 computer with a similar silkscreened console. Different S/360 models were designed at different IBM sites, and the characteristics of the computer often depended on which site designed the computer. <!-- According to <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_30#Models">Wikipedia</a>, the first Model 30 computers had exposed indicator lights like most of the S/360 line, but later Model 30s had 1401-style indicators behind a flat overlay. -->&#160;<a class="footnote-backref" href="#fnref:silkscreen" rev="footnote" title="Jump back to footnote 5 in the text">&#8617;</a></p> </li> <li id="fn:opconsole"> <p>The features of the system control panel were carefully defined in the <a href="http://bitsavers.trailing-edge.com/pdf/ibm/360/princOps/A22-6821-0_360PrincOps.pdf">System/360 Principles of Operation</a> pages 117-121, providing a consistent operator experience across the S/360 line. (The customer engineering part of the panel, on the other hand, was not specified and wildly different across the product line.)&#160;<a class="footnote-backref" href="#fnref:opconsole" rev="footnote" title="Jump back to footnote 6 in the text">&#8617;</a></p> </li> <li id="fn:unitaddress"> <p>An I/O unit was selected for booting with the three hex dials. The first knob selected the I/O channel, while the next two selected a subchannel on that I/O channel. <!-- http://www.bitsavers.org/pdf/ibm/360/operatingGuide/A22-6908-0_360_50_Operating_Procedures_1966.pdf page 17 --> These unit addresses were <a href="https://en.wikipedia.org/wiki/IBM_System/360_Model_40#Configuration">somewhat standardized</a>; for instance, a disk drive was typically 190 or 191 while tape drives were 180 through 187 or 280 through 287 if they were on channel 1 or 2 respectively.&#160;<a class="footnote-backref" href="#fnref:unitaddress" rev="footnote" title="Jump back to footnote 7 in the text">&#8617;</a></p> </li> <li id="fn:germany"> <p>The Model 20 was designed at IBM's B枚blingen, Germany site. The Model 20 was radically different in appearance from the other S/360 machines. It also had a different, incompatible architecture. These characteristics are likely a consequence of the Model 20 being designed at a remote IBM site. Regardless, the Model 20 was very popular with customers.&#160;<a class="footnote-backref" href="#fnref:germany" rev="footnote" title="Jump back to footnote 8 in the text">&#8617;</a></p> </li> <li id="fn:timesharing"> <p>Although the Model 20 Functional Characteristics manual says that it supported time sharing, this is not timesharing in the normal sense. Instead, it refers to overlapping I/O with processing, essentially DMA.&#160;<a class="footnote-backref" href="#fnref:timesharing" rev="footnote" title="Jump back to footnote 9 in the text">&#8617;</a></p> </li> <li id="fn:epo"> <p>While the Emergency Power Off button looks dramatic and was <a href="https://geekhack.org/index.php?topic=7185.0">rumored</a> <a href="https://forums.theregister.co.uk/forum/all/2018/02/12/who_me/">to</a> <a href="http://catb.org/~esr/jargon/html/B/Big-Red-Switch.html">trigger</a> <a href="https://groups.google.com/forum/#!topic/alt.sys.pdp10/LkIQwEdo0Ag">a</a> guillotine blade through the power cable, its implementation was more mundane. It de-energized a power supply relay, cutting off the system power. Behind the console, a tab popped out of the button when pulled, so the EPO button couldn't be pushed back in until a customer engineer opened the console and pushed the tab back in.&#160;<a class="footnote-backref" href="#fnref:epo" rev="footnote" title="Jump back to footnote 10 in the text">&#8617;</a></p> </li> <li id="fn:size"> <p>For exact dimensions of the System/360 units, see the <a href="http://www.bitsavers.org/pdf/ibm/360/fe/GC22-6820-12_System_360_Installation_Manual_Physical_Planning.pdf">System/360 Installation Manual</a>. While the CPU for a low-end 360 system was reasonably compact, you could easily fill a room once you add a card reader, line printer, a bunch of tape drives, disk storage, I/O channels, and other peripherals. The computers generally consisted of one or more cabinets (called "frames" because they were constructed from a metal frame), about 30"&times;60". (To make installation easier, the frames were sized to fit through doorways and in freight elevators.) The "main frame" was the CPU, with other frames for power, I/O, memory and other functions.&#160;<a class="footnote-backref" href="#fnref:size" rev="footnote" title="Jump back to footnote 11 in the text">&#8617;</a></p> </li> <li id="fn:model44"> <p>The Model 44 was developed by IBM's Data Systems Division in Poughkeepsie, NY in partnership with IBM's Hursley UK site. <!-- https://archive.computerhistory.org/resources/access/text/2017/11/102655529-05-01-acc.pdf page 58 --> Since Hursley designed the Model 40 and Poughkeepsie designed the Model 50 and larger systems, this may explain why the Model 44 is similar to the Model 40 in some ways, but closer to the larger systems in other ways, such as the use of a two-byte datapath and hardwired control instead of microcode.&#160;<a class="footnote-backref" href="#fnref:model44" rev="footnote" title="Jump back to footnote 12 in the text">&#8617;</a></p> </li> <li id="fn:interleaving"> <p>One of the challenges of the 360 line was that the original models differed in performance by a factor of 50, while raw core memory speeds only differed by a factor of 3.3 (See <a href="https://amzn.to/2E7ZxqP">IBM's 360 and Early 370 Systems</a> page 194.) Several techniques were used to get memory performance to scale with processor performance. First was transferring multiple bytes at a time in larger systems. Second was slowing low-end processors by, for example, using the same core memory for register storage. The third technique was interleaving, splitting the memory into 2 to 8 separate modules and prefetching. With prefetching, as long as accesses were sequential, data would be ready when needed.&#160;<a class="footnote-backref" href="#fnref:interleaving" rev="footnote" title="Jump back to footnote 13 in the text">&#8617;</a></p> </li> <li id="fn:model75"> <p>The Model 75 and larger systems abandoned the use of microcode, using a hardwired control that could handle the higher speed. This may be connected with the drastic jump in console complexity between the Model 65 and the Model 75.&#160;<a class="footnote-backref" href="#fnref:model75" rev="footnote" title="Jump back to footnote 14 in the text">&#8617;</a></p> </li> <li id="fn:display"> <p>A CRT display was used for the console on the models 85, 91 and 195. (I suspect this was because CRT display technology had advanced by the time these later systems were built.) The models 91 and 195 used a display based on the <a href="https://en.wikipedia.org/wiki/IBM_2250#cite_note-cdreview-2">IBM 2250</a> Graphics Display Unit. This was a vector display, drawing characters from line segments instead of pixels. The 2250 display was expensive, costing $40,134 and up (in 1970 dollars), which explains why only the high-end mainframes used a CRT (<a href="ftp://bitsavers.informatik.uni-stuttgart.de/topic/graphics/ComputerDisplayReview_Mar70.pdf">source</a>, page 20). This display supported a light pen, allowing items on the screen to be selected, somewhat like a mouse. The Model 85, on the other hand, used a CRT display built into the console.</p> <p>Some of the later IBM System/370 computers (such as the Models 135, 165 and 168) used a console similar to the S/360 Model 85. This was called the 3066 System Console. (<a href="http://bitsavers.org/pdf/ibm/370/systemGuide/GC20-1730-0_370-165_Guide_Nov70.pdf">A Guide to the IBM System/370 Model 165</a> page 20.)&#160;<a class="footnote-backref" href="#fnref:display" rev="footnote" title="Jump back to footnote 15 in the text">&#8617;</a></p> </li> <li id="fn:janitor"> <p>CDC's announcement of the 6600 supercomputer in 1963 triggered the famous <a href="https://www.computerhistory.org/revolution/supercomputers/10/33/62">janitor memo</a> from IBM's president, Watson, Jr. He asked how the 6600 beat out IBM when the 6600 was designed by a team of just 34 people "including the janitor" compared to IBM's vast development team. Cray's supposed response was, "It seems Mr. Watson has answered his own question."&#160;<a class="footnote-backref" href="#fnref:janitor" rev="footnote" title="Jump back to footnote 16 in the text">&#8617;</a></p> </li> <li id="fn:s370-195"> <p>The Model 195 had a strange position straddling the S/360 and S/370 product lines. A <a href="http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/370/systemSummary/GA22-7001-4_370_System_Summary_Dec75.pdf">System/370 version</a> of the Model 195 was announced in 1971, updating the 195 to support the 370 architecture's expanded instruction set, but lacking some features of the rest of the 370 line. <!-- 370 system summary page 6-16.2 --> <!-- Physically identical based on planning guides. --> Some sources give the S/360 Model 195 the part number 2195 (S/360 part numbers were 2xxx) while other sources give it the part number 3195 (S/370 part numbers were 3xxx).&#160;<a class="footnote-backref" href="#fnref:s370-195" rev="footnote" title="Jump back to footnote 17 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/8760983637929999128' onclick=''> 43 comments: </a> </span> <span class='post-icons'> <span class='item-action'> <a href='https://www.blogger.com/email-post/6264947694886887540/8760983637929999128' 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=8760983637929999128&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=8760983637929999128&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=8760983637929999128&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=8760983637929999128&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=8760983637929999128&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=8760983637929999128&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/ibm360" rel='tag'>ibm360</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=2019-09-29T08:30: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=2019-04-07T09:05:00-07: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_s-wCcl0oxx_t89BIbYAjwLOznLk1wdVtQsfr5Xj7ahmEM9afcmJS73bbQkuTc2fuNkP65G5uOsqjQruwFVDQpSvyfYsRuglD52Azi7wsRlpci2b3Y5eeU1cQK_jLJRmApCRw=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_v5eZy7pFszCynkH3vne_DJBegpRItQV-2s_noTYnL8S-1daYBbfctoOyAfiTATjMzK28VfRF08h__pU8ET2Bjb6c_a8KIbnYJwqM-3N7Nt1WKT3vUUxpVYz5daYpptG62rdPaiudxcA_gwo3IjeA-T=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_ufMr7xV6Ka44X9YQoM-twqhlMK5h04Pv1ltLTAa8ejexqVVSfM9Hy-CuQOewYVxoNlPLPDb9xuXNTafWccgO4hFskb2s6t19Gxm7k0jnuXj5k=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_sM8QavEBYWzV04G48IxG58iMdbgJV4AFpsT4Dlo8tr6fPu7FADuKgnSckndZRc0QeO3BuVIEz2jws5VE5lI7KLhWAqYWyhTG_X2quwulwWzHY_2ioqxAMCht-V4kIlONhy6jReRslrjeLdvBnsbawpABg=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/09/mining-bitcoin-with-pencil-and-paper.html" target='_blank'> <img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sqfey4ITHIS7QqT4kvYdxKTjF-lqD5pIcKFwMkdqw2cJx6IGCN85MbxEs7i3KZLBDsy1WLplB7GtlBAUVuJhrl030xEfM6XQABfcnd9oDXKNNOpg_8lo8qyXQrR2sKPcsu=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/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_uBVjj61qLEX-OfxzJk5DO1xdu2h4U9bwME2cusINlqhOk49QB0JumBz7D7Y6_v2KPgCJBZq1oscPuqmH2ER6pHrPFPn-JUeqA4bIEoeHyMoC7kZhGICF28wxQ2Tmko7Q=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/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_szT0AicY3wDE-6d88vrmkx3lUxGVJQaYsvgHF9uCJyNwWKucInhLcmcwX0tLw3hsbLjPu6tpBNrzEWWJS81vNZ9kBT6KcsWLFkN4c9uB1sOM3wUr6Ap-tD8xQF7ZM=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_sxRl8S39oyl6XHBjka-9sWcFCMM_tk_4JdjSRoKcy78hAUfNf0_g2AaHurBVNyC7rzSsqeRu7CS2kw8JP71MWFUNmASP9iMzjND94ljh1cF59QfKnLoujHwdt71HsMzw=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 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/"> 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 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/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/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 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/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 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/2019/04/"> April </a> <span class='post-count' dir='ltr'>(2)</span> <ul class='posts'> <li><a href="https://www.righto.com/2019/04/a-look-at-ibm-s360-core-memory-in-1960s.html">A look at IBM S/360 core memory: In the 1960s, 128...</a></li> <li><a href="https://www.righto.com/2019/04/iconic-consoles-of-ibm-system360.html">Iconic consoles of the IBM System/360 mainframes, ...</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/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'] = 'AOuZoY6hrhVeBvTddToHbahPGPnNK30-Vg:1740608278478';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d6264947694886887540','//www.righto.com/2019/04/','6264947694886887540'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '6264947694886887540', 'title': 'Ken Shirriff\x27s blog', 'url': 'http://www.righto.com/2019/04/', 'canonicalUrl': 'http://www.righto.com/2019/04/', '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/f04e4d11442969dd', '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': 'April 2019', 'pageTitle': 'Ken Shirriff\x27s blog: April 2019'}}, {'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/2019/04/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': true, 'isLabelSearch': false, 'archive': {'year': 2019, 'month': 4, 'rangeMessage': 'Showing posts from April, 2019'}}}]); _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