Autor Thema: Assemblerecke  (Gelesen 16492 mal)

0 Mitglieder und 2 Gäste betrachten dieses Thema.

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Assemblerecke
« Antwort #30 am: 09. Februar 2015, 15:53:36 »
Aber 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

Offline TFM

  • Administrator
  • CPC 6128+
  • *****
  • Beiträge: 3293
  • Liked: 781
  • Karma: +43/-0
  • Geschlecht: Männlich
  • FutureSoft und CPC - Ein starkes Team!
    • FutureOS
Re: Assemblerecke
« Antwort #31 am: 09. Februar 2015, 22:24:14 »
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: 24.01.2021)
http://futureos.cpcwiki.de/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 21.01.2021)

Offline EBO

  • Registrierter
  • CPC 664
  • *
  • Beiträge: 149
  • Liked: 20
  • Karma: +6/-4
  • Geschlecht: Männlich
  • Ich mache gerne noch was am CPC 6128
Re: Assemblerecke
« Antwort #32 am: 16. Februar 2015, 21:49:00 »
 
 
 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!
« Letzte Änderung: 18. Februar 2015, 18:35:13 von TFM »

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1113
  • Liked: 367
  • Karma: +39/-0
Re: Assemblerecke
« Antwort #33 am: 17. Februar 2015, 01:02:44 »
Was ist ein E-Latz?
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1113
  • Liked: 367
  • Karma: +39/-0
Re: Assemblerecke
« Antwort #34 am: 18. Februar 2015, 13:02:26 »
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 ;)
« Letzte Änderung: 18. Februar 2015, 13:29:38 von Devilmarkus »
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline EBO

  • Registrierter
  • CPC 664
  • *
  • Beiträge: 149
  • Liked: 20
  • Karma: +6/-4
  • Geschlecht: Männlich
  • Ich mache gerne noch was am CPC 6128
Re: Assemblerecke
« Antwort #35 am: 19. Februar 2015, 16:22:08 »
  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

« Letzte Änderung: 19. Februar 2015, 17:16:20 von Devilmarkus »

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Assemblerecke
« Antwort #36 am: 19. Februar 2015, 16:39:58 »
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

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1113
  • Liked: 367
  • Karma: +39/-0
Re: Assemblerecke
« Antwort #37 am: 19. Februar 2015, 17:20:18 »
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!
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1113
  • Liked: 367
  • Karma: +39/-0
Re: Assemblerecke
« Antwort #38 am: 19. Februar 2015, 17:24:53 »
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:
http://cpcwiki.de/forum/index.php/topic,86.0.html

Gibt halt 10 Arten von Menschen: Jene, die Binär verstehen, und Solche, die nicht...
« Letzte Änderung: 19. Februar 2015, 17:29:58 von Devilmarkus »
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Assemblerecke
« Antwort #39 am: 19. Februar 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:
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

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1113
  • Liked: 367
  • Karma: +39/-0
Re: Assemblerecke
« Antwort #40 am: 19. Februar 2015, 17:34:16 »
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 ;)
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline TFM

  • Administrator
  • CPC 6128+
  • *****
  • Beiträge: 3293
  • Liked: 781
  • Karma: +43/-0
  • Geschlecht: Männlich
  • FutureSoft und CPC - Ein starkes Team!
    • FutureOS
Re: Assemblerecke
« Antwort #41 am: 19. Februar 2015, 17:43:07 »
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: 24.01.2021)
http://futureos.cpcwiki.de/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 21.01.2021)

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Assemblerecke
« Antwort #42 am: 19. Februar 2015, 19:05:54 »
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