{"id":694226,"date":"2026-05-26T06:00:10","date_gmt":"2026-05-26T06:00:10","guid":{"rendered":"https:\/\/www.newsbeep.com\/ca\/694226\/"},"modified":"2026-05-26T06:00:10","modified_gmt":"2026-05-26T06:00:10","slug":"z386-an-open-source-80386-built-around-original-microcode","status":"publish","type":"post","link":"https:\/\/www.newsbeep.com\/ca\/694226\/","title":{"rendered":"Z386: An Open-Source 80386 Built Around Original Microcode"},"content":{"rendered":"<p>There are many ways you can implement an Intel i386 CPU on an FPGA, with the use of original microcode probably being one of the most interesting approaches. This is what [nand2mario]\u2019s z386 project does, with a <a href=\"https:\/\/nand2mario.github.io\/posts\/2026\/z386\/\" target=\"_blank\" rel=\"nofollow noopener\">recent blog post summarizing development<\/a> on this FPGA project so far.<\/p>\n<p>This project is similar to the previously developed <a href=\"https:\/\/github.com\/nand2mario\/z8086\" target=\"_blank\" rel=\"nofollow noopener\">z8086 project<\/a>, which as one may guess does something similar, except for the Intel 8086 CPU. By executing the original microcode you\u2019re basically guaranteeing close compatibility with the original hardware, though of course the sheer scale of this microcode between an 8086 and 80386 is quite different.<\/p>\n<p>There\u2019s a much larger instruction set with a correspondingly much more complicated internal state to keep track of, including all those newfangled features like memory management, paging and register debugging, as well extensions to protected mode that began with the i286.<\/p>\n<p>Currently z386 runs on a number of FPGAs, including the Altera Cyclone V and Gowin GW5A, with performance equivalent to a ~70 MHz i386 albeit with slightly worse cycle efficiency, some of which could be due to the limited 16 kB cache compared to the 32+ kB cache in the fastest i386 CPUs. Either way, it\u2019s more than enough to run all kinds of software, including games like\u00a0DOOM.<\/p>\n<p>Important to note is that the goal here isn\u2019t to be more performant than cores such as for example ao486, but more as an archaeological reconstruction of the original hardware and its interaction with said microcode.<\/p>\n<p>Top image: line-up of Intel 286, 386 and 486 CPUs. (Credit: Sgroey, <a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Intel_chips_286_386_486_size_comparison.jpg\" target=\"_blank\" rel=\"nofollow noopener\">Wikimedia<\/a>)<\/p>\n","protected":false},"excerpt":{"rendered":"There are many ways you can implement an Intel i386 CPU on an FPGA, with the use of&hellip;\n","protected":false},"author":2,"featured_media":694227,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[49,48,61],"class_list":["post-694226","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology","tag-ca","tag-canada","tag-technology"],"_links":{"self":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts\/694226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/comments?post=694226"}],"version-history":[{"count":0,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts\/694226\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/media\/694227"}],"wp:attachment":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/media?parent=694226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/categories?post=694226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/tags?post=694226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}