{"id":1336,"date":"2011-04-10T11:35:40","date_gmt":"2011-04-10T11:35:40","guid":{"rendered":"http:\/\/www.ollmetzer.com\/?p=1336"},"modified":"2011-04-10T11:35:40","modified_gmt":"2011-04-10T11:35:40","slug":"entwickeln-fur-den-commodore-64","status":"publish","type":"post","link":"https:\/\/www.ollmetzer.com\/?p=1336","title":{"rendered":"Entwickeln f\u00fcr den Commodore 64"},"content":{"rendered":"<p>Ich habe ja neulich mal aus Spass ausprobiert, ob ich noch Maschinensprache f\u00fcr den <a title=\"Wikipedia: MOS 6502 Mikroprozessor\" href=\"http:\/\/de.wikipedia.org\/wiki\/6502\">6502<\/a> Mikroprozessor programmieren kann. Tats\u00e4chlich bin ich nach \u00fcber 20 Jahren Abstinenz wieder ganz gut reingekommen, wie ich im Artikel &#8222;<a href=\"\/?p=1314\">HA \u2013 Ich kann es noch\u2026<\/a>&#8220; gezeigt habe. Der Prozessor ist ja auch verh\u00e4ltnism\u00e4ssig einfach zu programmieren. Das einzige, was ich wirklich schmerzlich vermisst habe, sind Befehle  f\u00fcr Multiplikation und Division, aber dazu sp\u00e4ter noch etwas.<\/p>\n<p>Nun n\u00fctzt ein Prozessor alleine nat\u00fcrlich nichts. Er ist ja nur ein (wenn auch zentrales) Teil eines Computers. Der 6502 war neben dem <a title=\"Wikipedia: Zilog Z80 Mikroprozessor\" href=\"http:\/\/de.wikipedia.org\/wiki\/Z80\" target=\"xdev\">Z80<\/a> der Prozessor, der die meisten Homecomputer der sp\u00e4ten 70er und fr\u00fchen 80er Jahre angetrieben hat. Darunter solche Schwergewichte, wie <a title=\"Wikipedia: Apple II\" href=\"http:\/\/de.wikipedia.org\/wiki\/Apple_II\" target=\"xdev\">Apple II<\/a>, <a title=\"Wikipedia: Atari 8 Bit Homecomputer\" href=\"http:\/\/de.wikipedia.org\/wiki\/Atari_800_XL\" target=\"xdev\">Atari 400\/600\/800<\/a> und nat\u00fcrlich die legend\u00e4ren Commodore <a title=\"Wikipedia: Commodore VC20\" href=\"http:\/\/de.wikipedia.org\/wiki\/VC-20\" target=\"xdev\">VC20<\/a> und <a title=\"Wikipedia: Commodore 64\" href=\"http:\/\/de.wikipedia.org\/wiki\/Commodore_64\" target=\"xdev\">C64<\/a>. Letzterer war damals in den 80ern der Computer meiner Wahl. Einerseits gab es f\u00fcr ihn die meisten Spiele, und andererseits war er mit richtiger Tastatur, 64KB Speicher, Floppylaufwerk und Nadeldrucker f\u00fcr vergleichsweise schmales Budget auch bereits recht professionell.<\/p>\n<p><strong>Emulation<\/strong><\/p>\n<p>Die Hardware besitze ich l\u00e4ngst nicht mehr. Trotzdem wollte ich mal wieder etwas f\u00fcr den C64 programmieren. Das geht aufgrund einer aktiven Szene erfreulich einfach. Zun\u00e4chst ben\u00f6tigt man einen Emulator, der den C64 komplett in Software auf einem aktuellen PC oder MAC nachbilden kann. Ich benutze gerne der <a title=\"VICE Emulator\" href=\"http:\/\/vice-emu.sourceforge.net\/\" target=\"xdev\">VICE Emulator<\/a>, weil er f\u00fcr viele Plattformen erh\u00e4ltlich und sehr kompatibel zur alten Software ist. Zudem kann er auch andere alte Commodore Rechner emulieren.<\/p>\n<p><strong>Hardware Dokumentation<\/strong><\/p>\n<p>Wer in Assembler (bzw. Maschinensprache) entwickeln will, muss genauestens \u00fcber die Hardware bescheid wissen. Eine detaillierte Auflistung der <a title=\"C64 Wiki: Speicherbelegungsplan\" href=\"http:\/\/www.c64-wiki.de\/index.php\/Speicherbelegungsplan\" target=\"xdev\">Memory Map (Speicherbelegung<\/a>) und der Register der <a title=\"C64 Wiki: CIA Register\" href=\"http:\/\/www.c64-wiki.de\/index.php\/CIA#Speicheradressen_der_CIAs\" target=\"xdev\">Ein- und Ausgabechips<\/a>, insbesondere <a title=\"C64 Wiki: VIC Register\" href=\"http:\/\/www.c64-wiki.de\/index.php\/VIC#Speicheradressen_des_VIC-II\" target=\"xdev\">Video-<\/a> und <a title=\"C64 Wiki: SID Register\" href=\"http:\/\/www.c64-wiki.de\/index.php\/SID#Speicheradressen_des_SID\" target=\"xdev\">Soundchip<\/a> ist Grundvoraussetzung.<\/p>\n<p><strong>Crossdevelopment<\/strong><\/p>\n<p>Software auf dem C64 zu entwickeln aus etwas m\u00fchsam und recht langsam. Den Editor laden, den Quelltext laden, die \u00c4nderungen vornehmen, Quelltext speichern, Editor verlassen, Assembler starten (der r\u00f6delt dann auf dem langsamen Diskettenlaufwerk rum), Programm laden und feststellen, dass irgendwas nicht l\u00e4uft. C64 zur\u00fccksetzen und die Schleife geht von vorne los.<\/p>\n<p>Mit Crossdevlopment (die Software wird auf einem Fremdsystem programmiert und \u00fcbersetzt) geht das einfacher, komfortabler und schneller. Man programmiert mit wesentlich besseren Editoren auf dem PC, \u00fcbersetzt die Software mit einem Crossassembler in Sekunden und startet das Programm direkt im Editor.<\/p>\n<p><strong>Tools<\/strong><br \/>\nJetzt gilt es noch, die richtigen Tools f\u00fcr das Gastsystem zu finden. Dabei ist f\u00fcr mich wichtig, wann immer es geht Software zu nutzen, die es sowohl f\u00fcr Windows, als auch f\u00fcr Apple Mac und Linux gibt.<\/p>\n<p>Als Commodore Emulator verwende ich den VICE Emulator, der hier zu finden ist: <a href=\"http:\/\/vice-emu.sourceforge.net\" target=\"xdev\">http:\/\/vice-emu.sourceforge.net<\/a>.<\/p>\n<p>Als \u00dcbersetzungsprogramm nehme ich den in Java programmierten Kick Assembler, den es hier gibt: <a title=\"Kick Assembler\" href=\"http:\/\/www.theweb.dk\/KickAssembler\/Main.php\" target=\"xdev\">http:\/\/www.theweb.dk\/KickAssembler<\/a>.<\/p>\n<p>Damit ist man eigentlich schon gut ausgestattet um zu starten. Die meisten Spiele auf dem C64 verwenden keine &#8222;richtige&#8220; Grafik, sondern setzen die Bilder aus ver\u00e4nderten Zeichen zusammen. Das geht schneller und ben\u00f6tigt weniger Speicher. Man kann die Zeichen (8&#215;8 Pixel) schnell auf Karopapier entwerfen und im Assembler Quelltext codieren. Gleiches gilt f\u00fcr die Spielfelder. Man kann sich das Leben aber durchaus noch etwas bequemer machen, indem man entsprechende Software nutzt.<\/p>\n<p>Ich nutze den schlanken Ascraeus Font Editor, um den Zeichensatz zu \u00e4ndern. Quelle: <a title=\"C64 Font Editor\" href=\"http:\/\/www.symbolengine.com\/index.php\/2007\/03\/12\/ascraeus-font-editor-v12\/\" target=\"xdev\">http:\/\/www.symbolengine.com\/index.php\/2007\/03\/12\/ascraeus-font-editor-v12\/<\/a>.<\/p>\n<p>Die Spielfelder kann man dann hervorragend mit dem Tiled Map Editor entwerfen, den es sowohl in mehreren Bin\u00e4rversionen und auch in einer Java Version gibt. Zu finden ist er hier: <a title=\"Tiled Map Editor\" href=\"http:\/\/www.mapeditor.org\/\" target=\"xdev\">http:\/\/www.mapeditor.org<\/a><\/p>\n<p>Nur zum Thema Sound bleibe ich erstmal beim C64 selbst und nutze den <a title=\"Wikipedia: Soundmonitor\" href=\"http:\/\/de.wikipedia.org\/wiki\/Soundmonitor\" target=\"xdev\">Sound Editor<\/a>, den <a title=\"Chris Huelsbeck\" href=\"http:\/\/www.huelsbeck.com\/\" target=\"xdev\">Chris H\u00fclsbeck<\/a> 1986 in der <a title=\"Wikipedia: 64er Magazin\" href=\"http:\/\/de.wikipedia.org\/wiki\/64er\" target=\"xdev\">64er<\/a> ver\u00f6ffentlicht hat.<\/p>\n<p>Und was habe ich denn nun konkret gebaut? Eine Grafikroutine, die ich zu einem kleinem RPG ausbauen m\u00f6chte, falls es meine Zeit erlaubt. Details folgen&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich habe ja neulich mal aus Spass ausprobiert, ob ich noch Maschinensprache f\u00fcr den 6502 Mikroprozessor programmieren kann. Tats\u00e4chlich bin ich nach \u00fcber 20 Jahren Abstinenz wieder ganz gut reingekommen, wie ich im Artikel &#8222;HA \u2013 Ich kann es noch\u2026&#8220; gezeigt habe. Der Prozessor ist ja auch verh\u00e4ltnism\u00e4ssig einfach zu programmieren. Das einzige, was ich [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,14],"tags":[],"class_list":["post-1336","post","type-post","status-publish","format-standard","hentry","category-gizmos","category-retro"],"_links":{"self":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/1336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1336"}],"version-history":[{"count":0,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/1336\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}