Welcome to Schneider / Amstrad CPC Forum. Please login or sign up.

28. March 2024, 23:49:32

Login with username, password and session length

Shoutbox

TFM

2024-01-15, 17:06:57
Momentan billige Farbbänder auf Ebay für PCW

Devilmarkus

2023-07-09, 10:37:40
Zweiter 👋😂🤣

TFM

2023-06-13, 14:21:49
Sommerloch!

TFM

2023-05-30, 17:00:20
Erster ;-)

Recent

Members
Stats
  • Total Posts: 11,655
  • Total Topics: 1,329
  • Online today: 113
  • Online ever: 1,724
  • (16. January 2020, 00:18:45)
Users Online
Users: 1
Guests: 86
Total: 87

86 Guests, 1 User
Swoop4711

Assemblerecke

Started by Devilmarkus, 05. February 2012, 15:12:21

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

oobdoo

Quote from: TFM on 09. February 2015, 02:11:41Aber wo soll man anfangen?
Naja, wie z.B. die ganzen Vergleichsgeschichten, Addition, Multiplikation, alles als 8/16/32 Bit. Registerwert in String umwandeln, oder oder oder...
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

TFM

Naja ein Register-Wert ist ein 8 Bit oder 16 Bit Wert. Strings bestehen üblicherweise aus 8 Bit Werten, also kannst Du Bytes nacheinander ins RAM schreiben um einen String zu erzeugen. So ein String kann dann entweder durch &00 oder &1A oder &FF beendet werden. Kommt darauf an was man damit macht.

TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

EBO

#32
 

E-Latz




          *= $A000


          LD   HL,inter_
          LD   DE,start_
          LD   B,$81
          JP   $BCD7      ; kl new frame fly

inter_ .FILL 9,0
ladz_0 .BYTE 0

start_    LD   A,$07
          CALL ladz_1
          LD   (ladz_0),A
          LD   A,(ladz_0)
          AND  1
          JR   Z,ladz_2
          SUB  A
          JR   ladz_3

ladz_2    LD   A,$08
          CALL ladz_1
ladz_3    RLCA
          RLCA
          LD   E,A
          LD   D,0
          LD   HL,daten_
          ADD  HL,DE
          LD   DE,$DA34   ; -------------
          PUSH HL
          LDI
          LDI
          LDI
          LDI
          POP  HL
          LD   DE,$E234   ; ------------
          LDI
          LDI
          LDI
          LDI
          LD   A,(ladz_0)
          AND  $02
          JR   Z,ladz_7
          SUB  A
          JR   ladz_4

ladz_7    LD   A,$09
          CALL ladz_1
ladz_4    RLCA
          RLCA
          LD   E,A
          LD   D,$00
          LD   HL,daten_
          ADD  HL,DE
          LD   DE,$DA39   ; -----------------
          PUSH HL
          LDI
          LDI
          LDI
          LDI
          POP  HL
          LD   DE,$E239   ; -------------
          LDI
          LDI
          LDI
          LDI
          LD   A,(ladz_0)
          AND  $04
          JR   Z,ladz_5
          SUB  A
          JR   ladz_6

ladz_5    LD   A,$0A
          CALL ladz_1
ladz_6    RLCA
          RLCA
          LD   E,A
          LD   D,$00
          LD   HL,daten_
          ADD  HL,DE
          LD   DE,$DA3E   ; -----------------
          PUSH HL
          LDI
          LDI
          LDI
          LDI
          POP  HL
          LD   DE,$E23E   ;----------------
          LDI
          LDI
          LDI
          LDI
          RET

ladz_1    DI
          LD   B,$F4
          OUT  (C),A
          LD   B,$F6
          IN   A,(C)
          OR   $C0
          OUT  (C),A
          AND  $3F
          OUT  (C),A
          LD   B,$F7
          LD   D,$92
          OUT  (C),D
          LD   B,$F6
          LD   C,A
          OR   $40
          OUT  (C),A
          LD   B,$F4
          IN   A,(C)
          LD   B,$F7
          LD   D,$82
          OUT  (C),D
          LD   B,$F6
          OUT  (C),C
          EI
          RET




Der Cod ist vom Tass128K
Wer Kamm mir den Code in Maxam Umwandeln

EDIT: Lieber EBO, bitte verwende den freaking Code-Tag!

Devilmarkus

https://cpcwiki.de
Dein Deutsches CPCWiki!

Devilmarkus

#34
daten_ soll wohl der pattern sein?
Da musst Du noch korrigieren!


org &A000


LD HL,inter_
LD DE,start_
LD B,&81
JP &BCD7      ; kl new frame fly

inter_
defs 9
daten_
defs 9
ladz_0
nop

start_
LD A,&07
CALL ladz_1
LD (ladz_0),A
LD A,(ladz_0)
AND 1
JR Z,ladz_2
SUB A
JR ladz_3

