Seite 2 von 2

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 05.01.2024 15:59
von LarsImNetz
Dr. Irata hat geschrieben:
05.01.2024 13:23
... erste kleine Subroutine ist drin - bitte mal testen !

--> Mathe / Betrag
Top!
Aber!
Um das jetzt gleich mal zur Diskussion zu stellen, ich würde es etwas ausführlicher machen.

1. Ruhig etwas mehr Prosa
2. Gerne ab und zu die "Enter/Return" Taste, damit Werte leichter verständlich sind. Ich mag es nicht und finde es schrecklich, wenn in einer Zeile bla und blub und foo und bar stehen.
3. Gerne darf auch ein Beispiel in Basic folgen.
4. Desweiteren sollten wir uns angewöhnen den Wertebereich mit anzugeben. Gerade bei 16 Bit kommt gerne mal verwirrender Code dabei heraus.
5. In Assembler sollte eine Sprungmarke immer eine eigene Zeile bekommen, sonst zerreißt es den Code gerne mal.
6. Assembler-Code sollte immer mit einem Namen für die "Funktion" anfangen.
7. Bitte gerne auch Kommentare, warum es einen Sprung gibt (hier hinter bcs) oder.


Meine Idee(n) würden also so aussehen:

------------------- snip ----------------------
Betrag bestimmen bei Subtraktion:

mathematisch:
Beispiel:
c = |a-b|
also bei
a=10 und b=6 => c=4
und bei
a=6 und b=10 => c=4

In Basic:
c = abs(a-b)

In Assembler:
Der Wertebereich ist hier nur 8Bit also 0-255

Code: Alles auswählen

betrag
	sec
	lda a
	sbc b
	bcs weiter  ; (a >= b) --> weiter
	sbc #0
	eor #$ff    ; Zahl nochmal negieren
weiter
	sta c

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 05.01.2024 16:23
von Dr. Irata
Hallo Lars,
für Wünsche, Korrekturen und Verbesserungen bin ich immer sehr empfänglich.
Ich werde das berücksichtigen und wir werden mit der Zeit da auch ein einheitlicheres Schriftbild entwickeln.
Basic Beispiele finde ich durchaus gut, sie sollten aber nicht zu lang sein.
Auch wenn es vielleicht nicht jedem gefällt, aber ich möchte die Subroutinen so machen, daß sie direkt in den MADS-Crossassembler passen. Es wird einen eigenen Unterpunkt für MADS und auch Eclipse geben, wo man spezielle Dinge genau erklärt.
Liebe Grüße
Peter

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 05.01.2024 17:20
von Dr. Irata
... 2 erste Beiträge sind drin, wobei ich Beitrag 2 noch überarbeiten muss ...

Den Beitrag für "betrag" habe ich angepasst. Dabei bin ich mir noch nicht so ganz sicher, wie die Systematik wird.
Es sollen ja primär Subroutinen für Assembler sein als Nachschlagwerk, wo man einfach Routinen, die man braucht findet und in sein Programm einbinden kann. Da viele in MADS entwickeln kann das schon auch MADS - spezifisch sein, wobei ich aber durchaus komplexere Eigenheiten raushalten will, so daß jeder den Code problemlos verstehen kann.

Die Subroutinen kommen direkt nach ganz oben, die Erklärungen und auch mögliche Basic-Beispiele folgen weiter unten. Das hat den Vorteil, daß man die nötigen Routinen direkt hat und für sich kopieren kann.
Wer nachlesen will, bekommt das ja darunter erklärt.

Wir fangen erstmal so an und werden sicherlich noch einiges anpassen und verändern mit der Zeit!

Es fehlt dann noch der Link von ABBUC auf das Wiki...

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 05.01.2024 18:31
von pps
Wie machen wir das nun? Alles an @Dr.Irata schicken oder ein Konto im wiki aufmachen, selbst eintragen und Peter schaut dann drüber, ob es so passt?

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 05.01.2024 19:09
von skr
LarsImNetz hat geschrieben:
05.01.2024 15:59
Top!
Aber!
Um das jetzt gleich mal zur Diskussion zu stellen, ich würde es etwas ausführlicher machen.
Volle Zustimmung von meiner Seite! Sonst haben wir nachher nur eine tolle Sammlung von Code, die vielen nicht wirklich hilft, weil einfach zuviel Kontext fehlt.

