{"id":3267,"date":"2018-04-26T09:42:09","date_gmt":"2018-04-26T09:42:09","guid":{"rendered":"http:\/\/avitech.com.au\/?page_id=3267"},"modified":"2018-08-03T11:52:19","modified_gmt":"2018-08-03T11:52:19","slug":"omnibus-boot-loader-project","status":"publish","type":"page","link":"https:\/\/avitech.com.au\/?page_id=3267","title":{"rendered":"OMNIBUS Bootstrap Loader Project &#8211; Design Notes"},"content":{"rendered":"<p>I am in the process of developing a multi-device &#8220;Omnibus Bootstrap Loader&#8221; board.  The purpose of this project is to transfer bootstrap loader code into the PDP-8&#8217;s core memory, using a similar technique to DEC&#8217;s MI8-E board.<\/p>\n<p>This page captures my random thoughts and observations throughout the project.<\/p>\n<h4>Interfacing to the Omnibus<\/h4>\n<p>The <em>pdp8\/e pdp8\/m &#038; pdp8\/f small computer handbook<\/em> (1973 edition), in Figure 9-6 at page 9-8, gives a good summary of the typical driver and load circuits for each type of signal.<\/p>\n<p>For this project, almost all outputs signals to the OMNIBUS will be driven by open-collector 74xx logic (40mA sink current).<\/p>\n<p>However, there are two signals that are unusual and need to be treated differently:<\/p>\n<ul>\n<li>PULSE-LA-H: Consistent with the MI8-E (and the Handbook), this signal is pulled high by my board via an NPN transistor (configured as an emitter follower) in series with a 12R collector resistor.<\/li>\n<li>POWER-OK-H: My board needs to over-power this signal, by pulling it LOW while other (existing) circuitry in the power supply is pulling it HIGH. So we&#8217;ll take the same approach as was used by the MI8-E: Sink it to GND using an NPN transistor with no collector or emitter series resistor. Be careful to keep the pulse width short, to avoid circuit damage.<\/li>\n<\/ul>\n<p>The DATAx-L lines could be driven by 7406 (inverter) or 7407 (buffer) ICs. Those ICs will be driven by a pair of 74HC595s. When the 74HC595&#8217;s are reset (by the \/MR input being pulled low), the 74HC595&#8217;s ouputs will go LOW. So we&#8217;ll use 7406&#8217;s in the output stage, so the DATAx-L lines float high during reset. This will ensure no bus contention on these lines at reset.<\/p>\n<p>The other 4 output status lines (which exclude PULSE-LA-H and POWER-OK-H) need to float high on reset. The output stage is being driven directly by the Arduino Nano. When the Arduino is rest, its outputs go high impedance. So the inputs to the output stage (7406 or 7407) go high-impedance on reset. So we&#8217;ll use a 7407 on these 4 lines.<\/p>\n<p>PULSE-LA-H need to be allowed to float LOW on reset. The output stage is an NPN transistor configured as an emitter follower, which is driven directly by the Arduino Nano pin, which will go high impedance on reset. We&#8217;ll use a pull-down resistor from the transistor base to GND, to ensure the transistor is switched off during reset.<\/p>\n<p>POWER-OK-H needs to be left to float LOW (or be driven HIGH by the PDP-8\/e&#8217;s power supply) without interference from our board. The output stage is an NPN transistor with emitter tied to GND, which is driven directly by the Arduino Nano pin, which will go high impedance on reset. So the same approach will be taken here: we&#8217;ll use a pull-down resistor from the transistor base to GND, to ensure the transistor is switched off during reset. <\/p>\n<h4>Toggling Arduino output pins<\/h4>\n<p>Theer are two ways to toggle an Arudino output pin. You can use the &#8220;digitialWrite&#8221; library function, or you can do direct PORTx bitwise manipulation.<\/p>\n<p>The digitalWrite function is slow. It results in a minimum pulse width of 5.5 uSec.  Replacing the digitalWrite statements with direct register-level instructions (eg PORTB &#038;= B11111101) shortens the minimum pulse width to about 150 nSec.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I am in the process of developing a multi-device &#8220;Omnibus Bootstrap Loader&#8221; board. The purpose of this project is to transfer bootstrap loader code into the PDP-8&#8217;s core memory, using a similar technique to DEC&#8217;s MI8-E board. This page captures my random thoughts and observations throughout the project. Interfacing to the Omnibus The pdp8\/e pdp8\/m ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/avitech.com.au\/?page_id=3267\" 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-3267","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P7xTsk-QH","jetpack-related-posts":[{"id":3204,"url":"https:\/\/avitech.com.au\/?page_id=3204","url_meta":{"origin":3267,"position":0},"title":"DEC MI8-E Bootstrap loader for PDP-8\/e","author":"malcolm","date":"15-April-2018","format":false,"excerpt":"The MI8-E is a \"hardware bootstrap loader\" 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\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\/04\/mi8e-01.jpg?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?resize=350%2C200 1x, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?resize=700%2C400 2x, https:\/\/i0.wp.com\/avitech.com.au\/wp-content\/uploads\/2018\/04\/mi8e-01.jpg?resize=1050%2C600 3x"},"classes":[]},{"id":3372,"url":"https:\/\/avitech.com.au\/?page_id=3372","url_meta":{"origin":3267,"position":1},"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":2514,"url":"https:\/\/avitech.com.au\/?page_id=2514","url_meta":{"origin":3267,"position":2},"title":"SerialDisk Integration to SIMH","author":"malcolm","date":"20-August-2017","format":false,"excerpt":"This page describes the process of setting up an interface between SIMH and SerialDisk, so that SIMH has read\/write access to the same image files as SerialDisk serves up to a real PDP-8. Most of what you need to do this is already set up in Kyle's distribution of SerialDisk.\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":3267,"position":3},"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":13241,"url":"https:\/\/avitech.com.au\/?page_id=13241","url_meta":{"origin":3267,"position":4},"title":"Open-SIMH","author":"malcolm","date":"8-October-2025","format":false,"excerpt":"This page has my notes relating to building and using Open-SIMH, particularly in the context of Windows machines. The website for Open-SIMH is here -> https:\/\/opensimh.org\/ The official Open-SIMH repository can be found here -> https:\/\/github.com\/open-simh\/simh That official Open-SIMH repository has source code only. It does not contain any Windows\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2722,"url":"https:\/\/avitech.com.au\/?page_id=2722","url_meta":{"origin":3267,"position":5},"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":[]}],"_links":{"self":[{"href":"https:\/\/avitech.com.au\/index.php?rest_route=\/wp\/v2\/pages\/3267","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=3267"}],"version-history":[{"count":12,"href":"https:\/\/avitech.com.au\/index.php?rest_route=\/wp\/v2\/pages\/3267\/revisions"}],"predecessor-version":[{"id":3269,"href":"https:\/\/avitech.com.au\/index.php?rest_route=\/wp\/v2\/pages\/3267\/revisions\/3269"}],"wp:attachment":[{"href":"https:\/\/avitech.com.au\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}