{"id":4832,"date":"2020-04-17T12:36:03","date_gmt":"2020-04-17T11:36:03","guid":{"rendered":"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/?p=4832"},"modified":"2021-02-23T11:47:52","modified_gmt":"2021-02-23T10:47:52","slug":"fpga-cpu-fuer-commodore-16","status":"publish","type":"post","link":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/2020\/04\/17\/fpga-cpu-fuer-commodore-16\/","title":{"rendered":"FPGA CPU f\u00fcr Commodore 16"},"content":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_4832\" class=\"pvc_stats all  \" data-element-id=\"4832\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p style=\"text-align: justify\"><a href=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-3-scaled.jpg\"><img fetchpriority=\"high\" decoding=\"async\" class=\"size-medium wp-image-4802 alignleft\" src=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-3-225x300.jpg\" alt=\"\" width=\"225\" height=\"300\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-3-225x300.jpg 225w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-3-768x1024.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-3-1152x1536.jpg 1152w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-3-1536x2048.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-3-scaled.jpg 1920w\" sizes=\"(max-width: 225px) 100vw, 225px\" \/><\/a>Meine erste Begegnung mit Computern hatte ich in den fr\u00fchen 80iger Jahren, als meine Kollegen im Gymnasium ihren ersten VC20 und C64 von Commodore bekamen. Das war damals eine v\u00f6llig neue Welt f\u00fcr mich &#8211; ein Computer &#8211; ein Ger\u00e4t mit Tasten, wie bei einer Schreibmaschine, das man am Fernsehger\u00e4t anschlie\u00dft. Und man kann in einer Sprache, die sich &#8222;Basic&#8220; diesem Computer Befehle erteilen, die er dann ausf\u00fchrt.&nbsp; Man konnte sogar ganze Programme schreiben und diese dann mit dem Befehl &#8222;RUN&#8220; starten. Und dieser Computer arbeitete diese Programme dann ab. Das war faszinierend und er\u00f6ffnete uns damals neue Welten. Erst recht als ich Kassetten bekam, die wie Musikkassetten aussahen, jedoch f\u00fcr den Computer gedacht waren. Darauf befand sich, spielte man sie in einem Kassettenspieler ab, ein Gepiepe, das man sp\u00e4ter von Faxger\u00e4ten oder der Einwahlsequenz von Modems kannte.<\/p>\n<p style=\"text-align: justify\">St\u00f6pselte man den Kassettenplayer jedoch mit einem Klinkenkabel in den Computer und gab dort den Befehl &#8222;LOAD&#8220; ein, so wurde aus dem Gepiepe ein Spiel oder ein Musikprogramm, oder was auch immer auf der Kassette gespeichert war. Jedenfalls war das das Tollste was man als Kind besitzen konnte. Und den jugendlichen Adrenalinschub bekam ich, als unter dem Weihnachtsbaum mein eigener Commodore C16 mit zugeh\u00f6riger Datasette und der Spielekassette BigMac lag. Der Commodore C16 war also mein erster richtiger Computer. Es dauerte nicht lange, da waren die 16kB (KiloByte) Ram, die der C16 hatte zu wenig f\u00fcr die selbst gebastelten Basic Programme. Und was noch schlimmer war, es gab auch tolle Spiele, die mit 16k nicht liefen. Dazu geh\u00f6rte der Kampfflugsimulator &#8222;ACE&#8220; und das Vector-Grafikgame &#8222;MERCENARY&#8220;. Also musste der Computer aufger\u00fcstet werden. Das war aus heutiger Sicht sehr einfach &#8211; es mussten lediglich zwei DRram Bausteine ausgel\u00f6tet und gegen andere ersetzt werden. Damals jedoch, im Alter von &#8211; ich denke 11-12 Jahren, war das mangels geeignetem L\u00f6twerkzeug und Erfahrung eine Herausforderung. Doch irgendwie hat es geklappt und der C16 meldete sich mit folgender Statuszeile:<\/p>\n<p style=\"text-align: center\"><strong>COMMODORE BASIC V3.5 60671 BYTES FREE<\/strong><\/p>\n<p style=\"text-align: left\"><strong>READY<\/strong><\/p>\n<p style=\"text-align: justify\">Das war im Vergleich zum originalen Speicher, von dem f\u00fcr den Basic Interpreter gerade einmal 12277 Byte frei verf\u00fcgbar waren, ein Paradies an neuen M\u00f6glichkeiten. Leider war die Lebensdauer des Commodore 16 im Dauerbetrieb nicht sehr lange. Ich denke, es hat nicht mal ein Jahr gedauert, da zeigte der Rechner erste Probleme. Entweder reagierte der Cursor nicht mehr, es kamen wirre Zeichen am Bildschirm, oder er startete erst nach h\u00e4ufigem Aus- und wieder Einschalten. Irgendwann blieb der Bildschirm dann ganz schwarz.&nbsp; Schuld daran war, zumindest vermute ich das heute, der Hitze Tod der CPU und\/oder des TED IC\u00b4s. Damals konnte man diese Chips in den einschl\u00e4gigen Elektronikl\u00e4den noch f\u00fcr kleines Geld bestellen. Heute sieht das aber anders aus. Eine MOS7501 oder MOS8501 CPU findet man, wenn \u00fcberhaupt, dann nur bei eBay und co. und das f\u00fcr Preise von 50 Euro und mehr f\u00fcr gebrauchte Chips.<\/p>\n<div id=\"attachment_4803\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-4-scaled.jpg\"><img decoding=\"async\" aria-describedby=\"caption-attachment-4803\" class=\"wp-image-4803 size-medium\" src=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-4-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-4-300x225.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-4-1024x768.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-4-768x576.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-4-1536x1152.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-4-2048x1536.jpg 2048w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-4803\" class=\"wp-caption-text\">MOS7501 (MOS8501) CPU der Commodore 264er Reihe<\/p><\/div>\n<p style=\"text-align: justify\">In meiner Sammlung besitze ich einige wenige Exemplare der 264er Serie von Commodore, die mehr oder weniger alle in einem originalen, einwandfreien Zustand sind (C16, C116, Plus4). Aber eben nicht alle. So habe ich mir in den Kopf gesetzt, die 8501 CPU in einen FPGA zu implementieren, eine kleine Platine zu entwerfen, die die Gr\u00f6\u00dfe eines DIL40 IC\u00b4s hat und direkt in den CPU-Sockel des C16 bzw. Plus4 passt. Es existieren ja bereits einige erfolgreiche Projekte, die sich mit der Implementierung eines 8Bit CPU Core in einen modernen FPGA befassen.&nbsp; Hier die Links:<\/p>\n<p>Sellmy Retro: <a href=\"https:\/\/www.sellmyretro.com\/offer\/details\/mos--7501~~8501-cpu-replacement-for-c16~~116~~%2B4-30475\">https:\/\/www.sellmyretro.com\/offer\/details\/mos&#8211;7501~~8501-cpu-replacement-for-c16~~116~~%2B4-30475<\/a><\/p>\n<p>oder ein universal konfigurierbarer CPU &#8211; FPGA Ersatz: <a href=\"https:\/\/hackaday.io\/project\/165624-mocka65xx-universal-650285xx-cpu-replacement\">https:\/\/hackaday.io\/project\/165624-mocka65xx-universal-650285xx-cpu-replacement<\/a><\/p>\n<p style=\"text-align: justify\">Ich habe mich aus Kostengr\u00fcnden und auf Empfehlung entschlossen, mit einem Lattice MACHXO FPGA zu arbeiten. Ein Evaluation Board ist f\u00fcr unter 30 Euro zu bekommen und f\u00fcr die Entwicklungsumgebung bekommt man bei Lattice eine gratis Lizenz. Einziger Nachteil &#8211; ich hatte bis dato keine Erfahrung mit Lattice Produkten. In meinen beruflichen Projekten wird haupts\u00e4chlich mit XILINX gearbeitet. Aber nach der Installation der Lattice-Software und ein bisschen \u00dcbung war schnell klar, damit sollte ich zurechtkommen.<\/p>\n<div id=\"attachment_4823\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-24-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-4823\" class=\"wp-image-4823 size-medium\" src=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-24-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-24-300x225.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-24-1024x768.jpg 1024w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-24-768x576.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-24-1536x1152.jpg 1536w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2020\/03\/MOS8051_FPGA-24-2048x1536.jpg 2048w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-4823\" class=\"wp-caption-text\">LATTICE MACH XO Evaluationboard<\/p><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Ich habe mir also vorgenommen, diesen Beitrag als dynamischen Beitrag zu gestalten und immer wieder zu erweitern. Da meine letzten FPGA Projekte wieder einige Zeit zur\u00fcckliegen und ich mich auch wieder in die FPGA-Welt eingew\u00f6hnen muss, wird es wohl einige Zeit dauern bis (falls) ein brauchbares Ergebnis zustande kommt. Zu Beginn steht die Analyse des Datenblattes des MOS8501 IC und dessen Pins zur Au\u00dfenwelt. Der 8501 ist eine abge\u00e4nderte Version des 6502 (die CPU aus dem Jahr 1975 die in vielen Rechnern eingesetzt wurde). Dazu z\u00e4hlen unter anderem der VC20, der Atari800, auch der APPLE 1 usw. arbeiteten mit dem 6502 Prozessor. Der 6502 ist auch schon als Verilog und VHDL Modell verf\u00fcgbar&#8230; Diese Cores mit den Anpassungen f\u00fcr den 8501 will ich in den MachXO reinquetschen und mit entsprechender Anpassung der Signallevels direkt statt dem originalen MOS-Chip in das C16 Mainboard stecken&#8230;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_4832\" class=\"pvc_stats all  \" data-element-id=\"4832\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p>Meine erste Begegnung mit Computern hatte ich in den fr\u00fchen 80iger Jahren, als meine Kollegen im Gymnasium ihren ersten VC20 und C64 von Commodore bekamen. Das war damals eine v\u00f6llig neue Welt f\u00fcr mich &#8211; ein Computer &#8211; ein Ger\u00e4t mit Tasten, wie bei einer Schreibmaschine, das man am Fernsehger\u00e4t anschlie\u00dft. Und man kann in&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/2020\/04\/17\/fpga-cpu-fuer-commodore-16\/\">Weiterlesen<\/a><\/p>\n","protected":false},"author":86,"featured_media":4806,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[1,483],"tags":[852,1396,689,843,1390,1385,1389,1386,1391,1392,1393,1387,1388,781],"class_list":["post-4832","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemeines","category-retro-computer","tag-8bit-computer","tag-bigmac","tag-c16","tag-commodore-c16","tag-commodore-cpu-in-fpga","tag-commodore16","tag-cpld-8bit-cpu","tag-cpu","tag-lattice","tag-lattice-fpga","tag-machxo","tag-mos","tag-mos7501","tag-mos8501"],"a3_pvc":{"activated":true,"total_views":215,"today_views":1},"_links":{"self":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts\/4832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/users\/86"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/comments?post=4832"}],"version-history":[{"count":0,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts\/4832\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/media\/4806"}],"wp:attachment":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/media?parent=4832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/categories?post=4832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/tags?post=4832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}