Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 22.02.2007, 13:44 Titel: Assemble-Meldung: Error: suffix or operands invalid for `cal |
|
|
Hallo zusammen,
ich habe vor vielen Jahren mal BASIC programmiert, mich aber ziemlich geärgert, dass QBASIC aus seinem DOS-Status nicht herausgekommen ist. Jetzt habe ich FreeBASIC entdeckt und mich freudig daran gemacht, ein paar alte Programme nach FreeBASIC zu portieren. Bei ein paar einfachen hat das schon ganz gut funktioniert, aber jetzt versuche ich mich gerade Programm, da erscheint beim Compilieren die Fehlermeldung:
Zitat: | laser2_1.asm: Assembler messages:
laser2_1.asm:2640: Error: suffix or operands invalid for `call'
laser2_1.asm:2644: Error: suffix or operands invalid for `call'
laser2_1.asm:2974: Error: suffix or operands invalid for `call'
laser2_1.asm:3009: Error: suffix or operands invalid for `call'
[...] |
Woran könnte das liegen? Auf welche Unterschiede zwischen QBASIC und FreeBASIC könnte das u. U. zurückzuführen sein? Oder ist es was anderes?
Wenn jemand Lust hat, kann er sich gerne den Quellcode ansehen - ist aber etwas länger (47,1 KB) und eher spartanisch kommentiert ...
Noch was: ich nutze Linux. Bibliotheken sollten aber alle vorhanden sein, weil andere (auch graphische) BASIC-Programme ja compilierbar sind. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.02.2007, 15:24 Titel: Re: Assemble-Meldung: Error: suffix or operands invalid for |
|
|
Hi nemored,
willkommen im Forum. Ich habe mir deine Quelle mal angesehen..
nemored hat Folgendes geschrieben: | Woran könnte das liegen? | Es fehlen jede Menge Dim's für Variablen, wenn du die FBIde zum kompilieren benutzt, kannst du dir im Logfile genau ansehen, wo das ist..
nemored hat Folgendes geschrieben: | ist aber etwas länger (47,1 KB) und eher spartanisch kommentiert .. | ..das ist dein Problem
..denn du mußt jetzt im gesamten Quelltext nach den Stellen suchen, wo du Variablen mit '$' und ohne '$' verwendest.
Auf die Schnelle habe ich nur gesehen, daß du irgendwo>340 b$ und b verwendest..
Dafür wären(mal ausführlich und verkehrt geschrieben) folgende Dim-Anweisungen nötig: Code: | Dim b As String
Dim b As Long | ..sieht also so aus, als wäre es ganz normal, daß der Compiler meckert
bzgl Differenzen zwischen FB und QB s. Befehlsreferenz, die brauchste aber sowieso, wenn du deine QB-Programme überarbeitest!
..oder du probierst gleich FB0.17 mit der Option '-lang qb' dann brauchste vllt. nich so viel zu ändern..
..aber 'n Kopf machen mußte dir schon, wenn du QB-Programme nach FB übertragen willst.
Motto: Wenn du von 'ner Ente auf einen BMW umsteigst, ist der Schalthebel nicht mehr da,
wo er vorher war(aber da isser )..
Viel Spaß beim Berichtigen
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 22.02.2007, 16:16 Titel: |
|
|
Zitat: | willkommen im Forum |
Danke sehr
Zu den b$ und b:
Bei QBASIC sind das noch zwei verschiedene Variablen - ersteres ein String, zweiteres das, was durch DEFxxx definiert wurde. Lese ich aus deinem Posting richtig heraus, dass es sich nun um ein und dieselbe Variable handelt, ob mit $ oder ohne? Wenn ja, dann habe ich ein bisschen mehr zu tun
Zitat: | Es fehlen jede Menge Dim's für Variablen, wenn du die FBIde zum kompilieren benutzt, kannst du dir im Logfile genau ansehen, wo das ist.. |
Nö, verwende ich nicht - läuft nicht auf meinem Linux-System
(na gut, vielleicht über wine ...)
Bei anderen Programmen haben die fehlenden DIMs allerdings keine Schwierigkeiten gemacht. Außer bei 'schlampig' verwendeten Typ-Deklarierungen, die von QBASIC akzeptiert wurden
Dann ist es vielleicht besser, ich schreibe das Ding einfach Stück für Stück neu ...
Danke für die Hinweise  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 22.02.2007, 16:22 Titel: |
|
|
Ich habe das mit den b$ und b noch mal ausprobiert:
Code: | b$ = "asd"
b = 5
PRINT b
PRINT b$
SLEEP |
Ausgabe:
Scheint also so zu funktionieren, wie ich es gewohnt bin. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 22.02.2007, 16:59 Titel: |
|
|
Hmm, jetzt habe ich ein bisschen rumprobiert, alles auskommentiert und stückchenweise wieder in Betrieb genommen, und stelle fest:
Ich verwende eine Funktion st(x,y). Die scheint der Compiler nicht zu mögen. Wenn ich sie in stein(x,y) ändere, scheint es zu funktionieren. Hoffentlich freue ich mich nicht zu früh ...
Hat st eine besondere Bedeutung für den Compiler oder den Assembler? |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.02.2007, 17:26 Titel: |
|
|
nemored hat Folgendes geschrieben: | Ich habe das mit den b$ und b noch mal ausprobiert:
Code: | b$ = "asd"
b = 5
PRINT b
PRINT b$
SLEEP |
Ausgabe:
Scheint also so zu funktionieren, wie ich es gewohnt bin. | So eingesetzt sind das natürlich zwei verschiedene Variablen..
Da ich eingeschworener Fan der Anweisung 'Option Explicit' bin, habe ich aber auch keine Probleme damit. Außerdem liebe ich 'sprechende Variablen'..
Einbuchstabige Bezeichner verwende ich gern für Schleifen(i..n, liegt an meiner FORTRAN-Vergangenheit )
..eieiei, den Pinguin hatte ich übersehen
st ist afaik kein FreeBASIC-Schlüsselwort, bei ASM bin ich mir nicht sicher.. _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 22.02.2007, 17:35 Titel: |
|
|
Dürfte imho auch dort keines sein.
Tjaja, Pascal (und die Vorgänger) hinterlässt Spuren im Style...  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 22.02.2007, 17:40 Titel: |
|
|
Pascal habe ich nie gemocht ... könnte aber auch an den damaligen Schulrechnern liegen, die eine halbe Minute lang compilierten, bevor sie einem verkündeten: In Zeile 32 fehlt ein ';'
Zitat: | ..eieiei, den Pinguin hatte ich übersehen |
Habe jetzt mal mein Rätsel-Avatar eingesetzt. Was ist das? Es hat Flügel, kann aber nicht fliegen ...
Vielleicht ist der Funktionsname mit zwei Buchstaben auch einfach nur zu kurz?
Zuletzt bearbeitet von nemored am 22.02.2007, 17:41, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.02.2007, 17:40 Titel: |
|
|
Mao hat Folgendes geschrieben: | Tjaja, Pascal (und die Vorgänger) hinterlässt Spuren im Style...  | ..das hättste dir sparen können
Ich hab mal ein Feld st gedim't und kompiliert, k.P.
Ich dachte vllt. liegt es an der linux-Version von FB, k.A. _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 22.02.2007, 17:50 Titel: |
|
|
ytwinky hat Folgendes geschrieben: |
..das hättste dir sparen können
|
Y? _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.02.2007, 17:54 Titel: |
|
|
..Du hast vergessen, die ganzen Smilies mitzuzitieren, denn ich meinte es keineswegs böse
vllt. wäre deine Antwort dann auch etwas aussagekräftiger geworden  _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 22.02.2007, 18:21 Titel: |
|
|
Oh, jo, die Smileys vergesse ich öfters.
Wollt mich auch nur erkundigen, wie das gemeint war.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.02.2007, 19:40 Titel: |
|
|
Gut, nachdem diese Problem(was ja keins war ) geklärt ist, wenden wir uns wieder dem eigentlichen zu:
Ich habe das Programm mal mit 'fbc - s gui -lang qb -w 1' übersetzt und..
..gestartet(Intro ist hübsch ), ich kann wählen zwischen zwei Varianten,
Verschiedenes einstellen, nur spielen habe ich noch nicht geschafft..
Aus den obigen Optionen geht zweifelsfrei hervor, daß ich fb017b genommen habe(von vorgestern)..
Allerdings ist das die Windows-Version..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 22.02.2007, 19:48 Titel: |
|
|
Ich habe alle st durch stein ersetzt, und damit lässt es sich schon mal fehlerlos compilieren und starten. Allerdings macht es noch nicht ganz genau das, was es soll (unter anderem rast der Timer viel zu schnell, weshalb es auch nicht mehr spielbar ist), muss noch eine Menge basteln.
Wenn ich weiter bin, sage ich Bescheid. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.02.2007, 19:58 Titel: |
|
|
nemored hat Folgendes geschrieben: | (unter anderem rast der Timer viel zu schnell, weshalb es auch nicht mehr spielbar ist) | ..und ich hatte schon auf langsam gestellt  _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 23.02.2007, 00:07 Titel: |
|
|
Ich dachte, dass ich die Zeit mittels TIMER kontrolliere. Falls ich doch stattdessen eine Leerschleife verwendet habe (keine Ahnung, ist schon so lange her), dann wird das Spiel im compilierten Zustand wahrscheinlich ziemlich schnell  |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 23.02.2007, 00:17 Titel: |
|
|
Wie wär's mit Code: | ..
Const Dauer=1000 'entspricht ~1 sec
..
Sub Schlafe(byVal WieLange As Long=0)
Sleep IIF(WieLange, WieLange, Dauer)
End Sub | ..sollte eigentlich funktionieren..
..ansonsten schaumal in die Sig von Michael Frey zum Wiki, da gibts eine TimerRoutine als Thread, müßte auch funzen..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 23.02.2007, 00:34 Titel: |
|
|
Irgendwas finde ich schon, brauche nur Zeit, mich wieder mit dem Programm auseinander zu setzen. Aber danke schon einmal. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 23.02.2007, 01:08 Titel: |
|
|
Schon klar..
..ich habe beim Stöbern im neuen Help-File übrigens etwas gefunden, was die Anwort auf dein st()-Problem sein könnte:
mit st(..) werden in FreeBASIC-Asm die FließkommaRegister des Prozessors bezeichnet.
Ob das die Antwort ist?  _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 23.02.2007, 12:42 Titel: |
|
|
Hi ytwinky,
bestimmt nicht, sonst gäbe es auch mit eax, ax, ah, al ... Probleme.
(Vermutet hatte ich es auch bei sub st(..) )
st wird nur zwischen ASM ... END ASM nach FPU-Befehlen als Registerbezeichner beachtet. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|