Apple 2 Dateikonvertierung...

  • Hallo.


    Ich würde gerne ein Programm für den Apple 2 in Assembler schreiben. Dazu hab ich Visual Studio in Verbindung mit dem "Retro Assembler". Ich hab jetzt mal ein kleines Hello World-Source zum Ausprobieren geschrieben und das zu einer BIN-file assembliert.. Die große Frage ist, wie bekomm ich das in einen Emulator ?! Ich müsste eine Apple 2 ausführbare Datei erstellen, also vermutlich mit einem header und dann in ein Diskimage einbinden. Oder aber die Datei ohne header in ein Diskimage einbinden, dann mit Prodos im Emulator laden und anschließend mit SYS .... starten. Wie geht man am Besten vor ? Welche Programme brauch ich ? Welchen Emulator könnt ihr empfehlen ?


    Vielen Dank !


    Gruß Jan

  • Hallo Jan,


    ich würde zwei Dinge unterscheiden:


    1. Erste Schritte: Da geht es Dir um einfache Bedingung und nachvollziehbare Operationen.

    2. Guter Workflow: Da geht es Dir darum, möglichst effizient und schnell den Ändern - Bauen - Testen Zyklus zu durchlaufen.


    Ich kann mir gut vorstellen, dass Du für 2.) schon bei einem anderen Assembler landest und auch ansonsten bei anderen Tools, aber darum geht es hier nicht... Also zu 1.):


    Ich nehme jetzt einfach mal Windows als Host Plattform an...


    Ich würde Dir zu https://a2ciderpress.com/ raten. Damit kannst Du Deine BIN Datei in ein ProDOS Disk Image importieren. Dazu muß Du allerdings die Startadresse wissen, für die der Assembler den Code erzeugt hat.


    Bezüglich des Emulators ist https://github.com/AppleWin/AppleWin die mit Abstand populärste Wahl. Der ist auch für Programmierer interessant, weil der eingebaute Debugger (aka Monitor) recht einfach zu bedienen ist.


    Aus der ProDOS BASIC Shell startet man eine BIN Datei mit BRUN, nicht mit SYS. SYS ist gar kein ProDOS / Apple II Befehl ;)


    Gruß, Oliver

  • Die große Frage ist, wie bekomm ich das in einen Emulator ?! Ich müsste eine Apple 2 ausführbare Datei erstellen, also vermutlich mit einem header und dann in ein Diskimage einbinden.

    Wenn Du das in einem Emulator laufen lassen möchtest, weswegen nimmst Du dann nicht einen der bekannten 6502-Assembler auf dem Apple II, also im Emulator laufend?


    Gruß, Ralf

  • Hallo Jan,


    ich nutze auch Ciderpress zum Konvertieren. Der Apple bietet gerade für Assemblerprogrammierung mit dem eingebauten Disassembler und Maschinensprache-Monitor eine gute Hilfestellung, die in jedem Apple II direkt verfügbar ist. Ich würde mich an Deiner Stelle mit der Bedienung vertraut machen, denn kleinere Änderungen machst Du schneller am Apple selbst als am PC und anschließender Konvertierung.

    Ob Du ProDOS oder DOS3.3 nimmst, hängt in erster Linie von dem Zielrechner ab. ProDOS ist ziemlich speicherhungrig, die letzte verfügbare Version läuft gar nicht mehr mit 64K. Mit einem Apple II+ kannst Du maximal die Version 1.9 benutzen. Volle 64K (also die Language-Card) brauchst Du für ProDos in jedem Fall. DOS 3.3 kommt mit wesentlich weniger Speicher aus.

    In beiden Systemen ist der Befehl zum Laden eines Binärfiles BLOAD bzw. BSAVE zum Speichern. BRUN zum Laden und automatischen Starten ist mir bei selbst geschriebenen Programmen zu gefährlich - ich lade das Programm mit BLOAD, gehe in den Monitor mit CALL -151 und schau mir dann das File im Disassembler an.

    Ein guter Speicherbereich für kleinere Programme ist der Speicher ab 0300 hex. Dann wäre der Befehl BLOAD TEST,A768. Im Monitor tippst Du dann 300L (oder 300G zum Starten).

    Ich habe 2 Jugend foscht-Projekte am Apple II in Assembler realisiert, konnte das also mal ganz gut. Wie JUGEND forscht vermuten lässt, ist das zwar schon eine ganze Weile her aber die Grundlagen sind noch da, wenn Du also Hilfe brauchst...


    Gruß, Jochen

  • > ProDOS ist ziemlich speicherhungrig,


    Aus Sicht eines Binärprogramms (im Gegensatz zu einem BASIC Programm) ist das so nicht unbedingt richtig. ProDOS besteht aus zwei Teilen, dem Kern (PRODOS) und der Shell (BASIC.SYSTEM). Ein Binärprogramm benötigt die Shell zum Zugriff auf Dateien nicht. DOS 3.3 besteht nur aus einem Teil (der von einem Binärprogramm zum Zugriff auf Dateien benötigt wird).


    Der ProDOS Kern liegt faktisch immer in der Language Card. Wenn DOS 3.3 ebenfalls in die Language Card geladen wird, dann hat ein Binärprogramm in beiden Fällen gleich viel Speicher zur Verfügung. Dabei bietet ProDOS ein modernes, an POSIX orientiertes, vollständig dokumentiertes API, während DOS 3.3 ein sagen wir mal eigenwilliges API hat.


    Aus meiner Sicht ist die Entscheidung für ProDOS ein No-Brainer...


    > die letzte verfügbare Version läuft gar nicht mehr mit 64K.


    Das wäre mir neu, auf welche Version bezieht sich Deine Aussage?


    > Mit einem Apple II+ kannst Du maximal die Version 1.9 benutzen.


    Diese Aussage ist zwischenzeitlich nicht mehr korrekt. ProDOS 2.4.2 (https://prodos8.com/) läuft auf einem Apple II+ mit Language Card.

  • Zitat aus der Wikipedia:

    Die Version 2.0.3 verlangt mindestens einen Apple IIc oder einen „enhanced“ Apple IIe, die mitgelieferten Utility-Programme verlangen zudem mindestens 128 kB Speicher. Auf dem Apple II+ und dem nicht-„enhanced“ IIe läuft maximal die Version 1.9.


    Das bezieht sich wohl auf die Versionen, die offiziell von Apple herausgebracht wurden.

    Ich bevorzuge DOS 3.3 einfach deswegen, weil ich damals damit gearbeitet habe. ProDOS habe ich erst vieeel später kennen gelernt, ich glaube auf einer CC. Das mag daran liegen, dass ich mich schon vor dem Erscheinen von ProDOS (1983) mit dem Apple II beschäftigt hatte und so ProDOS niemals offiziell besessen habe. Auch im Freundeskreis war das kein Thema. Es mag das bessere System sein, aber für mich gehört zu dem klassischen Apple II das klassische DOS 3.3.


    Gruß, Jochen

  • Vielen Dank für die Antworten ! Gestern war ich wieder am Apple 2 Europlus. Also ich muß sagen, da favourisiere ich auch AppleDOS 3.3. An meinem Apple 2e nutze ich ProDOS.

    Jedenfalls hab ich mich mit dem Maschinensprachemonitor und dem Miniassembler beschäftigt. Ich hab ein paar kleine Programme geschrieben, alles gut. Mit 6502 Assembler beschäftige ich mich ja schon seit ein paar Jahren.

    Ich hab dann exakt das gleiche Programm in VisualStudio geschrieben und es mit dem RetroAssembler assembliert. Die BIN-File habe ich in ein Diskimage eingebunden und dieses dann zum Apple übertragen. Das Programm beginnt bei 800h.

    Wenn ich im Applesoft Basic mit BLOAD TEST,A2048 lade und es anschließend ausführe passiert nur wirres Zeugs, anstatt dass mein blinkendes "HALLO" erscheint.. :)

    Wenn ich dann im Maschinenprogramm an 0800h nachschaue, steht da mein Programm nur teilweise, Was mach ich falsch ?


    Gruß Jan

  • Wenn ich dann im Maschinenprogramm an 0800h nachschaue, steht da mein Programm nur teilweise, Was mach ich falsch ?

    Ist ab $0800 (in dieser Schreibweise, es handelt sich hier um richtige CPUs :) ) wirklich frei? Das ist der Bildspeicher von der zweiten Textseite.


    Gruß, Ralf

  • Ab $800 speichert Applesoft seine Programme. Eine ungünstigere Adresse kann man eigentlich kaum wählen ;)


    Tippst du z.B. eine "10" ein, interpretiert Applesoft das als Befehl und räumt den Programmspeicher ab $800 auf.


    Nimm z.B $8000, da geht was.