Autor Thema: Mit Turbo-Assemblerr 1.77 Binäre Datei herstellen, keine PRG zu starten  (Gelesen 10922 mal)

0 Mitglieder und 2 Gäste betrachten dieses Thema.

guest3744

  • Gast
Hallo, guten Tag.
Wie kann  man bitte mit dem Turboassembler 1.77 eine Binäre Datei erstellen ?
Also keine Startfähige PRG.
Oder wie kann man aus der PRG eine Binäre machen ?

Ich brauche die Daten für das GFA-Basic zum Call aufruf.

Danke.
Grruss

Offline laufkopf

  • Benutzer
  • Beiträge: 347
Call vermeiden, soll Fehlerbehaftet sein. Besser ~C: benutzen

Für GFA-Basic muss der Assembler PC-relativen Code ausspucken. Ob das der Turboass kann, weiss ich nicht. Nehm doch den Assembler von Pure C oder den Devpac. Die können das auf jeden Fall. Dann nur assemblieren und _nicht_ noch mit einer Lib linken. Brauchst nur das ausgespuckte Objektfile
« Letzte Änderung: Fr 18.09.2015, 16:12:33 von laufkopf »

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.808
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Im Turboasm halt darauf achten, daß die verwendeten Befehle alle PC-relativ sind. Irgendeinen Assemblersource übersetzen und als GFABASIC Inline hernehmen, funktioniert nicht.

Im Prinzip muss man irgendwo im Dialog halt sagen "binär abspeichern", k.A. mehr wie das ging.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline 1ST1

  • Benutzer
  • Beiträge: 8.661
  • Gesperrter User
Ich kannte den Autor von "Sparrow Text" und "Der Kaufmann von Venedig" und zummindestens das Erste ist in GFA mit Inline-Assembler geschrieben, das sollte also gehen.
Ausgeloggter Mitleser, der hier NIE mehr aktiv wird. Am besten, meine Inhalte komplett löschen. Dabei berufe ich mich auf mein Urheberrecht, die DSGVO und auf die Rechte, die mir unter Impressunm&Datenschutz zugestanden werden. Tschö!

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.808
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Also im F1 Dialog kann man direkt sagen "GFA-INL" und dann speichert er das Zeug direkt ab. So hab ichs immer gemacht.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

guest3744

  • Gast
Hallo, guten Tag.
Zitat
Also im F1 Dialog kann man direkt sagen "GFA-INL" und

Hmmm..., kannst mir bitte einmal zeigen wo du deinen Assembler her hast.

Danke.
Gruss

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.808
  • Rock'n'Roll is the thing - Jerry Lee is the king!
http://dhs.nu/files.php?t=codingtool von vor mindestens 10 Jahren oder so.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

guest3744

  • Gast
Es hat jetzt  funktioniert mit Turboasm .
Ich weiss aber noch nicht welche kriterien da vom Turboasm verlangt werden.
Bei einem anderen src konnte man das Menü nicht anklicken, es war grau hinterlegt.

Von meine rcall.src wird eine rcall.inl angelegt.
Der Vorteil mit dem Befehl rcall ,man kann in Gfabasic Registerwerte übergeben.

Danke.
Gruss

guest3744

  • Gast
Zitat
Im Turboasm halt darauf achten, daß die verwendeten Befehle alle PC-relativ sind.

Was heisst das  beim Programmieren...?
Bitte einmal erklären.

Danke.
Gruss

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.808
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Verwendete Befhele dürfen keine namentlichen Adressen enthalten, sondern nur Register und Verweise auf Daten in Abhängigkeit zu einem Register.

D.h.

move.w meine_variable,d0
meine_variable: dc.w 42

ist nicht PC-relativ, direkte Adresse meine_variable wird verwendet.

Um das gleiche PC-relativ zu erreichen, müßte man das so formulieren.

lea meine_variable(pc),a0   ; hole Zeiger relativ zum Programmzähler (nur Offset, keine feste Adresse)
move.w (a0),d0  ; lies Wert
meine_variable: dc.w 42


Die Adressierung ...(PC) funktioniert leider nicht in allen Konstellationen, weswegen man wie bei einem RISC häufig erst ein Zeigerregister laden muss.

Für GFABASIC ist das nicht schlimm, da kann man Pointer auf Daten per RCALL oder ~C: Aufurf via Stack leicht übergeben.

Beispiele für GFABASIC Inlines mit PC relativer Adressierung findest du bei mir auf der Homepage: http://paradize.atari.org/

Für mehr Details muss ich Dich an einen 68000er Guru und/oder Literatur verweisen.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

guest3744

  • Gast
Ja, danke für deine Erklärung.
Du bist ja sehr fit....mit dem ST usw.

Kannst du mir vielleicht bitte schreiben , wo man das Handbuch für den Turboasm bekommen kann?
Es soll so etwas vorhanden sein, ich finde es aber nicht.
Meine Frage zielt dahin , ob man Entscheidungen in Turboasm auch mit "IF <,> = Endif " machen kann statt der ASM -Typischen Abfragen?

Danke.
GRuss

Offline mfro

  • Benutzer
  • Beiträge: 1.641
... ob man Entscheidungen in Turboasm auch mit "IF <,> = Endif "...

Nein. Wie oben schon mal beschrieben, sind das Assembler-Direktiven, die schon zum Zeitpunkt des Assemblierens festlegen, ob das, was darin "geklammert" ist, mitassembliert werden soll oder nicht. Die "IF"-Bedingung muß deshalb schon zum Zeitpunkt des Assemblierens festliegen, also eine Konstante sein.

Verwendet wird das, um verschiedene Versionen des Programms in einer einzigen Quelle haben zu können, so etwa z.B.: "wenn's für einen Falcon sein soll, verwende die 68030-Befehle, wenn nicht, dann nur die für den 68000er".
And remember: Beethoven wrote his first symphony in C