Kleine BASIC 65-Programme - Sammelthread

There are 23 replies in this Thread which has previously been viewed 2,521 times. The latest Post (July 30, 2025 at 10:09 PM) was by Retro_Noob.

  • Ich will einfach mal einen Thread eröffnen, in dem "querbeet" kleine BASIC 65-Programme gesammelt werden können.

    Ich mache mal den Anfang mit einer Wochentagsberechnung nach Please login to see this link..

    Zellers Kongruenz ist ein mathematischer Weg, um den Wochentag eines gegebenen Datums zu ermitteln. Der Mathematiker und Theologe Christian Zeller veröffentlichte dazu 1882 eine Formel.

    Hier die Formel von mir als einfaches BASIC 65-Programm gestaltet:

    Please login to see this attachment.

    Funktioniert! :thumbsup:


    Das D81-Image mit dem Programm im Anhang! :)

  • Da fehlt das 400-Ausschlusskriterium (Jahre, die ohne Rest durch 400 geteilt werden können, sind *keine* Schaltjahre, etwa das Jahr 2000)

    Arndt

    Edit: Andersherum: die 400er sind Schaltjahre, die 100er nicht. Fehlt aber dennoch!

    GoDot C64 Image Processing
    Please login to see this link. - Please login to see this link. - Please login to see this link.
    Please login to see this link. - Please login to see this link. - Please login to see this link.

    Edited once, last by GoDot (May 7, 2025 at 3:50 PM).

  • Doch, die Schaltjahre werden mitberücksichtigt. Siehe auch den Abschnitt in der Erklärung der Formel:

    Please login to see this link.

    Sonst würde die Berechnung des Wochentags auch gar nicht richtig funktionieren. Mir ist bislang kein Datum untergekommen, für das der falsche Wochentag ausgegeben wird. Selbst der 28.2., 29.2. und der 1.3.2024 funktionieren richtig:

    Please login to see this attachment.

    Ich habe diesen Algorithmus umgesetzt:

    Please login to see this attachment.

  • Mir ist bislang kein Datum untergekommen, für das der falsche Wochentag ausgegeben wird.

    Kannst du überprüfen mit dem 29. Februar 2000 (ein Dienstag). Wenn das ausgegeben wird, entschuldige ich mich für meine Voreiligkeit! :smile:

    Arndt

    (Hab selber gerade keinen Zugriff auf meinen Mega)

    GoDot C64 Image Processing
    Please login to see this link. - Please login to see this link. - Please login to see this link.
    Please login to see this link. - Please login to see this link. - Please login to see this link.

  • Mir ist bislang kein Datum untergekommen, für das der falsche Wochentag ausgegeben wird.

    Kannst du überprüfen mit dem 29. Februar 2000 (ein Dienstag).

    Please login to see this attachment.

    Aber kein Grund, dich zurückzuhalten oder zu entschuldigen! Die Formel ist von 1882, also schon 143 Jahre alt, und Christian Zeller ist seit 1899 tot. ;)

    Ich bin ja selbst erstaunt, wie knapp und knackig man zielsicher die Wochentage errechnen kann. Aber es funktioniert erstaunlich gut! :)

  • Sehr gut. Kannst du da eine Funktion draus machen, damit man es in eigenen Programmen sinnvoll verwenden kann?

    =fktWochentag(datDatum)

    Und als Nächstes hätte ich gerne eine Funktion, die das Datum von Ostern für ein bestimmtes Jahr errechnet.

    =fktOstern(datJahr)

    Und eine Funktion, die zu einem bestimmten Datum eine bestimmte Anzahl Tage hnzurechnet oder abzieht.

    =fktDatumDiff(datDatum, intTage)

    Also z.B. fktDatumDiff("08.05.2025",-100) gibt das Datum vor 100 Tagen aus.

    Oder fktDatum("08.05.2025",99) gibt das Datum in 99 Tagen aus.

    Ich brauche das zwar nicht. Aber man wird ja mal Anforderungen stellen dürfen. :D

    Vielen Dank.

  • Omega : ist alles im TSB-Programm „Please login to see this link.“ drin (bis auf die Ostersache). :whistling:

    Arndt

    GoDot C64 Image Processing
    Please login to see this link. - Please login to see this link. - Please login to see this link.
    Please login to see this link. - Please login to see this link. - Please login to see this link.

  • Son Code um Ostersonntag zu berechnen für die Jahre 1900 bis 2099 hab ich hier irgendwo in Python ich muss mal sehen ob ich Zeit finde zu umgestalten.

  • Ich finde die Idee, kleine Beispielprogramme für den MEGA65 zu sammeln, grundsätzlich super. Aus Erfahrung würde ich aber empfehlen, so eine Sammlung nicht ausschließlich im Forum zu führen. In einem längeren Thread gehen die Beiträge schnell zwischen Kommentaren, Rückfragen und Offtopic-Diskussionen unter. Und nach ein paar Wochen findet man kaum noch etwas wieder.

    Sinnvoller wäre es meiner Meinung nach, die Programme zusätzlich auf einer eigenen Webseite zu sammeln - ähnlich wie es z. B. bei der TSB-Webseite gemacht wird. Dort kann man sie thematisch ordnen, durchsuchen und besser pflegen.

    Außerdem fände ich es gut, wenn die Beiträge als eigenständige Funktionen mit kurzer Dokumentation veröffentlicht werden. Das erhöht die Übersichtlichkeit und macht es leichter, den Code später weiterzuverwenden oder zu verstehen.

    Mit ein bisschen Struktur und Pflege kann so eine Sammlung langfristig wirklich hilfreich für alle werden.

  • Hallo Leute,

    möchte auch mal mein Mini Progrämmchen vorstellen:

    Please login to see this attachment.

    Please login to see this attachment.

    Das ist jetzt nichts weltbewegendes. Es ist nur ein Rad wo sich dreht und von links nach recht fährt. Mit der Taste Q wird das Programm beendet.

    So weit die Erklärung zum Programm. Aber dahinter steckt ein kleiner Versuch ob man mit CHATGPT und Co Retroprogrammierung durchführen kann. Wenn ihr aber Denkt das das beim ersten Versuch so raus kam, liegt ihr total falsch.

    Meine erste Frage war ob er sich mit dem Basic von Mega65 auskennt.

    Und wie jede gute AI sagt er, das er natürlich die Basicbefehle kennt.

    OK, legen wir los. Bin richtig gespannt was da jetzt alles passiert

    Meine Angabe am Anfang für das kleine Basicprogramm war, das ich ein Rad mit sich drehende Speichen möchte programmiert habe möcht.

    Darauf hin überlegte er kurz und spukte dann denn Code auch schon aus.

    Ich möchte aber jetzt hier keinen Roman schreiben.

    Ich mußte im Laufe des Prozesses ziemlich viele Basicbefehle als falsch deklarieren wie z. B. WAIT 2 - er wollte damit eine Verzögerung für die Animation erstellen. Ich habe in das mitgeteilt das dieser Befehl für was anderes gemüntzt ist, er soll statt dessen den Befehl SLEEP nehmen soll. Und so ging das mit ziemlich vielen Basicbefehlen. Man muss sehr geduldig sein und man muss aber auch die Befehle selber kennen wie Sie funktionieren.

    Es mag bis jetzt noch nicht perfekt sein, aber warten wir noch ein paar Jahre, dann kann es sehr in­te­r­es­sant werden.

    Aber in Moment für kleine Programme nicht übel, aber für größere Programme nicht wirklich gut.

    Aber ich habe noch ein größeres Programm im Kopf, mal schauen in wie weit mir CHATGPT behilflich sein kann.

    Wenn es was wird, bekommt ihr es mit.

    Hat denn einer von euch auch schon mal so einen Versuch gestartet ?

  • Moin,

    ich faends cool wenn bei den bewegten RUN's

    vielleicht in kleines Video mitgeschickt werden kann um einen

    Eindruck davon zu bekommen.

    Drachen , eigentlich koenntest du daraus auch gleich eine

    coole analog Uhr zaubern. :smile:

    Moin,

    64 und 128 er mag ich sehr, den CBM umso mehr. :wink:

    Ich bin eher auf der CBM Schiene unterwegs

    und trotzdem neugierig auch etwas ausserhalb vom CBM

    Aber in der Hauptsache Commodore ! :wink:

    Beste Gruesse von der Kuest auf diesem Weg....

  • Drachen , eigentlich koenntest du daraus auch gleich eine

    coole analog Uhr zaubern. :smile:

    Please login to see this link.

    Please login to see this attachment.

    :whistling:

    ....wenn jetzt noch der Sekunden Zeige angezeigt wird, waere es Super Supi. :-))

    Die Skala ist uebrigens kaum zu erkennen. In Weiss waere es besser zu erkenn.

    Moin,

    64 und 128 er mag ich sehr, den CBM umso mehr. :wink:

    Ich bin eher auf der CBM Schiene unterwegs

    und trotzdem neugierig auch etwas ausserhalb vom CBM

    Aber in der Hauptsache Commodore ! :wink:

    Beste Gruesse von der Kuest auf diesem Weg....

  • ....wenn jetzt noch der Sekunden Zeige angezeigt wird, waere es Super Supi. :-))

    Die Skala ist uebrigens kaum zu erkennen. In Weiss waere es besser zu erkenn.

    Der Sekundenzeiger wandert auf der Skala mit:

    Please login to see this attachment.


    Die Farben lassen sich frei nach Belieben ändern. Es ist ja ein BASIC-Programm. ;)

  • Ah, Ok. Der Sekundenzeiger ist leider bei mir nicht sichtbar.

    Da ich noch keinen MEGA65 habe, kann ich das Programm nicht starten.

    und bin daher auf bewegte Bilder angewiesen.

    Moin,

    64 und 128 er mag ich sehr, den CBM umso mehr. :wink:

    Ich bin eher auf der CBM Schiene unterwegs

    und trotzdem neugierig auch etwas ausserhalb vom CBM

    Aber in der Hauptsache Commodore ! :wink:

    Beste Gruesse von der Kuest auf diesem Weg....

  • Und was ist mit dem EMU? :gruebel

    Darauf kannst du dann das Programm starten und anschauen.

  • Ist etwas dunkel.

    Palette ändern oder vorgefertigte Farben 11,12 15 verwenden.

    und gut is ;)

    100 % echte Dummheit

    Keine künstliche Intelligenz involviert.

  • Servus zusammen,

    ich habe gerade Urlaub und habe mir Dan`s Seite zu Paint durchprobiert.

    Please login to see this link.

    Dabei kam mir die Idee ob ich mit dem Dot Befehl eine Flamme animieren kann.

    Es geht, wenn auch nicht besonders schnell. Man muss nach dem starten ca. 10 sec warten bis sich das Feuer aufgebaut hat.

  • Retro_Noob Interessanter Algorithmus.

    Ich konnte mich nicht beherschen und hab das Programm auf PETSCII umgebaut und ein wenig beschleunigt.

    Jetzt füllt es den ganzen Bildschirm aus.

    X=Exit

    Please login to see this attachment.

  • So !

    Nu isses aber schnell genug.

    Und warten bis das Feuer aufgebaut ist muss man auch nicht mehr.

    FIRE-RENDER berechnet einen LOOP von 25 Bildern & und speichert diese in FIRE.FLI.

    FIRE-PLAY spielt die Animation ab und zwar so schnell das man es bremsen muss.

    Wenn ihr wollt könnt ihr es mit 50 oder 60 FPS laufen lassen,was natürlich viel zuviel ist.

    Please login to see this attachment.