{"id":3204,"date":"2018-04-15T00:15:29","date_gmt":"2018-04-15T00:15:29","guid":{"rendered":"http:\/\/avitech.com.au\/?page_id=3204"},"modified":"2018-07-26T13:35:06","modified_gmt":"2018-07-26T13:35:06","slug":"dec-mi8-e-bootloader-for-pdp-8","status":"publish","type":"page","link":"https:\/\/avitech.com.au\/?page_id=3204","title":{"rendered":"DEC MI8-E Bootstrap loader for PDP-8\/e"},"content":{"rendered":"<p>The MI8-E is a &#8220;hardware bootstrap loader&#8221; for a PDP-8\/e. It has a large diode matrix that allows a 32-word bootstrap loader to be effectively coded in as a ROM. A series of wire links are inserted or removed to configure the load and start addresses.<\/p>\n<p>I have one of these boards. It came with my &#8220;Industrial 8&#8221; system which include a DECtape unit.<\/p>\n<p>Th part number on the handle is M847-YH, which means that it is the bootstrap loader for the TD8-E.<\/p>\n<p>Mine was faulty when it arrived. Lowering and raising &#8220;SW&#8221; on the front panel would usually result in no noticeable result. Very rarely it would work. When it did work, I was able to see that the bootstrap loader code has successfully been transferred into core memory. Sometimes leaving the SW in the raised position would not work immediately, but might take effect 15 to 60 minutes later (I&#8217;d come back and find that the RUN light was on &#8211; indicating that the board had loaded code into core and was now executing it).<\/p>\n<p>The problem turned out to be in the switch-input circuitry. At pins 6 and 7 of U27 (an SP380), the voltage would be -0.15V when the SW was in the down position, and only 0.62V when SW was in the up position. It should be at logic HIGH level when the SW is in the up position. By temporarily isolating the R48\/R52 junction from U27, I was able to confirm that it was the input to U27 that was &#8220;dragging down&#8221; this line. If I boosted the pull-up effect of R48 (by putting a 1K resistor in parallel with the existing 3K R48), this still was not enough to pullup the input to U27.<\/p>\n<p>I removed U27 (15 April 2018) and replaced it with another one purchased on eBay (27 April 2018). The board now works reliably. Looking at the debounced SW signal at pins 6 &#038; 7 of U27, I now see about -0.5V when the switch is in the down position, and +3.3V when the SW is in the up position.<\/p>\n<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https:\/\/avitech.com.au\/?page_id=3204&quot;}' id='gallery-1' class='gallery galleryid-3204 gallery-columns-3 gallery-size-thumbnail'><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?ssl=1\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?resize=150%2C150&amp;ssl=1\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" data-attachment-id=\"3209\" data-permalink=\"https:\/\/avitech.com.au\/?attachment_id=3209\" data-orig-file=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?fit=1280%2C720&amp;ssl=1\" data-orig-size=\"1280,720\" data-comments-opened=\"1\" data-image-title=\"mi8e-01\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?fit=900%2C506&amp;ssl=1\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-02.jpg?ssl=1\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-02.jpg?resize=150%2C150&amp;ssl=1\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-02.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-02.jpg?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-02.jpg?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" data-attachment-id=\"3210\" data-permalink=\"https:\/\/avitech.com.au\/?attachment_id=3210\" data-orig-file=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-02.jpg?fit=1280%2C720&amp;ssl=1\" data-orig-size=\"1280,720\" data-comments-opened=\"1\" data-image-title=\"mi8e-02\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-02.jpg?fit=900%2C506&amp;ssl=1\" \/><\/a>\n\t\t\t<\/dt><\/dl>\n\t\t\t<br style='clear: both' \/>\n\t\t<\/div>\n\n<h4>How does it work?<\/h4>\n<p>The MI8-E is described in detail in Chapter 4 of Volume 2 of the PDP8\/e Maintenance Manual (Order No. DEC-8E-HMM2A-D-D).  A link to this manual is provided in the Resources section below.<\/p>\n<p>The timing diagram is provided as Figure 4.2 of that manual.  It is shown below.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3382\" data-permalink=\"https:\/\/avitech.com.au\/?attachment_id=3382\" data-orig-file=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?fit=4299%2C3830&amp;ssl=1\" data-orig-size=\"4299,3830\" data-comments-opened=\"1\" data-image-title=\"mi8e-timing-diagram\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?fit=900%2C802&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?resize=900%2C802&#038;ssl=1\" alt=\"\" width=\"900\" height=\"802\" class=\"aligncenter size-large wp-image-3382\" srcset=\"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?resize=1024%2C912&amp;ssl=1 1024w, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?resize=300%2C267&amp;ssl=1 300w, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?resize=768%2C684&amp;ssl=1 768w, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?resize=150%2C134&amp;ssl=1 150w, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?w=1800&amp;ssl=1 1800w, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/mi8e-timing-diagram.jpg?w=2700&amp;ssl=1 2700w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<h4>Observations<\/h4>\n<p><strong>PULSE-LA-H<\/strong><\/p>\n<p>The MI8-E pulls this signal HIGH using an NPN transistor (Q1). The collector is connected to +5V via a 12R resistor (R44). The emitter goes directly to OMNIBUS pin DR2. The base is driven HIGH (assisted by 470R pull-up resistor R43) or LOW by a 7402 via a 27R series resistor (R45). This 27R resistor seems very small, but I note the output stage of the 7402 has a 130R resistor between the VCC rail and the high-side output transistor, so the total peak base current would be about 36mA (27mA from the 7402 and 9 mA from the pull-up resistor).<\/p>\n<p>I observed the signal on the collector of Q1. On the leading (negative-going) edge, it drops from +5.0V to approximately +4.0V then linearly ramps back to +5.0V. This indicates that the peak collector current is about 83mA (1.0 volt divided by 12R).<\/p>\n<p><strong>PWR-OK-H<\/strong><\/p>\n<p>This signal is driven HIGH by external circuitry. The MI8-E temporarily negates this signal (for 1uS) by forcing it to GND, via NPN transistor Q2. It does this while the line is being asserted HIGH by external circuitry, so the current needed to force it LOW will be substantial. Q2&#8217;s collector connects directly to OMNIBUS pin BV2, and the emitter connects directly to GND. The base is driven directly by a 7402 with no series resistor, assisted by a 270R pull-up resistor (R51). The base current is therefore around 49mA (33mA from the 7402 plus 16mA from the pull-up resistor).<\/p>\n<p>With the MI8-E installed, I forced pin BV2 to GND via my Fluke multimeter on 300mA current-test range. The sink current on the short circuit was 129.7mA.<\/p>\n<h4>OS\/8 Notes<\/h4>\n<p>As at July 2018, I am in the process of collating (and understanding) bootstrap loaders for various PDP-8\/e devices. I am doing this as part of my PDP-8\/e multi-device hardware bootloader project.<\/p>\n<p>Here is a list of the key websites that I have found helpful so far:<\/p>\n<p><a href=\"https:\/\/raymii.org\/s\/articles\/Creating_an_OS8_RK05_system_disk_from_RX01_floppies_for_the_PDP-8_with_SIMH.html\" rel=\"noopener\" target=\"_blank\">Create a PDP-8 OS8 RK05 system disk<\/a><\/p>\n<p><a href=\"http:\/\/www.pdp8online.com\/images\/images\/os8.shtml\" rel=\"noopener\" target=\"_blank\">David Gesswein&#8217;s OS\/8 Images<\/a><\/p>\n<p><a href=\"https:\/\/bigdanzblog.wordpress.com\/2014\/05\/27\/creating-a-very-simple-pdp-8-assembler-pal8-program\/\" rel=\"noopener\" target=\"_blank\">Getting started with the OS\/8 PAL8 Assembler<\/a><\/p>\n<p><a href=\"https:\/\/www.pdp8.net\/interface\/rx01_boot.shtml\" rel=\"noopener\" target=\"_blank\">David Gesswein&#8217;s RX01 Bootstrap Loader (no source code)<\/a><\/p>\n<p><a href=\"http:\/\/homepage.cs.uiowa.edu\/~jones\/pdp8\/man\/rx01.html\" rel=\"noopener\" target=\"_blank\">RX01 Instructions<\/a><\/p>\n<p><a href=\"https:\/\/groups.google.com\/forum\/#!topic\/alt.sys.pdp8\/irJ_8EXF8rc\" rel=\"noopener\" target=\"_blank\">Explanation regarding RX01 Bootstrap process<\/a><\/p>\n<p>A fully commented source code listing for an RX02 bootloader is available.  Google &#8220;Device Extensions User&#8217;s Guide &#8211; the van der Mark Site&#8221;.<\/p>\n<h4>Resources<\/h4>\n<p><a href=\"http:\/\/www.avitech.com.au\/mm-files\/pdp8-mi8e\/mi8e-bootstrap-loader-schematic.pdf\" rel=\"noopener\" target=\"_blank\">MI8-E Hardware Bootloader Schematic<\/a><\/p>\n<p><a href=\"http:\/\/bitsavers.informatik.uni-stuttgart.de\/pdf\/dec\/pdp8\/pdp8e\/DEC-8E-HMM2A-D-D_PDP-8e_Maintenance_Manual_Volume_2_Internal_Bus_Options_Jan74.pdf\" rel=\"noopener\" target=\"_blank\">pdp8\/e maintenance manual volume 2 (DEC-8E-HMM2A-D-D)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The MI8-E is a &#8220;hardware bootstrap loader&#8221; for a PDP-8\/e. It has a large diode matrix that allows a 32-word bootstrap loader to be effectively coded in as a ROM. A series of wire links are inserted or removed to configure the load and start addresses. I have one of these boards. It came with ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/avitech.com.au\/?page_id=3204\" title=\"read more...\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3204","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P7xTsk-PG","jetpack-related-posts":[{"id":3372,"url":"https:\/\/avitech.com.au\/?page_id=3372","url_meta":{"origin":3204,"position":0},"title":"OMNIBUS Bootstrap Loader Prototype v1.0","author":"malcolm","date":"23-July-2018","format":false,"excerpt":"This is my first attempt to build a Bootstrap Loader board for the OMNIBUS. The mode of operation is largely modelled on the MI8-E (M847). I have some more information about a real MI8-E here. The OMNIBUS Bootstrap Loader Prototype v1.0 has been constructed and is working well (July 2018).\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/07\/omnibus-bootloader-300x169.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":3267,"url":"https:\/\/avitech.com.au\/?page_id=3267","url_meta":{"origin":3204,"position":1},"title":"OMNIBUS Bootstrap Loader Project &#8211; Design Notes","author":"malcolm","date":"26-April-2018","format":false,"excerpt":"I am in the process of developing a multi-device \"Omnibus Bootstrap Loader\" board. The purpose of this project is to transfer bootstrap loader code into the PDP-8's core memory, using a similar technique to DEC's MI8-E board. This page captures my random thoughts and observations throughout the project. Interfacing to\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3697,"url":"https:\/\/avitech.com.au\/?page_id=3697","url_meta":{"origin":3204,"position":2},"title":"UNIX V6 on QBUS PDP-11","author":"malcolm","date":"17-November-2019","format":false,"excerpt":"I've starting playing around with UNIX v6 on the PDP-11. I'm using the \"v6_rl02_unknown\" image, which is discussed and available for download from https:\/\/github.com\/eunuchs\/unix-archive\/tree\/master\/PDP-11\/Boot_Images. This is an RL02 image. It must have a modified kernel, as apparently V6 was not originally distributed on RL02 media. Hardware The hardware used was\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":709,"url":"https:\/\/avitech.com.au\/?page_id=709","url_meta":{"origin":3204,"position":3},"title":"PDP-11 Paper Tape BASIC","author":"malcolm","date":"3-July-2016","format":false,"excerpt":"Introduction This page provides an overview of PDP-11 paper tape BASIC, and the computer equipment it was typically used with. It then describes how to load and run PDP-11 BASIC on real PDP-11 hardware, and how it can be run instead on a modern Windows-based PC, under the open-source SIMH\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"DEC-11-AJPB-PB","src":"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2016\/07\/DEC-11-AJPB-PB-300x44.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2722,"url":"https:\/\/avitech.com.au\/?page_id=2722","url_meta":{"origin":3204,"position":4},"title":"GRC TBC QBUS Board","author":"malcolm","date":"15-October-2017","format":false,"excerpt":"The \"GRC TBC\" is a bootstrap and terminator board designed for PDP-11 QBUS systems. The manufacturer is General Robotics Corporation. The TBC provides the following functionality: Termination for QBUS backplane signals On-board EPROMs (for bootstrap or other purposes) Support for front-panel functionality (run status indicator, enable\/halt switch and LTC switch)\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2017\/10\/grc-tbc-pcb-300x174.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":12693,"url":"https:\/\/avitech.com.au\/?page_id=12693","url_meta":{"origin":3204,"position":5},"title":"PDP-8 notes: Dumprest and paper-tape diagnostics","author":"malcolm","date":"29-June-2025","format":false,"excerpt":"These are my rough notes about using paper-tape diagnostics and dumprest on the PDP-8. This page focuses in particular on using dumprest on a Windows machine in a Cygwin environment. I have a separate page here that provides some tips for setting up Cygwin. Dumprest Dumprest is a series of\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/avitech.com.au\/index.php?rest_route=\/wp\/v2\/pages\/3204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/avitech.com.au\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/avitech.com.au\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/avitech.com.au\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/avitech.com.au\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3204"}],"version-history":[{"count":18,"href":"https:\/\/avitech.com.au\/index.php?rest_route=\/wp\/v2\/pages\/3204\/revisions"}],"predecessor-version":[{"id":3386,"href":"https:\/\/avitech.com.au\/index.php?rest_route=\/wp\/v2\/pages\/3204\/revisions\/3386"}],"wp:attachment":[{"href":"https:\/\/avitech.com.au\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}