Grafikkursus mit der XIO-Welt vom Atari800xl

1, 2

Grafikkursus mit der XIO-Welt vom Atari800xl

von wichtel » Do 12. Jan 2012, 16:52
Hallo guten Tag.

Wer fühlt sich stark genug und kann mal einen kleinen Kursus hier reinbringen für ASM oder ACTION! wo diese Grafikbefehle : Grafikmodus, Fill, Draw, Plot Pos... mit dem XIO benutzt werden ?
Natürlich für Anfänger...schritt für schritt.

Ich habe schon etwas darüber gelesen, aber einen "Roten Faden" habe ich darin noch nicht gefunden.
Vielleicht geht es einigen so ?

Danke.

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von dl7ukk » Do 12. Jan 2012, 17:58
Auch einen schönen Tag,
wichtel hat geschrieben:Hallo guten Tag.
Wer fühlt sich stark genug und kann mal einen kleinen Kursus hier reinbringen für ASM oder ACTION! wo diese Grafikbefehle : Grafikmodus, Fill, Draw, Plot Pos... mit dem XIO benutzt werden ?
Natürlich für Anfänger...schritt für schritt.
Ich habe schon etwas darüber gelesen, aber einen "Roten Faden" habe ich darin noch nicht gefunden.
Vielleicht geht es einigen so ?
Danke.


ich selbst kann Deinem Wunsch nicht entsprechen.

Es ist schön, dass Du Dich für die Programmierung des ATARI 8 Bit interessierst, aber ich glaube dass ein Forum nicht die richtig Plattform dafür ist. Ganz einfach, weil die Livetime der Beträge doch eher kurz und die Zahl der Akteure begrenzt ist.

Das ist daran zu merken, dass häufig, bis sehr oft die gleichen bzw. sehr ähnelnde Fragen aufgeworfen werden.
Das ist natürlich kein Problem, dafür ist das Forum da.

Aber Dir kann dennoch geholfen werden. Es gib Einiges über die XIO im Profibuch, in Disk-Magazinen, wie dem CSM oder TOP-Mag und ich glaube auf Carstens Site ist auch was dazu. Auch eine Suche im Forum und auf der ABBUC Site wird was bringen. Ich habe auf der Suche nach "XIO" ca. 60 Ergebnisse erhalten.

Und ich bin sicher, wenn Du eine ganz konkrete Frage hier im Forum stellst, bekommst Du auch eine Antwort

Viel Spass am und mit dem ATARI :!:

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von wichtel » Do 12. Jan 2012, 18:48
Ich dachte, weil es Weltweit das grösste ATARI-Forum ist, das es hier doch einige Menschen gibt , die so etwas aus dem Handgelenk schütteln können. :D

Im Systemhandbuch stehen die Befehle aufgelistet, werden aber nur allgemein beschrieben.
In der Wike steht nichts darüber, wie man diese Befehle anwendet für die Grafik.
Diskettenbetrieb, der wird 99x beschrieben mit den XIO-Befehlen.
Cas hat sich darüber auch nicht ausgelassen mit einem Beispiel in der Wiki , wie zb ein Plot oder Draw damit erstellt wird, vom Anfang der DPL bis zur Ausführung eines PLOT-DRAW.

Danke für deine Mühe.

Wenn du etwas gefunden hast, wie das oben genannte erstellt wird für einen Anfänger, dann lass es mir dankenswerter Weise zukommen.

Ich habe jetzt schon mehrmals festgestellt, das meine Fragen irgendwie zu Tief ins eingemachte gehen, aber ich möchte lernen und keine Spiele runterdaddeln, ich bin entspannt genug und brauch mir das mit den Spielen nicht antun. :D

