Grafikausgabe
von Ingo70 » Fr 29. Mär 2019, 19:17Hallo,
bin gerade an meinem ersten Assembler-Projekt. Ich will eine Verbrauchserfassung für Gas, Wasser und Strom programmieren.
Hierzu hab ich das Fenster zweigeteilt: Oben das Textfenster (Antic 2) und unten Hires (Antic 15). Oben soll die Texteingabe der Verbräuche erfolgen und unten will ich diese als Diagramm zeichnen. Dazu wollte ich die DrawTo-Routinen benutzen. Beim Atmas-Assembler ist ein Beispielprogramm, mit dem man sowas realisieren kann.
Nur funktioniert das bei mir nicht und ich weiß nicht, was da falsch ist.
Vielleicht kann ja mal einer drüberschauen.
Ich hab mal meinen und den Quelltext von der Grafiklib angehängt.
Gruß
Ingo
bin gerade an meinem ersten Assembler-Projekt. Ich will eine Verbrauchserfassung für Gas, Wasser und Strom programmieren.
Hierzu hab ich das Fenster zweigeteilt: Oben das Textfenster (Antic 2) und unten Hires (Antic 15). Oben soll die Texteingabe der Verbräuche erfolgen und unten will ich diese als Diagramm zeichnen. Dazu wollte ich die DrawTo-Routinen benutzen. Beim Atmas-Assembler ist ein Beispielprogramm, mit dem man sowas realisieren kann.
Nur funktioniert das bei mir nicht und ich weiß nicht, was da falsch ist.
Vielleicht kann ja mal einer drüberschauen.
Ich hab mal meinen und den Quelltext von der Grafiklib angehängt.
- 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>
- Code: Alles auswählen
*************************
* VERBRAUCHSERFASSUNG
*
* START: 21.03.2019
*************************
SDLSTL EQU $230
ROWCRS EQU $54
COLCRS EQU $55
CRSINH EQU $2F0 CRSR SICHTBAR
COL1 EQU $2C5 ZEICHEN COL
COL2 EQU $2C6 HG COL
COL4 EQU $2C8 RAHMEN COL
COLRA EQU $F8
COLHG EQU $06
COLZ EQU $C
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
*
* 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
ORG $9000
JSR INIT
JMP *
*************************
INIT LDA #DLIST
STA SDLSTL
LDA #DLIST/256
STA SDLSTL+1
LDA #COLRA
STA COL4
LDA #COLHG
STA COL2
LDA #COLZ
STA COL1
LDA #$45
STA ATACHR
LDA #$18
STA $58
LDA #$AD
STA $59
PLOT 79,0
DRAWTO 159,47
DRAWTO 79,95
DRAWTO 0,47
RTS
*************************
DLIST DFB $10
DFB $42
DFW $AAE8
DFB $02,$02,$02,$02,$02,$02
DFB $02,$02,$02,$02,$02,$02
DFB $02
DFB $30
DFB $4F
DFW $AD18
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $4F
DFW $B6A0
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F,$0F
DFB $0F,$0F,$0F,$0F,$0F
DFB $41
DFW DLIST
Gruß
Ingo