{"id":12414,"date":"2022-07-17T11:13:39","date_gmt":"2022-07-17T11:13:39","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=12414"},"modified":"2022-07-17T14:00:55","modified_gmt":"2022-07-17T14:00:55","slug":"kenbak-1-jump-and-mark-jmd","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/","title":{"rendered":"Kenbak-1 Jump and Mark (JMD)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction to the Kenbak-1 Jump and Mark (JMD) Instruction<\/h2>\n\n\n\n<p>The Kenbak-1 Jump and Mark (JMD) allows us to create &#8220;Subroutines&#8221; that we can use over and over again.  Generally, we can use this for delay loops, common math conversions, or anything else we need to do more than once in a program scan.  When we Jump and Mark, we place the location of the next register into the first memory location that we jump to.  <\/p><div id=\"bryce-3128101404\" 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>Let&#8217;s say, we are on memory cell #006.  We JMD to memory cell 027.  Since the next instruction is in memory cell #010 (006 + 2 (octal)), the value of 010 will go into memory cell 027.  That way, we know where the next instruction resides in the main routine.  In other words, we &#8220;bookmark&#8221; the next location in the main routine.<\/p>\n\n\n\n<p>After the subroutine executes, we can simply do an indirect jump back to this address.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Obtaining a Kenbak-1<\/h2>\n\n\n\n<p>If you don&#8217;t have a Kenbak reproduction, you can purchase a micro-Kenbak kit from <a href=\"https:\/\/adwaterandstir.com\/kenbak\/\">adwaterandstir<\/a>.  Another option is to build your own <a href=\"https:\/\/www.instructables.com\/25-Scale-KENBAK-1-Personal-Computer-Reproduction\/\">Kenbak 2\/5<\/a>.   On the other hand, you can try it before you build it.  You can access a web based simulator at <a href=\"http:\/\/www.neocomputer.org\/kenbak\/kenbak1-JS.html\">neocomputer.org<\/a>.  Special thanks to <a href=\"https:\/\/github.com\/funnypolynomial\/Kenbakuino\">Mark Wilson<\/a> who put together the code to run on the Atmega 328.  Most of us could never afford an original Kenbak-1 since there are only a dozen or so left in the world.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/03\/image-153.png\" alt=\"Kenbak wiring\" class=\"wp-image-11097 lazyload\" width=\"440\" height=\"241\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/03\/image-153.png 774w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/03\/image-153-300x164.png 300w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/03\/image-153-768x421.png 768w\" data-sizes=\"(max-width: 440px) 100vw, 440px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 440px; --smush-placeholder-aspect-ratio: 440\/241;\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">About this Program Example<\/h2>\n\n\n\n<p>For example, we&#8217;ll create a simple flasher program.  Light 0 will continuously energize and de-energize.   It&#8217;s important to realize that the Kenbak-1 executes too fast to do this without a delay.  We want to be able to visually see the light.  Therefore, we will need a delay loop.  We need to delay the light from coming on, and we need to delay it from shutting off.<\/p>\n\n\n\n<p>We&#8217;ll create a &#8220;Subroutine&#8221; that will cause a delay.   Here is a basic flow of how we will set this up.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Main Routine:\n\tLoad 0 to A Register\n\tRun Delay and Display Loop (Below) with JMD\n\tLoad 1 to A Register\n\tRun Delay and Display Loop (Below) with JMD\n\tGo back to top of program\n\nDelay and Display Loop:\n\tMark Location of Next Instruction in Main Routine\n\t\t(JMD from where we came + 2)\n\tLoad 177 to B Register\n\tSubtract 1 from B Register\n\tIf B is not Zero, keep subtracting 1\n\tDisplay A Register to Output (LED\u2019s)\n\tReturn to Next Instruction in Main Routine (Above) with JPI<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Write the Logic<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">The Main Routine<\/h3>\n\n\n\n<p>Before we begin, let&#8217;s take a look at the code in the Main Routine<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"230\" height=\"264\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/07\/image-106.png\" alt=\"\" class=\"wp-image-12416 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 230px; --smush-placeholder-aspect-ratio: 230\/264;\" \/><\/figure>\n\n\n\n<p>Obviously, in Memory Cell #3, we are setting the program counter to 004.  That way, the program will start in memory cell #4.<\/p>\n\n\n\n<p>For memory cells #004 and #005, we simply load the &#8220;A&#8221; register with 0<\/p>\n\n\n\n<p>At this point, in memory cell #6, we jump to our subroutine starting at 027.  W mark the position of the next instruction into cell 027.  The next instruction (in the main routine) will be the location of our JMD + 2.  Since our JMD is in memory cell #6, the location of the next instruction will be memory cell #010.  Keep in mind, these memory cells are in octal.  Therefore, we place the value of 010 into memory cell 027.   I&#8217;m used to instructions being on cells with even numbers.  For this reason, when using a Jump and Mark, I jump to cell with an odd number.   <\/p>\n\n\n\n<p>In short, the first cell of the subroutine contains the location we want to come back to.  The rest of the subroutine contains the logic we wish to execute.  We&#8217;ll talk about the subroutine under the next heading.  Basically, the subroutine will create a delay.  After that, it will display the A register to our LED&#8217;s, and return to the main routine.<\/p>\n\n\n\n<p>At this point, when we return from the subroutine, we execute cell 010.  This loads a 1 into the A register.  <\/p>\n\n\n\n<p>Now, in cell 012, we jump and mark again for the delay and display.<\/p>\n\n\n\n<p>After that, we simply start the program all over again at memory cell 004.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Subroutine<\/h3>\n\n\n\n<p>Our Subroutine will contain the following logic:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"256\" height=\"220\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/07\/image-107.png\" alt=\"\" class=\"wp-image-12418 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 256px; --smush-placeholder-aspect-ratio: 256\/220;\" \/><\/figure>\n\n\n\n<p>It&#8217;s important to realize that cell 027 is not an instruction.  This cell simply holds the cell # of the location we need to jump back to when we finish the subroutine.  Our first instruction resides at 030.<\/p>\n\n\n\n<p>In memory cell 030, we load the B register.  I&#8217;m loading this with the value of 177.  Obviously, the higher the number, the more the delay.  This value depends on how fast you want the light to flash.  I&#8217;ve found that with the web emulator, a good value will be around 010.  If you have a hardware emulator, it would depend on the speed you have the processor set at.  You might have to play with this value. <\/p>\n\n\n\n<p>In memory cell 032, we subtract 1 from the B register.<\/p>\n\n\n\n<p>At location 034, we check to see if the B register if zero yet.  If not then we jump back up and keep subtracting 1 from this value until it equals 0.  This just keeps the processor busy to slow down the flash.<\/p>\n\n\n\n<p>Once the B register equals zero, at location 036, we store the A register to the display.  Keep in mind that our main program sets the A register.  We don&#8217;t have to worry about it&#8217;s value here in our subroutine.<\/p>\n\n\n\n<p>Finally, we go down to line 034.  This is an <strong>indirect<\/strong> jump.  In this case, the <strong>indirect<\/strong> jump simply looks at memory cell 027.  The value of cell 027 tells us what cell to jump to.  It&#8217;s important to realize, we don&#8217;t jump to 027.  We jump to whatever cell number 027 contains.    <\/p>\n\n\n\n<p>Conversely, if this was a direct jump, the Kenbak would jump to 027, which we don&#8217;t want.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Summary for Kenbak-1 Jump and Mark (JMD)<\/h3>\n\n\n\n<p>In Short, the JMD instruction acts like a &#8220;GOSUB&#8221; in BASIC.  It allows us to call and return from subroutines.  The first memory cell simply tells us what location to return back to.<\/p>\n\n\n\n<p>For more information on vintage computers, visit the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/vintage-computers\/\">Vintage Computer category page!<\/a><\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-3768377196\" 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 the Kenbak-1 Jump and Mark (JMD) Instruction The Kenbak-1 Jump and Mark (JMD) allows us to create &#8220;Subroutines&#8221; that we can use over and over again. Generally, we can use this for delay loops, common math conversions, or anything else we need to do more than once in a program scan. When we <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":12416,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[762,727],"tags":[757,755,752,756,754],"class_list":{"0":"post-12414","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-indirect-jump","10":"tag-jmd","11":"tag-jpi","12":"tag-jump-and-mark","13":"tag-kenbak-1","14":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kenbak-1 Jump and Mark (JMD) - Bryce Automation<\/title>\n<meta name=\"description\" content=\"Jump to subroutines with the Kenbak-1 Jump and Mark (JMD) Instruction. Execute the JMD and return from subroutines with Indirect Jump (JPI)\" \/>\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\/07\/17\/kenbak-1-jump-and-mark-jmd\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kenbak-1 Jump and Mark (JMD) - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"Jump to subroutines with the Kenbak-1 Jump and Mark (JMD) Instruction. Execute the JMD and return from subroutines with Indirect Jump (JPI)\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/\" \/>\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-07-17T11:13:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-17T14:00:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/07\/image-106.png\" \/>\n\t<meta property=\"og:image:width\" content=\"230\" \/>\n\t<meta property=\"og:image:height\" content=\"264\" \/>\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\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"Kenbak-1 Jump and Mark (JMD)\",\"datePublished\":\"2022-07-17T11:13:39+00:00\",\"dateModified\":\"2022-07-17T14:00:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/\"},\"wordCount\":923,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/image-106.png\",\"keywords\":[\"Indirect Jump\",\"JMD\",\"JPI\",\"Jump and Mark\",\"Kenbak-1\"],\"articleSection\":[\"Kenbak-1\",\"Vintage Computers\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/\",\"name\":\"Kenbak-1 Jump and Mark (JMD) - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/image-106.png\",\"datePublished\":\"2022-07-17T11:13:39+00:00\",\"dateModified\":\"2022-07-17T14:00:55+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Jump to subroutines with the Kenbak-1 Jump and Mark (JMD) Instruction. Execute the JMD and return from subroutines with Indirect Jump (JPI)\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/image-106.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/image-106.png\",\"width\":230,\"height\":264,\"caption\":\"Kenbak-1 JPD Instruction\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/07\\\/17\\\/kenbak-1-jump-and-mark-jmd\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kenbak-1 Jump and Mark (JMD)\"}]},{\"@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":"Kenbak-1 Jump and Mark (JMD) - Bryce Automation","description":"Jump to subroutines with the Kenbak-1 Jump and Mark (JMD) Instruction. Execute the JMD and return from subroutines with Indirect Jump (JPI)","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\/07\/17\/kenbak-1-jump-and-mark-jmd\/","og_locale":"en_US","og_type":"article","og_title":"Kenbak-1 Jump and Mark (JMD) - Bryce Automation","og_description":"Jump to subroutines with the Kenbak-1 Jump and Mark (JMD) Instruction. Execute the JMD and return from subroutines with Indirect Jump (JPI)","og_url":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2022-07-17T11:13:39+00:00","article_modified_time":"2022-07-17T14:00:55+00:00","og_image":[{"width":230,"height":264,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/07\/image-106.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\/07\/17\/kenbak-1-jump-and-mark-jmd\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"Kenbak-1 Jump and Mark (JMD)","datePublished":"2022-07-17T11:13:39+00:00","dateModified":"2022-07-17T14:00:55+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/"},"wordCount":923,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/07\/image-106.png","keywords":["Indirect Jump","JMD","JPI","Jump and Mark","Kenbak-1"],"articleSection":["Kenbak-1","Vintage Computers"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/","url":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/","name":"Kenbak-1 Jump and Mark (JMD) - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/07\/image-106.png","datePublished":"2022-07-17T11:13:39+00:00","dateModified":"2022-07-17T14:00:55+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Jump to subroutines with the Kenbak-1 Jump and Mark (JMD) Instruction. Execute the JMD and return from subroutines with Indirect Jump (JPI)","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/07\/image-106.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/07\/image-106.png","width":230,"height":264,"caption":"Kenbak-1 JPD Instruction"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/07\/17\/kenbak-1-jump-and-mark-jmd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"Kenbak-1 Jump and Mark (JMD)"}]},{"@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\/12414","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=12414"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/12414\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/12416"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=12414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=12414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=12414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}