Wichtel

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von eda70 » Do 12. Jan 2012, 18:50
Ich sehe das ähnlich wie dl7ukk. Fang doch ein Tutorial an und stell dann präzise Fragen, dann ist es wahrscheinlich leichter dir zu helfen.
Zuallererst würde mich mal interessieren, warum du direkt über die xio gehen willst.
Action bspw. hat die Funktionen eingebaut Graphics(), Plot(), DrawTo(), Fill()
Diese Funktionen werden ebenfalls über die CIO (XIO) ausgeführt.

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von wichtel » Do 12. Jan 2012, 18:59
Diese Funktionen werden ebenfalls über die CIO (XIO) ausgeführt.


Für Action! habe ich schon mal die Frage hier gestellt, ob mir ein Fachman mal den Code entschlüsseln kann, weil der nur als HEX dort steht.
Ich möchte es wissen, einfach wissen...um es dann wieder anwenden zu können.
Ich finde es toll das so etwas im Atari schlummert.

Fang doch ein Tutorial an und stell dann präzise Fragen

Ich möchte die Befehle benutzen in meiner Sprache : FORTH
DIe Befehle mit dem XIO : PLOT,DRAW,POS, dazu brauche ich aber die Hilfe, wie die Angewendet werden in der Grundlage.

Ist meine Frage so Abwägig ? :D Ich glaube die ist Präzise gestellt.
Ich versteh jetzt die vielen Rückfragen nicht. :?: um mein ausgedachtes Problem zu lösen.

Wichtel.

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von dl7ukk » Do 12. Jan 2012, 19:05
Hi,
wichtel hat geschrieben:Wenn du etwas gefunden hast, wie das oben genannte erstellt wird für einen Anfänger, dann lass es mir dankenswerter Weise zukommen.


Ich glaube Du gibst mir Recht, dass es nur wenig bringt, wenn ich bei der Suche fündig werde und dann alles hier noch ein mal rein schreibe. So was bläht doch nur unnötig das Forum auf. Außerdem findet man sehr oft beim Suchen, oder Rumstöbern recht Interessantes. :) Du musst nur den Begriff "XIO" in die Suchmaske oben Rechts im Forum eingeben. Trau Dich einfach mal. :!:

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von pps » Do 12. Jan 2012, 21:58
Für die gewünschten Funktionen gibt es sicherlich viel schnellere Sachen, als mit XIO zu arbeiten.

Ein PLOT ist auch in FORTH mittels eines POKE in den Grafikbereich sicherlich schneller erledigt.

Für "Grafik 15" gibt es ab dem DPEEK(560) jeweils 40 Bytes je Zeile. Jedes Byte bietet Dir dabei 4 Pixel, da jeweils 2 den Farbwert darstellen.

00
01
10
11

sind die möglichen Werte dieser Paare.

Code: Alles auswählen
A=DPEEK(560)
POKE A,128

Dieses TurboBasic Programm würde somit in der oberen linken Ecke einen Punkt setzen.

Wogegen POKE A,1 den Punkt 3 Pixel weiter setzen würde.

POKE A+39,1 setzt somit den Punkt oben rechts.

Will man nun eine Linie in einer Farbe von links nach rechts setzen, kann man das mit einer einfachen Schleife von 0 bis 39 tun.

Dabei muß man nur an die Farbe denken, die man setzen möchte.

01 würde also heißen, daß unser zu POKEndes Byte so aussehen würde: 01010101
Bit 1,3,5 und 7 sind also gesetzt. Dezimal ist unser Wert dann: 85

Code: Alles auswählen
FOR I=0 TO 39
  POKE A+I,85
NEXT I

So könnte unser DRAW aussehen.

Edit sagt: 560 bitte durch 88 ersetzen!!!

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von wichtel » Do 12. Jan 2012, 22:30
Danke erstmal.

