{"id":14709,"date":"2022-12-19T21:46:01","date_gmt":"2022-12-19T21:46:01","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=14709"},"modified":"2022-12-19T21:46:05","modified_gmt":"2022-12-19T21:46:05","slug":"simple-cp-m-console-program","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/","title":{"rendered":"Simple CP\/M Console Program"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction to writing a Simple CP\/M Console Program<\/h2>\n\n\n\n<p>Writing a Simple CP\/M Console Program will get you started with Z80 Assembly under CP\/M.  We&#8217;ll just put together a simple program that asks what your name is, then print that name back to your terminal.  The purpose of this exercise is to demonstrate how to write an assembly program to access the BDOS of CP\/M.  Additionally, you&#8217;ll learn how to compile a program using the Z80ASM Assembler under CP\/M, and how to run this program.  This will demonstration the Function 9 (write string) and Function 10 (read string) operations of BDOS.<\/p><div id=\"bryce-2895272260\" 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>Once you get started with a simple program like this, you can build on your code, and begin to learn the other Z80 processor instructions.  The key point is that we just need to get started.  After that, learning is very easy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Writing the Program in Assembly<\/h2>\n\n\n\n<p>In this case, we&#8217;ll do all of the work on the Z80 machine.  I&#8217;m using the <a href=\"http:\/\/cpuville.com\/Kits\/Single-board-kit.html\">Single Board Computer Kit from CPUVille.<\/a>  The same will work on an Altair 8800 or IMSAI 8080 with a Z80 processor.   I&#8217;ll be using WordStar 4.0.  You can use WordStar 3, as long as you apply the appropriate patches for your terminal.  Within WordStar, we just need to create a non-document file.  If you don&#8217;t have WorStar, you can just use a standard text editor on your local computer, then send the file to your Z80 machine.  The compiler we&#8217;ll use expects the assembly code to end with the .z80 extension.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"911\" height=\"348\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-17.png\" alt=\"\" class=\"wp-image-14711 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-17.png 911w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-17-300x115.png 300w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-17-768x293.png 768w\" data-sizes=\"(max-width: 911px) 100vw, 911px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 911px; --smush-placeholder-aspect-ratio: 911\/348;\" \/><\/figure>\n\n\n\n<p>We&#8217;ll hit &#8220;N&#8221; within WordStar to start a non-document file.<\/p>\n\n\n\n<p>We&#8217;ll just name this &#8220;TESTPROG.Z80&#8221;.  WordStar will prompt you to create a new file.<\/p>\n\n\n\n<p>TESTPROG.Z80 will contain the following code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n; Simple Program to ask your name and print this name to the console\nBDOS:       EQU     0005H\nINBUFLEN    EQU     100\nCR:         EQU     13\nLF:         EQU     10\n\n\n\n            ORG     0100H  ; ALL CP\/M PROGRAMS BEGIN HERE\n            \n            ; ASK THE USER HIS NAME\n            LD      DE,ASK ; ASK USER WHAT HIS NAME IS\n            LD      C,9    ; FUNCTION CODE TO WRITE STRING\n            CALL    BDOS   ; CALL BDOS TO WRITE TO CONSOLE\n            \n            ; GET THE USER'S NAME\n            LD      DE,INBUF ; LOAD DE WITH ADDRESS OF CONSOLE INPUT BUFFER\n            LD      A,INBUFLEN    ; SET MAXIMUM STRING LENGTH\n            LD      (DE), A  ; STORE ACCUMULATOR TO BUFFER (MAX AT FIRST POSITION)\n            LD      C, 10    ; FUNCTION CODE TO READ A STRING\n            CALL    BDOS     ; CALL BDOS TO READ FROM CONSOLE\n            \n            ; WRITE HELLO TO THE CONSOLE\n            LD      DE, HANSWER ; \n            LD      C,9      ; FUNCTION CODE TO WRITE STRING\n            CALL    BDOS     ; CALL BDOS TO PRINT STRING\n            \n            ; WRITE THE USER'S NAME TO THE CONSOLE\n            LD      HL,INBUF+1 ; SET HL TO THE ADDRESS OF CHARS READ\n            LD      D,0     ; UPPER DE PAIR TO 0\n            LD      E, (HL) ; E CONTAINS THE NUMBER OF CHARACTERS READ\n            ADD     HL,DE   ; HL = HL + DE (DOUBLE ADD) GO TO THE END OF THE STRING\n            INC     HL      ; SET FOR ONE CHARACTER AFTER USER INPUT\n            LD      A,'$'   ; ADD TERMINATION CHARACTER TO END OF USER INPUT\n            LD      (HL),A  ; STORE TERMINATION CHARACTER AT END OF STRING\n            LD      DE,INBUF+2 ; DE WILL BE THE ADDRESS OF THE FIRST CHARACTER\n            LD      C,9        ; FUNCTION CODE TO PRINT STRING UNTIL TERMINATION\n            CALL    BDOS       ; CALL BDOS TO PRINT THE STRING TO THE SCREEN\n            RET     ; RETURN TO CPM\n            \n                      \n            \nASK:        DEFB      'WHAT IS YOUR NAME? $' ; DEFINE DATA BLOCK  *\nHANSWER:    DEFB      13,10,'HELLO $'        ; DEFINE DATA BLOCK  *\nINBUF:      DEFS      INBUFLEN+2             ; DEFINE DATA STRING *\n            END<\/code><\/pre>\n\n\n\n<p>When you are finished, simply hit CTRL-K in Wordstar, then X to save and exit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Compile the Simple CP\/M Console Program<\/h2>\n\n\n\n<p>At this point, we are ready to compile the Z80 program.   I&#8217;m using the Z80ASM from <a href=\"http:\/\/www.retroarchive.org\/cpm\/lang\/lang.htm\">this link.<\/a>  This Z80 Assembler will run under CP\/M.  Since the assembler is on the same drive as my testprog.z80 file, I&#8217;ll simply type &#8220;z80asm testprog&#8221; without the quotes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"800\" height=\"260\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-18.png\" alt=\"\" class=\"wp-image-14713 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-18.png 800w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-18-300x98.png 300w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-18-768x250.png 768w\" data-sizes=\"(max-width: 800px) 100vw, 800px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 800px; --smush-placeholder-aspect-ratio: 800\/260;\" \/><\/figure>\n\n\n\n<p>As you can see, we don&#8217;t have any errors.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Running the Program<\/h2>\n\n\n\n<p>Let&#8217;s check our directory listing to ensure that we have a testprog.com file.  Z80asm creates this file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"798\" height=\"285\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19.png\" alt=\"\" class=\"wp-image-14714 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19.png 798w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19-300x107.png 300w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19-768x274.png 768w\" data-sizes=\"(max-width: 798px) 100vw, 798px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 798px; --smush-placeholder-aspect-ratio: 798\/285;\" \/><\/figure>\n\n\n\n<p>Finally, to run the file, simply type &#8220;testprog&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"329\" height=\"100\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-20.png\" alt=\"\" class=\"wp-image-14715 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-20.png 329w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-20-300x91.png 300w\" data-sizes=\"(max-width: 329px) 100vw, 329px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 329px; --smush-placeholder-aspect-ratio: 329\/100;\" \/><\/figure>\n\n\n\n<p>Now that you understand how the basic console functions work, you can write assembly code to read user input, and to display data to the user!<\/p>\n\n\n\n<p>For more information, visit the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/vintage-computers\/\">Vintage Computers Category Page!<\/a><\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-2928979894\" 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 writing a Simple CP\/M Console Program Writing a Simple CP\/M Console Program will get you started with Z80 Assembly under CP\/M. We&#8217;ll just put together a simple program that asks what your name is, then print that name back to your terminal. The purpose of this exercise is to demonstrate how to write <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":14714,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[727],"tags":[784,877,423,878,420],"class_list":{"0":"post-14709","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-vintage-computers","8":"tag-assembly","9":"tag-console","10":"tag-cp-m","11":"tag-cpm","12":"tag-z80","13":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Simple CP\/M Console Program - Bryce Automation<\/title>\n<meta name=\"description\" content=\"Create a Simple CP\/M Console Program on the Z80 processor in Assembly to read and write data to the console.\" \/>\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\/19\/simple-cp-m-console-program\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Simple CP\/M Console Program - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"Create a Simple CP\/M Console Program on the Z80 processor in Assembly to read and write data to the console.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/\" \/>\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-19T21:46:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-19T21:46:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19.png\" \/>\n\t<meta property=\"og:image:width\" content=\"798\" \/>\n\t<meta property=\"og:image:height\" content=\"285\" \/>\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\\\/19\\\/simple-cp-m-console-program\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"Simple CP\\\/M Console Program\",\"datePublished\":\"2022-12-19T21:46:01+00:00\",\"dateModified\":\"2022-12-19T21:46:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/\"},\"wordCount\":452,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-19.png\",\"keywords\":[\"Assembly\",\"console\",\"cp\\\/m\",\"cpm\",\"z80\"],\"articleSection\":[\"Vintage Computers\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/\",\"name\":\"Simple CP\\\/M Console Program - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-19.png\",\"datePublished\":\"2022-12-19T21:46:01+00:00\",\"dateModified\":\"2022-12-19T21:46:05+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Create a Simple CP\\\/M Console Program on the Z80 processor in Assembly to read and write data to the console.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-19.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-19.png\",\"width\":798,\"height\":285,\"caption\":\"Simple CP\\\/M Console Program\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/19\\\/simple-cp-m-console-program\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Simple CP\\\/M Console Program\"}]},{\"@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":"Simple CP\/M Console Program - Bryce Automation","description":"Create a Simple CP\/M Console Program on the Z80 processor in Assembly to read and write data to the console.","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\/19\/simple-cp-m-console-program\/","og_locale":"en_US","og_type":"article","og_title":"Simple CP\/M Console Program - Bryce Automation","og_description":"Create a Simple CP\/M Console Program on the Z80 processor in Assembly to read and write data to the console.","og_url":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2022-12-19T21:46:01+00:00","article_modified_time":"2022-12-19T21:46:05+00:00","og_image":[{"width":798,"height":285,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19.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\/19\/simple-cp-m-console-program\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"Simple CP\/M Console Program","datePublished":"2022-12-19T21:46:01+00:00","dateModified":"2022-12-19T21:46:05+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/"},"wordCount":452,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19.png","keywords":["Assembly","console","cp\/m","cpm","z80"],"articleSection":["Vintage Computers"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/","url":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/","name":"Simple CP\/M Console Program - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19.png","datePublished":"2022-12-19T21:46:01+00:00","dateModified":"2022-12-19T21:46:05+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Create a Simple CP\/M Console Program on the Z80 processor in Assembly to read and write data to the console.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-19.png","width":798,"height":285,"caption":"Simple CP\/M Console Program"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/19\/simple-cp-m-console-program\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"Simple CP\/M Console Program"}]},{"@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\/14709","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=14709"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/14709\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/14714"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=14709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=14709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=14709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}