Beiträge von GoDot

    Hm, mir ist im XEMU aufgefallen dass er von 40 auf 3,5 MHz runtergeht.

    Ja, das schwankt sogar, mal 1 MHz, mal 3,5 MHz. Ich hab die Geschwindigkeit über die beiden Flag-Bits in $d031 (VIC III) und $d054 (VIC IV) aktiviert, nicht über POKE 0,65 (wenn das verwendet wird, ändert sich nichts an der angezeigten Geschwindigkeit, sie bleibt also auf 40 MHz).


    Heißt das, dass ich tunlichst die Finger von den Flags lasse und "brachiale Gewalt" anwenden soll?


    Arndt

    Ich stelle gerade fest, dass der Mega65 bei jedem Disk-Zugriff auf 1 MHz herunterschaltet. So weit, so gut, das macht ja auch Sinn. Aber warum schaltet er nach dem Zugriff nicht zurück in die Superspeed? Das könnte doch anwenderfreundlicher sein!?


    Wie komme ich drauf? Ich hab gerade ein GoDot-Modul zum Einstellen der Arbeitsgeschwindigkeit gebastelt. Funktioniert wunderbar:



    Ist aber unbrauchbar, denn es bringt - so wie es jetzt läuft - ausschließlich beim Rendern der Grafik was (schwupp, da ist das Bild!) Bei allen anderen zeitaufwendigen Modulen kann man das nicht gebrauchen, denn wenn ich ein Modul lade, geht die Speed auf 1 runter und ich müsste M65.Fast neu laden, um auf 40 MHz zu wechseln. Aber dann ist das Modul, das ich beschleunigen wollte, weg... :| Und eine RAM-Disk haben wir noch nicht.


    Will sagen: Wär doch schön, wenn die Maschine die Geschwindigkeit, die *vor* dem Laden galt, auch *nach* dem Laden noch hätte!


    Arndt

    Übrigens: Das Rendern der Grafik auf dem Mega65 ist (ohne den 40MHz-POKE) automatisch doppelt so schnell wie auf einem echten C64. Das liegt daran, dass die Ultimate64-Änderung an god.upmem (Codezeilen 666 und 222/3), die dort für Maximalspeed sorgt, im C64-Modus des Mega65 (VIC III) immerhin für Zweifachspeed (wie beim C128) reicht. :-) Mit POKE 0,65 ist GoDot auf dem Mega allerdings fast genauso schnell wie auf der Ultimate64. Kann man nachträglich mit mod..SMON pimpen (m0000, RUN/STOP, 41 nach 0000, nicht um das Fragezeichen kümmern, x).


    Arndt

    Ich hatte vor einiger Zeit gefragt, ob es eine Möglichkeit gibt, das Tempo beim PLAYSCORE-Befehl in COMAL80 V2.01 anzupassen. Leider gab es darauf bislang keine konkrete Lösung.

    Ich hatte ja mit ClausS zusammen an der Sound-Package gearbeitet (Claus hat darauf in Post #629 hingewiesen). Dabei kamen wir zu dem Ergebnis, dass eine Manipulation des Package zur Einführung eines neuen Befehls TEMPO unvorhersehbare Nebenwirkungen haben könnte. Ich habe dann eine einfache Comal-Lösung dafür vorgeschlagen, die in jedem Fall funktionieren sollte:

    Die ersten 4 Noten (in den DATA-Zeilen) sind Sechzehntel (Wert: 4, Zeile 100), die nächsten drei sind Achteltriolen (6, Zeile 110), die letzten drei sind eine punktierte Viertel (20) und zwei Achtel (8), wobei die letzte dann ausklingt. Wenn du in Zeile 120 die 72 auf 120 veränderst, hast du das Tempo beschleunigt. 36 halbiert es.


    Das Tempo wird also allein vom Faktor "tempo" in Zeile 120 bestimmt. Hier kannst du die Beats per Minute einstellen (72 ist das Herzschlagtempo).


    Arndt

    Wie wär's denn mal anders herum? Also, da, wo eine Eingabe erfolgen soll, der Cursor aber *nicht* von selber blinkt (wie es bei GET der Fall ist).


    Das geht so:

    Code
    1. 400 poke 204,0: poke 198,0: wait 198,1
    2. 410 get a$: if a$="" then 400
    3. 420 poke 205,2: wait 207,1,1: poke 204,1
    4. 430 print a$

    Arndt

    Ich wollte eigentlich, dass der Cursor im System generell nicht blinkt. Oder genauer gesagt: Er soll immer AN sein, sonst weiß man ja nicht, wo er gerade ist.

    Na, dann eben so:

    Code
    1. 100 repeat
    2. 110 poke 199,18: print" {crsr left}";: poke 199,0
    3. 120 keyget x$: if x$=chr$(13) then print" ";
    4. 130 print x$;
    5. 140 until x$="x"

    Ein POKE. Das IF brauchst du, wenn Return gedrückt wurde (sonst auch nicht).


    Arndt


    Edit: Statt POKE kannst du auch in Zeile 110 an den Anfang des Strings ein RVS ON und ans Ende ein RVS OFF setzen. Das macht genau das Gleiche.

    Aber ich möchte eigentlich nicht, dass der Cursor eine Spur hinterlässt.

    Dann versuch mal dies hier (TSB, ersetz das KEYGET in Basic V2 durch POKE 198,0: WAIT 198,1: GET x$).

    Code
    1. 100 repeat
    2. 110 poke 205,0:wait 207,1,1
    3. 120 keyget x$:print x$;
    4. 130 until x$="x"
    5. 140 poke 204,1

    Arndt

    Edit: Den letzten POKE brauchst du gar nicht, der wurde ja nicht geändert. Also, mit zwei POKEs und zwei WAITs ist dein Problem erschlagen.

    Edit 2: Ach, ich sehe gerade, das WAIT 207,1,1 kannst du dir auch sparen. Der POKE nach 205 reicht also komplett!