Wichtel

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von eda70 » Fr 13. Jan 2012, 09:45
pps hat geschrieben:Ein PLOT ist auch in FORTH mittels eines POKE in den Grafikbereich sicherlich schneller erledigt.
Deswegen meine Frage warum unbedingt über die XIO-Befehle. Auch in Action geht das direkte Schreiben in den Bildschirspeicher schneller, muss aber im Zweifel für jede Grafikstufe neu programmiert werdern.
Ein guter Artikel, der die Standard-System-Routine mit einer eigenen für eine bestimmte Grafikstufe verlgeicht findet sich für Action >>im Wiki<<

wichtel hat geschrieben:Für Action! habe ich schon mal die Frage hier gestellt, ob mir ein Fachman mal den Code entschlüsseln kann, weil der nur als HEX dort steht..
Das ist einfach nur der Aufruf des jeweiligen Xio/Cio und das Voreinstellen der Parameter.

Ich halte es nach wie vor für sinnvoller, wenn man richtig fragt. Nicht plain, wie geht XIO, sondern erläutert, was man vor hat und wie man dieses Ziel erreichen will und welche Hürde gerade unüberwindlich scheint. Je mehr der Fragende in die Frage investiert um so mehr wird auch der Antowortende investieren...

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von wichtel » Fr 13. Jan 2012, 11:20
Ja danke.

Deswegen meine Frage warum unbedingt über die XIO-Befehle. Auch in Action geht das direkte Schreiben in den Bildschirspeicher schneller, muss aber im Zweifel für jede Grafikstufe neu programmiert werdern.


Die Grafikfehle in ACTION! benutzen auch diese Routinen aus dem ATARI-ROM.
Mir geht es nicht unbedingt um die Schnelligkeit. Ich möchte diesen XIO-Befehl mal begreifen und Anwenden.
Ich weiss absolut nicht, wo ich etwas hineinschreiben muss um den Grafikmodus aufzurufen und dann PLOT/DRAW auszuführen. Diese Frage brennt in mir !

Die DPL ist ja bei mir schon Vorhanden mit dem jeweiligen Adressbereich für den Grafikscreen (160x96 und 3 Farben)

Das ist einfach nur der Aufruf des jeweiligen Xio/Cio und das Voreinstellen der Parameter.


Und dieses was du oben Einfach nennst , treibt mich noch in den Ruin... :D , ich Pack es nicht, wo ich was hineinschreiben muss.


Danke.

Wichtel.

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von eda70 » Fr 13. Jan 2012, 13:37
So ganz weiß ich immer noch nicht, was du sucht.
die Xio Befehle stellen die Daten für die CIO zusammen.

Beispiel Plot
Crusor über COLCRS und ROWCRS setzten
Übertragungsart in ICCOM des gewünschten Kanals schreiben (bei Grafik Kanal 6) für Plot $B (11) = CPBINR
ICBLEN auf 0 setzen
Farbe in den AKKU
und die CIO aufrufen.
(So müßte es gehen, ansonsten korigiert mich bitte...)

Diese Einstellerei übernimmt der Xio-Befehl bzw. die entsprechenden Grafikbefehle.
Schneller geht wie pps geschreiben hat, das direkte manipulieren des Bildschirspeichers.

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von wichtel » Fr 13. Jan 2012, 13:42
Danke.

Wo wird denn der Grafikspeicheranfang eingetragen von der DPL?

Wichtel

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von dl7ukk » Fr 13. Jan 2012, 14:05
Hi wichtel,

Das verstehe ich ja nun gar nicht mehr.
wichtel hat geschrieben:Wo wird denn der Grafikspeicheranfang eingetragen von der DPL?
Wichtel

wichtel hat geschrieben:Die DPL ist ja bei mir schon Vorhanden mit dem jeweiligen Adressbereich für den Grafikscreen (160x96 und 3 Farben)

… … dann hast Du doch den Grafikspeicheranfang, wenn Du den Adressbereich hast :?::?::?:

Was willst Du denn wirklich ?

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von HiassofT » Fr 13. Jan 2012, 15:34
Beim ATMAS-II Assembler war ein kleines Programm dabei, das die Verwendung der Graphics, Color, Position, Plot und Drawto Routinen im OS (CIO "S:" Handler) demonstriert:

