Heute so gecodet...

Es gibt 2.379 Antworten in diesem Thema, welches 480.652 mal aufgerufen wurde. Der letzte Beitrag (1. November 2025 um 13:53) ist von Unseen.

  • Ach so. Über SCL (Clock) hat man ja eigentlich eh immer eine Referenz für eine fallende Flanke. Die pegelabhängige Start- oder Endebedindung könnte aber schwierig zu erkennen sein. Aber man kann das mit einer Sync-Sequenz initiieren, z.B. 9 1-Bits heißen Start der Verbindung, dann folgen 8 Daten-Bits und ein 0-Bit. Dann braucht man keine Start-/Stop-Bedingung für ein Byte mehr. Ich würde dann die Übertragung dennoch mit einer Prüfsumme absichern (z.B. die 1-Bits zählen, oder die Bytes in 16 Bits aufsummieren).

    Ok, das ist dann eine Programmierungssache, wie man das dann ins BASIC einbettet. Da kann man sich auch an SuperTape orientieren. Gerne PM an mich oder wir machen einen separaten Thread auf, wo es dann um dieses Projekt geht.

    Ich habe jetzt erst mal etwas nach einer weiteren Ausgangsleitung geforscht. Mit CB1 (nur Eingang am VIA) konnte es nur in eine Richtung klappen. Ich lege nun die Clock auf PA5 des PIABitte melde dich an, um diesen Link zu sehen. und die bidirektionale Datenleitung wird PB3 des VIABitte melde dich an, um diesen Link zu sehen.. Da musste ich erst mal ein Setup finden, ohne den Tastatur-Scanner lahm zu legen. Mit dem PIA 6520 hatte ich noch nie etwas gemacht und musste mich erst mal etwas einlesen. Das Buch ist wirklich gut: Bitte melde dich an, um diesen Link zu sehen.

    Zum Tape-Loader: Das habe ich wieder verworfen. Es ist viel einfacher, einen der freien ROM-Steckplätze zu verwenden, z.B. 4K ab $9000. Ansonsten hätte man das Tape Standard-Protokoll in den Arduino implementieren müssen, also Bytes ins übliche Frequenzpiepen per Timer umwandeln.

    So klappt das Setup für den PIA ganz gut.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Tastatur-Scanner funktioniert danach noch und der Port lässt sich toggeln.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Von Eingang High auf Ausgang Low. Und wie es immer ist: mein anderer Logiktester ist mal wieder defekt, hatte glücklicherweise einen Ersatz.

    Bitte melde dich an, um diesen Anhang zu sehen.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

    Einmal editiert, zuletzt von cbmhardware (30. April 2023 um 22:26)

  • Heute mal wieder an einem neuen Projekt weitergecodet.

    Ein Template basierter Code Generator geschrieben in GO.

    Ich brauche das Ding beruflich um mal schnell eine ganze Backend Codekette zu erstellen und kann nebenbei eine neue Sprache lernen :smile:

    Angefagen von SQL Skripten zu Erstellung von Tabellen, Views, Procedure usw. und dem dazugehörgen Backendcode.

    Die Templates erzeugen momentan Spring Kompatiblen JavaCode.

    Aktuell zu ca. 65% fertig.

    "Kaum zu fassen, das bei jedem Menschen, dessen Schädel man nach seinem Tod öffnete, ein Gehirn gefunden wurde".

    Unbekannt


    Meine Projekte : Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.

  • Mal wieder an unserer HEOS Dashboard App gearbeitet und die Player Id Erkennung stabilisiert. Nun lassen sich die Audio Addict Netzwerke auch problemlos ab Start abspielen. :)

    Und weil es so schön passt:

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Passend zu meinem Code Generator habe ich heute angefangen ihm auch ein Intellij Plugin zu gönnen.

    Ich muss mich aber erst noch ein bisschen tiefer in die IntelliJ Plugin Technologie einarbeiten.

    Ein UI habe ich aber schon :smile:

    "Kaum zu fassen, das bei jedem Menschen, dessen Schädel man nach seinem Tod öffnete, ein Gehirn gefunden wurde".

    Unbekannt


    Meine Projekte : Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.

  • Hab das Threading nochmal überarbeitet. Nun scheint es mit den Permutationen zu klappen und auch das Schreiben in Dateien funktionniert ohne Exceptions. :puhh:

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • In den letzten Wochen hatte ich wieder etwas Lust bekommen an meinem Dockingmodul weiterzuschreiben. Das letzte Mal war ich schon kurz davor den ersten Abschnitt fertig zu bekommen, aber hatte da ein Problem mit dem ich zu kämpfen hatte und kam niciht so recht voran und danach hatte ich wieder mal die Lust verloren. Die Pause war aber ganz gut,denn jetzt habe ich etwas Abstand gewonnen und musste wieder neu daraber nachdenken. Dabei hatte ich dann die Idee wie ich das angehen muss und nachdem mein PC im Moment das Spielen verweigert, habe ich mich dann wieder damit beschäftigt. Meine Idee hat funktioniert und damit konnte ich das dann in relativ kurzer Zeit endlich zu Ende bringen. Damit habe ich jetzt ganz offiziell den ersten Abschnitt fertiggestellt und kann jetzt alle Szenarien abdecken die beim Docken auftreten.

    Jetzt muss ich noch das Demo erweitern um die letzten Features zu benutzen. Das dient auch gleichzeitigt dazu zu testen ob mein Konzept so funktioniert wie ich mir das vorgestellt habe.

    Aber es freut mich dass ich endlich diesen Teil erledigt habe. :D Als nächstes kommt dann die Unterstützung für Toolbars rein. Das hatte ich zwar schon ganz am Anfang mal eingebaut, aber um den Prototyp fertig zu bekommen, habe ich dann alles auskommentiert und mich auf diesen Teil konzentriert. Der Code wird allerdings nicht mehr funktioneren weil ich das Design radikal umgekrempelt habe, aber das werde ich dann sehen, wenn ich damit anfange.

  • Mein Laptop ist immer noch defekt und kann daher nicht zum Spielen genutzt werden. Zumindest nicht für das was ich gerne spielen würde. Immerhin weiss ich jetzt was das Problem ist und muss ihn wohl einschicken. Der Vorteil ist aber dass ich dafür jetzt wieder an meinem Modul weiterarbeite. :D

    Nachdem ich ja dachte ich wäre fertig mit dem ersten Meilenstein bin ich jetzt dabei das Demoprogram zu erweitern um die Funktionen in einem etwas realistischeren Umfeld zu testen. Promptbin ich dabei natürlich gleich auf ein Problem gestossen. Wenn eine Seite in einem Notebook anklicke wird dieses nicht richtig erkannt. Nachdem ich das Problem dann analysiert habe, habe ich festegestellt dass es eigentlich ein Problem von wxWidgets ist und habe das dort gemeldet. Jetzt bin ich mit dem Maintainer am besprechen wie man das am Besten fixen kann. Glücklicherweise kann ich das Problem aber leicht umgehen indem ich einfach die Reihenfolge von zwei Codezeilen umkehre und damit ist das Problem für mich erstmal behoben, auch wenn es vielleicht in wxWidgets nicht gefixed wird (weil das auch nicht gerade trivial wäre).

    Als ich das Problem entdeckt hatte, war ich etwas genervt weil ich schon dachte dass ich jetzt wieder ein Problem habe dass dann ewig lange dauert bis es behoben ist, und mich daran hindert weiterzukommen, aber zum Glück hat sich ja dann herausgestellt das ich es eben einfach umgehen kann. :D

  • Erste Tests, den PET per eigenem TWI am Tape-PortBitte melde dich an, um diesen Link zu sehen. "sprechen" zu lassen.

    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.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Noch ein bisschen nächtliches Programmieren. Habe es jetzt auf 0,2ms pro Byte, dürften so rund 5Kbyte/s im Transfer sein. Das Byte wird in zwei Low-Nibble geteilt und danach auf Bit 3 des VIA heraus geshiftet. Also Shifting, Clock-Toggle, Shifting ... im Prinzip linearer Speedcode ohne Schleifen und Sprünge.

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

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Noch ein bisschen nächtliches Programmieren. Habe es jetzt auf 0,2ms pro Byte, dürften so rund 5Kbyte/s im Transfer sein. Das Byte wird in zwei Low-Nibble geteilt und danach auf Bit 3 des VIA heraus geshiftet. Also Shifting, Clock-Toggle, Shifting ... im Prinzip linearer Speedcode ohne Schleifen und Sprünge.

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

    Ich kenne den restlichen Code-Kontext jetzt nicht, aber wenn die PHA/PLA nicht timing-relevant für clock-toggle sein sollte, so könnte man ein paar cycles sparen, wenn stattdessen TAX/TXA oder TAY/TYA genutzt wird.

    Und wofür ist das auf dem ersten PHA folgende AND#$DF? Denn kurz vorher erfolgt ja bereits ein AND#$0F - oder wird an diese Stelle von "irgendwo" hin gesprungen, sodass AND#$DF erforderlich ist? :)

  • Ich kenne den restlichen Code-Kontext jetzt nicht, aber wenn die PHA/PLA nicht timing-relevant für clock-toggle sein sollte, so könnte man ein paar cycles sparen, wenn stattdessen TAX/TXA oder TAY/TYA genutzt wird.

    Und wofür ist das auf dem ersten PHA folgende AND#$DF? Denn kurz vorher erfolgt ja bereits ein AND#$0F - oder wird an diese Stelle von "irgendwo" hin gesprungen, sodass AND#$DF erforderlich ist? :)

    Ja, genau, mit TAX spart man nochmals einige cycles, danke ! - Das erste "AND#$DF" kann natürlich auch weg. Der ganze Code war mal schnell getestet, da fehlte noch jegliche Optimierung. Damit liege ich jetzt schon etwas unter 0,2ms für ein Byte. Dann kann der TapeportBitte melde dich an, um diesen Link zu sehen. am alten CBM 2001 jetzt auch mal um den Faktor x70-75 schneller. :)

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Da ich beim C64Studio eigentlich durchgehend Theming auch für die IDE haben möchte, und die Standard-Forms das nicht durchgehend hergeben, bastle ich nebenher an einer "Ablöse". Setzt auch auf Forms auf, aber stellt alles selber dar; bzw. macht auch das Control-Handling selbst.

    Das hat dann nachträglich natürlich Vorteile, das "Übersteuern" der Darstellung kann man dann beliebig auseinander ziehen. Bei den Standard-Control muss man in der Regel, wenn man nur einen kleinen Fitzel ändern will, sowieso alles selbst darstellen.

    Ich bastle an GIT-Unterstützung, und möchte analog Tortoise-Git die Source-Control-Zustände im Solution Explorer über die Icons der Dokumente-Typen blenden. Das habe ich auch mit der Standard-Control hingekriegt, aber so tolle Features wie das animierte Aufklappen führen dann gerne zu Darstellungsfehlern.

    Ist eine nervige Fummelei, untergräbt Accessibility komplett, aber ist IMHO erstmal der naheliegende Weg.

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

  • Ich kenne den restlichen Code-Kontext jetzt nicht, aber wenn die PHA/PLA nicht timing-relevant für clock-toggle sein sollte, so könnte man ein paar cycles sparen, wenn stattdessen TAX/TXA oder TAY/TYA genutzt wird.

    Und wofür ist das auf dem ersten PHA folgende AND#$DF? Denn kurz vorher erfolgt ja bereits ein AND#$0F - oder wird an diese Stelle von "irgendwo" hin gesprungen, sodass AND#$DF erforderlich ist? :)

    Ja, genau, mit TAX spart man nochmals einige cycles, danke ! - Das erste "AND#$DF" kann natürlich auch weg. Der ganze Code war mal schnell getestet, da fehlte noch jegliche Optimierung. Damit liege ich jetzt schon etwas unter 0,2ms für ein Byte. Dann kann der TapeportBitte melde dich an, um diesen Link zu sehen. am alten CBM 2001 jetzt auch mal um den Faktor x70-75 schneller. :)

    Dann schiebe ich noch einen hinterher, anstelle

    Code
    ROR
    ROR
    ROR
    ROR
    AND #$0F
    $DINGE

    tut es auch ein

    Code
    LSR
    LSR
    LSR
    LSR
    $DINGE

    Weil bei LSR das höchstwertige Bit stets 0 wird, somit sparst Du nochmals 2 cycles :)

  • Ja, danke, das bringt aber keine entscheidende Verbesserung mehr. Ich habe aus reiner Neugier eine 2Bit/CLK-Version getestet. Dann wird es so langsam unheimlich :), deutlich über 8KByte/s.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Das erste Bit wird vor der fallenden CLK-Flanke gesetzt und bei CLK:0 dann sogleich das zweite Bit, das noch bei steigender CLK-Flanke anliegt. Ob das so funktionieren kann, weiß ich allerdings nicht.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Nachdem das Grundmodul für mein Docking soweit fertig ist, habe ich noch eine API Erweiterzung eingebaut. Momentan kann man ja jedes Fenster überall hin andocken. In einer echten Anwednung will man das aber nicht. Wenn man sich z.B. Visual Studio als Besispiel nimmt, dann hat man ja an den Seiten üblicherweise die Browserfenster, wo man z.B. die Sourcefiles browsen kann oder ähnliches. In der Mitte ist dann der eigentliche Sourcecode mit Tabs, wo man mehrere Fenster beliebig anordnen kann. Dieses mittlere Tabfenster sollte aber eigentlich immer vorhanden sein, auch wenn gerade kein Sourcefenster geöffnet ist um das generelle Layout aufrecht zu erhalten. Ich hatte ja schon von Anfang eingeplant dass man entscheiden kann, welche Fenster erhlaten bleiben und welche automatisch entfernt werden dürfen wenn sie nicht mehr benötigt werden (das ist das Defaultverhalten). Es gibt Events die man abfangen kann, wo dann die Applikationslogik entscheidet ob ein bestimmtes Fenster verschwinden darf. Diese Entscheidung ist aber eben Applikationslogik, da das Dockingmodul darüber kein Wissen hat, da es nur die Anordnung der Fenster verwaltet. Da dies aber ein typischer Anwendungsfall ist, habe ich jetzt noch API Funktionen eingebaut, mit denen man das steuern kann, so dass der Applikationscode das nicht immer selbst nachprogrammieren muss.

    Ausserdem habe ich noch mein Demoprogramm erweitert um diese Funktionen zu demonstrieren. Dabei habe ich natürlich prompt wieder einen Fehler gefunden, der etwas kniffliger ist und ich noch nicht weiss wie ich das lösen kann. Nach einer ersten Analyse bin ich allerdings der Meinung dass das ein Fehler in der wxWidgets Library ist, also muss ich das eventuell dort fixen. Das Problem ist dass bei den Mouseevents unter bestimmten Umständen ein Flag gesetzt ist, welches behauptet dass der User mit der Maus eine Dragoperation ausführt, obwohl die Maus nichtmal bewegt wird. Das bringt dann meine Dockinglogik durcheinander, weil die darauf angewiesen ist eine Dragoperation zu verfolgen wenn der User ein Fenster herumzieht.

    Also muss ich jetzt erstmal eine Lösung für dieses Problem finden bevor ich wieder weitermachen kann.

  • Nachdem ich das Problem mit dem Mauscursor ein wenig genauer untersucht habe, hatte ich den Eindruck dass dieses Bewegungsflag direkt von Windows selbst kommt. Gibt sogar ein Kommentar in dem entsprechenden Handler in wxWidgets das sowas andeutet. Deshalb habe ich jetzt einen Workaround eingefügt, der selbst feststellt wenn der Mausknopf gedrückt wird und die Maus gezogen wird und damit funktioniert es jetzt. Also kann ich jetzt weiter an echten Problemen arbeiten. :D Mittlerweile habe ich das Demoprogram deutlich verbessert. Der letzte Schritt, der mir noch fehlt ist, dass im Demo ein alternatives Overlay zuschaltbar ist, um diesen Teil des Moduls zu testen.

    Wenn man sich als Beispiel Visual Studio hernimmt, dann bekommt man beim verschieben eines Fensters ja ein Overlay angezeigt in dem man festlegen kann wo man hindocken will. Firefox verwendet z.B. wieder ein komplett andere Methode wie angezeigt wird wo ein Tab hinverschoben wird.

    Das Modul selbst benutzt nur ein kleines Overlay (das von Firefox inspiriert ist) für einen Spezialfall wo die Auswertung der Mausbewegungen nicht dafür ausreicht um selbstständig zu entscheiden wo das Fenster hin soll. Das Modul ist aber so konzipiert dass man dieses Overlay komplett ersetzen kann, so dass beliebige Methoden implementiert werden können, wie das aussehen soll. Deshalb baue ich in das Demo noch die Variante ein dass es mehr wie bei Visual Studio aussieht, und das ganze kann man dann ein- und ausschalten.

    Das Einzige was mir noch nicht gelungen ist, wie man transparente Fenster macht. Ich habe zwar Code eingebaut mit dem man ein Fenster transparent faken kann, aber das funktioniert noch nicht so 100% dass man es nutzen kann. Vor allem wenn man das Fenster dann verschiebt. Aber das kann man vielleicht auch später noch nachholen.

  • Heute hab' ich endlich mal das Intellij Plugin für meinen CodeGenerator fertiggestellt.

    Bitte melde dich an, um diesen Anhang zu sehen.

    "Kaum zu fassen, das bei jedem Menschen, dessen Schädel man nach seinem Tod öffnete, ein Gehirn gefunden wurde".

    Unbekannt


    Meine Projekte : Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen.

    3 Mal editiert, zuletzt von drazil (25. Juni 2023 um 13:18)

  • :gahh: Excel rechnet falsch. :gahh:

    Das richtige Ergebnis wäre -974, aber Excel meint manchmal das -42 und dann wieder -974 richtig wäre. :aerger:

    Ursache scheint ein Bug zu sein, welcher hin und wieder die Sortierung der vorhanden Daten vergisst.

    Das ist eine Matrixformel mit geschweiften Klammern. Das hat mich bestimmt 2-3 Stunden gekostet das

    zu finden. :kaputt

    Da die Tabelle 12MB groß ist habe ich dort das automatische Berechnen ausgeschaltet und lasse die

    Tabelle nur manuell neu berechnen. Da muss man erstmal drauf kommen, das Excel das Problem ist

    und nicht die Tabelle.

    Ich habe die Home and Student 2021 auf meinem PC. Mir scheint als würden neue Versionen von

    Excel immer mehr Fehler bekommen. Auf der Arbeit waren mir auch schon "Merkwürdigkeiten"

    aufgefallen.

    Das PowerPont und Word nicht immer alles so machen wie sie sollen war mir lange bekannt. Da war

    Excel immer was besonderes. Egal wie intensiv ich das Programm in der Vergangenheit verwendet

    hatte, auf Excel konnte ich mich immer mehr verlassen.

    Das scheint in Zukunft nicht mehr zu gelten. :(

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • Heute hab' ich endlich mal das Intellij Plugin für meinen CodeGenerator fertiggestellt.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Sieht nach einem spannenden Projekt aus. Ich bin selbst seit ca einem Jahr beruflich Backend Entwickler mit NodeJS + MariaDB usw. und eine Automation für ein neues frischen Projekt klingt sehr verlockend. Wie sieht denn so ein Template bei dir aus, was dann Backendcode + SQL? daraus erzeugt, wenn ich fragen darf?