Assembler Subroutinen fürs AtariWiki

Moderator: Rockford

Benutzeravatar
LarsImNetz
Beiträge: 156
Registriert: 24.08.2021 18:27
Has thanked: 115 times
Been thanked: 84 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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

Benutzeravatar
Dr. Irata
Beiträge: 946
Registriert: 24.08.2021 14:40
Has thanked: 113 times
Been thanked: 275 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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

Benutzeravatar
Dr. Irata
Beiträge: 946
Registriert: 24.08.2021 14:40
Has thanked: 113 times
Been thanked: 275 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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...

Benutzeravatar
pps
Beiträge: 566
Registriert: 18.06.2021 23:05
Has thanked: 122 times
Been thanked: 225 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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?
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
skr
Beiträge: 154
Registriert: 07.06.2021 00:25
Wohnort: Hamburg, Germany
Has thanked: 85 times
Been thanked: 85 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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.

Benutzeravatar
Dr. Irata
Beiträge: 946
Registriert: 24.08.2021 14:40
Has thanked: 113 times
Been thanked: 275 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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...

Erhard
Beiträge: 602
Registriert: 04.11.2021 15:52
Has thanked: 53 times
Been thanked: 122 times
Kontaktdaten:

Assembler Subroutinen fürs AtariWiki

Beitrag 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

Erhard
Beiträge: 602
Registriert: 04.11.2021 15:52
Has thanked: 53 times
Been thanked: 122 times
Kontaktdaten:

Assembler Subroutinen fürs AtariWiki

Beitrag 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) 888 mal betrachtet
CU, Erhard

Benutzeravatar
cas
Beiträge: 843
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 189 times
Been thanked: 389 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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.

Erhard
Beiträge: 602
Registriert: 04.11.2021 15:52
Has thanked: 53 times
Been thanked: 122 times
Kontaktdaten:

Assembler Subroutinen fürs AtariWiki

Beitrag 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

Benutzeravatar
cas
Beiträge: 843
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 189 times
Been thanked: 389 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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.

Benutzeravatar
skr
Beiträge: 154
Registriert: 07.06.2021 00:25
Wohnort: Hamburg, Germany
Has thanked: 85 times
Been thanked: 85 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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

Online
Benutzeravatar
DjayBee
Beiträge: 678
Registriert: 17.08.2021 04:02
Has thanked: 418 times
Been thanked: 199 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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:

Stefan
Beiträge: 59
Registriert: 11.09.2021 16:38
Has thanked: 56 times
Been thanked: 39 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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:

Benutzeravatar
skr
Beiträge: 154
Registriert: 07.06.2021 00:25
Wohnort: Hamburg, Germany
Has thanked: 85 times
Been thanked: 85 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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:

Erhard
Beiträge: 602
Registriert: 04.11.2021 15:52
Has thanked: 53 times
Been thanked: 122 times
Kontaktdaten:

Assembler Subroutinen fürs AtariWiki

Beitrag 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

Benutzeravatar
Mathy
Beiträge: 1170
Registriert: 18.06.2021 11:13
Wohnort: Heerlen, NL
Has thanked: 478 times
Been thanked: 261 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag von Mathy »

.
Hallo Erhard

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

:mrgreen:

Tschüß

Mathy
Wer oder was hat denn da geblitzt?

Benutzeravatar
cas
Beiträge: 843
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 189 times
Been thanked: 389 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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.

Benutzeravatar
CharlieChaplin
Beiträge: 610
Registriert: 18.06.2021 22:59
Has thanked: 124 times
Been thanked: 161 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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:

Benutzeravatar
cas
Beiträge: 843
Registriert: 18.06.2021 21:01
Wohnort: Solar System
Has thanked: 189 times
Been thanked: 389 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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

Benutzeravatar
JAC!
Beiträge: 120
Registriert: 18.06.2021 23:13
Has thanked: 67 times
Been thanked: 101 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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.
Visit https://www.wudsn.com the home of WUDSN IDE.

Benutzeravatar
LarsImNetz
Beiträge: 156
Registriert: 24.08.2021 18:27
Has thanked: 115 times
Been thanked: 84 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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.

Erhard
Beiträge: 602
Registriert: 04.11.2021 15:52
Has thanked: 53 times
Been thanked: 122 times
Kontaktdaten:

Assembler Subroutinen fürs AtariWiki

Beitrag 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

yMoreT8
Beiträge: 43
Registriert: 18.03.2024 17:33
Has thanked: 7 times
Been thanked: 2 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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?

Benutzeravatar
JAC!
Beiträge: 120
Registriert: 18.06.2021 23:13
Has thanked: 67 times
Been thanked: 101 times
Kontaktdaten:

Re: Assembler Subroutinen fürs AtariWiki

Beitrag 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.
Visit https://www.wudsn.com the home of WUDSN IDE.

Antworten

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 1 Gast