Hallo,
ich bin absoluter Assembler und Maschinensprache Anfänger und habe erste Gehversuche der Maschinensprachprogrammierung auf meinem C128D unternommen was ich hier gerne mal vorzeigen möchte wenn ich darf. Die Profis werden sich zwar kringeln, aber das macht nichts und ich trau mich mal das hier zu zeigen.
Durch die Möglichkeit, die RTC der 1541UII+ auslesen zu können, habe ich mir in den Kopf gesetzt, eine Routine in Assembler zu entwickeln, die die RTC mit Datum der UII+ ausliest und auf dem 80 Zeichen-Schirm in einer zusätzlichen 26. Zeile in den Systeminterrupt eingeklinkt ausgibt. Die 26. zusätzliche Zeile habe ich eingerichtet, weil die vom Betriebssystem unbeeinflusst bleibt.
Für einen Anfänger vielleicht nicht die beste Wahl für einen Anfang, aber wenn ich mir was in den Kopf gesetzt habe, lässt mich das nicht mehr so schnell los. Es war auch nicht wirklich einfach, aber die Uhr läuft. Zwar nicht sehr stabil, weil ja VDC und Interrupt so ihre Probleme miteinander haben aber ich bin schon stolz, dass ich es so hinbekommen habe. Den Fastmodus mag die Routine auch nicht wirklich.
Für die Routine zum Auslesen der UII+ habe ich bei Tokra seiner für GEOS abgeschaut. Ich hoffe das ist erlaubt. Ich habe sehr viel recherchiert, gelesen, assembler gelernt, und Assemblerlistings auseinander genommen um zu verstehen was da so abläuft. So habe ich eine funktionierende Routine gebastelt. Jetzt habe ich einen guten Eindruck, was Assemblerprogrammierung bedeutet.
Zuerst wird die zusätzliche 26. Zeile eingerichtet. Dann wird die RTC der UII+ ausgelesen und in CIA-TOD schreiben. Dann das Datum in der 26. Zeile ausgeben, die Interruptroutine vorbereiten und die Vektoren verbiegen. Die Interruptroutine sollte eignetlich weitere Interrupts tollerieren, aber da bin ich mir noch nicht so sicher. Auf jeden Fall wird der SP überprüft, ob zwischen den IRQ´s irgendetwas am VDC passiert ist. Wenn dem so ist, wird die neue IRQ-Routine einfach übersprungen. Das klappt zwar, aber nicht wirklich zuverlässig. Ich habe aber keine andere Möglichkeit gefunden das wirklich stabil hin zu kriegen (als blutiger Anfänger). Habe das ganze auch mal noch über einen NMI gemacht. Das läuft auch.
Wie auch immer, wer möchte kann sich das ja mal anschauen.
Die Programme laufen ausschließlich auf dem 128er im 80 Zeichenmodus. Wenn keine 1541UII+ angeschlossen ist, merkt das das Programm und wird ohne Ausgabe beendet. Mindestvorraussetzung ist die 1541 Ultimate II+ Firmware 3.1a_500+_v4 von MarcusC64 und aufwärts.
1x mit Sekundenanzeige und 1x ohne Sekunden.
Start ist mit SYS3027. Die Routinen liegen ab $0C00. Idealerweise im Slow-Modus. Im Fast-Modus ist die Routine irgendwie hackelig.
Benutzung auf eigene Gefahr und wer mag, kann ja dazu mal was sagen. Aber bitte, ich bin absoluter Anfänger. Das ist mein absolut 1. Assemblerprogramm.
Viel Spaß und Grüße.