Posts by YPS

    Ihr findet den Fehler schon :thumbsup:

    Ich denke, ich habe ihn gefunden. Das Uhr-Programm selbst war in Ordnung, es lag an der Load-Routine vom WiC Portal. Wen es interessiert: Basic-Zeiger wurden falsch gesetzt, deshalb haben Variablen-Zuweisungen das Basic-Programm überschrieben. Das erklärt auch, weshalb reine Assembler-Programme weiterhin funktioniert haben.

    Vielen Dank an Markus64 , Crash64 und kroiter für die Analysen und genaue Beschreibung! Es ist zwar immer schwer einen Fehler zu beheben, den man nicht so ohne weiteres nachstellen kann, aber ihr habt mir zumindest was an die Hand gegeben, mit dem ich es versuchen kann. Schließlich möchte ich ja auch, dass die Uhr auf alllen C64 läuft :)

    Bei mir funktioniert die Uhr, ich kann den Fehler nicht nachstellen.

    Es scheint aber so, als wenn das Programm ab Zeile 510 bei Euch korrupt ist - entweder durch Ladefehler oder nachträglich überschreiben.

    Am besten den C64 mal ausschalten das Startprogramm neu ausführen (ev. ohne Extras wie Jiffydos oder so). Es sollte eigentlich gehen...

    Damit hast Du dann zwar die Universalroutinen (in einem nicht mehr ganz aktuellen Stand) - aber das ist nicht das Gleiche wie das WiC64-Kernal. Die Universalroutinen sind zur Benutzung in Programmen gedacht, das Kernal für den Direktmodus.

    Wäre es möglich, das Uhren-PHP-script als Datei zu erhalten? Nur, wenn es keine Umstände macht und für den Coder in Ordnung ist. Ich würde damit bei Zeiten gerne etwas rumspielen und testen.

    Das PHP-Script ist trival und besteht nur aus einer Zeile: <?php echo date("His");?>

    Freut mich, dass es jetzt bei Dir funktioniert!

    Toll wäre, wenn man den Code der bei $c000 liegt, wenn vorhanden, als kommentierten Quellcode kriegen könnte. Da kann man sicher dann einiges rauswerfen, weil man ja nicht mehr Basic als Basis hat. Wer hat den denn geschrieben?

    Den habe ich geschrieben und bin ihn auch gerade noch am überarbeiten. Dokumentierter Quellcode wird bald offengelegt zusammen mit einer Befehlserklärung, welche Kommandos der WiC64 zur Zeit versteht.


    Es hat sich zum Beispiel gerade die Fehlerbehandlung bei Timeout verändert, so dass mit der (noch zu veröffentlichende) neuen Universalroutinen-Sammlung, Dein "beq" in Zeile 4 in ein "bne" verändert werden müsste, wenn Dein Script mit einer zukünftigen Version der Routinen laufen soll. Deshalb wollte ich auch den Quelltext nicht zu früh rausgeben, weil sich zur Zeit noch etwas Grundlegendes ändern kann...

    Und woher weiß eigentlich Dein Maschinenprogramm, wo denn der richtige Speicher für den zusammengesetzten String anfängt?

    Der Speicher für neue Strings (also nicht solche, die nur im Quelltext stehen, siehe Erklärung von strik) liegt ganz oben im Basicbereich und wird von dort nach unten gefüllt. Solange also vorher noch kein neuer String (z.B. durch Zusammensetzen) entstanden ist, sind die String-Daten eben ab $9FFF abwärts zu finden.

    Dann liegen die einzelnen B$ alle schön hintereinander im Speicher und die Maschinenroutine kann so auf einmal auf den gesamten Kram zugreifen, der in den Data-Zeilen bis 21 steht?

    Genau so ist es! :-)

    Im BASIC Programm lliegen die Daten ja wegen der Aufteilung in Basic-Zeilen fragmentiert im Speicher.

    Durch die String-Addition wird der Inhalt der Data-Zeilen an einem Stück (von $9FFF abwärts) säuberlich hintereinander im Speicher abgelegt. Die Maschinenroutine hat es dann einfach und kann entsprechend klein gehalten werden.

    Außerdem könnte man so auch nachträglich noch BASIC-Zeilen vor den Datenblock schreiben (und damit im Speicher verschieben), ohne dass die Maschinenroutine auf falsche Inhalte zugreift.

    Das Umkopieren des Datenblocks durch die String-Addition geht sehr schnell, lediglich das Einlesen der Maschinenroutine kostet ein bisschen Zeit.

    Der Geschwindigkeitsvorteil gegenüber einer reinen Basic-Lösung wächst also mit der zu kopierenden Datenmenge (könnte neben Maschinencode ja auch Grafik oder Musik sein).

    Es geht schon in die richtige Richtung, aber weder Zeropage noch Garbage-Collection sind konkret beteiligt... Falls bis heute Abend keiner den Kniff benennt, löse ich auf.

    Gibt es eine "Doku" (Text-Datei o. ä.) zu den Routinen?

    Ist in Arbeit... Wir wollen die Entwickler ja auch möglichst gut unterstützen, damit es bald viele neue tolle Anwendungen gibt :)