{"id":2845,"date":"2024-10-09T13:01:13","date_gmt":"2024-10-09T12:01:13","guid":{"rendered":"https:\/\/www.robertprice.co.uk\/robblog\/?p=2845"},"modified":"2024-10-09T13:01:13","modified_gmt":"2024-10-09T12:01:13","slug":"rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2","status":"publish","type":"post","link":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/","title":{"rendered":"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">As part of <a href=\"https:\/\/www.robertprice.co.uk\/robblog\/taking-part-in-retro-challenge-2024\/\">this year&#8217;s Retro Challenge<\/a>, I am building a rotary encoder module for the RC2014 computer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-5-building-and-testing-the-pcb\/\">I have built a custom PCB<\/a>, and I can use it from BASIC. However, I would also like to be able to use it from Z80 machine code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To run Z80 machine code on my <a href=\"https:\/\/rc2014.co.uk\/full-kits\/rc2014-classic-ii\/\">RC2014 Classic 2<\/a> I have a few options.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Use BASIC to load in a hex dump of assembled code.<\/li>\n\n\n\n<li>Use the SCM ROM image to load in a hex dump of assembled code.<\/li>\n\n\n\n<li>Burn my assembled code into a ROM and insert that into the RC2014.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">I have designed a new ROM PCB to help me do options 2 and 3 in the future. For now, I will use BASIC to load in assembled code and run it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before I can load assembled code, I need to write and assemble it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I am going to do this on an Apple Macbook Pro. I&#8217;m going to need an assembler, and something to create hex dumps from the assembled code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I am going to use <a href=\"https:\/\/github.com\/z00m128\/sjasmplus\">SJASMPLUS<\/a> as my Z80 assembler. On a Mac this needs to be built from the source code. In a terminal window the following should work.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>make clean\nmake\nsudo make install<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To create the hex files, I am going to use the z88dk-appmake command from <a href=\"https:\/\/github.com\/z88dk\/z88dk\">z88dk<\/a>. z88dk is also provides an assembler and a C compiler that can build applications for the RC2014. I&#8217;m not going to use these at the moment. There are installation instructions and a binary that can easily be installed on a Mac.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can use any text editor you want, but I&#8217;m going to be using Visual Studio Code. I&#8217;m also using the Z80 Assembly extension for syntax highlighting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;m going to write a simple Z80 assembly language program to read the the input from the rotary encoder and show it on the Digital I\/O module&#8217;s LEDs. It&#8217;s going to exit when the rotary encoder&#8217;s switch is pressed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Rotary Encoder module is on input address $DE. The Digital I\/O module is on input address $03.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    OUTPUT rotaryencodertest.z80\n\n; On the RC2014 Classic 2 running from BASIC the Z80\n; code runs from address $9000. \n    ORG $9000\n\n; The input and output ports to use.\nINPUT_PORT  EQU $DE\nOUTPUT_PORT EQU $03\n\n; The input bits from the rotary encoder.\nCLK1    EQU $1\nDT1     EQU $2\nSW1     EQU $4\n\n\nloop:\n; read the input port\n    in a,(INPUT_PORT)\n; send the input directly to the output port\n    out (OUTPUT_PORT),a\n\n; now check if the switch on first rotary encode has been\n; pressed. If it hasn't, loop back.\n    and SW1\n    cp SW1\n    jp nz, loop\n\n; the switch has been pressed, so we clear the output\n; and exit.\n    ld a,0\n    out (OUTPUT_PORT),a\n\n    ret<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve saved this as rotaryencodertest.s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To assemble to code I need to use the following line in a terminal&#8230;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sjasmplus rotaryencodertest.s<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To convert the output to intel format hex, I need to use the following line in a terminal&#8230;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>z88dk-appmake +hex --org 0x9000 -b rotaryencodertest.z80<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I should now I have a file called rotaryencodertest.ihx.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To load this onto the RC2014 Classic 2, I can use the example <a href=\"https:\/\/github.com\/RC2014Z80\/RC2014\/blob\/master\/BASIC-Programs\/hexload\/README.md\">hexload.bas program<\/a>. I&#8217;ll include the full code here.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>new\nclear\n10 REM Created by Filippo Bergamasco,\n11 REM and modified by DaveP for the RC2014\n12 REM Adapted for z88dk by feilipu\n20 REM Version 1.0\n30 Print \"Loading Data\"\n40 let mb=&amp;H8900\n50 print \"Start Address: \";hex$(mb)\n60 REM Go to READ Subroutine.\n70 GOSUB 1000\n80 print \"End Address:   \";hex$(mb-1)\n\n90 REM Change USR(0) Pointer for HexLoad\n100 GOSUB 1100\n\n110 REM RUN THE HEXLOAD CODE!\n120 print usr(0)\n\n130 REM Change USR(0) Pointer to 0x9000\n140 GOSUB 1200\n\n150 REM RUN THE PROGRAMME CODE!\n160 print usr(0)\n170 END \n\n1000 REM Routine to load Data\n1010 REM Needs var mb set to start location\n1020 read a\n1030 if a&gt;255 then RETURN\n1040 rem print HEX$(mb),a\n1050 poke mb, a\n1060 let mb=mb+1\n1070 goto 1020\n\n1100 REM Location of usr address &amp;H8049\n1110 print \"USR(0) -&gt; HexLoad\"\n1120 let mb=&amp;H8049 \n1130 doke mb, &amp;H8900\n1140 RETURN \n\n1200 REM Location of usr address &amp;H8049\n1210 print \"USR(0) -&gt; 0x9000, z88dk default\"\n1220 let mb=&amp;H8049\n1230 doke mb, &amp;H9000\n1240 RETURN\n\n9010 data 33,116,137,205,109,137,215,254,58,32,251,14\n9040 data 0,205,83,137,71,205,83,137,87,205,83,137\n9070 data 95,205,83,137,254,1,40,23,254,0,32,33\n9100 data 205,83,137,18,19,16,249,205,83,137,121,183\n9130 data 32,26,62,35,207,24,207,205,83,137,121,183\n9160 data 32,14,33,206,137,205,109,137,201,33,172,137\n9190 data 205,109,137,201,33,189,137,205,109,137,201,205\n9220 data 100,137,7,7,7,7,111,205,100,137,181,111\n9250 data 129,79,125,201,215,214,48,254,10,216,214,7\n9280 data 201,126,183,200,207,35,24,249,72,69,88,32\n9310 data 76,79,65,68,69,82,32,98,121,32,70,105\n9340 data 108,105,112,112,111,32,66,101,114,103,97,109\n9370 data 97,115,99,111,32,38,32,102,101,105,108,105\n9400 data 112,117,32,102,111,114,32,122,56,56,100,107\n9430 data 10,13,58,0,10,13,73,110,118,97,108,105\n9460 data 100,32,84,121,112,101,10,13,0,10,13,66\n9490 data 97,100,32,67,104,101,99,107,115,117,109,10\n9520 data 13,0,10,13,68,111,110,101,10,13,0,0\n9550 data 999\n9999 END\nrun<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Paste this into a terminal connected to the RC2014 and it will prompt you to enter hex. Cut and paste the rotaryencodertext.ihx and it should load and execute.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now turning the rotary encoder will show the binary input on the output LEDs. Pressing the switch on the rotary encoder attached to port 1 will return you to BASIC.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Rotary Encoder Z80\" width=\"840\" height=\"473\" src=\"https:\/\/www.youtube.com\/embed\/X11qdDemd98?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This is it running. Ignore the poor soldering on the Digital I\/O board. I did that a few years ago and (I think) I have improved since then.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As part of this year&#8217;s Retro Challenge, I am building a rotary encoder module for the RC2014 computer. I have built a custom PCB, and I can use it from BASIC. However, I would also like to be able to use it from Z80 machine code. To run Z80 machine code on my RC2014 Classic &hellip; <a href=\"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":2837,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[113],"tags":[145,117,115,131,119],"class_list":["post-2845","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rc2024","tag-assembly-language","tag-rc2014","tag-rc2024","tag-rotary-encoder","tag-z80"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2 - Robert Price<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2 - Robert Price\" \/>\n<meta property=\"og:description\" content=\"As part of this year&#8217;s Retro Challenge, I am building a rotary encoder module for the RC2014 computer. I have built a custom PCB, and I can use it from BASIC. However, I would also like to be able to use it from Z80 machine code. To run Z80 machine code on my RC2014 Classic &hellip; Continue reading &quot;RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Robert Price\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-09T12:01:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.robertprice.co.uk\/robblog\/assets\/RotaryEncodedPCB-Installed.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"rob\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"rob\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/\"},\"author\":{\"name\":\"rob\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/#\\\/schema\\\/person\\\/fac6d5b076e0e14e1fb13e15b542a6c5\"},\"headline\":\"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2\",\"datePublished\":\"2024-10-09T12:01:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/\"},\"wordCount\":526,\"image\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/assets\\\/RotaryEncodedPCB-Installed.jpg\",\"keywords\":[\"Assembly Language\",\"RC2014\",\"RC2024\",\"Rotary Encoder\",\"Z80\"],\"articleSection\":[\"RC2024\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/\",\"url\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/\",\"name\":\"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2 - Robert Price\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/assets\\\/RotaryEncodedPCB-Installed.jpg\",\"datePublished\":\"2024-10-09T12:01:13+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/#\\\/schema\\\/person\\\/fac6d5b076e0e14e1fb13e15b542a6c5\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/assets\\\/RotaryEncodedPCB-Installed.jpg\",\"contentUrl\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/assets\\\/RotaryEncodedPCB-Installed.jpg\",\"width\":1200,\"height\":900,\"caption\":\"Rotary Encoder Module for RC2014\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/#website\",\"url\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/\",\"name\":\"Robert Price\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/#\\\/schema\\\/person\\\/fac6d5b076e0e14e1fb13e15b542a6c5\",\"name\":\"rob\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6f0eb511179100a4e968abc70403e33686e6ab3e992e392bedd2ccac01da666c?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6f0eb511179100a4e968abc70403e33686e6ab3e992e392bedd2ccac01da666c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6f0eb511179100a4e968abc70403e33686e6ab3e992e392bedd2ccac01da666c?s=96&d=mm&r=g\",\"caption\":\"rob\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2 - Robert Price","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:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/","og_locale":"en_GB","og_type":"article","og_title":"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2 - Robert Price","og_description":"As part of this year&#8217;s Retro Challenge, I am building a rotary encoder module for the RC2014 computer. I have built a custom PCB, and I can use it from BASIC. However, I would also like to be able to use it from Z80 machine code. To run Z80 machine code on my RC2014 Classic &hellip; Continue reading \"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2\"","og_url":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/","og_site_name":"Robert Price","article_published_time":"2024-10-09T12:01:13+00:00","og_image":[{"width":1200,"height":900,"url":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/RotaryEncodedPCB-Installed.jpg","type":"image\/jpeg"}],"author":"rob","twitter_card":"summary_large_image","twitter_misc":{"Written by":"rob","Estimated reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/#article","isPartOf":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/"},"author":{"name":"rob","@id":"https:\/\/www.robertprice.co.uk\/robblog\/#\/schema\/person\/fac6d5b076e0e14e1fb13e15b542a6c5"},"headline":"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2","datePublished":"2024-10-09T12:01:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/"},"wordCount":526,"image":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/RotaryEncodedPCB-Installed.jpg","keywords":["Assembly Language","RC2014","RC2024","Rotary Encoder","Z80"],"articleSection":["RC2024"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/","url":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/","name":"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2 - Robert Price","isPartOf":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/#primaryimage"},"image":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/RotaryEncodedPCB-Installed.jpg","datePublished":"2024-10-09T12:01:13+00:00","author":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/#\/schema\/person\/fac6d5b076e0e14e1fb13e15b542a6c5"},"breadcrumb":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/#primaryimage","url":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/RotaryEncodedPCB-Installed.jpg","contentUrl":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/RotaryEncodedPCB-Installed.jpg","width":1200,"height":900,"caption":"Rotary Encoder Module for RC2014"},{"@type":"BreadcrumbList","@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-6-getting-z80-assembly-language-programs-on-to-the-rc2014-classic-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.robertprice.co.uk\/robblog\/"},{"@type":"ListItem","position":2,"name":"RC2024 \u2013 Part 6 \u2013 Getting Z80 Assembly Language Programs On To The RC2014 Classic 2"}]},{"@type":"WebSite","@id":"https:\/\/www.robertprice.co.uk\/robblog\/#website","url":"https:\/\/www.robertprice.co.uk\/robblog\/","name":"Robert Price","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.robertprice.co.uk\/robblog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.robertprice.co.uk\/robblog\/#\/schema\/person\/fac6d5b076e0e14e1fb13e15b542a6c5","name":"rob","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/6f0eb511179100a4e968abc70403e33686e6ab3e992e392bedd2ccac01da666c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6f0eb511179100a4e968abc70403e33686e6ab3e992e392bedd2ccac01da666c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6f0eb511179100a4e968abc70403e33686e6ab3e992e392bedd2ccac01da666c?s=96&d=mm&r=g","caption":"rob"}}]}},"_links":{"self":[{"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/posts\/2845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/comments?post=2845"}],"version-history":[{"count":2,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/posts\/2845\/revisions"}],"predecessor-version":[{"id":2849,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/posts\/2845\/revisions\/2849"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/media\/2837"}],"wp:attachment":[{"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/media?parent=2845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/categories?post=2845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/tags?post=2845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}