{"id":2877,"date":"2024-10-18T17:36:33","date_gmt":"2024-10-18T16:36:33","guid":{"rendered":"https:\/\/www.robertprice.co.uk\/robblog\/?p=2877"},"modified":"2024-10-18T17:36:34","modified_gmt":"2024-10-18T16:36:34","slug":"rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program","status":"publish","type":"post","link":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/","title":{"rendered":"RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I am planning on using an LCD screen as part of this year&#8217;s Retro Challenge. I want to use my new <a href=\"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-5-building-and-testing-the-pcb\/\">Rotary Encoder Module<\/a> to be able to scroll the content on the screen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I have bought the official <a href=\"https:\/\/rc2014.co.uk\/modules\/lcd-driver-module\/\">RC2014 LCD Driver Module<\/a>, and I have a 4*20 screen attached to it. This gives me 4 lines of 20 characters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Spencer provides example BASIC code to control the screen. I want to control it using Z80 assembly language. Spencer does warn that this will not be as straight forward as the LCD will not respond fast enough. He does point us towards <a href=\"https:\/\/bread80.com\/2020\/07\/01\/connecting-an-lcd-to-a-z80-with-two-glue-chips\/\">Mike Sutton&#8217;s blog<\/a> for a solution. This involves us reading the status register on the LCD to see if it is ready for the next instruction.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I created two routines to send data to the LCD screen in Z80 assembly language. One to send a command byte and return when completed. The other to send a data byte and return when completed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LCD_R   EQU 218\nLCD_D   EQU 219\n\n; Sends a command byte to the LCD.\n; A - Command in\nsend_command:\n    out (LCD_R),a\n.lcd_busy:\n    in a,(LCD_R)\n    rlca\n    jr c,.lcd_busy\n    ret\n\n; Sends a data byte to the LCD\n; A - Byte in\nsend_data:\n    out (LCD_D),a\n.lcd_busy:\n    in a,(LCD_R)\n    rlca\n    jr c,.lcd_busy\n    ret<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Another issue is the layout of the LCD screen. The first 20 characters are the first line, the next 20 are the third line, the next 20 are the second line, and the last 20 are the last line. This means we can&#8217;t simply loop through all characters in order to display them. Instead, we must be aware that every 20 characters we need to pick the next batch from elsewhere in memory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In our case, the first line is at start of our data block. The second line is 40 bytes from the start. The third line is 20 bytes from the start. The fourth line is 60 bytes from the the start. This gives us 80 bytes in total.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is how I solved this in Z80 assembly language.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>; Display 4 lines of consecutive text on the LCD\n; HL - address of text to display on the LCD\nshow_four_lines:\n    ld b,20\n.line1loop:\n    ld a,(hl)\n    inc hl\n    call send_data\n    djnz .line1loop\n\n    ld de,20\n    add hl,de\n    ld b,20\n.line2loop:\n    ld a,(hl)\n    inc hl\n    call send_data\n    djnz .line2loop    \n\n    ld de,40\n    sub hl,de\n    ld b,20\n.line3loop:\n    ld a,(hl)\n    inc hl\n    call send_data\n    djnz .line3loop\n\n    ld de,20\n    add hl,de\n    ld b,20\n.line4loop:\n    ld a,(hl)\n    inc hl\n    call send_data\n    djnz .line4loop \n\n    ret      \n\n\npuff:\n    db \"Retro Challenge 2024\"\n    dc \"                    \"\n    db \"  LCD RC2014 Test   \"\n    db \"    Robert Price    \"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">An alternative could be to store the lines in screen order. This would be easier to iterate, but would make the text harder for a human to read in the source code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My final code looks like this. I have to send some commands to setup the LCD before I can display my text.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    OUTPUT LCD.z80\n\n    ORG $9000\n\nLCD_R   EQU 218\nLCD_D   EQU 219\n\n    ld a,56         ; Function 8 bit, 2 lines, 5x8 dot font\n    call send_command\n    ld a,12         ; Display on, cursor off, no blink\n    call send_command\n    ld a,1          ; clear the display\n    call send_command\n\n    ld hl,puff      ; the address of the text\n    call show_four_lines\n\n    ret\n\n; Sends a command byte to the LCD.\n; A - Command in\n; A, C registers used.\nsend_command:\n    out (LCD_R),a\n.lcd_busy:\n    in a,(LCD_R)\n    rlca\n    jr c,.lcd_busy\n    ret\n\n; Sends a data byte to the LCD\n; A - Byte in\n; A, C registers used.\nsend_data:\n    out (LCD_D),a\n.lcd_busy:\n    in a,(LCD_R)\n    rlca\n    jr c,.lcd_busy\n    ret\n\n; Display 4 lines of consecutive text on the LCD\n; HL - address of text to display on the LCD\n; A, B, C, D, E, H, L registers used.\nshow_four_lines:\n    ld b,20\n.line1loop:\n    ld a,(hl)\n    inc hl\n    call send_data\n    djnz .line1loop\n\n    ld de,20\n    add hl,de\n    ld b,20\n.line2loop:\n    ld a,(hl)\n    inc hl\n    call send_data\n    djnz .line2loop    \n\n    ld de,40\n    sub hl,de\n    ld b,20\n.line3loop:\n    ld a,(hl)\n    inc hl\n    call send_data\n    djnz .line3loop\n\n    ld de,20\n    add hl,de\n    ld b,20\n.line4loop:\n    ld a,(hl)\n    inc hl\n    call send_data\n    djnz .line4loop \n\n    ret      \n\npuff:\n    db \"Retro Challenge 2024\"\n    dc \"                    \"\n    db \"  LCD RC2014 Test   \"\n    db \"    Robert Price    \"<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I am planning on using an LCD screen as part of this year&#8217;s Retro Challenge. I want to use my new Rotary Encoder Module to be able to scroll the content on the screen. I have bought the official RC2014 LCD Driver Module, and I have a 4*20 screen attached to it. This gives me &hellip; <a href=\"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":2879,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[113],"tags":[145,117,115,119],"class_list":["post-2877","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rc2024","tag-assembly-language","tag-rc2014","tag-rc2024","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 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program - Robert Price<\/title>\n<meta name=\"description\" content=\"How to use the LCD module from Z80 Assembly Language on an RC2014 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:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program - Robert Price\" \/>\n<meta property=\"og:description\" content=\"How to use the LCD module from Z80 Assembly Language on an RC2014 computer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/\" \/>\n<meta property=\"og:site_name\" content=\"Robert Price\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-18T16:36:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-18T16:36:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.robertprice.co.uk\/robblog\/assets\/LCDTest.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=\"2 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-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/\"},\"author\":{\"name\":\"rob\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/#\\\/schema\\\/person\\\/fac6d5b076e0e14e1fb13e15b542a6c5\"},\"headline\":\"RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program\",\"datePublished\":\"2024-10-18T16:36:33+00:00\",\"dateModified\":\"2024-10-18T16:36:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/\"},\"wordCount\":352,\"image\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/assets\\\/LCDTest.jpg\",\"keywords\":[\"Assembly Language\",\"RC2014\",\"RC2024\",\"Z80\"],\"articleSection\":[\"RC2024\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/\",\"url\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/\",\"name\":\"RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program - Robert Price\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/assets\\\/LCDTest.jpg\",\"datePublished\":\"2024-10-18T16:36:33+00:00\",\"dateModified\":\"2024-10-18T16:36:34+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/#\\\/schema\\\/person\\\/fac6d5b076e0e14e1fb13e15b542a6c5\"},\"description\":\"How to use the LCD module from Z80 Assembly Language on an RC2014 computer.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/assets\\\/LCDTest.jpg\",\"contentUrl\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/assets\\\/LCDTest.jpg\",\"width\":1200,\"height\":900,\"caption\":\"The RC2014 LCD module showing example text.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.robertprice.co.uk\\\/robblog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program\"}]},{\"@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 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program - Robert Price","description":"How to use the LCD module from Z80 Assembly Language on an RC2014 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:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/","og_locale":"en_GB","og_type":"article","og_title":"RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program - Robert Price","og_description":"How to use the LCD module from Z80 Assembly Language on an RC2014 computer.","og_url":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/","og_site_name":"Robert Price","article_published_time":"2024-10-18T16:36:33+00:00","article_modified_time":"2024-10-18T16:36:34+00:00","og_image":[{"width":1200,"height":900,"url":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/LCDTest.jpg","type":"image\/jpeg"}],"author":"rob","twitter_card":"summary_large_image","twitter_misc":{"Written by":"rob","Estimated reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/#article","isPartOf":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/"},"author":{"name":"rob","@id":"https:\/\/www.robertprice.co.uk\/robblog\/#\/schema\/person\/fac6d5b076e0e14e1fb13e15b542a6c5"},"headline":"RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program","datePublished":"2024-10-18T16:36:33+00:00","dateModified":"2024-10-18T16:36:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/"},"wordCount":352,"image":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/#primaryimage"},"thumbnailUrl":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/LCDTest.jpg","keywords":["Assembly Language","RC2014","RC2024","Z80"],"articleSection":["RC2024"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/","url":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/","name":"RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program - Robert Price","isPartOf":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/#primaryimage"},"image":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/#primaryimage"},"thumbnailUrl":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/LCDTest.jpg","datePublished":"2024-10-18T16:36:33+00:00","dateModified":"2024-10-18T16:36:34+00:00","author":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/#\/schema\/person\/fac6d5b076e0e14e1fb13e15b542a6c5"},"description":"How to use the LCD module from Z80 Assembly Language on an RC2014 computer.","breadcrumb":{"@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/#primaryimage","url":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/LCDTest.jpg","contentUrl":"https:\/\/www.robertprice.co.uk\/robblog\/assets\/LCDTest.jpg","width":1200,"height":900,"caption":"The RC2014 LCD module showing example text."},{"@type":"BreadcrumbList","@id":"https:\/\/www.robertprice.co.uk\/robblog\/rc2024-part-9-using-the-lcd-module-from-a-z80-assembly-language-program\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.robertprice.co.uk\/robblog\/"},{"@type":"ListItem","position":2,"name":"RC2024 \u2013 Part 9 \u2013 Using The LCD Module From A Z80 Assembly Language Program"}]},{"@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\/2877","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=2877"}],"version-history":[{"count":2,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/posts\/2877\/revisions"}],"predecessor-version":[{"id":2883,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/posts\/2877\/revisions\/2883"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/media\/2879"}],"wp:attachment":[{"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/media?parent=2877"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/categories?post=2877"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.robertprice.co.uk\/robblog\/wp-json\/wp\/v2\/tags?post=2877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}