wie starte ich $1001?

  • wie starte ich $1001?

    Hallo,

    ich lade Programme von der Diskette über das AR6 Modul. Normalerweise wird dort nach dem Laden die Startadresse $0801 angezeigt und das Programm lässt sich mit Run starten. Wie starte ich aber ein Programm mit der Startadresse $1001?
    Your Dragon does not work as well on tea and coffee as you do.
  • Normalerweise stammt ein Programm mit Ladeadresse $1001 entweder vom (nicht-erweiterten) VC-20 oder einem C16/C116/+4.

    Insofern wäre es hilfreich, wenn Du etwas mehr Details liefern könntest.

    Kannst aber mal probieren, das Programm von Hand mit ",8" und *nicht* mit ",8,1" zu laden. Und dann schauen, was bei RUN passiert.

    *Theoretisch* könnte auch SYS4097 funktionieren. Allerdings wäre das dann schon eine ungewöhnliche Wahl für Lade- und Startadresse - 4096 wäre da wohl gängiger.
  • Henning schrieb:

    SYS 4097
    Danach friert der Rechner ein.

    Mike schrieb:

    Kannst aber mal probieren, das Programm von Hand mit ",8" und *nicht* mit ",8,1" zu laden. Und dann schauen, was bei RUN passiert.
    Das funktioniert. Danke für eure Hilfe!!

    Da sind recht simple Basicspiele auf dieser Diskette. Ein anderes Programm zeigt mir $4001 an - das wäre dann 16385 dezimal laut Umrechner. SYS 16385 führt zum Absturz. Load"xy",8 funktioniert. Ok - für die Zukunft werde ich alles was nicht $0801 ist erstmal mit ",8" versuchen.

    Danke nochmal.

    Axel
    Your Dragon does not work as well on tea and coffee as you do.
  • Zieh doch von so einer Diskette mal ein D64 ... da finden wir wahrscheinlich viele schöne Sachen.

    Übrigens kannst die Startadresse auch hiermit am C-16/116 & Plus/4 vom ganzen Directory anzeigen lassen ...

    dragon schrieb:

    Ein anderes Programm zeigt mir $4001 an - das wäre dann 16385 dezimal laut Umrechner. SYS 16385 führt zum Absturz. Load"xy",8 funktioniert. Ok - für die Zukunft werde ich alles was nicht $0801 ist erstmal mit ",8" versuchen.
    Das ist dann in der Regel ein Basicprogramm am erweiterten C-16/116 oder Plus/4, wo vorher einmal die Grafik eingeschaltet wurde und der Basicanfang entsprechend hochgesetzt wude.

    Im Basic 3.5 kannst du auch bequem per DLOAD laden anstelle LOAD"NAME",8 ...
    Dateien
  • cbm-warrior schrieb:

    Zieh doch von so einer Diskette mal ein D64 ... da finden wir wahrscheinlich viele schöne Sachen.
    Siehe Anhang. Aufgefallen war mir das bei "Alien" und "Asteroid", wobei ich mit der Diskette noch nicht ganz durch bin...
    Dateien
    • forum64.d64

      (174,85 kB, 23 mal heruntergeladen, zuletzt: )
    Your Dragon does not work as well on tea and coffee as you do.
  • @dragon: schön, daß das Programm jetzt erstmal läuft.

    Ein hochgesetzter BASIC-Start kommt auch schon mal vor, wenn das Programm mit einem veränderten Zeichensatz versehen ist. Viele Abtipp-Spiele aus der Zeit legen den Zeichensatz, und evtl. auch Maschinenprogramme *unter* das BASIC-Programm. Dann gibt es meistens noch einen Boot-Loader mit ein paar Zeilen, der den BASIC-Start hochsetzt und das Hauptprogramm nachlädt. Falls das Programm aber mit unverändertem BASIC-Start geladen und gestartet wird, überschreibt es sich möglicherweise selbst - da solltest Du deine Fälle daraufhin überprüfen.

    mrr19121970 schrieb:

    In VICE (alt+M): [...]
    No wonders. It also escapes me why one would want to load BASIC programs into RAM this way. Your method does an "inject-to-RAM" but misses to re-link the lines of the BASIC program (what is done by the LOAD command in direct mode), and - much more important - it *does* *not* set the pointer of the start of the variables in 45/46 (a.k.a. "end of program") correctly!

    Then you can LIST the program without any problems, but as you RUN the program, and the first defined variables will thrash the start of the BASIC program. This confuses the interpreter and will quite likely stop execution with an error messages.

    Nochmal für die deutschen Mitleser:

    Das verwundert mich nicht. Ich verstehe auch nicht, wie man auf die Idee kommen kann, BASIC-Programme so einzuladen. Deine Methode schreibt das Programm per "inject-to-RAM" in den Speicher, dabei werden die Programmzeilen aber nicht neu verkettet (was das LOAD-Kommando im Direktmodus macht) und - noch viel wichtiger - die Startadresse der Variablen in 45/46 (auch bekannt als "Ende des Programms") *wird* *nicht* gesetzt!

    Dann kannst Du zwar das Programm LISTen, aber sobald Du es mit RUN ausführt, überschreiben dir die ersten Variablenzuweisungen den Start des BASIC-Programms. Das bringt den Interpreter durcheinander und dann bricht die Programmausführung mit einer Fehlermeldung ab.


    Nachtrag:

    - Rotamint ist vermutlich aus der CPU 5/85. Das verlangt keinen hochgesetzten BASIC-Start, sollte also o.k. sein.
    - Alien muß auf jeden Fall hochgesetzt werden, da Sprite-Daten und Maschinenprogramme nach $3000 aufwärts geschrieben werden. Da tritt genau das Szenario ein, was ich oben beschrieben hab. Hier brauchts also ein:

    Quellcode

    1. POKE44,64:POKE16384,0:NEW
    im Direktmodus, bevor das das Programm mit ",8" lädst und dann startest.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Mike ()

  • Mike schrieb:

    Nachtrag:

    - Rotamint ist vermutlich aus der CPU 5/85. Das verlangt keinen hochgesetzten BASIC-Start, sollte also o.k. sein.
    - Alien muß auf jeden Fall hochgesetzt werden, da Sprite-Daten und Maschinenprogramme nach $3000 aufwärts geschrieben werden. Da tritt genau das Szenario ein, was ich oben beschrieben hab. Hier brauchts also ein:

    Quellcode

    1. POKE44,64:POKE16384,0:NEW
    im Direktmodus, bevor das das Programm mit ",8" lädst und dann startest.
    Stimmt, siehe auch hier: gb64.com/game.php?id=11090&d=18&h=0

    Das Heft habe ich in meinen Fundus, bei Bedarf kann ich die Seiten samt Anleitung gerne eben scannen.