ladz_2
LD A,&08
CALL ladz_1
ladz_3
RLCA
RLCA
LD E,A
LD D,0
LD HL,daten_
ADD HL,DE
LD DE,&DA34   ; -------------
PUSH HL
LDI
LDI
LDI
LDI
POP HL
LD DE,&E234   ; ------------
LDI
LDI
LDI
LDI
LD A,(ladz_0)
AND &02
JR Z,ladz_7
SUB A
JR ladz_4

ladz_7
LD A,&09
CALL ladz_1
ladz_4
RLCA
RLCA
LD E,A
LD D,&00
LD HL,daten_
ADD HL,DE
LD DE,&DA39   ; -----------------
PUSH HL
LDI
LDI
LDI
LDI
POP HL
LD DE,&E239   ; -------------
LDI
LDI
LDI
LDI
LD A,(ladz_0)
AND &04
JR Z,ladz_5
SUB A
JR ladz_6

ladz_5
LD A,&0A
CALL ladz_1
ladz_6
RLCA
RLCA
LD E,A
LD D,&00
LD HL,daten_
ADD HL,DE
LD DE,&DA3E   ; -----------------
PUSH HL
LDI
LDI
LDI
LDI
POP HL
LD DE,&E23E   ;----------------
LDI
LDI
LDI
LDI
RET

ladz_1
DI
LD B,&F4
OUT (C),A
LD B,&F6
IN A,(C)
OR &C0
OUT (C),A
AND &3F
OUT (C),A
LD B,&F7
LD D,&92
OUT (C),D
LD B,&F6
LD C,A
OR &40
OUT (C),A
LD B,&F4
IN A,(C)
LD B,&F7
LD D,&82
OUT (C),D
LD B,&F6
OUT (C),C
EI
RET


Edit:
Im Übrigen hättest Du auf diese Lösung mit ein wenig Nachdenken auch kommen können, Ebo...
Dass später noch kleinere Korrekturen hier und da anfallen, ist ja auch logisch dann.
Aber du machst den Fehler und verlässt Dich immer darauf, was Andere Dir geben bzw. für Dich fertig machen.
Schalte bitte mal selber hier oder da deinen Kopf ein, der ist ja nicht nur zum Essen da ;)
https://cpcwiki.de
Dein Deutsches CPCWiki!

EBO

#35
  Equalizer



          *= $A000


          LD   HL,inter_
          LD   DE,start_

/SNIP!!!!!

EBO! Zum letzten Mal, bitte verwende den CODE Tag!



Wer kann mir den  Equalizer Cod von Tass128K auf Maxam umwandeln


oobdoo

Quote from: Devilmarkus on 18. February 2015, 13:02:26
Schalte bitte mal selber hier oder da deinen Kopf ein, der ist ja nicht nur zum Essen da ;)
Manchmal hätte ich gerne einen anderen Kopf auf den Schultern, besonders beim Programmieren.
Gibt nix schlimmeres, als Seiteneffekte bei Z80 Unterprogrammen die man nicht findet.  :motz:
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Devilmarkus

EBO!!! Hirn einschalten, dann posten bitte....
Was habe ich vorher gemacht in deinem Code?

Genau das Gleiche kannst Du hier auch machen.

Du musst nur ein paar Dinge ändern!!!

z.B. wird .BYTE zu DB oder * = $A000 zu ORG &A000!!!!

Man Kerl, denk doch einmal nach....

Und zum letzen Mal: Verwende den CODE Tag!
https://cpcwiki.de
Dein Deutsches CPCWiki!

Devilmarkus

#38
Da ich ja ein lieber Mensch bin:

Hier Ebo, mögen die Macht des Equalizers mit Dir sein...


org &A000


LD HL,inter_
LD DE,start_
LD B,&81
JP &BCD7      ; kl new frame fly

inter_
DEFS 9
ladz_0
DB 0

start_ LD   A,&07
CALL ladz_1
LD (ladz_0),A
LD A,(ladz_0)
AND 1
JR Z,ladz_2
SUB A
JR ladz_3

ladz_2 LD   A,&08
CALL ladz_1
ladz_3 RLCA
RLCA
LD E,A
LD D,0
LD HL,daten_
ADD HL,DE
LD DE,&DA34   ; Equalizer Kanal 1A
PUSH HL
LDI
LDI
LDI
LDI
POP HL
LD DE,&E234   ; Equalizer Kanal 1B
LDI
LDI
LDI
LDI
LD A,(ladz_0)
AND &02
JR Z,ladz_7
SUB A
JR ladz_4

ladz_7 LD   A,&09
CALL ladz_1
ladz_4 RLCA
RLCA
LD E,A
LD D,&00
LD HL,daten_
ADD HL,DE
LD DE,&DA39   ; Equalizer Kanal 2A
PUSH HL
LDI
LDI
LDI
LDI
POP HL
LD DE,&E239   ; Equalizer Kanal 2B
LDI
LDI
LDI
LDI
LD A,(ladz_0)
AND &04
JR Z,ladz_5
SUB A
JR ladz_6

