{"id":802,"date":"2020-11-10T19:48:57","date_gmt":"2020-11-10T19:48:57","guid":{"rendered":"https:\/\/justanotherelectronicsblog.com\/?p=802"},"modified":"2020-11-15T15:25:55","modified_gmt":"2020-11-15T15:25:55","slug":"configurable-6502-board","status":"publish","type":"post","link":"https:\/\/justanotherelectronicsblog.com\/?p=802","title":{"rendered":"Configurable 6502 board"},"content":{"rendered":"\n<p>Like many other electronics hobbyists I am enjoying the video&#8217;s <a href=\"https:\/\/eater.net\/6502\">Ben Eater<\/a> is making on getting a 6502 CPU up and running on a breadboard. His video&#8217;s are very informative, going in depth how the CPU works and slowly buiding up to hello world. If you haven&#8217;t watched them, give them a try! <\/p>\n\n\n\n<p>Another great 6502 (and other 8 bit CPU&#8217;s) project is <a href=\"http:\/\/searle.x10host.com\/6502\/Simple6502.html\" target=\"_blank\" rel=\"noreferrer noopener\">Grant&#8217;s simple 6502 computer<\/a>. With a minimum part count he creates 6502 computer that runs Microsoft Basic.<\/p>\n\n\n\n<p>The problem for me is that I have had quite some issues building big things on breadboards, broken wires and other hard to debug issues. Instead I decided to make a circuit board to solve this problem. I also wanted the board to work with Ben Eater&#8217;s video&#8217;s as well as run Basic. The circuit board turned out like this: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"726\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29-1024x726.jpg\" alt=\"\" class=\"wp-image-818\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29-1024x726.jpg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29-300x213.jpg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29-768x544.jpg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>So let&#8217;s get into some detail how it works and what is different. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">RAM, ROM and more<\/h2>\n\n\n\n<p>As the 6502 is just a CPU, some additional chips are required for it to work. Some RAM, ROM and a few peripherals are all required.  I still had some Sony 32KB RAM, and luckily 32KB EEPROM can be easily ordered online. Just like Ben Eater&#8217;s design, I added a 6522 VIA. This chip contains 16 GPIO pins and 2 timers. As I also want to run Basic, a UART interface is needed. I used the MC6850. This chip is meant for the 6800 CPU but it works just as well on the 6502, and it means I can use the Basic binary from <a href=\"http:\/\/searle.x10host.com\/6502\/Simple6502.html\">Grant&#8217;s project<\/a>.<\/p>\n\n\n\n<p>The full schematic looks like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2382\" height=\"1226\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/screen.png\" alt=\"\" class=\"wp-image-821\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/screen.png 2382w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/screen-300x154.png 300w\" sizes=\"auto, (max-width: 2382px) 100vw, 2382px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">GAL&#8217;s again<\/h2>\n\n\n\n<p>All these chips have to be connected to the CPU in some way.  The RAM, ROM and peripherals only need to respond to the address\/data lines from the CPU when needed. This means some decoding of thee address lines is needed. A common way is to use some 7400 logic to do so, but I decided to use GALs to make different memory decodings possible. As GALs are also in DIP, 5V compatible and on the older side, it does not feel as cheating as much compared to just throwing an FPGA at it :) <\/p>\n\n\n\n<p>I wrote about GALs in an <a href=\"https:\/\/justanotherelectronicsblog.com\/?p=458\">earlier blog<\/a>, but to summarize, GALs are small configurable logic gates, a kind of very small FPGA\/CPLD. As I wanted a fairly configurable 6502 board, I used two GALs. One GAL is used for memory mapping and one for interrupt handling. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Support circuitry<\/h2>\n\n\n\n<p>A little bit of support circuitry is also needed, in the form of a reset and single step support. The modern WDC 6502 is not very picky about these signals, but some older 6502s are. To provide a clean reset, some Schmitt trigger NOT gates together with some filtering is used. This causes a nice short reset pulse whenever the reset button is pushed. <\/p>\n\n\n\n<p>As the NOT gates come on 6 per DIP package, a similar circuit is used for debouncing the button to execute a single clock to the CPU. with jumpers, the single step clock source or a 1.8432Mhz clock source can be chosen. The specific 1.8432Mhz is used as this becomes 115200 BAUD when divided by 16.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">But can it Basic?<\/h2>\n\n\n\n<p>Why yes it can. With the same memory map as the computer from <a href=\"http:\/\/searle.x10host.com\/6502\/Simple6502.html\">Grant<\/a>, loading the binary gives a nice welcome screen, and running a small Basic program works as expected:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"406\" height=\"680\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_20-37-10.jpg\" alt=\"\" class=\"wp-image-822\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_20-37-10.jpg 406w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_20-37-10-179x300.jpg 179w\" sizes=\"auto, (max-width: 406px) 100vw, 406px\" \/><\/figure>\n\n\n\n<p>I made a small mistake, Grants design has the interrupt pin of the MC6850 to the RTS pin of the UART in order to have flow control. If there is data waiting to be read out from the MC6850, the interrupt pin remains high which is used as handshake to indicate the other side cannot send data yet. I have had no issues with using it, but sending files via the LOAD command might not work as expected.  A small patch wire on the board would fix this of course.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What about assembly? (and C)<\/h2>\n\n\n\n<p>Ben Eater&#8217;s video&#8217;s are all done with assembly. With a few small tweaks (a slightly different memory map) the examples from Ben Eater work as well on this board. I fiddled a bit with assembly, but I also wanted to use C, or at least check if that works. <\/p>\n\n\n\n<p>A few C compilers exist for the 6502, I picked the <a href=\"https:\/\/gitlab.com\/camelot\/kickc\">KickC<\/a> compiler as it optimizes and outputs readable assembly, which is nice when debugging is basicly stepping through assembly anyways :) <br>This also means I am using the <a href=\"http:\/\/www.theweb.dk\/KickAssembler\/Main.html#frontpage\">KickAssembler<\/a> as KickC outputs assembly in a way not all assemblers like. <\/p>\n\n\n\n<p>It seems KickC is mostly used for existing systems like the Commmodore 64. To get it to compile for a bare metal custom board some linker magic was needed<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Using C on the 6502<\/h2>\n\n\n\n<p>In order to get a usable binary, the compiler must know where to place all the code. After some trial and error my linker files looks like this:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.file [name=\"hello_world.bin\", type=\"bin\", segments=\"Program\"]\n.segmentdef Program [segments=\"Reset, Data, Code, IRQ\"]\n\n.segmentdef Reset [start=$FFFC]\t\n.segmentdef Data [start=$D000]\n.segmentdef Code [start=$C000]\n.segmentdef IRQ [start=$F000]\n\n.segment Reset\t\t\/\/0xC000 for Code, 0xF000 for IRQ\n.fill 1, $00\n.fill 1, $C0\n.fill 1, $00\n.fill 1, $F0\n\n.encoding \"ascii\"  \/\/Default is petscii\n.segment Data\n.segment Code \n.segment IRQ<\/pre>\n\n\n\n<p>A few sections are defined, one for code, where all the executable code goes and one for data, where things like strings are stored. On a reset, the 6502 loads the address to start from from address 0xFFFC and the interrupt address from 0xFFFE. The Reset section in the linker sets these correctly.<\/p>\n\n\n\n<p>The last section IRQ is placed at the address loaded above and the 6502 jumps to there when an interrupt is detected.<\/p>\n\n\n\n<p>Now let&#8217;s make an LED blink using a timer in the 6522 VIA and the interrupt.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#pragma link(\"linker.ld\")     \/\/use linker.ld file in the same folder\n\n#include &lt;stdint.h>\n#include &lt;stdio.h>\n\ntypedef struct \n{\n  volatile uint8_t PortB;\n  volatile uint8_t PortA;\n  volatile uint8_t DirectionB;\n  volatile uint8_t DirectionA;\n  volatile uint8_t Timer1CounterLow;\n  volatile uint8_t Timer1CounterHigh;\n  volatile uint8_t Timer1LatchLow;\n  volatile uint8_t Timer1LatchHigh;\n  volatile uint8_t Timer2Latches;\n  volatile uint8_t Timer2Counter;\n  volatile uint8_t ShiftControl;\n  volatile uint8_t TimerControl;\n  volatile uint8_t Handshake;\n  volatile uint8_t InterruptFlag;\n  volatile uint8_t InterruptEnable;\n} via_reg;       \/\/VIA register mapping\n\nvolatile uint16_t counter;  \/\/Need to define shared variable here, used in main and IRQ code\nvolatile via_reg* VIA1 = ((via_reg*)0xB000);    \/\/VIA mapped to 0xB000\n\n\nvoid main() {\n  \n    VIA1->DirectionB  = 0xFF;         \/\/All IO on port B as output\n    \n    VIA1->TimerControl = 0x40;        \/\/Continous mode\n    VIA1->InterruptEnable = 0xC0;     \/\/Timer 1 irq on\n    \n    VIA1->Timer1CounterHigh = 0x07;   \/\/0x708, 1800, 1.8Mhz clk, 1ms irq\n    VIA1->Timer1CounterLow = 0x08;    \n       \n    counter = 0;\n    asm { cli }            \/\/Enable interrupts\n    \n    while(1) {\n    }\n}\n\n\n#pragma code_seg(IRQ)     \/\/This code goes in IRQ section from the linker\n\ninterrupt(hardware_stack) void IRQ() {\n  \n  counter++;\n  if(counter &lt; 500) {\n    VIA1->PortB  = 0xFF;    \/\/All LEDs on\n  }\n  else {\n    VIA1->PortB  = 0x00;    \/\/All LEDs off\n  }\n  if(counter >= 1000) {\n    counter = 0;\n  }\n  VIA1->Timer1LatchHigh = 0x07;   \/\/Writing to the LatchHigh resets the IRQ\n}\n<\/pre>\n\n\n\n<p>Compiling is luckily simple, KickC and KickAssembler are both written in Java, meaning I can even run them on a raspberry pi :) To compile, the following commands are needed:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.\/kickc.sh blink.c \njava -jar KickAss.jar blink.asm \nminipro -p AT28C256 -w blink.bin -s<\/pre>\n\n\n\n<p>Of course, this project is not complete without a <a href=\"https:\/\/github.com\/riktw\/6502brick\/blob\/main\/Software\/hello_world\/hello_world.c\">hello world example<\/a>. This example shows hello world on the 1602 display and prints it on the UART. The MC6850 is very simple to control, having just 2 registers, a far cry from the dozens a modern ARM Cortex M device has.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"711\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_20-42-59-1024x711.jpg\" alt=\"\" class=\"wp-image-824\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_20-42-59-1024x711.jpg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_20-42-59-300x208.jpg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_20-42-59-768x533.jpg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_20-42-59.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>All the code, kicad files and such can be found on my <a href=\"https:\/\/github.com\/riktw\/6502brick\">github<\/a>. If you liked the project, please consider buying me a <a href=\"https:\/\/ko-fi.com\/riktw\">coffee<\/a>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Like many other electronics hobbyists I am enjoying the video&#8217;s Ben Eater is making on getting a 6502 CPU up and running on a breadboard. His video&#8217;s are very informative, going in depth how the CPU works and slowly buiding up to hello world. If you haven&#8217;t watched them, give them a try! Another great [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-802","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Configurable 6502 board - jaeblog<\/title>\n<meta name=\"description\" content=\"Making a configurable 6502 computer capable of running basic and usable for ben eater&#039;s tutorials on the 6502 CPU.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/justanotherelectronicsblog.com\/?p=802\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Configurable 6502 board - jaeblog\" \/>\n<meta property=\"og:description\" content=\"Making a configurable 6502 computer capable of running basic and usable for ben eater&#039;s tutorials on the 6502 CPU.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/justanotherelectronicsblog.com\/?p=802\" \/>\n<meta property=\"og:site_name\" content=\"jaeblog\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-10T19:48:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-11-15T15:25:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29-1024x726.jpg\" \/>\n<meta name=\"author\" content=\"riktw\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"riktw\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802\"},\"author\":{\"name\":\"riktw\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\"},\"headline\":\"Configurable 6502 board\",\"datePublished\":\"2020-11-10T19:48:57+00:00\",\"dateModified\":\"2020-11-15T15:25:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802\"},\"wordCount\":1013,\"commentCount\":7,\"image\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/photo_2020-11-10_17-01-29-1024x726.jpg\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802\",\"name\":\"Configurable 6502 board - jaeblog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/photo_2020-11-10_17-01-29-1024x726.jpg\",\"datePublished\":\"2020-11-10T19:48:57+00:00\",\"dateModified\":\"2020-11-15T15:25:55+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\"},\"description\":\"Making a configurable 6502 computer capable of running basic and usable for ben eater's tutorials on the 6502 CPU.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802#primaryimage\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/photo_2020-11-10_17-01-29.jpg\",\"contentUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/photo_2020-11-10_17-01-29.jpg\",\"width\":1280,\"height\":907},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=802#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configurable 6502 board\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#website\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/\",\"name\":\"jaeblog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\",\"name\":\"riktw\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Configurable 6502 board - jaeblog","description":"Making a configurable 6502 computer capable of running basic and usable for ben eater's tutorials on the 6502 CPU.","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:\/\/justanotherelectronicsblog.com\/?p=802","og_locale":"en_US","og_type":"article","og_title":"Configurable 6502 board - jaeblog","og_description":"Making a configurable 6502 computer capable of running basic and usable for ben eater's tutorials on the 6502 CPU.","og_url":"https:\/\/justanotherelectronicsblog.com\/?p=802","og_site_name":"jaeblog","article_published_time":"2020-11-10T19:48:57+00:00","article_modified_time":"2020-11-15T15:25:55+00:00","og_image":[{"url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29-1024x726.jpg","type":"","width":"","height":""}],"author":"riktw","twitter_card":"summary_large_image","twitter_misc":{"Written by":"riktw","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/justanotherelectronicsblog.com\/?p=802#article","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=802"},"author":{"name":"riktw","@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"headline":"Configurable 6502 board","datePublished":"2020-11-10T19:48:57+00:00","dateModified":"2020-11-15T15:25:55+00:00","mainEntityOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=802"},"wordCount":1013,"commentCount":7,"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=802#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29-1024x726.jpg","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/justanotherelectronicsblog.com\/?p=802#respond"]}]},{"@type":"WebPage","@id":"https:\/\/justanotherelectronicsblog.com\/?p=802","url":"https:\/\/justanotherelectronicsblog.com\/?p=802","name":"Configurable 6502 board - jaeblog","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=802#primaryimage"},"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=802#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29-1024x726.jpg","datePublished":"2020-11-10T19:48:57+00:00","dateModified":"2020-11-15T15:25:55+00:00","author":{"@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"description":"Making a configurable 6502 computer capable of running basic and usable for ben eater's tutorials on the 6502 CPU.","breadcrumb":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=802#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/justanotherelectronicsblog.com\/?p=802"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/justanotherelectronicsblog.com\/?p=802#primaryimage","url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29.jpg","contentUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2020\/11\/photo_2020-11-10_17-01-29.jpg","width":1280,"height":907},{"@type":"BreadcrumbList","@id":"https:\/\/justanotherelectronicsblog.com\/?p=802#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/justanotherelectronicsblog.com\/"},{"@type":"ListItem","position":2,"name":"Configurable 6502 board"}]},{"@type":"WebSite","@id":"https:\/\/justanotherelectronicsblog.com\/#website","url":"https:\/\/justanotherelectronicsblog.com\/","name":"jaeblog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/justanotherelectronicsblog.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b","name":"riktw","url":"https:\/\/justanotherelectronicsblog.com\/?author=1"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=802"}],"version-history":[{"count":22,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/802\/revisions"}],"predecessor-version":[{"id":838,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/802\/revisions\/838"}],"wp:attachment":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}