Code: Alles auswählen
*********************************
*         GRAFLIB.SRC
*
*        Makro-Bibliothek
*
*          GRAPHIK
*
*       Fuer ATMAS-II
*                      PETER FINZEL
***********************************
*
* IOCB-Struktur:
*
ICCOM    EQU $342
ICSTA    EQU $343
ICBAL    EQU $344
ICBAH    EQU $345
ICBLL    EQU $348
ICBLH    EQU $349
ICAX1    EQU $34A
ICAX2    EQU $34B

CIOV     EQU $E456

* CIO-Befehle

COPEN    EQU   3
CCLSE    EQU  12
CGTXT    EQU   5
CPTXT    EQU   9
CGBIN    EQU   7
CPBIN    EQU  11
CDRAW    EQU $11

* ATARI Graphik-Variable

ATACHR   EQU  $2FB
ROWCRS   EQU  $54 CURSOR-
COLCRS   EQU  $55 POSITION

*
* GRAPHICS-Befehl
*
* Aufruf: GRAPHICS <stufe>
*
* <stufe> 0 bis 15 (XLs)
*         0 bis 11 (400/800)
*
GRAPHICS MACRO STUFE
         JMP GR1@

DEV@     ASC "S:"

GR1@     LDX #$60
         LDA #CCLSE        ZUERST KANAL 6
         STA ICCOM,X       SCHLIESSEN
         JSR CIOV
         LDA #STUFE        JETZT NEUE GRAPHIK
         STA ICAX2,X       STUFE ANWAEHLEN
         AND #$F0
         EOR #$10
         ORA #$0C
         STA ICAX1,X
         LDA #COPEN
         STA ICCOM,X
         LDA #DEV@
         STA ICBAL,X
         LDA #DEV@/256
         STA ICBAH,X
         JSR CIOV
         MEND
*
* Auswahl der Zeichenfarbe
*
* Aufruf: COLOR <farbe>
*
* <farbe> von 0 bis 255, je nach
*         Graphikmodus, muss eine
*         Konstante sein.
*

COLOR    MACRO COL
         LDA #COL
         STA ATACHR
         MEND

*
* Positionierung des Cursors
*
* Aufruf: POSITION <x>,<y>
*
* <x>,<y> je nach Graphikmodus, beide
*         muessen Konstante sein
*
*
POSITION MACRO X,Y
         LDA #X
         STA COLCRS
         LDA #X/256
         STA COLCRS+1
         LDA #Y
         STA ROWCRS
         MEND

* Graphik-Punkte setzen
*
* Aufruf: PLOT <x>,<y>
*
* <x>,<y> je nach Graphikmodus,
*         muss sich um Konstane
*         handeln
*
PLOT     MACRO X,Y
         POSITION X,Y
         LDX #$60          KANAL 6
         LDA #CPBIN
         STA ICCOM,X
         LDA #0
         STA ICBLL,X
         STA ICBLH,X
         LDA ATACHR
         JSR CIOV
         MEND

*
* Graphik-Linien ziehen
*
* Aufruf: DRAWTO <x>,<y>
*
* <x>,<y> je nach Graphikmodus
*         Konstante
*
DRAWTO   MACRO X,Y
         POSITION X,Y
         LDX #$60          KANAL 6
         LDA #CDRAW
         STA ICCOM,X
         LDA #CCLSE
         STA ICAX1,X
         LDA #0
         STA ICAX2,X
         JSR CIOV
         MEND

*************************************
* Demo-Programm f. Graphik-Bibliothek
*
* zeichnet Raute in GRAPHICS 7
*************************************

*
* befindet sich im reservierten
* Speicherplatz fuer Objektcode
*
         ORG $A800

         GRAPHICS 7+16
         COLOR 1
         PLOT 79,0
         DRAWTO 159,47
         DRAWTO 79,95
         DRAWTO 0,47
         DRAWTO 79,0

