{"id":3017,"date":"2017-08-21T22:42:09","date_gmt":"2017-08-21T11:42:09","guid":{"rendered":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/?p=3017"},"modified":"2017-08-21T23:42:51","modified_gmt":"2017-08-21T12:42:51","slug":"the-here-is-key","status":"publish","type":"post","link":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/2017\/08\/21\/the-here-is-key","title":{"rendered":"The HERE IS key"},"content":{"rendered":"<p>The <a href=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/en.wikipedia.org\/wiki\/Lear_Siegler\">Lear Siegler<\/a>\u00a0<a href=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/en.wikipedia.org\/wiki\/ADM-3A\">ADM-3A terminal<\/a> is a very important artefact in computing history.<\/p>\n<div id=\"attachment_3018\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/vintagecomputer.ca\/lear-siegler-adm-3a-terminal\/\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3018\" class=\"wp-image-3018 size-large\" src=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-14.15.25-1024x420.png\" alt=\"\" width=\"625\" height=\"256\" srcset=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-14.15.25-1024x420.png 1024w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-14.15.25-300x123.png 300w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-14.15.25-768x315.png 768w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-14.15.25-624x256.png 624w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-14.15.25.png 1240w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><p id=\"caption-attachment-3018\" class=\"wp-caption-text\">ADM-3A keyboard (image credit vintagecomputer.ca)<\/p><\/div>\n<p>If you want to know why your shell abbreviates <code>$HOME<\/code>\u00a0to <code>~<\/code>, it&#8217;s because of the label on the <code>~<\/code> key on the ADM-3A. If you want to know why <code>hjkl<\/code> are the de facto cursor keys in\u00a0<code>vi<\/code>, look at the symbols above the letters. The ADM-3A was the &#8220;dumb terminal&#8221; which <a href=\"https:\/\/proxy.goincop1.workers.dev:443\/http\/www.linfo.org\/vi\/history.html\">Bill Joy used to develop <code>vi<\/code><\/a>.<\/p>\n<p>Recently the ADM-3A came up in a twitter discussion about the wretched Apple touch bar when Bret Victor dropped this tweet:<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">It goes even deeper than that. The designer of vi grew up using keyboard where the &quot;esc&quot; key is to the left of the &quot;Q&quot;, like our &quot;tab&quot; key. <a href=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/t.co\/CYnlm7VRZv\">pic.twitter.com\/CYnlm7VRZv<\/a><\/p>\n<p>&mdash; Bret Victor (@worrydream) <a href=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/twitter.com\/worrydream\/status\/899417057363546112?ref_src=twsrc%5Etfw\">August 20, 2017<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Which settled the argument until Paul Brousseau asked:<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">What does the &quot;here is&quot; key do?<\/p>\n<p>&mdash; Paul Brousseau (@object88) <a href=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/twitter.com\/object88\/status\/899481630665883648?ref_src=twsrc%5Etfw\">August 21, 2017<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Indeed, what does the <code>HERE IS<\/code><sup>1<\/sup> key do? Its prominent position adjacent to the <code>RETURN<\/code> key implies whatever it does, it is important.<\/p>\n<p>Fortunately the answer to Paul&#8217;s question was easy to find. The wonderful BitSavers archive has the user manual for the <a href=\"\/https\/dave.cheney.net\/paste\/DP2880486F_ADM3A_UM_Apr86.pdf\">ADM-3A available<\/a> (cached to avoid unnecessary bandwidth costs to BitSavers). On page 29 we find this diagram<\/p>\n<div id=\"attachment_3022\" style=\"width: 353px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3022\" class=\"wp-image-3022 size-full\" src=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-16.45.52.png\" alt=\"\" width=\"343\" height=\"137\" srcset=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-16.45.52.png 343w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-16.45.52-300x120.png 300w\" sizes=\"auto, (max-width: 343px) 100vw, 343px\" \/><p id=\"caption-attachment-3022\" class=\"wp-caption-text\">Page 29, ADM-3A Users Manual (courtesy bitsavers.org)<\/p><\/div>\n<p>So <code>HERE IS<\/code>, when pressed, transmits a predefined identification message. But what do to the words &#8220;message is displayed in half-duplex&#8221; mean? The answer to that riddle lies in the ADM-3A&#8217;s A<em>nswerback<\/em> facility.<\/p>\n<p>Scanning forward to page 36, section 3.3.6 describes the configuration of the Answerback facility&#8211;programming the identification message transmitted when <code>HERE IS<\/code>\u00a0is pressed.<\/p>\n<div id=\"attachment_3024\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3024\" class=\"wp-image-3024 size-medium\" src=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-20.03.33-300x284.png\" alt=\"\" width=\"300\" height=\"284\" srcset=\"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-20.03.33-300x284.png 300w, https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-content\/uploads\/2017\/08\/Screen-Shot-2017-08-21-at-20.03.33.png 345w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><p id=\"caption-attachment-3024\" class=\"wp-caption-text\">Section 3.3.6, page 36, ADM-3A Users Manual (courtesy bitsavers.org)<\/p><\/div>\n<blockquote><p>Pressing the <code>HERE IS<\/code> key or receiving an <code>ENQ<\/code> from the host &#8230; causes the answerback message to be transmitted to the host and to be displayed if the terminal is in half duplex mode.<\/p><\/blockquote>\n<p>This is interesting, the <em>remote<\/em> side can ask the terminal &#8220;who are you?&#8221;.<\/p>\n<p>The <code>HERE IS<\/code>\u00a0key is a vestige of a an older facility called <em>Enquiry<\/em>. Enquiry allowed one end of the connection to query if the remote side was still connected, and if it was, exactly who was connected.<\/p>\n<blockquote><p><strong>ANSWERBACK Message<\/strong><br \/>\nAnswerback is a question and answer sequence where the host computer asks the terminal to identify itself. The VT100 answerback feature provides the terminal with the capability to identify itself by sending a message to the host. The entire answerback sequence takes place automatically without affecting the screen or requiring operator action. The answerback message may also be transmitted by typing CTRL-BREAK.<\/p><\/blockquote>\n<p>This description is from the 1978 Digital VT100 user guide. It was certainly a simpler time when the server could ask a terminal to identify itself, and trust the answer.<\/p>\n<hr \/>\n<p>Notes<\/p>\n<ol>\n<li>I&#8217;ve chosen to write the name of the key in all caps as the base model of the ADM-3A was only capable of displaying upper case letters. If you wanted lower case (above 0x5F hex), that was an optional extra.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>The Lear Siegler\u00a0ADM-3A terminal is a very important artefact in computing history. If you want to know why your shell abbreviates $HOME\u00a0to ~, it&#8217;s because of the label on the ~ key on the ADM-3A. If you want to know why hjkl are the de facto cursor keys in\u00a0vi, look at the symbols above the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[46,28],"tags":[],"class_list":["post-3017","post","type-post","status-publish","format-standard","hentry","category-history","category-useless-trivia"],"_links":{"self":[{"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/posts\/3017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/comments?post=3017"}],"version-history":[{"count":15,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/posts\/3017\/revisions"}],"predecessor-version":[{"id":3033,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/posts\/3017\/revisions\/3033"}],"wp:attachment":[{"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/media?parent=3017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/categories?post=3017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/dave.cheney.net\/wp-json\/wp\/v2\/tags?post=3017"}],"curies":[{"name":"wp","href":"https:\/\/proxy.goincop1.workers.dev:443\/https\/api.w.org\/{rel}","templated":true}]}}