{"id":5761,"date":"2026-09-06T09:09:07","date_gmt":"2026-09-06T07:09:07","guid":{"rendered":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?p=5761"},"modified":"2026-09-06T10:10:08","modified_gmt":"2026-09-06T08:10:08","slug":"mmbasic-fuer-macos-mmb4m","status":"publish","type":"post","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/mmbasic-fuer-macos-mmb4m\/","title":{"rendered":"MMBasic f\u00fcr macOS (MMB4M)"},"content":{"rendered":"<h1>MMBasic kommt auf den Mac \u2013 MMB4M ist da<\/h1>\n<p>MMBasic ist inzwischen auf einer ganzen Reihe von Systemen zu Hause. Neben dem Colour Maximite 2 und den verschiedenen PicoMite-Versionen gibt es mit MMBasic for Linux (MMB4L) bereits seit einiger Zeit eine Version f\u00fcr Linux.<\/p>\n<p>Eine Plattform fehlte bislang jedoch: <strong>macOS<\/strong>.<\/p>\n<p>Das hat sich jetzt ge\u00e4ndert. Tom Schimana hat mit <strong>MMB4M \u2013 MMBasic for macOS<\/strong> eine Portierung ver\u00f6ffentlicht, mit der sich MMBasic direkt auf einem Mac ausf\u00fchren l\u00e4sst.<\/p>\n<p>Das Projekt ist auf GitHub zu finden:<\/p>\n<p><a href=\"https:\/\/github.com\/TomSchimana\/mmb4m\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/TomSchimana\/mmb4m<\/a><\/p>\n<h2>Von MMB4L zu MMB4M<\/h2>\n<p>MMB4M ist keine komplett neue MMBasic-Implementierung. Die Grundlage bildet <strong>MMBasic for Linux (MMB4L)<\/strong> von Thomas Hugo Williams (thwill).<\/p>\n<p>Das war \u00fcberhaupt erst m\u00f6glich, weil MMB4L f\u00fcr Grafik, Sound und Eingabeger\u00e4te auf SDL2 setzt. SDL2 steht auch f\u00fcr macOS zur Verf\u00fcgung und bot damit eine gute Basis f\u00fcr die Portierung.<\/p>\n<p>Bevor Tom das Projekt ver\u00f6ffentlichte, setzte er sich mit Geoff Graham und Thomas Hugo Williams in Verbindung. Geoff Graham gab am 25. August 2026 seine Zustimmung zur Portierung. Voraussetzung war unter anderem, dass der Name MMBasic erhalten bleibt und der urspr\u00fcngliche Copyright-Hinweis beim Start weiterhin angezeigt wird.<\/p>\n<p>Die erste ver\u00f6ffentlichte Version tr\u00e4gt die Versionsnummer <strong>MMB4M 0.1.0<\/strong>. MMB4M verwendet dabei bewusst eine eigene Versionsnummer. Im Changelog wird festgehalten, auf welchem Stand von MMB4L die jeweilige Version basiert.<\/p>\n<h2>Apple Silicon und Intel<\/h2>\n<p>F\u00fcr die erste Version stehen bereits zwei fertige Pakete zur Verf\u00fcgung:<\/p>\n<ul>\n<li><code>mmb4m-0.1.0-silicon.zip<\/code> f\u00fcr Macs mit Apple-Silicon-Prozessor (M1, M2, M3 usw.)<\/li>\n<li><code>mmb4m-0.1.0-intel.zip<\/code> f\u00fcr Intel-Macs<\/li>\n<\/ul>\n<p>Im Archiv befindet sich lediglich die ausf\u00fchrbare Datei <code>mmbasic<\/code>.<\/p>\n<p>Da das Programm derzeit nicht mit einem Apple-Developer-Zertifikat signiert ist, blockiert macOS eine aus dem Internet heruntergeladene Version zun\u00e4chst. Nach dem Entpacken kann die Quarant\u00e4ne-Markierung im Terminal entfernt werden:<\/p>\n<pre><code>xattr -dr com.apple.quarantine mmbasic\r\n<\/code><\/pre>\n<p>Anschlie\u00dfend l\u00e4sst sich MMBasic starten:<\/p>\n<pre><code>.\/mmbasic\r\n<\/code><\/pre>\n<h2>MMBasic direkt im Terminal<\/h2>\n<p>MMB4M kann auf unterschiedliche Weise gestartet werden.<\/p>\n<p>Nur den Interpreter \u00f6ffnen:<\/p>\n<pre><code>mmbasic\r\n<\/code><\/pre>\n<p>Ein BASIC-Programm ausf\u00fchren:<\/p>\n<pre><code>mmbasic prog.bas\r\n<\/code><\/pre>\n<p>Ein Programm ausf\u00fchren und anschlie\u00dfend im MMBasic-Prompt bleiben:<\/p>\n<pre><code>mmbasic -i prog.bas\r\n<\/code><\/pre>\n<p>Mit <code>QUIT<\/code> wird MMBasic wieder beendet.<\/p>\n<p>Interessant ist auch, dass der von PicoMite-Anwendern bekannte interne Fullscreen-Editor vorhanden ist. Mit<\/p>\n<pre><code>EDIT\r\n<\/code><\/pre>\n<p>kann ein BASIC-Programm direkt im Terminal bearbeitet werden.<\/p>\n<p>Alternativ lassen sich externe Editoren verwenden. Unterst\u00fctzt werden beispielsweise Vim, Nano oder Visual Studio Code.<\/p>\n<h2>Colour-Maximite-2-Kompatibilit\u00e4tsmodus<\/h2>\n<p>Besonders interessant ist die M\u00f6glichkeit, MMB4M in einem <strong>Colour-Maximite-2-Kompatibilit\u00e4tsmodus<\/strong> zu starten:<\/p>\n<pre><code>mmbasic -s \"Colour Maximite 2\"\r\n<\/code><\/pre>\n<p>oder k\u00fcrzer:<\/p>\n<pre><code>mmbasic -s CMM2\r\n<\/code><\/pre>\n<p>Damit stehen unter anderem Befehle wie <code>MODE<\/code> und <code>PAGE<\/code> zur Verf\u00fcgung, die im normalen MMB4M-Modus nicht vorhanden sind.<\/p>\n<p>Viele CMM2-Programme k\u00f6nnen dadurch ohne \u00c4nderungen ausgef\u00fchrt werden.<\/p>\n<p>Man sollte dabei allerdings nicht vergessen:<\/p>\n<p><strong>MMB4M ist kein Colour-Maximite-2-Emulator.<\/strong><\/p>\n<p>Der Kompatibilit\u00e4tsmodus simuliert einige Eigenschaften des CMM2, sodass sich insbesondere Programmlogik auf dem Mac entwickeln und testen l\u00e4sst. Grafik, Sound und Timing k\u00f6nnen sich jedoch vom echten Colour Maximite 2 unterscheiden.<\/p>\n<h2>Grafik auf dem Mac<\/h2>\n<p>Im normalen MMB4M-Modus gibt es keine Bildschirmmodi wie beim CMM2. Stattdessen kann ein Programm beispielsweise ein eigenes Grafikfenster \u00f6ffnen:<\/p>\n<pre><code>GRAPHICS WINDOW 0, 640, 480\r\n<\/code><\/pre>\n<p>Grafikausgaben erfolgen anschlie\u00dfend in diesem Fenster.<\/p>\n<p>Auch hier gibt es einige Unterschiede zu den Hardware-Versionen von MMBasic. <code>PRINT<\/code> schreibt beispielsweise grunds\u00e4tzlich in das Terminal und nicht in ein Grafikfenster. Text in einer Grafik wird stattdessen mit dem <code>TEXT<\/code>-Befehl ausgegeben.<\/p>\n<p><code>FRAMEBUFFER<\/code> ist derzeit nicht implementiert. F\u00fcr Offscreen-Grafik stehen jedoch <code>GRAPHICS BUFFER<\/code> und <code>GRAPHICS COPY<\/code> zur Verf\u00fcgung.<\/p>\n<h2>Nat\u00fcrlich kein Ersatz f\u00fcr einen PicoMite<\/h2>\n<p>Ein Mac besitzt nat\u00fcrlich keine GPIO-Pins wie ein Raspberry Pi Pico.<\/p>\n<p>Befehle wie<\/p>\n<pre><code>SETPIN\r\nPIN\r\nPULSE\r\nFLASH\r\n<\/code><\/pre>\n<p>k\u00f6nnen daher nicht einfach auf die Hardware des Macs \u00fcbertragen werden.<\/p>\n<p>Auch beim Timing gibt es Unterschiede. macOS ist kein Echtzeitbetriebssystem. Zeitkritische Programme k\u00f6nnen sich deshalb anders verhalten als auf einem PicoMite.<\/p>\n<p>MMB4M soll einen PicoMite oder Colour Maximite 2 also nicht ersetzen.<\/p>\n<p>Daf\u00fcr er\u00f6ffnet es eine andere interessante M\u00f6glichkeit: <strong>MMBasic-Programme k\u00f6nnen direkt auf einem Mac entwickelt und ausprobiert werden, ohne dass daf\u00fcr zun\u00e4chst zus\u00e4tzliche Hardware ben\u00f6tigt wird.<\/strong><\/p>\n<h2>Interessant f\u00fcr \u201eMein erstes MMBasic Programm\u201c<\/h2>\n<p>Gerade dieser Punkt macht MMB4M auch f\u00fcr mein Tutorial <strong>\u201eMein erstes MMBasic Programm\u201c<\/strong> interessant.<\/p>\n<p>Ich hatte bereits zuvor mit MMBasic auf meinem MacBook Air experimentiert und mir daf\u00fcr verschiedene Startskripte eingerichtet. Mit MMB4M steht nun eine richtige macOS-Portierung zur Verf\u00fcgung.<\/p>\n<p>F\u00fcr Einsteiger k\u00f6nnte das besonders praktisch sein: Wer einen Mac besitzt, kann viele der grundlegenden Beispiele aus dem Tutorial direkt ausprobieren, ohne zun\u00e4chst einen PicoMite oder Colour Maximite 2 besitzen zu m\u00fcssen.<\/p>\n<p>Nat\u00fcrlich funktionieren hardwareabh\u00e4ngige Kapitel \u2013 beispielsweise Programme mit GPIO-Ein- und Ausg\u00e4ngen \u2013 nicht ohne Weiteres. Auch bei Grafikprogrammen muss gepr\u00fcft werden, welche Unterschiede bestehen.<\/p>\n<p>Ich werde deshalb in n\u00e4chster Zeit ausprobieren, wie gut sich die Beispiele meines Tutorials mit MMB4M vertragen.<\/p>\n<h2>Noch eine fr\u00fche Version<\/h2>\n<p>MMB4M 0.1.0 ist die erste Ver\u00f6ffentlichung. Entsprechend weist Tom darauf hin, dass noch nicht s\u00e4mtliche Funktionen getestet werden konnten.<\/p>\n<p>Unter anderem sind serielle Schnittstellen und Gamecontroller bislang nur eingeschr\u00e4nkt bzw. noch nicht auf realer Hardware getestet worden. Auch die Intel-Version wurde zum Zeitpunkt der Ver\u00f6ffentlichung noch nicht umfassend auf einem echten Intel-Mac getestet.<\/p>\n<p>Fehler und Erfahrungen k\u00f6nnen direkt \u00fcber das GitHub-Projekt gemeldet werden.<\/p>\n<p>MMB4M ist au\u00dferdem keine offizielle, von den MMBasic-Autoren gepflegte MMBasic-Version. Die unterst\u00fctzten Plattformen bleiben MMBasic for Linux und die entsprechende reale MMBasic-Hardware.<\/p>\n<h2>Erster Praxistest auf meinem MacBook Air<\/h2>\n<p>Nat\u00fcrlich wollte ich wissen, wie gut die neue macOS-Version in der Praxis funktioniert. Also habe ich MMB4M auf meinem MacBook Air ausprobiert.<\/p>\n<p>Zum Zeitpunkt meines Tests war bereits <strong>MMB4M 0.1.1<\/strong> verf\u00fcgbar. Kurz nach der ersten Ver\u00f6ffentlichung mit Version 0.1.0 gab es damit bereits ein erstes Update.<\/p>\n<p>Die ausf\u00fchrbare Datei <code>mmbasic<\/code> habe ich einfach in meine bereits vorhandenen MMBasic-Verzeichnisse auf dem Desktop kopiert. Dort hatte ich schon zuvor mit verschiedenen MMBasic-Versionen und Startskripten experimentiert.<\/p>\n<p>Der erste Test verlief erfreulich unspektakul\u00e4r: <strong>MMB4M startete und meine vorhandenen BASIC-Programme liefen.<\/strong><\/p>\n<p>Besonders gespannt war ich auf den Colour-Maximite-2-Kompatibilit\u00e4tsmodus. Auch hier gab es eine positive \u00dcberraschung: Selbst meine <strong>analoge Bahnhofsuhr<\/strong>, die Grafikbefehle verwendet und urspr\u00fcnglich f\u00fcr den CMM2 bzw. PicoMite entwickelt wurde, l\u00e4uft unter MMB4M im CMM2-Modus.<\/p>\n<p>Damit ist MMB4M f\u00fcr mich bereits mehr als nur eine interessante Portierung. Viele vorhandene MMBasic-Programme lassen sich auf dem Mac offensichtlich ohne gro\u00dfen Aufwand ausprobieren.<\/p>\n<p>Nat\u00fcrlich war dies bislang nur ein erster Test. In den n\u00e4chsten Schritten m\u00f6chte ich weitere Programme aus meinem Tutorial \u201eMein erstes MMBasic Programm\u201c ausprobieren und dabei insbesondere auf Unterschiede bei Grafik, Tastatureingabe und anderen MMBasic-Funktionen achten.<\/p>\n<h2>Fazit<\/h2>\n<p>Mit MMB4M schlie\u00dft sich eine interessante L\u00fccke.<\/p>\n<p>Dank der Arbeit von Thomas Hugo Williams an MMBasic for Linux und der Portierung von Tom Schimana l\u00e4sst sich modernes MMBasic nun auch direkt unter macOS verwenden.<\/p>\n<p>F\u00fcr die Entwicklung und das schnelle Ausprobieren von BASIC-Programmen ist das ausgesprochen praktisch. Besonders interessant ist dabei der Colour-Maximite-2-Kompatibilit\u00e4tsmodus, mit dem sich viele f\u00fcr den CMM2 geschriebene Programme auch auf dem Mac ausf\u00fchren lassen.<\/p>\n<p>Mein erster Praxistest auf dem MacBook Air ist jedenfalls sehr vielversprechend ausgefallen: Meine vorhandenen MMBasic-Programme liefen auf Anhieb, und selbst die grafisch deutlich anspruchsvollere analoge Bahnhofsuhr funktioniert im CMM2-Modus.<\/p>\n<p>F\u00fcr mich ist MMB4M deshalb nicht nur eine weitere MMBasic-Variante, sondern auch eine interessante Erg\u00e4nzung f\u00fcr mein Tutorial <strong>\u201eMein erstes MMBasic Programm\u201c<\/strong>. Mac-Anwender erhalten damit eine einfache M\u00f6glichkeit, MMBasic kennenzulernen und viele der Beispiele auszuprobieren, ohne daf\u00fcr zun\u00e4chst zus\u00e4tzliche Hardware zu ben\u00f6tigen.<\/p>\n<p>Nat\u00fcrlich kann und soll MMB4M einen PicoMite oder Colour Maximite 2 nicht ersetzen \u2013 sp\u00e4testens bei GPIO und anderer hardwarenaher Programmierung braucht es die echte Hardware. Als Entwicklungs-, Lern- und Experimentierumgebung auf dem Mac macht MMB4M aber schon in der ersten Version einen sehr guten Eindruck.<\/p>\n<p>Ich werde auf jeden Fall weitere Programme aus meinem Tutorial mit MMB4M testen. Vielleicht entwickelt sich daraus sogar noch ein eigener kleiner Abschnitt <strong>\u201eMMBasic auf dem Mac\u201c<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MMBasic kommt auf den Mac \u2013 MMB4M ist da MMBasic ist inzwischen auf einer ganzen Reihe von Systemen zu Hause. Neben dem Colour Maximite 2 und den verschiedenen PicoMite-Versionen gibt es mit MMBasic for Linux (MMB4L) bereits seit einiger Zeit &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/mmbasic-fuer-macos-mmb4m\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[335],"tags":[],"class_list":["post-5761","post","type-post","status-publish","format-standard","hentry","category-mmbasic"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/posts\/5761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=5761"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/posts\/5761\/revisions"}],"predecessor-version":[{"id":5764,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/posts\/5761\/revisions\/5764"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=5761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=5761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=5761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}