{"id":906,"date":"2014-02-17T12:00:29","date_gmt":"2014-02-17T17:00:29","guid":{"rendered":"https:\/\/blogs.mathworks.com\/cleve\/?p=906"},"modified":"2017-04-27T08:02:17","modified_gmt":"2017-04-27T13:02:17","slug":"the-tektronix-4081","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/cleve\/2014\/02\/17\/the-tektronix-4081\/","title":{"rendered":"The Tektronix 4081"},"content":{"rendered":"<div class=\"content\"><!--introduction--><p>The Tektronix 4081 minicomputer at Argonne National Laboratory in the summers of 1977 and '78 played an important role in the early development of MATLAB.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/images\/cleve\/tek4081.jpg\" alt=\"\"> <\/p><!--\/introduction--><h3>Contents<\/h3><div><ul><li><a href=\"#6d570d79-9c7d-4c8c-9be2-25a3911f2241\">Tektronix<\/a><\/li><li><a href=\"#9fc38e70-f310-4a62-a471-bbbe01a59f0a\">Argonne<\/a><\/li><li><a href=\"#ac6f99fe-5aa5-47c3-9853-19ef5b5424fe\">First MATLAB<\/a><\/li><li><a href=\"#d4eb0c79-d832-41f5-a269-46159c2f342a\">First PC<\/a><\/li><li><a href=\"#714a9b5b-3318-437e-8cbf-e492ab697709\">First Email<\/a><\/li><li><a href=\"#c7509ff6-7bdd-4338-ac3a-7f2fe85ddfd3\">Ned Thanhouser<\/a><\/li><li><a href=\"#9d130ca3-a3bb-438b-b97f-d9f85ffd2dc0\">References<\/a><\/li><\/ul><\/div><h4>Tektronix<a name=\"6d570d79-9c7d-4c8c-9be2-25a3911f2241\"><\/a><\/h4><p>Tektronix, Inc., is a company founded in Portland, Oregon in 1946 that was best known for its oscilloscopes.  In 1976 Tektronix temporarily entered the computer business.  They marketed a sophisticated display together with one of the first 32-bit minicomputers, the model 7\/32 from Interdata, and their own operating system.  The result was their model 4081.<\/p><p>The marketing material emphasized the display.  It incorporated traditional storage tube graphics, where the tube phosphor provides the memory and which Tektronix had been using for years in its oscilloscopes, and the new refresh graphics, where digital memory drives the display.  In this view of the system, the computer is simply the graphics controller. The Tektronix software was known as GOS, for Graphics Operating System.<\/p><p>Here is a screen shot of a lunar lander game on the machine.  The background was generated by the storage tube graphics and remained fixed.  The lander and the text at the bottom were raster graphics.  The lander's rockets were controlled by arrow keys on the keyboard.  Remember, this was 1976.  Any computer with an interactive display being marketed at the time had to have a lunar lander.  This one was fancier than most of the competition. Here is a <a href=\"http:\/\/vimeo.com\/86219973\">link to a demo reel<\/a> made at the time that shows the lander in action, and several other applications on the 4081.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/images\/cleve\/lander.jpg\" alt=\"\"> <\/p><h4>Argonne<a name=\"9fc38e70-f310-4a62-a471-bbbe01a59f0a\"><\/a><\/h4><p>I visited the Mathematics and Computer Science Division at Argonne National Laboratory, just west of Chicago, every summer in the late 1970s to work on Linpack with Jack Dongarra, Pete Stewart and Jim Bunch.  We did most of our work on Argonne's central main frame computer, the IBM 370\/195.  This was a batch oriented system.  We submitted jobs and got the output back some time later.  The time lapse could be a few minutes or a few hours, depending upon how many other jobs there were.  It was quicker at night and on weekends.<\/p><p>The jobs would be punched on IBM cards and the output printed on fan folded paper returned in bins at the computer center.  Or, somewhat more conveniently, we would work at terminals, preparing files containing images of card decks, and have output returned in files viewable at the terminal.<\/p><h4>First MATLAB<a name=\"ac6f99fe-5aa5-47c3-9853-19ef5b5424fe\"><\/a><\/h4><p>One important goal of my first MATLAB was to make matrix computation interactive.  I wanted to enter an expression involving matrices in a natural mathematical notation and have the result evaluated immediately. The first MATLAB was a Fortran program that used about a dozen subroutines from Linpack and Eispack to create a simple matrix calculator.  The TSO time sharing facility on another IBM main frame, the 360\/75, was reasonably interactive.  As I remember it, if there were not too many other users on TSO, the response time was pretty good.<\/p><h4>First PC<a name=\"d4eb0c79-d832-41f5-a269-46159c2f342a\"><\/a><\/h4><p>The MCS Division at Argonne acquired a Tektronix 4081 sometime before I arrived for my 1977 summer visit.  I was excited.  This was my first personal computer.  There was a Fortran compiler and I could run the MATLAB that I was developing.  There was just one difficulty.  The 7\/32 had only a 16-bit address space and was limited to 64K of memory -- that's 64 <i>kilobytes<\/i>. The designers of GOS knew that 64K was a problem and so had provided a <i>swap<\/i> feature.  Fortran designates a section of global memory as COMMON. It was possible to retain the COMMON memory, swap all the executable code in the remainder of the memory, and keep the program running.<\/p><p>So, my MATLAB consisted of five or six blocks of code.  The parser was one or two blocks, LU and QR were a block, SVD was a block, and so on. The matrices were kept in common and the various blocks swapped in and out as needed.  The memory limitation turned out to be a blessing after all. This blocked structure of the software forced a valuable clarity of organization.<\/p><p>The 4081 was in a small office.  I loved the feel of having the machine all to myself.  It was the size of a desk, but there is not much difference between using a computer that <i>is<\/i> a desk and using a computer that <i>is on<\/i> a desk.  The response time was good, and it was <i>predictable<\/i> and <i>consistent<\/i>.  It would be four or five years before we would have the IBM PC and the Sun workstation, but this experience gave me a taste for what personal computing would be like.<\/p><h4>First Email<a name=\"714a9b5b-3318-437e-8cbf-e492ab697709\"><\/a><\/h4><p>Argonne's 4081 was connected to the ARPA-net, the predecessor of today's Internet.  Jim Pool had been head of the MCS Division at Argonne and had been involved in the acquisition of the 4081, but had moved to the Department of Energy in Washington, DC before the machine was delivered.  Jim was also on the ARPA-net.  I sent my first ever email to Jim from the 4081.  I told him that I was using the machine, I was working on this new program that I called MATLAB, and I included the entire text supporting the <tt>help<\/tt> command.  The entire email was less than 700 lines.<\/p><h4>Ned Thanhouser<a name=\"c7509ff6-7bdd-4338-ac3a-7f2fe85ddfd3\"><\/a><\/h4><p>Ned Thanhouser was Software Manager in charge of the Graphics Operating System at Tektronix.  He came to visit Argonne one day to see what we were doing with the machine.  Jack Dongarra got hold of me and the three of us ended up ordering pizza and staying far into the night.  Ned had a briefcase full of cassette tapes and floppy discs with demos, games, and other goodies.  They were 8-inch floppies in those days.  The cassette tape reader could be troublesome because the tape alignment was delicate, but there was a thick Chicago telephone book on top of the unit and if you hit the reader with the phone book, it would relax its tolerances.<\/p><p>Ned later moved from Tektronix to Intel, where he spent most of his career. Ned's grandfather was a famous motion picture industry pioneer, and so after retiring from Intel, Ned has been involved with the preservation of early silent motion pictures, at <a href=\"http:\/\/www.thanhouser.org\/about.htm\">Thanhouser Company Film Preservation<\/a>.<\/p><p>Ned wrote the lunar lander and made the <a href=\"http:\/\/vimeo.com\/86219973\">demo reel<\/a> that I mentioned above. While preparing this blog, Ned and I had a couple of very pleasant phone conversations and email exchanges, remembering old times.  He sent me this recollection by his colleague, Sam Malicot.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/images\/cleve\/cartoon.jpg\" alt=\"\"> <\/p><p>And, after all these years, I can reveal that Ned's visit to Argonne that day led to the <a href=\"http:\/\/books.google.com\/books?id=AmSm1n3Vw0cC&amp;printsec=frontcover&amp;source=gbs_ge_summary_r&amp;cad=0#v=onepage&amp;q&amp;f=false\">anonymous quote<\/a> on the <a href=\"http:\/\/en.wikipedia.org\/wiki\/RTFM\">Table of Contents page<\/a> of the Linpack Users' Guide. Thanks, Ned.<\/p><h4>References<a name=\"9d130ca3-a3bb-438b-b97f-d9f85ffd2dc0\"><\/a><\/h4><p>Tektronix 4081 System Handles Both Refresh, Storage Graphics, <a href=\"http:\/\/news.google.com\/newspapers?nid=849&amp;dat=19760517&amp;id=Nb5OAAAAIBAJ&amp;sjid=8kkDAAAAIBAJ&amp;pg=5292,700445\"><i>Computer World<\/i>, May 17,1976, page 29<\/a>.<\/p><p>Ned Thanhouser, Intermixing Refresh and Direct View Storage Graphics, <a href=\"https:\/\/www.facebook.com\/ned.thanhouser\/posts\/10152255319247905\">SigGraph, 1976<\/a>.<\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_3c4a39516bc04263a2a23aed5a341631() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='3c4a39516bc04263a2a23aed5a341631 ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' 3c4a39516bc04263a2a23aed5a341631';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2014 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_3c4a39516bc04263a2a23aed5a341631()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2014a<br><\/p><p class=\"footer\"><br>\r\n      Published with MATLAB&reg; R2014a<br><\/p><\/div><!--\r\n3c4a39516bc04263a2a23aed5a341631 ##### SOURCE BEGIN #####\r\n%% The Tektronix 4081\r\n% The Tektronix 4081 minicomputer at Argonne National Laboratory in the summers\r\n% of 1977 and '78 played an important role in the early development of MATLAB.\r\n%\r\n% <<tek4081.jpg>>\r\n%\r\n%% Tektronix\r\n% Tektronix, Inc., is a company founded in Portland, Oregon in 1946 that was\r\n% best known for its oscilloscopes.  In 1976 Tektronix temporarily entered the\r\n% computer business.  They marketed a sophisticated display together with one\r\n% of the first 32-bit minicomputers, the model 7\/32 from Interdata, and their\r\n% own operating system.  The result was their model 4081.\r\n\r\n%%\r\n% The marketing material emphasized the display.  It incorporated traditional\r\n% storage tube graphics, where the tube phosphor provides the memory and\r\n% which Tektronix had been using for years in its oscilloscopes, and the\r\n% new refresh graphics, where digital memory drives the display.  In this\r\n% view of the system, the computer is simply the graphics controller.\r\n% The Tektronix software was known as GOS, for Graphics Operating System.\r\n\r\n%%\r\n% Here is a screen shot of a lunar lander game on the machine.  The background\r\n% was generated by the storage tube graphics and remained fixed.  The lander\r\n% and the text at the bottom were raster graphics.  The lander's rockets were\r\n% controlled by arrow keys on the keyboard.  Remember, this was 1976.  Any\r\n% computer with an interactive display being marketed at the time had to have\r\n% a lunar lander.  This one was fancier than most of the competition.\r\n% Here is a <http:\/\/vimeo.com\/86219973 link to a demo reel> made at the time\r\n% that shows the lander in action, and several other applications on the 4081.\r\n%\r\n% <<lander.jpg>>\r\n%\r\n\r\n%% Argonne\r\n% I visited the Mathematics and Computer Science Division at Argonne National\r\n% Laboratory, just west of Chicago, every summer in the late 1970s to work on\r\n% Linpack with Jack Dongarra, Pete Stewart and Jim Bunch.  We did most of our\r\n% work on Argonne's central main frame computer, the IBM 370\/195.  This was a\r\n% batch oriented system.  We submitted jobs and got the output back some\r\n% time later.  The time lapse could be a few minutes or a few hours,\r\n% depending upon how many other jobs there were.  It was quicker at night and\r\n% on weekends.\r\n\r\n%%\r\n% The jobs would be punched on IBM cards and the output printed on fan folded\r\n% paper returned in bins at the computer center.  Or, somewhat more\r\n% conveniently, we would work at terminals, preparing files containing images\r\n% of card decks, and have output returned in files viewable at the terminal.\r\n\r\n%% First MATLAB\r\n% One important goal of my first MATLAB was to make matrix computation\r\n% interactive.  I wanted to enter an expression involving matrices in\r\n% a natural mathematical notation and have the result evaluated immediately.\r\n% The first MATLAB was a Fortran program that used about a dozen subroutines\r\n% from Linpack and Eispack to create a simple matrix calculator.  The\r\n% TSO time sharing facility on another IBM main frame, the 360\/75, was \r\n% reasonably interactive.  As I remember it, if there were not too many other\r\n% users on TSO, the response time was pretty good.\r\n\r\n%% First PC\r\n% The MCS Division at Argonne acquired a Tektronix 4081 sometime before I\r\n% arrived for my 1977 summer visit.  I was excited.  This was my first\r\n% personal computer.  There was a Fortran compiler and I could run the MATLAB\r\n% that I was developing.  There was just one difficulty.  The 7\/32 had only a\r\n% 16-bit address space and was limited to 64K of memory REPLACE_WITH_DASH_DASH that's\r\n% 64 _kilobytes_.\r\n% The designers of GOS knew that 64K was a problem and so had provided a\r\n% _swap_ feature.  Fortran designates a section of global memory as COMMON.\r\n% It was possible to retain the COMMON memory, swap all the executable code\r\n% in the remainder of the memory, and keep the program running.\r\n\r\n%%\r\n% So, my MATLAB consisted of five or six blocks of code.  The parser was one\r\n% or two blocks, LU and QR were a block, SVD was a block, and so on.\r\n% The matrices were kept in common and the various blocks swapped in and out\r\n% as needed.  The memory limitation turned out to be a blessing after all.\r\n% This blocked structure of the software forced a valuable clarity of\r\n% organization.\r\n\r\n%%\r\n% The 4081 was in a small office.  I loved the feel of having the machine\r\n% all to myself.  It was the size of a desk, but there is not much difference\r\n% between using a computer that _is_ a desk and using a computer that _is on_\r\n% a desk.  The response time was good, and it was _predictable_ and \r\n% _consistent_.  It would be four or five years before we would have the\r\n% IBM PC and the Sun workstation, but this experience gave me a taste for\r\n% what personal computing would be like.\r\n\r\n%% First Email\r\n% Argonne's 4081 was connected to the ARPA-net, the predecessor of today's\r\n% Internet.  Jim Pool had been head of the MCS Division at Argonne and had\r\n% been involved in the acquisition of the 4081, but had moved to the Department\r\n% of Energy in Washington, DC before the machine was delivered.  Jim was also\r\n% on the ARPA-net.  I sent my first ever email to Jim from the 4081.  I told\r\n% him that I was using the machine, I was working on this new program\r\n% that I called MATLAB, and I included the entire text supporting the |help|\r\n% command.  The entire email was less than 700 lines.\r\n\r\n%% Ned Thanhouser\r\n% Ned Thanhouser was Software Manager in charge of the Graphics Operating\r\n% System at Tektronix.  He came to visit Argonne one day to see what we were\r\n% doing with the machine.  Jack Dongarra got hold of me and the three of us\r\n% ended up ordering pizza and staying far into the night.  Ned had a briefcase\r\n% full of cassette tapes and floppy discs with demos, games, and other \r\n% goodies.  They were 8-inch floppies in those days.  The cassette tape reader\r\n% could be troublesome because the tape alignment was delicate, but there was\r\n% a thick Chicago telephone book on top of the unit and if you hit the reader\r\n% with the phone book, it would relax its tolerances.\r\n\r\n%%\r\n% Ned later moved from Tektronix to Intel, where he spent most of his career.\r\n% Ned's grandfather was a famous motion picture industry pioneer, and so\r\n% after retiring from Intel, Ned has been involved with the preservation\r\n% of early silent motion pictures, at <http:\/\/www.thanhouser.org\/about.htm\r\n% Thanhouser Company Film Preservation>.\r\n\r\n%%\r\n% Ned wrote the lunar lander and made the <http:\/\/vimeo.com\/86219973 demo reel>\r\n% that I mentioned above.\r\n% While preparing this blog, Ned and I had a couple of very pleasant phone\r\n% conversations and email exchanges, remembering old times.  He sent me this\r\n% recollection by his colleague, Sam Malicot.\r\n%\r\n% <<cartoon.jpg>>\r\n%\r\n% And, after all these years, I can reveal that\r\n% Ned's visit to Argonne that day led to the\r\n% <http:\/\/books.google.com\/books?id=AmSm1n3Vw0cC&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false\r\n% anonymous quote> on the\r\n% <http:\/\/en.wikipedia.org\/wiki\/RTFM\r\n% Table of Contents page> of the\r\n% <http:\/\/www.ec-securehost.com\/SIAM\/OT08.html\r\n% Linpack Users' Guide.>\r\n% Thanks, Ned.\r\n\r\n%% References\r\n% Tektronix 4081 System Handles Both Refresh, Storage Graphics,\r\n% <http:\/\/news.google.com\/newspapers?nid=849&dat=19760517&id=Nb5OAAAAIBAJ&sjid=8kkDAAAAIBAJ&pg=5292,700445\r\n% _Computer World_, May 17,1976, page 29>.\r\n\r\n%%\r\n% Ned Thanhouser, Intermixing Refresh and Direct View Storage Graphics,\r\n% <https:\/\/www.facebook.com\/ned.thanhouser\/posts\/10152255319247905\r\n% SigGraph, 1976>.\r\n\r\n##### SOURCE END ##### 3c4a39516bc04263a2a23aed5a341631\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img decoding=\"async\"  class=\"img-responsive\" src=\"https:\/\/blogs.mathworks.com\/images\/cleve\/tek4081.jpg\" onError=\"this.style.display ='none';\" \/><\/div><!--introduction--><p>The Tektronix 4081 minicomputer at Argonne National Laboratory in the summers of 1977 and '78 played an important role in the early development of MATLAB.... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/cleve\/2014\/02\/17\/the-tektronix-4081\/\">read more >><\/a><\/p>","protected":false},"author":78,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,23,4,8],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/906"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/comments?post=906"}],"version-history":[{"count":6,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/906\/revisions"}],"predecessor-version":[{"id":2450,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/906\/revisions\/2450"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/media?parent=906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/categories?post=906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/tags?post=906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}