ENDLOS   JMP ENDLOS
*
* Abruch mit <RESET>
*

so long,

Hias

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von pps » Fr 13. Jan 2012, 21:23
Zunächst mal eine wichtige Fehlerbereinigung: Ich hatte oben geschrieben, der Bildschirmzeiger ist bei 560, das ist natürlich falsch! Dort ist der Zeiger für die DL und der Bildschirmzeiger steht bei 88.


Wenn Du in TurboBASIC per GR.15 die Grafikstufe gesetzt hast, kannst Du per DPEEK(88) herausfinden, wo der Bildschirmspeicher beginnt.

Schreibst Du eine eigene DL, so mußt Du die Adresse 88 per DPOKE(88,ADRESSE) eintragen.

Im Basic ist der Start des Bildschirms irgendwo bei $BC20 (oder war es $BC40?). Im Prinzip kannst Du das frei auswählen im freien Speicherbereich, du mußt nur bei 4k Grenzen aufpassen (also jede glatte $1000er Zahl) - dort hat der ANTIC einen Fehler, den man in einer DL mit einem neuen LMA abfangen muß.

Bsp DL für ein paar GR.0-Zeilen:

Wir schreiben diese jetzt mal nach $7800.

Code: Alles auswählen
$70,$70,$70                 ;3x8 leere Bildschirmeilen
66                          ;GR.0 Zeile plus LMA
$00,$80                     ;Bildschirm soll bei $8000 beginnen
2,2,2,2                     ;4 weitere GR.0 Zeilen
$41                         ;DL wieder von vorne
$00,$78                     ;DL in Lo/Hi


Nun muß noch die DL in den Zeiger ab 560: DPOKE(560,$7800)
Und der Bildschirm in die 88 und 89: DPOKE(88,$8000)

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von wichtel » Sa 14. Jan 2012, 00:30
Ja, danke.
Das ist sehr viel gute Information, die ich jetzt verarbeiten werde.

Danke.

Wichtel

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von wichtel » Sa 14. Jan 2012, 00:37
Ist das die Adresse (HI/LO), wo der String "S:" drin liegt ?
LDA #DEV@
STA ICBAL,X
LDA #DEV@/256
STA ICBAH,X


Code: Alles auswählen
DEV@     ASC "S:"     

GR1@     LDX #$60
         LDA #CCLSE        ZUERST KANAL 6
         STA ICCOM,X       SCHLIESSEN
         JSR CIOV
         LDA #STUFE        JETZT NEUE GRAPHIK
         STA ICAX2,X       STUFE ANWAEHLEN
         AND #$F0
         EOR #$10
         ORA #$0C
         STA ICAX1,X
         LDA #COPEN
         STA ICCOM,X
         LDA #DEV@
         STA ICBAL,X
         LDA #DEV@/256
         STA ICBAH,X
         JSR CIOV
         MEND


Wie ich sehe, wird oben im ASM-Beispiel keine DPL angelegt ?
Wird die automatisch mit der angegebenen Grafikstufe : GRAPHICS 7+16 angelegt ?

Danke.

Wichtel

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von eda70 » Sa 14. Jan 2012, 16:57
2 mal ja. Für einen einfachen Grfikbildschirm , der durch den Graphics-Befehl (BASIC oder Action) aufgerufen wird, wird eine Standard DL genutzt (sollte aber auch alles im Profibuch drin stehen).

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von eda70 » Sa 14. Jan 2012, 16:57
2 mal ja. Für einen einfachen Grfikbildschirm , der durch den Graphics-Befehl (BASIC oder Action) aufgerufen wird, wird eine Standard DL genutzt (sollte aber auch alles im Profibuch drin stehen).

Re: Grafikkursus mit der XIO-Welt vom Atari800xl

von wichtel » Sa 14. Jan 2012, 18:31
Danke für die Auskunft.

Wichtel
1, 2