Autor Thema: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.  (Gelesen 27235 mal)

0 Mitglieder und 2 Gäste betrachten dieses Thema.

guest3744

  • Gast
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #20 am: Mo 21.09.2015, 19:56:05 »
Wo liegt der Fehler, ich finde ihn nicht?

Meine Frage auch, wie wird der Text erkannt von der Sprungvariable? Ich sehe das nicht raus.

Gruss

Offline laufkopf

  • Benutzer
  • Beiträge: 347
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #21 am: Mo 21.09.2015, 20:43:37 »
So funktioniert es
Zitat
         move.l   4(SP),D0
         asl.w   #2,D0
         lea      tabelle(PC),A0
         move.l   a0,a1
         add      d0,a1
         sub.l  (A1),A0
         jmp     (A0)
         rts

eins:
         move.l   #100,d0
         rts
zwei:
         rts
drei:
         rts
vier:
         rts
fuenf:
         rts

tabelle:   DC.L 1
         DC.L tabelle-eins
         DC.L tabelle-zwei
         DC.L tabelle-drei
         DC.L tabelle-vier
         DC.L tabelle-fuenf
         

Offline laufkopf

  • Benutzer
  • Beiträge: 347
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #22 am: Mo 21.09.2015, 21:04:16 »
Ich habe immer alles übersetzt.
Einmal nur die Zahlen unten rein und dann einmal den Text unten rein.

Meine Frage auch, wie wird der Text erkannt von der Sprungvariable? Ich sehe das nicht raus.

Gruss

move.l 4(SP),D0gewünschte Funktion nach D0 holen
asl.w #2,D0mit 4 multiplizieren
lea tabelle(PC),A0Adresse der Tabelle nach A0
move.l a0,a1und kopie nach A1
add D0,A1Addiere D0 zu A1 und schreibe das Ergebnis nach A1. I(n A1 steht die Adresse der Tabelle. in D0 die gewünschte Funktion x 4 um den Offset in der Tabelle, welche Longs beinhaltet auszugleichen)
sub.l  (A1),A0Subtrahiere den Wert auf den die Adresse in A1 zeigt mit A0 und schreibe das Ergebnis nach A0
jmp     (A0)Springe zu der Funktion dessen Adresse in A0 steht

tabelle: DC.L 1
DC.L tabelle-eins
DC.L tabelle-zwei
DC.L tabelle-drei
DC.L tabelle-vier
DC.L tabelle-fuenf
Die Tabelle beinhaltet nach dem Assemblieren die Differenzen zwischen Anfangsadresse der Tabelle und den Funktionen.

guest3744

  • Gast
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #23 am: Mo 21.09.2015, 22:08:02 »
Es funktioniert jetzt mit deinem neuen Programm...., es war mein fehler.
Deine Antwort #21 am: Heute um 20:43:37


Gruss

Offline laufkopf

  • Benutzer
  • Beiträge: 347
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #24 am: Mo 21.09.2015, 22:30:35 »
Im Anhang meine Version, welche funktioniert zum Vergleich

guest3744

  • Gast
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #25 am: Mo 21.09.2015, 22:54:58 »
Alle 5 Werte werden nacheinander ausgegeben.
Der komplette Data-Kopf ab Malloc wurde vom Turboasm erzeugt, wusste gar nicht das der es kann.
Ist gut zum weitergeben gedacht.

Danke.
Gruss

CLS
inl%=MALLOC(84)
FOR i%=0 TO 83
  READ b%
  POKE inl%+i%,b%
NEXT i%
DATA &20,&2F,&00,&04,&E5,&40,&41,&FA,&00,&34,&22,&48,&D2,&C0,&91,&D1
DATA &4E,&D0,&4E,&75,&20,&3C,&00,&00,&00,&64,&4E,&75,&20,&3C,&00,&00
DATA &00,&C8,&4E,&75,&20,&3C,&00,&00,&01,&2C,&4E,&75,&20,&3C,&00,&00
DATA &01,&90,&4E,&75,&20,&3C,&00,&00,&01,&F4,&4E,&75,&00,&00,&00,&01
DATA &00,&00,&00,&28,&00,&00,&00,&20,&00,&00,&00,&18,&00,&00,&00,&10
DATA &00,&00,&00,&08
'
FOR z%=1 TO 5
  par1%=z%
  wert1%=@eins(par1%)
  PRINT wert1%
  PAUSE 50
NEXT z%
END
'
FUNCTION eins(p1%)
  $F%
  RETURN C:inl%(L:p1%)
ENDFUNC
'

guest3744

  • Gast
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #26 am: Mo 21.09.2015, 23:27:21 »
Hallo, welcher Texteil  ist bitte unten mit für den Aufruf entscheidend?
Ist es das Wort : tabelle?

Danke.
Gruss

Offline laufkopf

  • Benutzer
  • Beiträge: 347
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #27 am: Di 22.09.2015, 06:17:42 »
Hallo, welcher Texteil  ist bitte unten mit für den Aufruf entscheidend?
Ist es das Wort : tabelle?

Danke.
Gruss

siehe #20

guest3744

  • Gast
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #28 am: Di 22.09.2015, 10:16:50 »
Danke.
Jetzt hat es gefunkt.

Gruss

Offline laufkopf

  • Benutzer
  • Beiträge: 347
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #29 am: Sa 03.10.2015, 21:16:31 »
So funktioniert es
Zitat
         move.l   4(SP),D0
         asl.w   #2,D0
         lea      tabelle(PC),A0
         move.l   a0,a1
         add      d0,a1
         sub.l  (A1),A0
         jmp     (A0)
         rts

eins:
         move.l   #100,d0
         rts
zwei:
         rts
drei:
         rts
vier:
         rts
fuenf:
         rts

tabelle:   DC.L 1
         DC.L tabelle-eins
         DC.L tabelle-zwei
         DC.L tabelle-drei
         DC.L tabelle-vier
         DC.L tabelle-fuenf
         

Geht auch etwas einfacher..
move.l 4(SP),D0
add.l d0,d0
add.l d0,d0
jsr tabelle(pc,d0)
rts

tabelle: bra.w dummy
bra.w eins
bra.w zwei
bra.w drei
bra.w vier
bra.w fuenf

dummy: rts

eins: move.l #100,d0
rts

zwei: move.l #200,d0
rts

drei: move.l #300,d0
rts

vier: move.l #400,d0
rts

fuenf: move.l #500,d0
rts

guest3744

  • Gast
Re: Was hindert den Turboasm, eine INL für ds GFA-basic zu erstellen.
« Antwort #30 am: Sa 03.10.2015, 23:21:34 »
Immer wieder etwas neues.

Danke.

Gruss