Der Eintrag "Addition" gefällt mir da schon sehr gut.

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 05.01.2024 20:13
von Dr. Irata
... das wird sich alles entwickeln ... mehr Erklärungen und Text finde ich auch richtig und wichtig.
Artikel gerne erstmal zu mir, damit ich das sichten und ordnen kann...

Assembler Subroutinen fürs AtariWiki

Verfasst: 06.01.2024 10:53
von Erhard
Hi,

wenn ich im Bereich SIO mitarbeiten soll würde ich mir eine Umbenennung des Hauptpunktes wünschen, da ich auch SIO-Kommandos von weiteren Peripheriegeräten aufführen würde.

Dann sollte der Punkt vielleicht einfach Atari SIO heißen und die ersten Unterpunkte, die mir so einfallen würden wären "_Standardkommandos für Disk", Atari 810, Atari 1050, Happy 1050, Speedy 1050, PERCOM Block, APE, SIO2USB usw alphabetisch sortiert.

Cheers, Erhard

Assembler Subroutinen fürs AtariWiki

Verfasst: 07.01.2024 09:44
von Erhard
Hi,

mir fällt gerade ein, daß es sich anbieten könnte, noch eine Schicht (Geräteklasse <=> ID) dazwischenzuschieben.

Das sähe dann wie folgt aus (zu erweiterndes Beispiel):
Struktur.png
Struktur.png (6.01 KiB) 1972 mal betrachtet
CU, Erhard

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 07.01.2024 15:30
von cas
Sachen die man nicht braucht: im Webserver des Atari Wiki hat eine Festplatte den Geist aufgegeben, das Wiki läuft derzeit nur auf einer Platte (ohne Redundanz). Neue Platte(n) sind bestellt.

Assembler Subroutinen fürs AtariWiki

Verfasst: 07.01.2024 17:16
von Erhard
cas hat geschrieben:
07.01.2024 15:30
das Wiki läuft derzeit nur auf einer Platte (ohne Redundanz)
der typische Zeitpunkt, wo man sicher sein sollte, daß man eine vollständige und rücksicherbare Datensicherung hat :-)

CU, Erhard

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 07.01.2024 17:24
von cas
Ja, das Backup teste ich gerade :)

Trotz RAID10 (Mirror) hat eine MySQL Datenbank Schaden genommen. Diese spiele ich gerade zurück. Das Backup-Set des für diese DB ist 711 GB gross, und der Restore dauert ~3 Stunden (von Festplatte).

Backup läuft aber nur alle 24 Stunden, daher ist es gut trotzdem ein RAID 10 zu haben.

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 07.01.2024 19:45
von skr
Ja, Dinge die man nicht braucht. Ich starte jetzt gleich auf Arbeit ein BackUp und Transfer von 600TB. Was soll schon schiefegehen, sind ja nur drei Gewerke parallel am Start. :D

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 07.01.2024 19:58
von DjayBee
skr hat geschrieben:
07.01.2024 19:45
Ja, Dinge die man nicht braucht. Ich starte jetzt gleich auf Arbeit ein BackUp und Transfer von 600TB. Was soll schon schiefegehen, sind ja nur drei Gewerke parallel am Start. :D
Und wo liegt das Problem wenn bei 600TB ein paar GB fehlen? A bisserl Schwund is immer. :lol:

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 07.01.2024 22:03
von Stefan
cas hat geschrieben:
07.01.2024 15:30
Sachen die man nicht braucht: im Webserver des Atari Wiki hat eine Festplatte den Geist aufgegeben, das Wiki läuft derzeit nur auf einer Platte (ohne Redundanz). Neue Platte(n) sind bestellt.
Dann war das Wiki deshalb nicht erreichbar :shock: und ich habe hier bei mir Fehler gesucht :roll:

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 08.01.2024 16:34
von skr
DjayBee hat geschrieben:
07.01.2024 19:58
Und wo liegt das Problem wenn bei 600TB ein paar GB fehlen? A bisserl Schwund is immer. :lol:
Dreh halt mal ein Bit in Deiner Software und frag nochmal. :mrgreen:

Assembler Subroutinen fürs AtariWiki

Verfasst: 09.01.2024 16:28
von Erhard
Hi,

DjayBee hat geschrieben:
07.01.2024 19:58
ein paar GB fehlen
Du kannst die "paar Gigabyte" ja gerne mit der Hand mal abschreiben :-)

