Autor Wątek: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze  (Przeczytany 12830 razy)

SAJ

  • *****
  • Wiadomości: 1484
  • Miejsce pobytu:
    Terra Prime
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #15 dnia: 2017.09.29, 21:49:33 »
Hejka,

Nie jest modyfikujacym sie, bo wszystko jest zdeterminowane, przed wejsciem w petle.

ten snippet po prostu kopiuje obszar pamieci do innego obszaru pamiec z tym, ze jesli  ilosc bajtow do skopiowania jest dluzsza niz np 8kb, to przelacza Bank na Bank +1 i kopiuje dalej az dlugosc pliku nie spadnie do zera.

po krotce kopiuje gierke z ROMu w Cartridgeu i ja potem uruchamia, a ze Cart ma 512K (29F040) to potrzebne sa banki do plikow nagranych dalej.




Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #16 dnia: 2017.09.29, 21:55:37 »
Tak, ale chodziło mi konkretnie, w sensie "kopiuje dane począwszy od adresu .... do obszaru .... "
No dobrze. Jeśli przy kopiowaniu nie trzeba przełączać banków, to robi się to tak:

LD HL, adres_skąd
LD DE, adres_dokąd
LD BC, długość
LDIR
czyli w tym przypadku, o ile dobrze to odczytuję:
LD HL, $8200
LD DE, $0801
LD BC, długość
LDIR

SAJ

  • *****
  • Wiadomości: 1484
  • Miejsce pobytu:
    Terra Prime
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #17 dnia: 2017.09.29, 22:04:27 »
Super,

To wydaje sie w miare proste.

Teraz zakladajac, ze bank ma 8KB i mam do przeniesienia 37KB, z ktorych pierwszy bajt jest gdzies w polowie banku 2 i konczy sie w banku 5, gdzie bank musi byc przelaczony trzy razy....

Przelaczenie banku odbedzie sie komenda  OUT <PORT>, <BANK>, ktora musze wcisnac w odpowiednich momentach podczas kopiowania.

Pozdrawiam.

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #18 dnia: 2017.09.29, 22:55:55 »
Banki są w cartridżu i są od $8000?
To tak:
   LD A, (BANK)
   OUT (PORT), A
   LD HL, $8200
   LD DE, $0801
   LD BC, długość
LOOP:
   LDI
   JP PO, DALEJ    ;skok jeśli już całe skopiowane czyli BC=0
   LD A,H
   CP $A0       ; czy koniec banku
   JR NZ, LOOP
   LD H, $80
   LD A,(BANK)
   INC A
   LD (BANK),A
   OUT (PORT),A
   JR LOOP
DALEJ:
   ; tu skaczemy po skopiowaniu
   ;
BANK  DEFB 2  ;tu przechowujemy numer banku
   
   


pear

  • *****
  • Wiadomości: 5511
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #19 dnia: 2017.09.30, 08:33:27 »
Nie jest modyfikujacym sie, bo wszystko jest zdeterminowane, przed wejsciem w petle.
W takim razie co to jest jak nie modyfikacja kodu:
Cytuj
CADDR:    lda $8200
MADDR:    sta $0801         
.....
CC1:  inc MADDR+1
.....
          inc MADDR+2
CC2:  inc CADDR+1
.....
          inc CADDR+2
To jest inkrementacja zawartości komórki pamięci w obszarze kodu.
ZX/Enterprise/CPC/Robotron/C128D

SAJ

  • *****
  • Wiadomości: 1484
  • Miejsce pobytu:
    Terra Prime
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #20 dnia: 2017.09.30, 09:24:17 »
Faktycznie masz racje.

Przepraszam i zwracam honor :)

Teraz czy mog poprosic o cos podobnego na z80 ?

Pozdro.

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #21 dnia: 2017.09.30, 09:45:33 »
A moje niedobre?

SAJ

  • *****
  • Wiadomości: 1484
  • Miejsce pobytu:
    Terra Prime
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #22 dnia: 2017.09.30, 10:23:57 »
Wyabcz Phonex, Nie zauwazylem.

Juz sie zbieram do testow :)

Pozdro.


SAJ

  • *****
  • Wiadomości: 1484
  • Miejsce pobytu:
    Terra Prime
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #23 dnia: 2017.09.30, 12:13:48 »
Tak na marginesie, wyralem Pasmo jako kompiler.

Mam nadzieje, ze to dobry wybor.

Pozdrawiam.

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #24 dnia: 2017.09.30, 20:26:26 »
Tak czy siak modyfikacja kodu czy też inkrementacja komórki to w obu przypadkach nie da się tego bezpośrednio uruchomić z ROMu, i na tym polega wada takich rozwiązań.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

SAJ

  • *****
  • Wiadomości: 1484
  • Miejsce pobytu:
    Terra Prime
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #25 dnia: 2017.10.02, 11:20:38 »
Tak czy siak modyfikacja kodu czy też inkrementacja komórki to w obu przypadkach nie da się tego bezpośrednio uruchomić z ROMu, i na tym polega wada takich rozwiązań.

No Tak to fakt.

W C64 Mapa pamieci jest taka, ze pod ardesem $0340 jest 192 wolnych bajtow, ktore normalnie sa buforem dla kasety.
Ten obszar dziala znakomicie jako lokacja dla programu do kopiowania, bo programy zazwyczaj nie uzywaja tego obszaru, przynajmniej w trakcie ladowania.

W Zx jak sie domyslam, tez trzeba bedzie znalezc taki obszar i na ta chwile, z tego co widze najlepiej by bylo gdzies na samym koncu, ale to by wtedy nie dzialalo na wersji 16kb.

W Cobrze mam 256 bajtow wolnych z kilobajta pamieci ekranu zaraz za obszarem wyswietlanym, w ktorych wiem, ze raczej nic nie ma, bo oprogramowanie jest ladowane od $0000 do ~ $Bf00

Jesli sa jakies sugestie na najlepsza lokacje dla kilkubajtowego programiku kopiujacego tak, zeby nie pojawil sie w obszarze programu kopiowanego to poprosze :)

Pozdrawiam.

pear

  • *****
  • Wiadomości: 5511
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #26 dnia: 2017.10.02, 11:49:50 »
W ZX Spectrum takim miejscem może być bufor drukarki, który ma 256 bajtów i zaczyna się zaraz za pamięcią obrazu.
ZX/Enterprise/CPC/Robotron/C128D

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Potrzebuje Kilka drobnych funkcji na Z80 w Assemblerze
« Odpowiedź #27 dnia: 2017.10.02, 12:07:12 »
Pod warunkiem, że to nie jest 128, bo ten ma tam procedury przełączania banków.
Może być też WORKSPACE, czy obszar informacji o kanałach ze zmiennych systemowych.
Jak gra się już uruchomi, to może użyć tych obszarów, ale wtedy to już chyba nieistotne.
Chyba nie ma co się martwić o Spectrum 16K, kto teraz ma taki? ;) A nawet jak ma, to jaka gra na nim pójdzie?