{"id":16529,"date":"2023-05-30T07:09:15","date_gmt":"2023-05-30T07:09:15","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=16529"},"modified":"2023-05-30T07:09:18","modified_gmt":"2023-05-30T07:09:18","slug":"imsai-8080-console-i-o","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/","title":{"rendered":"IMSAI 8080 Console I\/O"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction to IMSAI 8080 Console I\/O<\/h2>\n\n\n\n<p>In this section, we&#8217;ll send text to the IMSAI 8080 Console I\/O.  This is useful in your programs for interfacing with the operator.  In this case, we&#8217;ll be using assembly language.  The assembler I&#8217;m using is <a href=\"http:\/\/www.retroarchive.org\/cpm\/lang\/lang.htm\">Z80ASM.<\/a>  I&#8217;ll just be creating a non-document file in WordStar to edit the program, and I&#8217;m operating under CP\/M 2.2.<\/p><div id=\"bryce-1736734575\" 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>CP\/M makes this easy for us through the use of BDOS calls.  For this reason, we don&#8217;t need to write much logic.<\/p>\n\n\n\n<p>In WordStar, I&#8217;m creating a new Non-Document file named HELLO.Z80.  This resides on the B: drive.<\/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\/2023\/05\/IMSAICONSOLE.png\" alt=\"\" class=\"wp-image-16541 lazyload\" width=\"432\" height=\"305\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/IMSAICONSOLE.png 727w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/IMSAICONSOLE-300x213.png 300w\" data-sizes=\"(max-width: 432px) 100vw, 432px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 432px; --smush-placeholder-aspect-ratio: 432\/305;\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Writing to the Console<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Our Program<\/h3>\n\n\n\n<p>Let&#8217;s take a look at how we would write data to the console.  Here we have a simple program.  This is a type of &#8220;Hello World&#8221; program with just a few lines of code.  First, we set the origin of our program.  It originates at 0100H.  To clarify, the &#8220;H&#8221; indicates the value is in Hexadecimal.<\/p>\n\n\n\n<p>If you take a look at the <a href=\"https:\/\/www.seasip.info\/Cpm\/bdos.html\">function calls in CP\/M<\/a>, you will see that we need a function call 9 to write to the console.  Therefore, we load the value of 9 to the C register.  Once we BDOS, it will look at the C register to determine which function code to execute.  <\/p>\n\n\n\n<p>Meanwhile, we load the STARTING ADDRESS of our text to the register pair DE.  Again, BDOS will look at DE to determine where to get the text to write to the console.  BDOS will continue reading the string from this text until it encounters the $.  This is called the &#8220;Termination Character&#8221;. <\/p>\n\n\n\n<p>At the same time, you will notice that we have a label called &#8220;MYTEXT&#8221; toward the bottom of the logic.  This defines the starting address of our text.  The DB instruction defines bytes which simply contain an ASCII String.  In this case, the String is &#8220;Good Afternoon!$&#8221;.  Keep in mind the $ is our termination character.<\/p>\n\n\n\n<p>After we load the address of MYTEXT to DE, we need to call BDOS, which resides at memory location 5H.  This will print the string to the terminal.  Finally, we CALL 0, which resets, exiting our program.<\/p>\n\n\n\n<pre class=\"wp-block-code has-light-green-cyan-background-color has-background\"><code>        ORG 0100H                                                              \n        LD C,9H                                                                \n        LD DE,MYTEXT                                                            \n        CALL 5H                                                                \n        CALL 0                                                                 \nMYTEXT:                                                                         \n        DB \"GOOD AFTERNOON!$\"                                        \n        END            <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Save and Assemble<\/h3>\n\n\n\n<p>At this point, I&#8217;m going to press CTRL-K, then CTRL-X to save my work, and exit WordStar.  We are ready to run the assembler.  Keep in mind that HELLO.Z80 is on the B drive, which is where I also want the destination file to be.  Additionally, I&#8217;m saving a full listing to the B drive, which is useful for troubleshooting.  <\/p>\n\n\n\n<p>With this purpose in mind, our command will be Z80ASM HELLO.BBB\/F.  Remember the &#8220;.z80&#8221; extension is implied.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reading IMSAI 8080 Console I\/O Data<\/h2>\n\n\n\n<p>CP\/M also provides a BDOS function to read operator input from the keyboard.  We&#8217;ll take advantage of this feature, and put everything we learned so far together into one program.<\/p>\n\n\n\n<p>In this case, we&#8217;ll ask the operator what his name is.  After that, we&#8217;ll print the name back to the operator.  This program will prove that we know how to read and write to the operator console.<\/p>\n\n\n\n<p>Let&#8217;s take a look at the program:<\/p>\n\n\n\n<pre class=\"wp-block-code has-pale-cyan-blue-background-color has-background\"><code>; Ask user's name and print that to the console.\nBDOS:       EQU     0005H\nINBUFLEN    EQU     100\nCR:         EQU     13\nLF:         EQU     10\n\n\n\n            ORG     0100H  ; CP\/M PROGRAMS BEGIN HERE\n            \n            ; PRINT QUESTION TO ASK USER'S NAME\n            LD      DE,ASK ; LOAD THE ADDRESS OF THE QUESTION TO ASK NAME\n            LD      C,9    ; SET UP FOR BDOS FUNCTION 9\n            CALL    BDOS   ; PRINT THE QUESTION TO THE DISPLAY\n            \n            ; OPERATOR INPUTS NAME\n            LD      DE,INBUF ; LOAD DE WITH ADDRESS OF CONSOLE INPUT BUFFER\n            LD      A,INBUFLEN    ; MAXIMUM STRING LENGTH WILL BE 100\n            LD      (DE), A  ; STORE THE INPUT BUFFER LENGTH TO DE.\n            LD      C, 10    ; C WILL CONTAIN THE BDOS FUNCTION CODE\n            CALL    BDOS     ; CALL BDOS WHICH READS USER NAME FRO CONSOLE.\n            \n            ; ANSWER BACK TO THE OPERATOR\n            LD      DE, HANSWER ; \n            LD      C,9      ; LOAD C WITH FUNCTION CODE TO WRITE STRING\n            CALL    BDOS     ; CALL BDOS \n            \n            ; WRITE THE USER'S NAME\n            LD      HL,INBUF+1 ; SET HL TO THE ADDRESS OF OPERATOR INPUT\n            LD      D,0     ; UPPER DE PAIR TO 0\n            LD      E, (HL) ; E CONTAINS HOW MANY CHARACTERS WE HAVE FROM OPERATOR\n            ADD     HL,DE   ; HL = HL + DE  TO THE END OF THE STRING\n            INC     HL      ; ONE CHARACTER AFTER USER INPUT\n            LD      A,'$'   ; WE NEED A $ AT THE END OF USER INPUT\n            LD      (HL),A  ; STORE $ AT END OF STRING\n            LD      DE,INBUF+2 ; DE WILL BE THE ADDRESS OF THE FIRST CHARACTER\n            LD      C,9        ; FUNCTION CODE 9 WHICH WILL PRINT STRING\n            CALL    BDOS       ; CALL BDOS TO PRINT THE STRING TO THE SCREEN\n            RET     ; BACK TO CPM\n            \n                      \n            \nASK:        DEFB      'WHAT IS YOUR NAME? $' ; DEFINE STARTING BYTE  *\nHANSWER:    DEFB      13,10,'HELLO $'        ; DEFINE STARTING BYTE  *\nINBUF:      DEFS      INBUFLEN+2             ; DEFINE DATA STRING *\n            END<\/code><\/pre>\n\n\n\n<p>At this point, I&#8217;ll press CTRL-K, and CTRL-X to save the file.  After that, I&#8217;ll type Z80ASM NAME.BBB\/F to assemble the file.  Finally, we can run the &#8220;NAME&#8221; program on our B: drive.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"635\" height=\"282\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/image-45.png\" alt=\"\" class=\"wp-image-16540 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/image-45.png 635w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/image-45-300x133.png 300w\" data-sizes=\"(max-width: 635px) 100vw, 635px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 635px; --smush-placeholder-aspect-ratio: 635\/282;\" \/><\/figure>\n\n\n\n<p>For more information, visit the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/vintage-computers\/imsai-8080\/\">IMSAI 8080 Category Page!<\/a><\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-2369471991\" 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 IMSAI 8080 Console I\/O In this section, we&#8217;ll send text to the IMSAI 8080 Console I\/O. This is useful in your programs for interfacing with the operator. In this case, we&#8217;ll be using assembly language. The assembler I&#8217;m using is Z80ASM. I&#8217;ll just be creating a non-document file in WordStar to edit the <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":16541,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[809,727],"tags":[948,877,422],"class_list":{"0":"post-16529","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-imsai-8080","8":"category-vintage-computers","9":"tag-bdos","10":"tag-console","11":"tag-imsai","12":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>IMSAI 8080 Console I\/O - Bryce Automation<\/title>\n<meta name=\"description\" content=\"Using IMSAI 8080 Console I\/O to get a user name from the operator, and print a response back to the terminal.\" \/>\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\/2023\/05\/30\/imsai-8080-console-i-o\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IMSAI 8080 Console I\/O - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"Using IMSAI 8080 Console I\/O to get a user name from the operator, and print a response back to the terminal.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/\" \/>\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=\"2023-05-30T07:09:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-30T07:09:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/IMSAICONSOLE.png\" \/>\n\t<meta property=\"og:image:width\" content=\"727\" \/>\n\t<meta property=\"og:image:height\" content=\"515\" \/>\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\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"IMSAI 8080 Console I\\\/O\",\"datePublished\":\"2023-05-30T07:09:15+00:00\",\"dateModified\":\"2023-05-30T07:09:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/\"},\"wordCount\":592,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/IMSAICONSOLE.png\",\"keywords\":[\"BDOS\",\"console\",\"imsai\"],\"articleSection\":[\"Imsai 8080\",\"Vintage Computers\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/\",\"name\":\"IMSAI 8080 Console I\\\/O - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/IMSAICONSOLE.png\",\"datePublished\":\"2023-05-30T07:09:15+00:00\",\"dateModified\":\"2023-05-30T07:09:18+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Using IMSAI 8080 Console I\\\/O to get a user name from the operator, and print a response back to the terminal.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/IMSAICONSOLE.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/IMSAICONSOLE.png\",\"width\":727,\"height\":515,\"caption\":\"IMSAI 8080 Console I\\\/O\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/05\\\/30\\\/imsai-8080-console-i-o\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"IMSAI 8080 Console I\\\/O\"}]},{\"@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":"IMSAI 8080 Console I\/O - Bryce Automation","description":"Using IMSAI 8080 Console I\/O to get a user name from the operator, and print a response back to the terminal.","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\/2023\/05\/30\/imsai-8080-console-i-o\/","og_locale":"en_US","og_type":"article","og_title":"IMSAI 8080 Console I\/O - Bryce Automation","og_description":"Using IMSAI 8080 Console I\/O to get a user name from the operator, and print a response back to the terminal.","og_url":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2023-05-30T07:09:15+00:00","article_modified_time":"2023-05-30T07:09:18+00:00","og_image":[{"width":727,"height":515,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/IMSAICONSOLE.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\/2023\/05\/30\/imsai-8080-console-i-o\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"IMSAI 8080 Console I\/O","datePublished":"2023-05-30T07:09:15+00:00","dateModified":"2023-05-30T07:09:18+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/"},"wordCount":592,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/IMSAICONSOLE.png","keywords":["BDOS","console","imsai"],"articleSection":["Imsai 8080","Vintage Computers"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/","url":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/","name":"IMSAI 8080 Console I\/O - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/IMSAICONSOLE.png","datePublished":"2023-05-30T07:09:15+00:00","dateModified":"2023-05-30T07:09:18+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Using IMSAI 8080 Console I\/O to get a user name from the operator, and print a response back to the terminal.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/IMSAICONSOLE.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2023\/05\/IMSAICONSOLE.png","width":727,"height":515,"caption":"IMSAI 8080 Console I\/O"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/05\/30\/imsai-8080-console-i-o\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"IMSAI 8080 Console I\/O"}]},{"@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\/16529","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=16529"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/16529\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/16541"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=16529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=16529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=16529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}