CU, Erhard

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 09.01.2024 21:44
von Mathy
.
Hallo Erhard

Wieso abschreiben, das geht doch mit dem TurboFreezer, oder?

:mrgreen:

Tschüß

Mathy

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 10.01.2024 17:34
von cas
Die neue Platte ist eingebaut, in den kommenden Stunden wird das RAID die Daten auf die neue Platte kopieren, der Server ist in dieser Zeit ein wenig langsamer.

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 10.01.2024 19:27
von CharlieChaplin
Erhard hat geschrieben:
09.01.2024 16:28
Hi,

DjayBee hat geschrieben:
07.01.2024 19:58
ein paar GB fehlen
Du kannst die "paar Gigabyte" ja gerne mit der Hand mal abschreiben :-)

CU, Erhard
Zur Strafe: Abtippen mit AMPEL ! :mrgreen:

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 13.01.2024 12:17
von cas
Die Internetanbindung im Rechenzentrum ist ausgefallen ... daher gibt es derzeit keinen Zugriff auf das Atari Entwickler Wiki.

Die Störung sollte bald behoben sein.

Carsten

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 13.01.2024 22:34
von JAC!
Neuer Wikispace für das Thema und auf Deutsch klingt nach einer guten Idee. D.h. User dafür wäre erst mal separat, korrekt?
Ich mache beruflich fast alles mit (Confuence) Wiki und mein Tipp wäre, die Navigation links primär alphabethisch zu sortieren (ggfs. mit "Übersicht/Einführung") als TOP je Kapitel.

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 19.03.2024 16:17
von LarsImNetz
Bin gerade über ein Stückchen ASM-Code gestolpert, wo ich überlegen musste, was das macht.

Code: Alles auswählen

; Irgend ein Wert in den Akku laden...
        lda Value

; Wert, auf den wir vergleichen wollen, hier $FF
        cmp #$ff ; sollte der Value $ff enthalten, ist das Status Register ......ZC 

; Hier der besagte Code, die Kommentare hab ich mal drangepinselt, fürs Verständnis.
        php      ; Status Register auf Stack sichern
        pla      ; Status Register vom Stack in Akku auslesen
        lsr      ; ......ZC -> .......Z
        and #1   ; 1. Bit maskieren
        
; liefert 1 im Akku, wenn Value == $FF oder 0 wenn Value != $FF und das in nur 5 Bytes.

Assembler Subroutinen fürs AtariWiki

Verfasst: 20.03.2024 08:28
von Erhard
Hi,

von _tricksigem_ Assembler hab ich ja keine Ahnung ... aber doch vielleicht ein Gedanke:

Bei einem Vergleich folgt ja üblicherweise eine Verzweigung mit BNE/BEQ usw

Hier könnte man mit dem Ergebnis des Vergleichs aber rechnen oder das Bit speichern und das ohne unterschiedliche Anzahl von Taktzyklen bei Verzweigung oder Nicht-Verzweigung...

CU, Erhard

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 26.03.2024 07:39
von yMoreT8
LarsImNetz hat geschrieben:
19.03.2024 16:17
Bin gerade über ein Stückchen ASM-Code gestolpert, wo ich überlegen musste, was das macht.
Ich würde Deinen Ausführungen so zustimmen, auch wenn ich rätsele was man mit dem Ergebnis machen sollte? Einen Wert in einem Register zu haben hat ja noch keine Funktion. Wird dann danach mit dem Wert gerechnet oder konditionell verzweigt (Branch)? Dann könnte man doch direkt eine CMP+BNE/BEQ ausführen?

Re: Assembler Subroutinen fürs AtariWiki

Verfasst: 26.03.2024 22:15
von JAC!
Bei bestimmten Timing-kritischen Routine kommt es auf jede Takt an oder halt darauf, es man immer genau gleich viele Takte braucht. Das gilt bei Highspeed SIO/Interrupt-Routinen oder beim "Racing the Beam" auf dem Atari VCS. Dort muss man in jeder Bildschirmzeile taktgenau die TIA Register updaten. Sonst ruckelt/flackert es Und BNE usw. brauch nun mal unterschiedlich viele Takt je nach "springen/kein springen".

In "normalen" Assemblerroutine kommt es nicht auf 1-2 Takte an und man würde das einfacher codieren.