Tipps & Tricks rund um's Basic

Es gibt 46 Antworten in diesem Thema, welches 11.375 mal aufgerufen wurde. Der letzte Beitrag (30. Juli 2023 um 06:47) ist von atomcode.

  • Hab das gerade von Donalds Seite. Funktioniert das bei wem? Hab es eben sowohl aufm Cevie als auch im CCS probiert, beides klappte ungefähr gar nicht.


    Wieso sollte das auch "einfach so" funktionieren?
    Mein Tipp: ROM in RAM kopieren, in der ZP das Betriebssystem von ROM auf RAM umstellen und dann das ganze nochmal probieren. Vielleicht klappt es dann (nur so eine Vermutung).

    Gruß WTE

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Nuja, das stand da glaub ich nicht.... Drum ja die blöde Frage...

    12345678901234567890123456789012345678901234567890
    12345678901234567890123456789012345678901234567890
    12345678901234567890123456789012345678901234567890

  • -= BASIC-V2-Erweiterungen zum direkten Einbinden und Aufrufen mit SYS =-

    Wie im Thread "GOTO-Eigenart" angekündigt, hier nun meine vollständige Mini-Erweiterung:

    Bitte melde dich an, um diesen Anhang zu sehen.

    ON joy GOTO: Das Zeichen für die Joystickschalter ist ein ungeshifteter Buchstabe (a-z, siehe Liste), der direkt aus dem BASIC-Text entnommen und für die Joystick-Abfrage verwendet wird. Die Zeilennummer kann eine Zahl oder eine Variable sein, aber kein Ausdruck. Der Port, der abgefragt wird, kann per POKE an die Stelle des Low-Bytes für die Port-Adresse ins Maschinenprogramm geschrieben werden.

    GOTO x: Ermöglich einen unbedingten Sprung zu einer in einer Variablen gespeicherten Zeilennummer.

    SET CURSOR setzt den Cursor an Stelle x/y bzw. Spalte/Zeile. Die Parameter können aus beliebigen Ausdrücken bestehen, müssen allerdings in den bekannten Grenzen liegen und werden mit einem Semikolon abgeschlossen, sofern kein auszugebender Ausdruck folgt.

    PRINT AT: Wie bei SET CURSOR, nur dass man statt des Semikolons einen mit Komma getrennten Ausdruck angibt, der an der Stelle x/y ausgegeben wird. Es gelten für den Ausdruck die bekannten PRINT-Regeln.

    Trivia: Die physikalischen Kombinationsmöglichkeiten der fünf Joystick-Schalter werden mit Ausnahme der Nullstellung genau mit den 26 Buchstaben des Alphabets abgedeckt.

    Bitte melde dich an, um diesen Anhang zu sehen.

    BASIC-Codes mit DATA-Zeilen, PRINT-Methode und Beispielen folgen.

  • Bitte melde dich an, um diesen Anhang zu sehen.

    Download: Bitte melde dich an, um diesen Anhang zu sehen.

    DATA-Zeilen gibbet nich mehr. PRINT rulez, direkt in den Kassettenpuffer. Eine Zeile, und da passt noch locker ein RESTORE X mit rein (noch 16 Zeichen frei bis 80).

  • Hier mal ein Nachlade 1-Zeiler:

    0 :in$="datei":print"loading$,8:[hoch]":poke631,131:poke198,1:sys42107

    Schönen Gruß.

  • -= BASIC-V2-Erweiterungen zum direkten Einbinden und Aufrufen mit SYS =- Bitte melde dich an, um diesen Link zu sehen.

    Das in Bitte melde dich an, um diesen Link zu sehen. mit den Buchstaben war die Speed-Version. Hier jetzt noch eine normale Version, wie man sie in Menüs oder Strategiespielen einsetzen könnte. Alle Parameter können dabei beliebige Ausdrücke sein. Die Syntax hab ich bewusst so gewählt, dass der Erweiterungs-Code weiterhin in eine 80-Zeichen-Zeile passt, obwohl noch ein RESTORE x hinzugekommen ist.

    Ein GOTO x bräuchte es eigentlich gar nicht, da man das auch mit ON GOTO lösen kann - mit dem Vorteil, dass es dann beim Renumbern berücksichtigt wird. Es ist hier eigentlich auch nur ein Abfallprodukt des ON-joy-GOTO-Befehls. Die Möglichkeit für GOSUB x bzw. ON-joy-GOSUB hatte ich untersucht: Problematisch, denn GOSUB macht nichts anderes als - nach dem Stacken der Rücksprungadresse - GOTO aufzurufen, und dieses liest die Zeilennummer nun mal selbst per LINGET. Man müsste also den ROM-Code des GOSUB-Befehls komplett kopieren, um dann selbst die Zeilennummer einlesen zu können und damit GOTO anzuspringen. Nicht schwierig, aber deutlich mehr Code.

    Darum ist es wahrscheinlich sinnvoller, die Abfrage als Funktion zu gestalten (folgt sicherlich noch), sodass man sie einfach mit ON GOTO und ON GOSUB verwenden kann. Probleme beim Renumbern gibt es dann nicht, wohl aber noch beim RESTORE x.

    Im Zip sind die Dateien für C64Studio .. BASIC und Source. Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen. => Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Darum ist es wahrscheinlich sinnvoller, die Abfrage als Funktion zu gestalten (folgt sicherlich noch), sodass man sie einfach mit ON GOTO und ON GOSUB verwenden kann.

    OK, kann man machen, am besten natürlich mit USR(). Dafür ist das ja. Aber das Problem mit RESTORE Znr. und dem Renumbern wäre damit auch nicht gelöst.

    Probleme beim Renumbern gibt es dann nicht, wohl aber noch beim RESTORE x.

    Hab jetzt aber eine Lösung, mit der das Renumbern überall greift. Bei dieser Methode wird auf berechnete Sprungziele natürlich verzichtet, weil man die auch nicht renumbern kann. Ein GOTO x ist also nicht mehr vorgesehen. Es sind ja alles auch nur Anregungen.

    Die erste Idee ist, so etwas wie IF joy DO oder IF joy THEN zu haben, also im Prinzip wie ON oder IF mit einer Funktion "joy" und der Möglichkeit, direkt beliebige Befehle oder Zuweisungen anzugeben und nicht nur GOTO. Damit ist dann auch das weiter oben beschriebene GOSUB-Problem gelöst.

    Die zweite Idee ist, für RESTORE Znr. einfach einen Befehl voranzustellen, der beim Renumbern berücksichtigt wird. Wenn ich die Einsprungadresse z.B. in einer Variablen DP ablege, kann der Befehl RESTORE 30 dann geschrieben werden als SYS DP, LIST 30 oder auch SYS DP, GOTO 30. GOTO finde ich an dieser Stelle allerdings verwirrend. Ich würde LIST bevorzugen, wenn man das Wort nämlich nicht als Befehl, sondern als Substantiv für die Datenliste in Zeile 30 verstehen will, zumal LIST als Befehl im Programm normalerweise eh nicht gebraucht wird. Download: Bitte melde dich an, um diesen Anhang zu sehen.


    Bitte melde dich an, um diesen Anhang zu sehen. => Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.


    Hier bin ich dann erst mal fertig. Weiter geht es bei meinem Kleinkram bald im Bitte melde dich an, um diesen Link zu sehen. mit Quicknum-B, das ich vor 16 Monaten aus Gründen auf Eis legen musste. Das war aber ein spannendes kleines Projekt, das es verdient, ordentlich abgeschlossen zu werden. Vielleicht baue ich es noch in Paradoxon-BASIC ein, oder jemand anderer in sein eigenes BASIC. Ich finde es aber auch, ohne Verwendung, als reine Machbarkeitsstudie interessant.