{"id":14587,"date":"2022-12-10T14:15:34","date_gmt":"2022-12-10T14:15:34","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=14587"},"modified":"2022-12-10T14:15:37","modified_gmt":"2022-12-10T14:15:37","slug":"compiling-cp-m-for-z80","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/","title":{"rendered":"Compiling CP\/M for Z80"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction to Compiling CP\/M for the Z80 Processor<\/h2>\n\n\n\n<p>When Compiling CP\/M for the  Z80 Processor, we&#8217;ll start with Donn Stewart&#8217;s documentation for the <a href=\"http:\/\/cpuville.com\/Kits\/Single-board-kit.html\">CPUVille Z80 Single Board Computer.<\/a>  Each compiler is picky about a few different things, so it&#8217;s important to realize that I&#8217;m using the <a href=\"http:\/\/download.savannah.nongnu.org\/releases\/z80asm\/\">z80asm<\/a> assembler for this post (V1.8).  I&#8217;m running Debian Linux.<\/p><div id=\"bryce-3295322882\" 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>Basically, we just need to download the CP\/M Source code.  After that, we&#8217;ll make a few changes.  Then we&#8217;ll compile the source code into a binary.  Finally, we&#8217;ll check the size to be sure it&#8217;s the correct length of 5683 bytes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installing the Assembler<\/h2>\n\n\n\n<p>In my home directory, I created a folder called &#8220;a80&#8221;.  After that we&#8217;ll switch into the a80 directory using the cd command.  Personally, I start all directories containing assemblers with the letter &#8220;a&#8221;, so I can keep track of where they are on my Linux machine.  However, you can name this directory anything you like.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir a80\ncd a80<\/code><\/pre>\n\n\n\n<p>Next, we&#8217;ll use the wget command to get the assembler.  I&#8217;m using version 1.8.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget http:\/\/download.savannah.nongnu.org\/releases\/z80asm\/z80asm-1.8.tar.gz<\/code><\/pre>\n\n\n\n<p>Our next step is to extract the files.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tar xzvf z80asm-1.8.tar.gz<\/code><\/pre>\n\n\n\n<p>At this point, we&#8217;ll go into the directory of the files we just extracted.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd z80asm-1.8<\/code><\/pre>\n\n\n\n<p>Now we need to build the assembler with the &#8220;make&#8221; command.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>make<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Preparing CP\/M <\/h2>\n\n\n\n<p>At this point, we are ready to prepare CP\/M for assembly.  We&#8217;ll need to download the source code, then make a few changes.  First, we&#8217;ll set up CP\/M for 64K.  After that, we&#8217;ll change some of the old 8080 statements to work with the Z80 assembler.  Finally, there are a few other specific changes we need to make that are specific to the compiler we use.  For this compiler, all of the labels in the source code need to end with a colon.  I noticed however, with some of the other compilers, there must be at least a space after the label.  These errors should be obvious when you compile your code under any assembler when you view the list file.<\/p>\n\n\n\n<p>First, let&#8217;s download the source code.  I&#8217;m still in the z80asm-1.8 folder.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget http:\/\/www.cpm.z80.de\/download\/cpm2-asm.zip<\/code><\/pre>\n\n\n\n<p>Now we need to unzip this file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unzip cpm2-asm.zip<\/code><\/pre>\n\n\n\n<p>At this point, we&#8217;re ready to make some changes as per Donn&#8217;s instructions at <a href=\"http:\/\/cpuville.com\">CPUVille<\/a>.  I&#8217;ll be using kwrite to make these changes, but any standard text editor should work fine.<\/p>\n\n\n\n<p>It&#8217;s important to realize that it&#8217;s the CPM22.Z80 file that we will be editing.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kwrite CPM22.Z80<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">SET MEM Length<\/h3>\n\n\n\n<p>The very first line of code has the MEM label.  We&#8217;ll set this up as follows for a 64k system:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"657\" height=\"297\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-1.png\" alt=\"\" class=\"wp-image-14589 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-1.png 657w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-1-300x136.png 300w\" data-sizes=\"(max-width: 657px) 100vw, 657px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 657px; --smush-placeholder-aspect-ratio: 657\/297;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Correct the code for Z80<\/h3>\n\n\n\n<p>At this point, we need to convert some of the left over code from 8080 into Z80.  This is a simple search and replace.  Just search for &#8220;,M&#8221;, and replace all instances with a &#8220;,(HL)&#8221;.  You can do these one at a time if you are more comfortable with that.  Just press CTRL-R, and you will see the find and replace fields at the bottom of your screen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"221\" height=\"103\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-3.png\" alt=\"\" class=\"wp-image-14592 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 221px; --smush-placeholder-aspect-ratio: 221\/103;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">End all Labels with : for z80asm Assembler<\/h3>\n\n\n\n<p>Next, we need to add a colon &#8220;:&#8221; after all of the  labels.  Thankfully, there aren&#8217;t many of them that need this, and most of them are at the top of the code. Aside from the labels at the top, we will need to search our code and put a colon after the following other labels:  NFUNCTS, STKAREA, CCPSTACK, NUMCMDS.  Be sure to only place a colon after the labels, which are on the far left side of the code.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"544\" height=\"423\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-2.png\" alt=\"\" class=\"wp-image-14590 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-2.png 544w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-2-300x233.png 300w\" data-sizes=\"(max-width: 544px) 100vw, 544px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 544px; --smush-placeholder-aspect-ratio: 544\/423;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Set the Command Prompt to Capitol A<\/h3>\n\n\n\n<p>At this point, we&#8217;ll change the command prompt to display a capitol letter A.   Search for the label CMMND1.  You can set this up as follows.  You might have to hit &#8220;Find Next&#8221; a few times to get to this block.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"533\" height=\"159\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-4.png\" alt=\"\" class=\"wp-image-14593 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-4.png 533w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-4-300x89.png 300w\" data-sizes=\"(max-width: 533px) 100vw, 533px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 533px; --smush-placeholder-aspect-ratio: 533\/159;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Add the END Statement<\/h3>\n\n\n\n<p>At last, we need to terminate the code with an END statement at the very bottom.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"626\" height=\"137\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-5.png\" alt=\"\" class=\"wp-image-14594 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-5.png 626w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-5-300x66.png 300w\" data-sizes=\"(max-width: 626px) 100vw, 626px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 626px; --smush-placeholder-aspect-ratio: 626\/137;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Compile, and Verify CP\/M<\/h3>\n\n\n\n<p>Finally, Compile CP\/M.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/z80asm -i CPM22.Z80 -l -o cpm22.sys<\/code><\/pre>\n\n\n\n<p>At this point, we&#8217;ll verify the size is 5683 bytes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"650\" height=\"133\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-6.png\" alt=\"\" class=\"wp-image-14596 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-6.png 650w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-6-300x61.png 300w\" data-sizes=\"(max-width: 650px) 100vw, 650px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 650px; --smush-placeholder-aspect-ratio: 650\/133;\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Summary of Compiling CP\/M for Z80<\/h2>\n\n\n\n<p>The Z80 Single Board Computer at CPUVille is capable of running CP\/M.  To get the most out of this machine, you may want to install this onto an IDE drive.  We simply install an assembler, download the CP\/M Code, and make a few changes.  After that, you&#8217;re ready to compile the source code, and follow the instructions for getting CP\/M up and running on this machine!<\/p>\n\n\n\n<p>For other posts, 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-718200858\" 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 Compiling CP\/M for the Z80 Processor When Compiling CP\/M for the Z80 Processor, we&#8217;ll start with Donn Stewart&#8217;s documentation for the CPUVille Z80 Single Board Computer. Each compiler is picky about a few different things, so it&#8217;s important to realize that I&#8217;m using the z80asm assembler for this post (V1.8). I&#8217;m running Debian <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":14590,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[727],"tags":[423,870,420],"class_list":{"0":"post-14587","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-vintage-computers","8":"tag-cp-m","9":"tag-cpuville","10":"tag-z80","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>Compiling CP\/M for Z80 - Bryce Automation<\/title>\n<meta name=\"description\" content=\"Installing and Compiling CP\/M for the Z80 processor (from source code) under Linux for the CPUVille Single Board Computer.\" \/>\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\/12\/10\/compiling-cp-m-for-z80\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Compiling CP\/M for Z80 - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"Installing and Compiling CP\/M for the Z80 processor (from source code) under Linux for the CPUVille Single Board Computer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/\" \/>\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-12-10T14:15:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-10T14:15:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"544\" \/>\n\t<meta property=\"og:image:height\" content=\"423\" \/>\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\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"Compiling CP\\\/M for Z80\",\"datePublished\":\"2022-12-10T14:15:34+00:00\",\"dateModified\":\"2022-12-10T14:15:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/\"},\"wordCount\":784,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-2.png\",\"keywords\":[\"cp\\\/m\",\"cpuville\",\"z80\"],\"articleSection\":[\"Vintage Computers\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/\",\"name\":\"Compiling CP\\\/M for Z80 - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-2.png\",\"datePublished\":\"2022-12-10T14:15:34+00:00\",\"dateModified\":\"2022-12-10T14:15:37+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Installing and Compiling CP\\\/M for the Z80 processor (from source code) under Linux for the CPUVille Single Board Computer.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-2.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-2.png\",\"width\":544,\"height\":423,\"caption\":\"Compiling CP\\\/M for Z80\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/10\\\/compiling-cp-m-for-z80\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Compiling CP\\\/M for Z80\"}]},{\"@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":"Compiling CP\/M for Z80 - Bryce Automation","description":"Installing and Compiling CP\/M for the Z80 processor (from source code) under Linux for the CPUVille Single Board Computer.","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\/12\/10\/compiling-cp-m-for-z80\/","og_locale":"en_US","og_type":"article","og_title":"Compiling CP\/M for Z80 - Bryce Automation","og_description":"Installing and Compiling CP\/M for the Z80 processor (from source code) under Linux for the CPUVille Single Board Computer.","og_url":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2022-12-10T14:15:34+00:00","article_modified_time":"2022-12-10T14:15:37+00:00","og_image":[{"width":544,"height":423,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-2.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\/12\/10\/compiling-cp-m-for-z80\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"Compiling CP\/M for Z80","datePublished":"2022-12-10T14:15:34+00:00","dateModified":"2022-12-10T14:15:37+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/"},"wordCount":784,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-2.png","keywords":["cp\/m","cpuville","z80"],"articleSection":["Vintage Computers"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/","url":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/","name":"Compiling CP\/M for Z80 - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-2.png","datePublished":"2022-12-10T14:15:34+00:00","dateModified":"2022-12-10T14:15:37+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Installing and Compiling CP\/M for the Z80 processor (from source code) under Linux for the CPUVille Single Board Computer.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-2.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-2.png","width":544,"height":423,"caption":"Compiling CP\/M for Z80"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/10\/compiling-cp-m-for-z80\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"Compiling CP\/M for Z80"}]},{"@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\/14587","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=14587"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/14587\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/14590"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=14587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=14587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=14587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}