Schneider / Amstrad CPC Forum

Amstrad / Schneider CPC => Programmierung => Topic started by: cpcman on 23. November 2018, 16:18:48

Title: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: cpcman on 23. November 2018, 16:18:48
Hallo, guten Tag.

Wie wird bitte  "Print #2,chr$(22);chr$(1)" in ASM gesetzt und "Locate #2,32,14" in ASM ?

danke.
Gruss
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: TFM on 23. November 2018, 17:30:09
Quote from: cpcman on 23. November 2018, 16:18:48
Hallo, guten Tag.
Wie wird bitte  "Print #2,chr$(22);chr$(1)" in ASM gesetzt und "Locate #2,32,14" in ASM ?
danke.
Gruss

Anstatt chr$(22);chr$(1) schreibst Du in Assembler:

DB 22
DB 1


Das selbe gilt für die Zeichen beim Locate Befehl.

Anstatt Print und Locate nimmst Du die System-Einsprünge.
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: cpcman on 23. November 2018, 19:41:06
Danke.

Print #2,chr$(22);chr$(1)
-----------------------
ld a,2
call &bb5a
DB 22
DB 1
----------------------

Irgendwie klappt es nicht.
Ich wollte eigentlich den Textmodus transparent machen.
Wenn sich Buchstaben überlappen sollen die nicht ausgefüllten Bereiche transparent werden.

Gruss
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: HAL6128 on 23. November 2018, 21:18:24
Nein, so einfach ist das nicht. Du musst jeden Wert natürlich einzeln ausgeben.
Also über eine Schleife, und wenn's mehr Text ist, dann mit DB ("Define Byte" Statements). z.B. Ausgabe von "HALLO WELT" im Transparenzmodus, immer an der gleichen Stelle, oder?

ld hl,text
.loop
ld a,(hl)
call &bb5a
inc hl
cp 0
jr nz,loop
ret
.text
db 22,1,72,8,65,8,76,8,76,8,79,8,32,8,87,8,69,8,76,8,84,8,0
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: Devilmarkus on 23. November 2018, 22:19:34
Quote from: cpcman on 23. November 2018, 19:41:06
Danke.

Print #2,chr$(22);chr$(1)
-----------------------
ld a,2
call &bb5a
DB 22
DB 1
----------------------

Das musst du schon genauso machen, wie die Textausgabe an den Drucker, nur dass du statt den Drucker-CALL den PRINT-CALL verwendest...
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: cpcman on 24. November 2018, 09:09:35
Danke für die Info.

Wenn ich von oben dein ASM-Beispiel eingebe , kommt das Bild.
Muss da irgendwie ein Text erscheinen?

Gruss
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: cpcman on 24. November 2018, 09:26:10
Irgendwie bekomme ich das nicht gebacken mit den Transparenten kram.

Gruss
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: cpcman on 24. November 2018, 11:59:02
Funktioniert dieses Transparente auch mit dem Befehl "Tag" ?

Gruss
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: cpcman on 24. November 2018, 13:49:34
Wo findet man den Call um den Hintergrundmodus anzugeben?

irgendwie soll der auch für den Tag-Befehl gelten

Danke.
Gruss
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: cpcman on 24. November 2018, 19:37:12
Habe ihn gefunden  für den TAG.

call #bd46

Gruss
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: HAL6128 on 25. November 2018, 00:05:24
die letzte 8 beim DB Statement vor der 0 am Schluß war zuviel. Normalerweise sollte eine gelbes Rechteck ausgegeben werden, weil alle Buchstaben sich selbst überschreiben...
korrigiert...

org &4000
ld hl,text
.loop
ld a,(hl)
call &bb5a
inc hl
cp 0
jr nz,loop
ret
.text
db 22,1,72,8,65,8,76,8,76,8,79,8,32,8,87,8,69,8,76,8,84,0
Title: Re: Wie wird bitte "Print #2,chr$(22);chr$(1)" in ASM gesetzt?
Post by: cpcman on 25. November 2018, 08:58:46
Danke.
Es funktioniert.

Gruss