ladz_5 LD   A,&0A
CALL ladz_1
ladz_6 RLCA
RLCA
LD E,A
LD D,&00
LD HL,daten_
ADD HL,DE
LD DE,&DA3E   ; Equalizer Kanal 2A
PUSH HL
LDI
LDI
LDI
LDI
POP HL
LD DE,&E23E   ; Equalizer Kanal 2B
LDI
LDI
LDI
LDI
RET

ladz_1 DI
LD B,&F4
OUT (C),A
LD B,&F6
IN A,(C)
OR &C0
OUT (C),A
AND &3F
OUT (C),A
LD B,&F7
LD D,&92
OUT (C),D
LD B,&F6
LD C,A
OR &40
OUT (C),A
LD B,&F4
IN A,(C)
LD B,&F7
LD D,&82
OUT (C),D
LD B,&F6
OUT (C),C
EI
RET


daten_
db %00000000,%00000000,0,0 ; Hintergrund wenn 0


db &F0,&00,&00,&00 ; Lautstaerke  1
db &FC,&00,&00,&00 ;      "       2
db &FF,&00,&00,&00 ;      "       3
db &FF,&C0,&00,&00 ;      "       4
db &FF,&F0,&00,&00 ;      "       5
db &FF,&FC,&00,&00 ;      "       6
db &FF,&FF,&00,&00 ;      "       7
db &FF,&FF,&C0,&00 ;      "       8
db &FF,&FF,&F0,&00 ;      "       9
db &FF,&FF,&FC,&00 ;      "       10
db &FF,&FF,&FF,&00 ;      "       11
db &FF,&FF,&FF,&C0 ;      "       12
db &FF,&FF,&FF,&F0 ;      "       13
db &FF,&FF,&FF,&FC ;      "       14
db &FF,&FF,&FF,&FF ;      "       15


Wollen wir Wetten abschliessen, dass als nächstes die Frage kommt, was mit den Bildschirmabessen (Adressen) passiert? Wie er die ändern muss?
Vermutlich aber wohl wird die Frage kommen, weshalb der Equalizer zweifarbig ist...
Also antworte ich schonmal vorweg:
Interessiert mich nicht...

Bildschirm wird nicht Abgegessen und die Erklärung, wie man die Position der Balken am Bildschirm berechnen kann, habe ich schoneinmal hier erklärt:
https://cpcwiki.de/forum/index.php/topic,86.0.html

Gibt halt 10 Arten von Menschen: Jene, die Binär verstehen, und Solche, die nicht...
https://cpcwiki.de
Dein Deutsches CPCWiki!

oobdoo

Suchst Du auch meinen Bug? Meine Figur springt immer auf der  selben Position wie ein Flummi um eine Position zurück. Aber nur wenn ich das Monster mit seiner Bewegng dazuschalte.
Ich werd noch waaaaaaaaaaaaaaaahnsinnig.  :motz: :motz: :motz: :motz: :motz: :motz: :motz:
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Devilmarkus

Quote from: oobdoo on 19. February 2015, 17:31:03
Suchst Du auch meinen Bug? Meine Figur springt immer auf der  selben Position wie ein Flummi um eine Position zurück. Aber nur wenn ich das Monster mit seiner Bewegng dazuschalte.
Ich werd noch waaaaaaaaaaaaaaaahnsinnig.  :motz: :motz: :motz: :motz: :motz: :motz: :motz:

Würde ich ja glatt, aber ich befürchte, dafür reichen meine Assemblerkenntnisse nicht aus.... TFM!!!!!!!! *brüllllll ;) Schau mal bitte...

Ansonsten hätt' ich mal glatt auf fehlende PUSH'N'POPs getippt ;)
https://cpcwiki.de
Dein Deutsches CPCWiki!

TFM

Ja, poste mal den Z80 Code und sag mir was den tun soll. Den Bug haben wir gleich.  ;)
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

oobdoo

Quote from: Devilmarkus on 19. February 2015, 17:34:16
Quote from: oobdoo on 19. February 2015, 17:31:03
Suchst Du auch meinen Bug? Meine Figur springt immer auf der  selben Position wie ein Flummi um eine Position zurück. Aber nur wenn ich das Monster mit seiner Bewegng dazuschalte.
Ich werd noch waaaaaaaaaaaaaaaahnsinnig.  :motz: :motz: :motz: :motz: :motz: :motz: :motz:

Würde ich ja glatt, aber ich befürchte, dafür reichen meine Assemblerkenntnisse nicht aus.... TFM!!!!!!!! *brüllllll ;) Schau mal bitte...

Ansonsten hätt' ich mal glatt auf fehlende PUSH'N'POPs getippt ;)
Ach Du mit Deinem Pushen & Popen. Jetzt springt die Figur noch eine Position mehr hin und her.  :motz: :motz: :motz: :motz: :motz: :motz: :motz: :motz: :motz: :motz:

:zunge0020:
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088