{"id":345,"date":"2018-07-07T15:13:17","date_gmt":"2018-07-07T15:13:17","guid":{"rendered":"https:\/\/justanotherelectronicsblog.com\/?p=345"},"modified":"2018-07-07T15:19:35","modified_gmt":"2018-07-07T15:19:35","slug":"the-stupidcpu-an-8-bit-7400-computer-part-1-the-architecture","status":"publish","type":"post","link":"https:\/\/justanotherelectronicsblog.com\/?p=345","title":{"rendered":"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture."},"content":{"rendered":"<p>Another day, another silly DIY computer.<br \/>\nMaking a computer from scratch is a popular project, whether it&#8217;s done with an FPGA, an older CPU like the 6502, discrete logic like the 7400 series or even with just a big bag of transistors, so time to give it a go as well.<br \/>\nA good couple of years ago I designed a very simple ALU as a school project, but never did anything with it, so time to change it.<br \/>\nAs it&#8217;s a horribly inefficient 8 bit CPU, I&#8217;ll call it the StupidCPU.<\/p>\n<p>The StupidCPU is an 8 bit CPU, with 16 bit data buses, one data bus for executable code and one for RAM, making it a Harvard architecture CPU.<br \/>\nAll peripherals are memory mapped as RAM.<br \/>\nAs an 8 bit CPU has, well, 8 bits, some trickery is needed for having 16 bit buses. the RAM is accessed using bank switching and the program counter is 16 bits for accessing the executable code.<br \/>\nEvery instruction is 12 bits wide and there is a maximum of 16 instructions, they all follow the following format:<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-355\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><br \/>\nWith a maximum of 16 instructions, 4 bits are needed to select the instruction. The other 8 form an immediate value or an address for the RAM.<br \/>\nTo keep everything simple, the CPU has 1 usable register, called the ACC register. As it can directly read and write to 256 RAM bytes, those are used as a kind of registers in the way a normal RISC CPU uses registers.<br \/>\nThe StupidCPU also has 2 status bits, carry and zero. Carry is high when an overflow occurs and zero when the ACC register is zero.<br \/>\nThe high level architecture looks like this:<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/highlevel.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-368\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/highlevel.jpg\" alt=\"\" width=\"538\" height=\"573\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/highlevel.jpg 538w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/highlevel-282x300.jpg 282w\" sizes=\"auto, (max-width: 538px) 100vw, 538px\" \/><\/a><\/p>\n<h3>Instructions:<\/h3>\n<p>At the moment the instruction set is as follows:<\/p>\n<p>NOR:<br \/>\nThe NOR instruction executes a logic NOR on the ACC and the RAM value at the selected address, the result is stored in ACC.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/NOR.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-349\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/NOR.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/NOR.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/NOR-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>NORI:<br \/>\nThe NORI instruction executes a logic NOR on the ACC and the immediate value, the result is stored in ACC.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/NORI.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-350\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/NORI.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/NORI.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/NORI-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>AND:<br \/>\nThe AND instruction executes a logic AND on the ACC and the RAM value at the selected address, the result is stored in ACC.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/AND.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-356\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/AND.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/AND.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/AND-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>ANDI:<br \/>\nThe ANDI instruction executes a logic AND on the ACC and the immediate value, the result is stored in ACC.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ANDI.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-357\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ANDI.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ANDI.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ANDI-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>ADD:<br \/>\nThe ADD instruction adds ACC and the RAM value at the selected address, the result is stored in ACC.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ADD.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-358\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ADD.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ADD.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ADD-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>ADDI:<br \/>\nThe ADDI instruction adds ACC and the immediate value, the result is stored in ACC.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ADDI.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-359\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ADDI.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ADDI.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/ADDI-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>SHR<br \/>\nLogical shift ACC right 1 bit, store the result in ACC.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/SHR.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-346\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/SHR.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/SHR.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/SHR-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>SHL<br \/>\nLogical shift ACC left 1 bit, store the result in ACC.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/SHL.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-347\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/SHL.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/SHL.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/SHL-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>STA:<br \/>\nStore the ACC into RAM at the selected address.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/STA.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-365\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/STA.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/STA.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/STA-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>JCC:<br \/>\nIf carry is 0 or zero is 1, set the program counters lowest 8 bits to the immediate value.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/JCC.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-354\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/JCC.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/JCC.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/JCC-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>JPCC:<br \/>\nIf carry is 0 or zero is 1, set the program counter lowest 8 bits to the value in RAM at the selected address.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/JPCC.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-353\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/JPCC.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/JPCC.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/JPCC-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>LPC:<br \/>\nSet the program counters lowest 8 bits to the immediate value<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/LPC.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-352\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/LPC.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/LPC.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/LPC-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>LTPC:<br \/>\nSet the program counters highest 8 bits to the immediate value, the next time the lowest 8 bits are changed. This means that after executing the LTPC instruction, the PC changed the next time an LPC instruction or a JCC\/JPCC instruction with the carry at 0 or zero flag at 1 is executed.<\/p>\n<p><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/LTPC.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-351\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/LTPC.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/LTPC.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/LTPC-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>STRAM:<br \/>\nSelect the top RAM bank to use<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/stram.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-348\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/stram.jpg\" alt=\"\" width=\"608\" height=\"80\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/stram.jpg 608w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/stram-300x39.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\n<p>This brings the total to 14 instructions out of the maximum of 16, so there is a bit of space left.<br \/>\nAs this is a very limited set, some common macro&#8217;s are available, the assembler will translate them to the correct machine code:<\/p>\n<p>NOP:<br \/>\nNo operation.<br \/>\nImplementation:<br \/>\nAddi 0<\/p>\n<p>NOT:<br \/>\nInvert ACC.<br \/>\nImplementation:<br \/>\nNORI 0<\/p>\n<p>SUB:<br \/>\nSubtract ACC from the RAM value at the selected address, the result is stored in ACC.<br \/>\nImplementation:<br \/>\nNOT<br \/>\nADD memaddr<br \/>\nANDI 255<br \/>\nADDI 1<\/p>\n<p>SUBI:<br \/>\nSubtract ACC from the immediate value, the result is stored in ACC.<br \/>\nImplementation:<br \/>\nNOT<br \/>\nADDI immediate<br \/>\nANDI 255<br \/>\nADDI 1<\/p>\n<p>CLR:<br \/>\nClear ACC<br \/>\nImplementation:<br \/>\nNORI 255<\/p>\n<p>LDA:<br \/>\nLoad an immediate value into ACC.<br \/>\nImplementation:<br \/>\nCLR<br \/>\nADDI immediate<\/p>\n<p>LDM:<br \/>\nLoad a value from RAM into ACC.<br \/>\nImplementation:<br \/>\nCLR<br \/>\nADD memaddr<\/p>\n<p>MOVE:<br \/>\nMove a value from RAM to a different place in RAM<br \/>\nImplementation:<br \/>\nCLR<br \/>\nADD srcaddr<br \/>\nSTA destaddr<\/p>\n<p>STORE:<br \/>\nStore an immediate value to RAM<br \/>\nImplementation:<br \/>\nCLR<br \/>\nADDI immediate<br \/>\nSTA destaddr<\/p>\n<h3>RAM banks:<\/h3>\n<p>The way the RAM works required some extra explanation, as it&#8217;s a bit unusual.<br \/>\nAs the StupidCPU is an 8 bit CPU, it can access a maximum of 256 bytes of RAM, which is a bit low. To give it access to more RAM, bank switching is used.<br \/>\nWith bank switching there are multiple banks of RAM, for example 4 banks of 256 bytes of RAM. The CPU can access one bank at a time, being able to select the accessible bank using a special instruction.<\/p>\n<p>There is one problem for the StupidCPU, it has only 1 register. When the bank is switched, all previously accessible variables are gone. To counteract this, the StupicCPU has banks of 128 bytes, and only the highest 128 bytes of RAM are switched.<br \/>\nThis way, the lowest 128 bytes of RAM are always accessible, the only downside is that with an 16 bit RAM bus the maximum amount of accessible RAM is 32K.<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/rambanks.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-369\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/rambanks.jpg\" alt=\"\" width=\"617\" height=\"519\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/rambanks.jpg 617w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/rambanks-300x252.jpg 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/a><\/p>\n<p>All peripherals are memory mapped, for example, an GPIO peripheral would be selected as a top bank and can then be written to\/read from like RAM.<\/p>\n<p>&nbsp;<\/p>\n<p>That&#8217;s it for now, the next blog post will go into some more design details.<\/p>\n<p>Credit where credit is due:<\/p>\n<p>The images made for the instructions where made with <a href=\"https:\/\/github.com\/drom\/bitfield\">bitfield<\/a> and the other images with <a href=\"https:\/\/www.yworks.com\/products\/yed?\">yEd<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Another day, another silly DIY computer. Making a computer from scratch is a popular project, whether it&#8217;s done with an FPGA, an older CPU like the 6502, discrete logic like the 7400 series or even with just a big bag of transistors, so time to give it a go as well. A good couple of [&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-345","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>The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture. - jaeblog<\/title>\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=345\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture. - jaeblog\" \/>\n<meta property=\"og:description\" content=\"Another day, another silly DIY computer. Making a computer from scratch is a popular project, whether it&#8217;s done with an FPGA, an older CPU like the 6502, discrete logic like the 7400 series or even with just a big bag of transistors, so time to give it a go as well. A good couple of [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/justanotherelectronicsblog.com\/?p=345\" \/>\n<meta property=\"og:site_name\" content=\"jaeblog\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-07T15:13:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-07-07T15:19:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base.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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345\"},\"author\":{\"name\":\"riktw\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\"},\"headline\":\"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture.\",\"datePublished\":\"2018-07-07T15:13:17+00:00\",\"dateModified\":\"2018-07-07T15:19:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345\"},\"wordCount\":928,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2018\\\/07\\\/base.jpg\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345\",\"name\":\"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture. - jaeblog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2018\\\/07\\\/base.jpg\",\"datePublished\":\"2018-07-07T15:13:17+00:00\",\"dateModified\":\"2018-07-07T15:19:35+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345#primaryimage\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2018\\\/07\\\/base.jpg\",\"contentUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2018\\\/07\\\/base.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=345#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture.\"}]},{\"@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":"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture. - jaeblog","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=345","og_locale":"en_US","og_type":"article","og_title":"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture. - jaeblog","og_description":"Another day, another silly DIY computer. Making a computer from scratch is a popular project, whether it&#8217;s done with an FPGA, an older CPU like the 6502, discrete logic like the 7400 series or even with just a big bag of transistors, so time to give it a go as well. A good couple of [&hellip;]","og_url":"https:\/\/justanotherelectronicsblog.com\/?p=345","og_site_name":"jaeblog","article_published_time":"2018-07-07T15:13:17+00:00","article_modified_time":"2018-07-07T15:19:35+00:00","og_image":[{"url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base.jpg","type":"","width":"","height":""}],"author":"riktw","twitter_card":"summary_large_image","twitter_misc":{"Written by":"riktw","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/justanotherelectronicsblog.com\/?p=345#article","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=345"},"author":{"name":"riktw","@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"headline":"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture.","datePublished":"2018-07-07T15:13:17+00:00","dateModified":"2018-07-07T15:19:35+00:00","mainEntityOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=345"},"wordCount":928,"commentCount":0,"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=345#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base.jpg","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/justanotherelectronicsblog.com\/?p=345#respond"]}]},{"@type":"WebPage","@id":"https:\/\/justanotherelectronicsblog.com\/?p=345","url":"https:\/\/justanotherelectronicsblog.com\/?p=345","name":"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture. - jaeblog","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=345#primaryimage"},"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=345#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base.jpg","datePublished":"2018-07-07T15:13:17+00:00","dateModified":"2018-07-07T15:19:35+00:00","author":{"@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"breadcrumb":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=345#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/justanotherelectronicsblog.com\/?p=345"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/justanotherelectronicsblog.com\/?p=345#primaryimage","url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base.jpg","contentUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/07\/base.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/justanotherelectronicsblog.com\/?p=345#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/justanotherelectronicsblog.com\/"},{"@type":"ListItem","position":2,"name":"The StupidCPU, an 8 BIT 7400 computer, part 1, the architecture."}]},{"@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\/345","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=345"}],"version-history":[{"count":10,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/345\/revisions"}],"predecessor-version":[{"id":373,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/345\/revisions\/373"}],"wp:attachment":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}