Autor Wątek: Skopiowanie większej ilości danych do RAM  (Przeczytany 4033 razy)

siudym

  • *
  • Wiadomości: 45
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #30 dnia: 2021.11.18, 15:35:21 »
Dokladnie, B niepotrzebne :)

W temacie Z80 jak na razie powoli ale do przodu, uczac sie procesora na warsztat wzialem dwa systemy i na chwile obecna cos tam sie udalo sklecic (nieco bardziej zaawansowane HELLO WORLD'y ):

GameBoy klasyczny (wprawdzie procek to jakis custom-Z80 sharpa, ale jest podobnie)
https://www.youtube.com/watch?v=dVYdYis4nSQ

Sega Master System (ty klasyczny Zilog)
https://www.youtube.com/watch?v=BgfkQdMRYa4

Co nastepne? W planach albo MSX bo architektura podobna do SMS, albo ZX :)

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4362
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #31 dnia: 2021.11.18, 15:44:01 »
Takie podstawy podstaw z programowaniem Z80 z analogiami do BASICa opublikowałem w dwóch ostatnich numerach Zin80. Być może pomogą. Link: https://www.speccy.pl/archive/prod.php?id=576

siudym

  • *
  • Wiadomości: 45
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #32 dnia: 2021.11.18, 15:52:14 »
Dzięki, to zawsze jest przydatne :)

Z ksiazek mam pewnie klasyczny, znany zestaw:

matofesi

  • *****
  • Wiadomości: 1904
  • Miejsce pobytu:
    Toruń/Poland
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #33 dnia: 2021.11.18, 15:59:51 »
To ja zawsze jeszcze sugeruję to: http://www.zilog.com/docs/z80/um0080.pdf

steev

  • *****
  • Wiadomości: 1225
  • Miejsce pobytu:
    inode 42
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #34 dnia: 2021.11.18, 17:02:45 »
Machines should work. People should think.

matofesi

  • *****
  • Wiadomości: 1904
  • Miejsce pobytu:
    Toruń/Poland
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #35 dnia: 2021.11.18, 22:11:08 »
@steev Yup. Choć w wypadku kogoś, kto zaczyna albo przechodzi z innej architektury undocumented zaczynają być potrzebne jakoś tak później... ;)

siudym

  • *
  • Wiadomości: 45
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #36 dnia: 2021.11.20, 12:56:51 »
Takie podstawy podstaw z programowaniem Z80 z analogiami do BASICa opublikowałem w dwóch ostatnich numerach Zin80. Być może pomogą. Link: https://www.speccy.pl/archive/prod.php?id=576

Właśnie sobie czytam i coś mnie zastanawia i zgłupiałem już :o
Chodzi o:

Cytuj
LD h,8
LD l,45
jest odpowiednikiem:
LD hl,2093
Powyższe dotyczy także par BC i DE.

Tego nie rozumiem, bo kompilujac wyniki mam takie:

LD H,8                     ;dec
LD L,45

- HL ma adres $082D, a gdy:

LD H,$08                             ;hex
LD L,$45

- HL ma adres $0845
« Ostatnia zmiana: 2021.11.20, 14:13:49 wysłana przez siudym »

trojacek

  • *****
  • Wiadomości: 6274
  • Miejsce pobytu:
    Warszawa
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #37 dnia: 2021.11.20, 13:37:40 »
$082D = 2093 dziesiętnie.

siudym

  • *
  • Wiadomości: 45
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #38 dnia: 2021.11.20, 14:12:16 »
ehhh racja.... nigdy nie uzywam adresow dziesietnie i zakrecilem sie odczytujac "domyslnie" w hex ;)

siudym

  • *
  • Wiadomości: 45
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #39 dnia: Wczoraj o 20:21:14 »
Mam drobną zagwostkę... Mam pewną funkcję, która ma wyczyścić 1008 bajtów ($3F0) - zeruje ona jednak 736 bajtów:

https://i.postimg.cc/1XGt0Kg8/wram.png

ClearWRAM:

LD HL,$C000
LD BC,$03F0
XOR A

ClearWRAM_Loop:

LD (HL),A
INC HL
DEC C
JR NZ,ClearWRAM_Loop
DEC B
JR NZ,ClearWRAM_Loop

RET

- pierwsza pętla wykona DEC C z F0 do 00, po czym wykonuje DEC C wykonując 3x loop 256 bajtow - tak sie jednak nie dzieje

Można oczywiście zrobić tak - działa, ale zastanawia mnie gdzie tkwi błąd wyżej?

Cytuj
ClearWRAM:

   XOR A
   LD ($C000),A

   LD HL,$C000
   LD DE,$C001
   LD BC,1024-15
   LDIR

   RET

matofesi

  • *****
  • Wiadomości: 1904
  • Miejsce pobytu:
    Toruń/Poland
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #40 dnia: Wczoraj o 20:38:03 »
Gwoli ścisłości wypełnia ci 752 (0x2f0) bajty a to dlatego, że w B masz 3 - pierwsze 240 kończy z 2 w B, potem 256 z 1 i na koniec 256, po którym B schodzi do zera - 240+256+256 - 752 :)

trojacek

  • *****
  • Wiadomości: 6274
  • Miejsce pobytu:
    Warszawa
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #41 dnia: Wczoraj o 21:02:59 »
Pętla w pętli? Jest sens tak komplikować?

    LD HL, $C000
    LD B, 252    ; 1008 / 4
    XOR A

LOOP
    LD (HL), A
    INC HL
    LD (HL), A
    INC HL
    LD (HL), A
    INC HL
    LD (HL), A
    INC HL
    DJNZ LOOP


Pisane w samolocie na telefonie,  więc wybaczcie brzydkie formatowanie.

BTW, ten LDIR powinien mieć  w BC 1024 - 17, czyli 1007.

siudym

  • *
  • Wiadomości: 45
Odp: Skopiowanie większej ilości danych do RAM
« Odpowiedź #42 dnia: Wczoraj o 21:28:52 »
Heh jak zwykle banalne rozwiązanie, źle przeanalizowałem. Dzięki.