{"id":13338,"date":"2022-09-19T08:15:28","date_gmt":"2022-09-19T08:15:28","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=13338"},"modified":"2022-09-19T08:15:31","modified_gmt":"2022-09-19T08:15:31","slug":"programming-loops-on-the-kenbak-1","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/","title":{"rendered":"Programming Loops on the Kenbak-1"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction to Programming Loops on the Kenbak-1<\/h2>\n\n\n\n<p>When Programming Loops on the Kenbak-1, we will use the JPD instruction.  Basically, we set a register to a specific value.  For this example, we&#8217;ll use the X register.  Every time our loop executes, we decrement the X register.    When the X register approaches zero, we drop out of the loop.  <\/p><div id=\"bryce-4025365042\" class=\"bryce-afterfirst bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"7728240895\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>\n\n\n\n<p>We base this on conditions that we set.  We might drop out of the loop when this register is at zero, greater than zero, less than zero, etc.  <\/p>\n\n\n\n<p>This is similar to the FOR&#8230; NEXT&#8230; loops that you might see in other programming languages.  It&#8217;s just backwards.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reasons for Programming Loops on the Kenbak-1<\/h2>\n\n\n\n<p>We create a loop when we need certain logic to execute a specific amount of times.  This includes <a href=\"https:\/\/bryceautomation.com\/index.php\/2022\/09\/15\/kenbak-1-multiplication\/\">multiplication<\/a>, <a href=\"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/kenbak-1-division\/\">division<\/a>, and delay loops.  Additionally, we might use loops when we need to write to or read from different memory cells.  You might do this for creating a <a href=\"https:\/\/bryceautomation.com\/index.php\/2022\/09\/10\/kenbak-1-indirect-addressing\/\">sequencer using indirect addressing.<\/a>  In this case, you are taking data from different sequential memory cells, and displaying this on your LEDs one at a time.  Additionally, you might log data to a different memory cell each time an event happens.<\/p>\n\n\n\n<p>For this post, we&#8217;ll just create a simple delay loop.  A delay loop simply keeps the processor busy.  It &#8220;slows down&#8221; your logic execution.  You might use this delay loop for debounce when detecting if the user is pressing a button.  Another use for delay loops is for displaying data.  If you have two memory cells to display to the operator, you might display the first cell, then after a period of time, display the second cell.<\/p>\n\n\n\n<p>To demonstrate, we&#8217;ll simply display the value of 1.  Then after a short delay, we&#8217;ll display the value of 2.  After that, we&#8217;ll delay again and restart the program.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Initialize the Registers<\/h2>\n\n\n\n<p>Before we begin, I always like to initialize the registers.  That is to say, we&#8217;ll set A, B, and X to zero.  This is how I like to start each program.  Please be sure you have a <a href=\"https:\/\/adwaterandstir.com\/wp-content\/uploads\/2018\/10\/KENBAK-Programming_Worksheets.pdf\">programming worksheet<\/a> printed out.  This will help you to build the instructions we will need.<\/p>\n\n\n\n<p>I&#8217;ll be using the <a href=\"http:\/\/www.neocomputer.org\/kenbak\/kenbak1-JS.html\">Kenbak-1 Emulator<\/a> for this, but you can do the same with a <a href=\"https:\/\/adwaterandstir.com\/kenbak\/\">hardware emulator.<\/a>  I&#8217;ll post an octal dump of the logic at the bottom of this post that you can send directly to the Kenbakuino.<\/p>\n\n\n\n<p>With the Kenbak-1 emulator, you can write this logic in the memory loader.  Mr. Richardson made the memory loader smart enough to know the memory cell you are specifying, and the data that belongs in each memory cell.  It ignores the text after your data that we use for documentation.<\/p>\n\n\n\n<p>Pay attention to the worksheet for each OPCODE.  To begin, we are simply loading the immediate value of 0 into each register.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"443\" height=\"290\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-83.png\" alt=\"\" class=\"wp-image-13341 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-83.png 443w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-83-300x196.png 300w\" data-sizes=\"(max-width: 443px) 100vw, 443px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 443px; --smush-placeholder-aspect-ratio: 443\/290;\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>INIT:\n000: 000 000 000 004\n\nRESTART:\n004: 023 000 LDA 000 \n006: 123 000 LDB 000\n010: 223 000 LDX 000<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">First Delay Loop<\/h2>\n\n\n\n<p>At this point, we need to load the A register with a 1.  In cell 014, we will send this 1 to the display at address 200.  <\/p>\n\n\n\n<p>At cell 016, we begin our loop.  We&#8217;ll load the value of 177 into the X register.  This is the highest number we can set without bit #7 being involved in our value.  If we turn on bit #7, the Kenbak will consider the number to be negative.   You can lower this number to make the lights flash faster.<\/p>\n\n\n\n<p>In cell 020, we decrement the X register.  To build the JPD instruction, we need to look a little further down on your worksheet.  We simply jump back up to cell 020, and keep subtracting the value of 1 while X is still greater than 0.  Once X is no longer greater than zero, then we drop out of the loop.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"351\" height=\"239\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-84.png\" alt=\"\" class=\"wp-image-13342 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-84.png 351w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-84-300x204.png 300w\" data-sizes=\"(max-width: 351px) 100vw, 351px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 351px; --smush-placeholder-aspect-ratio: 351\/239;\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>BEGIN:\n012: 023 001 LDA 001\n014: 034 200 STA DISPLAY\n016: 223 177 LDX 177\n020: 213 001 SUB X 001 (X=X-1)\n022: 247 020 JPD 020 (DELAY LOOP)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Second Delay Loop<\/h2>\n\n\n\n<p>Now we are ready to display the value of 2 to the user.  This logic will be exactly the same, with the exception that we send the value of 2 to the display this time.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>024: 023 002 LDA 002\n026: 034 200 STA DISPLAY\n030: 223 177 LDX 177\n032: 213 001 SUB X 001 (X=X-1)\n034: 247 032 JPD 032 (DELAY LOOP)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Restart the Program<\/h2>\n\n\n\n<p>At this point, we will restart the logic by simply creating an unconditional jump back to cell 012.   This loads a 1 into the A register.  The effect will be a &#8220;Rail Road Light&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>036: 344 012 JPD 012<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Full Code<\/h2>\n\n\n\n<p>You can paste this code into the memory loader on the Kenbak-1 web emulator.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INIT:\n000: 000 000 000 004\n\nRESTART:\n004: 023 000 LDA 000 \n006: 123 000 LDB 000\n010: 223 000 LDX 000\n\nBEGIN:\n012: 023 001 LDA 001\n014: 034 200 STA DISPLAY\n016: 223 177 LDX 177\n020: 213 001 SUB X 001 (X=X-1)\n022: 247 020 JPD 020 (DELAY LOOP)\n\n024: 023 002 LDA 002\n026: 034 200 STA DISPLAY\n030: 223 177 LDX 177\n032: 213 001 SUB X 001 (X=X-1)\n034: 247 032 JPD 032 (DELAY LOOP)\n\n036: 344 012 JPD 012<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Octal Dump<\/h2>\n\n\n\n<p>If you are using a hardware emulator, you can send this octal dump directly to your Kenbakuino, or enter the octal codes on the front panel.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>000,000,000,004,023,000,123,000,223,000,023,001,034,200,223,177,213,001,247,020,023,002,034,200,223,177,213,001,247,032,344,012,s<\/code><\/pre>\n\n\n\n<p>Keep in mind that on the kenbakuino, you can slow your process.  To do this hit STOP.  Next, hold down a  bit number such as 2  while pressing STOP again.  The higher the bit number that you press, the slower the processor will be.  Now, hit START.<\/p>\n\n\n\n<p>For more information, visit the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/kenbak-1\/\">Kenbak-1 Category Page!<\/a><\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-2485905169\" class=\"bryce-after-content bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"4667596182\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction to Programming Loops on the Kenbak-1 When Programming Loops on the Kenbak-1, we will use the JPD instruction. Basically, we set a register to a specific value. For this example, we&#8217;ll use the X register. Every time our loop executes, we decrement the X register. When the X register approaches zero, we drop out <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":13344,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[762,727],"tags":[784,804],"class_list":{"0":"post-13338","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-kenbak-1","8":"category-vintage-computers","9":"tag-assembly","10":"tag-delay-loop","11":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programming Loops on the Kenbak-1 - Bryce Automation<\/title>\n<meta name=\"description\" content=\"Programming Loops on the Kenbak-1 -- Here we&#039;ll create a couple delay loops to build &quot;Rail Road Lights&quot; as an example.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programming Loops on the Kenbak-1 - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"Programming Loops on the Kenbak-1 -- Here we&#039;ll create a couple delay loops to build &quot;Rail Road Lights&quot; as an example.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Bryce Automation\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ricky.bryce.7\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-19T08:15:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T08:15:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-85.png\" \/>\n\t<meta property=\"og:image:width\" content=\"585\" \/>\n\t<meta property=\"og:image:height\" content=\"445\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ricky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"Programming Loops on the Kenbak-1\",\"datePublished\":\"2022-09-19T08:15:28+00:00\",\"dateModified\":\"2022-09-19T08:15:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/\"},\"wordCount\":795,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-85.png\",\"keywords\":[\"Assembly\",\"delay loop\"],\"articleSection\":[\"Kenbak-1\",\"Vintage Computers\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/\",\"name\":\"Programming Loops on the Kenbak-1 - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-85.png\",\"datePublished\":\"2022-09-19T08:15:28+00:00\",\"dateModified\":\"2022-09-19T08:15:31+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Programming Loops on the Kenbak-1 -- Here we'll create a couple delay loops to build \\\"Rail Road Lights\\\" as an example.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-85.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/image-85.png\",\"width\":585,\"height\":445,\"caption\":\"Kenbak-1 building loops\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/09\\\/19\\\/programming-loops-on-the-kenbak-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programming Loops on the Kenbak-1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/\",\"name\":\"Bryce Automation\",\"description\":\"Automating Home and Industry...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bryceautomation.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\",\"name\":\"Ricky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"caption\":\"Ricky\"},\"sameAs\":[\"http:\\\/\\\/bryceautomation.com\",\"https:\\\/\\\/www.facebook.com\\\/ricky.bryce.7\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ricky-bryce-4367a416\\\/\"],\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/author\\\/ricky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programming Loops on the Kenbak-1 - Bryce Automation","description":"Programming Loops on the Kenbak-1 -- Here we'll create a couple delay loops to build \"Rail Road Lights\" as an example.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/","og_locale":"en_US","og_type":"article","og_title":"Programming Loops on the Kenbak-1 - Bryce Automation","og_description":"Programming Loops on the Kenbak-1 -- Here we'll create a couple delay loops to build \"Rail Road Lights\" as an example.","og_url":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2022-09-19T08:15:28+00:00","article_modified_time":"2022-09-19T08:15:31+00:00","og_image":[{"width":585,"height":445,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-85.png","type":"image\/png"}],"author":"Ricky","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"Programming Loops on the Kenbak-1","datePublished":"2022-09-19T08:15:28+00:00","dateModified":"2022-09-19T08:15:31+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/"},"wordCount":795,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-85.png","keywords":["Assembly","delay loop"],"articleSection":["Kenbak-1","Vintage Computers"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/","url":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/","name":"Programming Loops on the Kenbak-1 - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-85.png","datePublished":"2022-09-19T08:15:28+00:00","dateModified":"2022-09-19T08:15:31+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Programming Loops on the Kenbak-1 -- Here we'll create a couple delay loops to build \"Rail Road Lights\" as an example.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-85.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/09\/image-85.png","width":585,"height":445,"caption":"Kenbak-1 building loops"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/09\/19\/programming-loops-on-the-kenbak-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"Programming Loops on the Kenbak-1"}]},{"@type":"WebSite","@id":"https:\/\/bryceautomation.com\/#website","url":"https:\/\/bryceautomation.com\/","name":"Bryce Automation","description":"Automating Home and Industry...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bryceautomation.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7","name":"Ricky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","url":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","caption":"Ricky"},"sameAs":["http:\/\/bryceautomation.com","https:\/\/www.facebook.com\/ricky.bryce.7","https:\/\/www.linkedin.com\/in\/ricky-bryce-4367a416\/"],"url":"https:\/\/bryceautomation.com\/index.php\/author\/ricky\/"}]}},"_links":{"self":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/13338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/comments?post=13338"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/13338\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/13344"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=13338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=13338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=13338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}