DAI Personal Computer unter MAME

  • Ich wollte seit ewigen Zeiten die DAI-Emulation unter MAME ausprobieren und habe das im Zuge der numerischen Experimente in https://forum.classic-computing.de/forum/index.php?thread/20697-fließkomma-arithmetik-oeis-divisionstest/ endlich gemacht. Das Eintippen und Laufen eines Programm klappt. Auch die Grafikkommandos tun's.


    Mit manchem komme ich noch nicht klar. Zum Beispiel, wie lädt man Programme aus einer WAV-Datei? Ich starte MAME unter macOS mit

    Code
    ./mame64 dai -cassette dai_games_22k8bm.wav

    wobei ich die WAV-Datei (von https://electrickery.hosting.p….me.uk/comp/dai/cassette/) zum bequemen Zugriff ins MAME-Verzeichnis kopiert habe.


    Wenn ich dann in der Emulation "LOAD" oder "CHECK" mache, wird ein Bandzähler eingeblendet und ich höre über Lautsprecher die WAV-Datei. Der emulierte DAI findet aber keine Daten, die virtuelle Kassette läuft einfach bis zum Ende durch und das war's.


    Auch SAVE geht nicht. Ich werde wie erwartet aufgefordert, das Band zu starten und Space zu drücken, dann 'schreibt' das System irgendwie kurz was (Bandzähler wird angezeigt) und kehrt zurück. Aber wohin wird geschrieben? Jedenfalls nicht in die WAV-Datei, die ich als Argument angegeben habe. Am Lautsprecher sind keine modulierten Daten zu hören, nur Hintergrundgeräusch (vermutlich der Beginn der dai_games_22k8bm.wav).


    Über die Adresse #FD06 sollte man durch Löschen von Bit 4 den Kassettenmotor von Hand starten können. Ein

    Code
    POKE #FD06, 255-16

    bewirkt aber nichts. Ein nachfolgender PEEK zeigt keine Änderung des Inhalts.


    Rätsel über Rätsel. Kennt sich jemand aus?


    Gruß,

    Markus

  • Servus,

    ich hatte mich bislang weder mit dem DAI noch mit MAME Software Lists befasst, aber ...


    es gibt in MAME eben dieses Konzept von Software Lists, d.h. XML-Dateien in denen dem Emulator "vorgekaut" wird, wie Spiele zu laden sind (das ist wohl vor allem bei manchen Konsolen wichtig), aber auch z.B. als einwandfrei erkannte Disketten-Images per Datei-Hash abgelegt sind.

    Im Falle vom DAI gibt es eine Software-List, die ein paar Spiele enthält, diese sind nach den einzelnen WAV-Dateien abgelegt.


    Du findest die Software-List-ROMs z.B. beim Internet-Archive.


    Die in ZIP-Dateien verpackten WAVs kommen in ein Unterverzeichnis namens dai-cass im ROMs-Verzeichnis.


    Dann rufst Du z.B. "mame64 -window dai nautilus" auf.


    MAME startet, Du drückst Enter, tippst "LOAD" und Enter und dann beginnt automatisch das Laden.


    Nach Abschluss tippst Du "RUN" und das Spiel startet.


    Grundsätzlich kann MAME auch "lose" WAV-Dateien laden, aber die, die Du ausprobiert hast, hört sich für mich nach der falschen Baudrate an, ich kann mich aber auch täuschen.


    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Die Ladeprobleme hingen tatsächlich mit dem Format der WAV-Datei zusammen. Das virtuelle Kassettenlaufwerk erwartet offenbar 44100 Hz.


    Ich habe dai_games_22k8bm.wav mit Audacity von 22050 auf 44100 Hz gewandelt und als games.wav gespeichert. Nach


    Code
    ./mame64 dai -cassette games.wav

    klappt dann das Laden vom virtuellen Band mit LOAD, es ist nicht nötig, eine Software List für den Emulator zu erstellen:


    Das erste Programm ist nur das Inhaltsverzeichnis:


    Wenn ich das Band mit CHECK teste, werden zwischendrin mal Fehler gefunden. Man hört auch Lücken. Das letzte Programm der Kassette, MADN, läßt sich zum Glück laden und läuft, einschließlich der durchgeknallten und nervigen Geräuschkulisse (siehe auch https://www.youtube.com/watch?v=NHmXz7HGiKM:(

    Es kommt beim Laden ein "Dainamic Bootstrap Loader" zum Einsatz, an den ich mich nicht erinnern kann. Die Leute, die die Softwaresammlungen damals zusammengestellt haben, haben offenbar Maschinenspracheteile (an die ich mich auch nicht erinnern kann), aus dem Programm herausgelöst und in eine eigene Datei ausgelagert, die vom Bootstrap Loader zuerst geladen wird.


    Das virtuelle Band hat natürlich wie ein echtes neben der niedrigen Datenrate den Nachteil der Sequentialität. Man kann sich aber immerhin (wieder z.B. mit Audacity) die WAV-Datei in mehrere Teile zerlegen, die jeweils nur ein Programm enthalten.

  • Hast Du das ROM für das KEN-DOS? Ich gebe es gerne weiter ... ich habe zwar auf electrickery die DAI-ROMs und PROMs gefunden, sonst leider nichts.


    Schöne Maschine! Hast Du einen DAI?


    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Die in ZIP-Dateien verpackten WAVs kommen in ein Unterverzeichnis namens dai-cass im ROMs-Verzeichnis.


    Dann rufst Du z.B. "mame64 -window dai nautilus" auf.

    Das habe ich noch nicht hinbekommen, weder über die Menüoberfläche von Mame noch über die direkten Aufruf.


    Es hat nicht geholfen, dai_cass statt dai-cass zu schreiben.


    Es macht keinen Unterschied, ob ich dai_cass ins Verzeichnis roms/ oder ins Verzeichnis roms/dai/ stelle.


    Es macht auch keinen Unterschied, ob ich die WAVs als zip-Datei oder ausgepackt hinstelle.


    Ich bekomme solche Fehler:


    Fatal error: Device Cassette load (-cassette dai_cass:lewiscar:cass1) failed: File not found


    Kann man das cass1 vielleicht so deuten, daß man irgendwie per Verzeichnisstruktur oder sonstwie noch abbilden muß, um welches Laufwerk es geht? Der DAI hat nach meiner Erinnerung zwei Kassettenrekorderanschlüsse.

  • Sorry, da ist tatsächlich ein Tippfehler von mir drin, und ich versuche es nochmal genau zu beschreiben:


    - im Verzeichnis roms/ kommt die Firmware, die einzelnen ROM-Abbilder werden nicht ausgepackt und bleiben in der ZIP-Datei namens dai.zip

    - dort gibt es ein Unterverzeichnis roms/dai_cass/ (hier war mein Tippfehler). In diesem Unterverzeichnis liegen die Titel, die in der Softlist enthalten sind, wiederum eingepackt in den ZIP-Dateien, z.B. also nautilus.zip


    - dann wird MAME mit "mame64 -window dai nautilus" gestartet

    - in der Emulation "LOAD" eingeben, die Datei wird eingelesen

    - danach "RUN" eingeben


    Es gibt die Möglichkeit, das ROM-Verzeichnis an einem anderen Platz im Verzeichnisbaum zu halten:

    Dazu ruft man MAME mit dem Parameter -cc auf, also "mame64 -cc". Dieses Kommando erstellt eine Konfigurationsdatei "mame.ini" im aktuellen Verzeichnis. Dort gibt es einige interessante Einstellungen, ich liste hier nur ein paar wichtige:


    Wenn Du die integrierte Benutzeroberfläche verwenden willst, lädst Du MAME ohne Parameter und hangelst Dich zum DAI durch. Dann "ENTER" und es werden die Softwarelist-Titel angezeigt. Dann wie gehabt "LOAD" und "RUN", der Aufruf der Software-Liste legt quasi das richtige Tape ein und startet es automatisch.




    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Ich habe versuchsweise mit Audacity und einem billigen USB-Soundriegel Seite 1 der Kassette mit den Musikprogrammen eingelesen. (Auf Seite 2 ist die von den Programmen gespielte Musik.) Wenn ich den Emulator mit dieser WAV-Datei starte, wird bei LOAD oder CHECK kein Signal erkannt. Kann ich ja gar nicht verstehen, ich habe doch den gleichen Radiorekorder genommen, mit dem das kürzlich, äh vor 40 Jahren, am echten Rechner noch funktioniert hat...


    Wie auch immer. Das Signal ist offenbar viel zu leise und zu dumpf. Wenn ich in Audacity mit dem Equaliser die Höhen um etwa 20dB anhebe, wird immerhin erkannt, daß da was ist:



    Von Zustand der Lesbarkeit bin ich weit entfernt. Das wird noch einiges Experimentieren mit den Equaliser-Einstellungen brauchen, falls überhaupt was zu machen ist. Oder ich muß es mit einem gescheiten Tape Deck versuchen.

  • Hi,

    ich habe gerade mal im MAME-Forum nach Tipps zum Digitalisieren nachgefragt:


    - bestmögliches Tapedeck, Dolby u.ä. aus

    - gute Soundkarte

    - gute Kabel

    - 44.1kHz WAVs Mono

    - Eingangspegel so hoch wie möglich ohne Clipping und Verzerrung

    - keine Filter über die Datei laufen lassen


    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Ich bin nach dem Betrachten einer sauberen Aufnahme, die entweder nach dem Digitalisieren gesäubert oder mit MAME geschrieben worden sein muß, wobei ich noch immer nicht weiß, wie das letztere geht, auch zur Überzeugung gekommen, daß schlichtes Filtern mit dem Audacity-Equaliser nicht das richtige Vorgehen ist.



    Statt dessen muß man das Signal diskretisieren. Zunächst durch geeignete Schwellwerte auf die Werte -1,0,1 reduzieren, denn daraus einzelne Peeks machen, anschließend die Positionen der Peaks auf die richtigen Stellen verschieben. Ich muß entweder ein Programm dafür schreiben oder irgendwo eins finden.


    Ferner habe ich von B. Vivien ein Dokument bekommen, in dem er seine Erfahrungen mit dem Digitalisieren von DAI-Bändern aufgeschrieben hat. Das sollte ich mir natürlich als erstes zu Gemüte führen.

  • Hi,

    anbei eine Datei, die ich aus MAME heraus aufgenommen habe.


    - Als erstes erstellst Du eine WAV-Datei in MAME (TAB-File Manager-Cassete-Create-name.wav-Create

    - dann zurück zur Emulation

    - dann gibst Du dein Programm ein

    - in BASIC: SAVE (ich weiß nicht, wie beim DAI ein Dateiname mitgegeben wird, mein Testprogramm ist ohne Namen)

    - Dann bekommst Du den Hinweis, das Tape zu starten. Das geht wiederum in TAB-Tape Control-Record

    - in BASIC: Leertaste. Nach dem Ende der Aufnahme in Tape Control die Aufnahme stoppen.


    usw. praktisch wie ein echter Kassettenrecorder.


    Gruß

    Robert

  • Ich sehe in MAME keinen File Manager, auch nicht nach TAB:



    Was ich zuvor (erfolglos) versucht habe: Vom Prompt mit einer WAV-Datei als Argument starten. In der Emulation mit LOAD das Programm aus der WAV-Datei laden. Dann mit SAVE (oder SAVE "TEST") speichern in der Hoffnung, MAME werde das an die gegebene WAV-Datei anhängen, eben wie bei einem echten Kassettenrekorder. Das hat es aber nicht getan.

  • Das TAB-Menü existiert, wenn Du bereits in der DAI-Emulation bist, also z.B. von der Kommandozeile mit "MAME64 -window dai" startest oder aus der MAME-Benutzeroberfläche den Dai ohne Kassette startest.


    Ist die WAV-Datei, an die Du anhängen willst, schreibgeschützt? Ich weiß nicht, welche virtuelle Tape-Länge MAME annimmt ... vielleicht ist Dein "Band" voll?


    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Wenn ich in der Emulation bin, geht TAB gar nicht bzw. wird an das emulierte System weitergereicht (im DAI kann ich nach EDIT z.B. Tabs eingeben). Muß ich die Funktion vielleicht auf eine andere Taste legen?


    Die WAVs sind weder besonders lang noch schreibgeschützt.


    In irgendeinem Forum habe ich gelesen, daß bei der dortigen Emulation (anderes emuliertes System, ich glaube TI 99/irgendwas) die Änderungen erst nach Beenden der Emulation in die WAV-Datei geschrieben würden. Das ist bei mir leider auch nicht der Fall.

  • Die TAB-Taste wird (de-)aktiviert, indem Du SCRLK drückst, die Aktivierungstaste kann aber per Kommandozeile oder mame.ini (vgl. früherer Post von mir) geändert werden.

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Ah ja! SCRLK gibt es bei mir nicht (Mac), aber hier hat Entf die gewünschte Wirkung. Anlegen der Datei klappt, jetzt muß ich nur noch schreiben können. Im Moment kommt in der Datei noch nichts an, obwohl ich im TAPE CONTROL auf recording geschaltet habe und der Zähler dort sich nach SAVE erhöht.


    Halt doch, beim Beenden von MAME hat er die Datei geschrieben.


    Danke!

  • So, ich habe mir über eBay-Kleinanzeigen kurzerhand aus der Nachbarschaft ein Tape Deck beschafft. Die damit digitalisierte WAV-Datei wird vom emulierten DAI klaglos geschluckt.


    In einem zweiten Schritt kann man die Programme wie oben aus der Emulation wieder rausschreiben und bekommt WAVs mit perfekten Wellenformen. Das habe ich für das erste Programm der Kassette schon erledigt, siehe Anhang. Weiteres überlasse ich Bruno, dem ich alles digitalisierte Zeug schicken werde.


    Die Emulation des Soundsystems ist ebenso beeindruckend wie die der Grafik, aber perfekt ist sie nicht. Wo auf dem echten Rechner ein Tongenerator Pausen macht, hört man in der Emulation Phantomtöne.

  • Bruno hat inzwischen einige der Kellerfundkrimskramskassetten, die ich digitalisiert habe, restauriert und auf ParaDAI zur Verfügung gestellt. Teils muß man ein bißchen knobeln, um die Sachen wieder zum Laufen zu bekommen. Beispiel KATZ UND MAUS von MSI-007: Dafür muß man erst das FGT (Fast Graph Text) vom Toolkit 3 (MSI-002) laden. Also z.B. MAME mit

    Code
     ./mame64 dai -cassette MSI-002/wav/MSI-002-1-07_31_OBJ\ FGT\ 29B\ 900\ .wav 

    starten, mit UT in den Monitor gehen und mit R das FGT laden, dann mit B zurück ins Basic. Dann mit dem Tape Manager das MSI-007/wav/MSI-007-1-08_30_KATZ UND MAUS.wav einbinden, mit LOAD laden und mit RUN starten und Voilà:


  • Inzwischen habe ich von Bruno auch das VPA (Variable Precision Arithmetic) aus dem Toolkit 7 bekommen (siehe DAI_Toolkit_7_handleiding.pdf in http://www.vintagecomputer.net/fjkraan/comp/dai/doc/), das ich leider nicht mehr hatte (insbesondere nicht den Quellcode). Auch da war es ein bißchen knifflig, es im Emulator zum Leben zu erwecken. VPA belegt #300 - #E6D mit Programmcode und braucht bis #2700 als Arbeitsbereich. VPA.MLP ist ab #29B gespeichert. Ich habe das nur zum Laufen gebracht, indem ich von Hand den HEAP gesetzt, dann VPA.MLP zunächst an eine andere Stelle geladen und schließlich den Programmcode nach #300 geschoben habe:

    • Emulator starten.
    Code
    ./mame64 dai -cassette VPA.MLP
    • HEAP setzen.
    Code
    POKE #29B,0
    POKE #29C,#27
    CLEAR 1000
    • In den Monitor gehen, VPA.MLP mit Versatz laden, Programmcode nach #300 schieben, zurück nach BASIC:
    Code
    UT
    R1000
    M1300 1E6D 300
    B
    • In MAME das BS.DEMO.VPA einbinden, mit LOAD laden und RUN.

    Die Demo ist ein 50-stelliger Taschenrechner (VPA kann bis 504 Stellen) und 22 Registern. Hier habe ich die Zahl 2 ins Register A geladen, die Wurzel ins Register B gezogen, B*B nach C gelegt und A-C nach D:



    Ich kann mich nicht erinnern, daß das Laden so kompliziert gewesen wäre. Ich denke, ich habe VPA.MLP damals ab #29B gespeichert, damit man gerade nicht von Hand am HEAP rumbasteln muß. Ich denke nicht, daß die Schuld bei MAME zu suchen ist, eher bei den Adressen, die beim Laden überschrieben werden und der Tatsache, daß mein DAI damals ein MDCR-D oder schon KEN-DOS hatte und der MAME-DAI nicht. Vielleicht kann einer der DAI-Besitzer im Forum mal ausprobieren, wie sich das auf einem echten Rechner verhält, also einfach VPA.MLP mit UT,R,B laden und dann die Demo mit LOAD,RUN. Ich hänge die beiden WAV-Dateien an.


    Gruß,

    Markus