Autor Wątek: Rozszerzenie pamięci do CPC 464 - pytania laika  (Przeczytany 19080 razy)

stRing (michomis)

  • ***
  • Wiadomości: 102
  • Miejsce pobytu:
    Banino
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #30 dnia: 2016.02.24, 12:33:53 »
Tylko teraz dopłacisz za sprawdzenie, bo już wszyscy licytujący też wiedzą, że działa.

Zdaję sobie z tego sprawę i przemyślałem to. Wolę jednak trochę dopłacić, niż kupić kota w worku. Oczywiście nic na siłę i nie dajmy się zwariować cenom ;)
aim.atariscene.pl

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #31 dnia: 2016.02.24, 15:28:19 »
Rzeczywiście dodał te foty. No i to jest przykład braku kontroli nad tym co się dzieje z treściami jakie opublikujemy w necie. ;)   Ale co tam, być może nie jest to jedyna osoba która od teraz będzie wiedziała jak taki ram w CPC sprawdzić. :)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

stRing (michomis)

  • ***
  • Wiadomości: 102
  • Miejsce pobytu:
    Banino
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #32 dnia: 2016.02.24, 15:52:57 »
Fakt, mam jednak nadzieję, że nie masz do mnie pretensji? Uznałem, że skoro i tak jest na forum publicznym...
aim.atariscene.pl

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #33 dnia: 2016.02.24, 16:23:48 »
Luzik. :)

łooo jejciu 10x dysków 3" za 130 orzełków. A za 5zł są stacje do 3.5" 
http://allegro.pl/naped-stacja-dyskietek-fdd-1-44-3-5-fv-i5991371706.html
Czarne lub z taśmą za 1 lub 2zł więcej.
Dyskietki 3.5" nowe po 30zł za 10 sztuk...
Używane 15 sztuk za 15zł w pudełeczku lub 80 sztuk w pudełku za 39zł
http://allegro.pl/dyskietki-hd-3-5-80-sztuk-pudelko-i6002796416.html
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #34 dnia: 2016.02.24, 17:50:04 »
łooo jejciu 10x dysków 3" za 130 orzełków. A za 5zł są stacje do 3.5" 

Dyskietki 3" są już obiektem kolekcjonerskim, stąd cena.
Poza tym +3 czy 6128 wygodniej jest używać z dyskietkami 3", niż doklecać jakieś napędy. Kto ma mało miejsca w domu, ten to docenia.

zaxon

  • *****
  • Wiadomości: 4695
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #35 dnia: 2016.02.24, 18:15:05 »
Trojacek a co tu doklecac, wpinasz i jedziesz ;)

Siedem kilo smalcu,gesich jajek kopa,zeby moc to polknac tegiego trza chlopa. GG 3456993

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #36 dnia: 2016.02.24, 18:21:55 »
Zgoda, ale to nie jest rzeczony napęd 3.5" za 5 złotych :D

zaxon

  • *****
  • Wiadomości: 4695
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #37 dnia: 2016.02.24, 18:35:27 »
Ano, no i moje nie chrupie i rzęzi , tzn jeszcze nie,  bo dorobilem plytke co wydaje odglosy stacji ;) Teraz wypadalo by jeszcze poprawic firmware zeby losowo generowalo bledy odczytu ;) No i nie jest za piataka ;)
Siedem kilo smalcu,gesich jajek kopa,zeby moc to polknac tegiego trza chlopa. GG 3456993

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #38 dnia: 2016.02.24, 20:09:45 »
Lepiej stację wymienić niż doczepiać. Proste jak drut. Nie trzeba nic kroić, tylko wtyczkę zasilania odwrotnie wsadzić i wcisnąć wtyczkę na rozciętą taśmę. Bułka z masłem. ;)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

zaxon

  • *****
  • Wiadomości: 4695
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #39 dnia: 2016.02.24, 21:42:48 »
Dla ciebie  :) A wiesz Zbyniu, ja mam codziennie pare osob ktore to przerasta a tez by sobie chcialy na CPC pograc. I po to zrobilem mojego dynksa, wtykaja i dziala, bez " tylko wtyczkę zasilania odwrotnie wsadzić i wcisnąć wtyczkę na rozciętą taśmę"  ;)
Siedem kilo smalcu,gesich jajek kopa,zeby moc to polknac tegiego trza chlopa. GG 3456993

Dr Piotr

  • ***
  • Wiadomości: 196
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #40 dnia: 2016.02.25, 03:11:34 »
Dodatkowe bloki ramdysku są podzielone na kawałki po 16K które można przełączać z obszarem RAMu zaczynającym się od szesnastkowo &4000.
Służy do tego komenda    OUT &7F00,nr_bloku   W rozszerzeniu 64K do CPC464 te bloki mają numery od 196 do 199, a standardowy blok to 192.
Bloki w rozszerzeniu dktronics sa numerowane od 0 do 3 lub 15 w zaleznosci czy to 64kb czy 256kb.
Z basica tak sie je przelacza:  out #7f00, 196+(nr_banku and 3) + (bank AND 28)*2

Choć niektórzy je tak przerabiali by te bloki miały nr takie same jak ramdysk w CPC6128 czyli od 204 do 207, bo dzięki temu więcej softu dla tego modelu działała też na 464.

Banki na 6128 sa numerowane od 0 - te numery, ktore podajesz to nie numer banku tylko wartosc wpisywana do rejestru RMR. Definiuje ona uklad pamieci wg ponizszego schematu:
bit nr 7 6 5 4 3 2 1 0
stan   1 1 p p p x b b
gdy bit 2 jest rowny 1,to:
p stanowi numer 64k strony pamieci (od 0 do 7),  Kazda ze stron jes podzielona na 16kb banki.  bb definiuje nr banku pamieci (0-3) strony p, ktory jest mapowany pod #4000-#7fff
Gdy bit 2 jest rowny 0, to:
p stanowi numer 64k strony pamieci - od 0 do 7.
bity 1 i 0 definuja sposob mapowania bankow pamieci dodatkowej do glownej.
0 - tylko pamiec bazowa
1 - bank 3 strony p od #c000-#ffff
2 - cala pamiec glowna zastapiona strona pamieci p
3 - bank 3 strony p od #c000-#ffff, bank 3 bazowej pamieci #c000-#ffff zmapowany pod #4000-#7fff
Ten tryb (tzw. C3) czesto nie dziala w przypadku zewnetrznych rozszerzen pamieci, bo wymaga wymuszenia z zewnatrz na szynie adresowej sygnalu. Dktronics wykorzystuje tu trick, ktory moze sie zle skonczyc dla z80...
 
464 z Dktronics w kwestii pamieci jest w pelni kompatybilny z 6128. Ta pamiec dziala dokladnie tak samo - to, ze wpisujesz inne wartosci do outa wynika z tego, ze w basicu wiekszosc z opisanych trybow trudno wykorzystac ze wzgledu na polozenie zmiennych systemowych, basica, stosu itp.
Out 7f00, 196 - 196 to inaczej #c4 czyli binarnie 11000100, czyli tryb z bitem 2 rownym 1 - podlaczenie banku 0 ze strony 0 pod #4000. Dodajac 15-30 mozesz przetestowac cala pamiec np. czyms takim:
10 MEMORY &3FFF
20 total=64
30 FOR page=0 TO 7
40 FOR bank=0 TO 3
50 value=&C4+(page*8+bank)
70 OUT &7F00,value: POKE &4000,&FF: OUT &7F00,&C0: POKE &4000,&7F: OUT &7F00,value
80 retval=PEEK(&4000)
90 IF retval=&FF THEN total=total+16: PRINT "Found memory: page ";page;" bank: ";bank
110 NEXT:NEXT
120 OUT &7F00,&C0
130 PRINT "Total mem found:";total;"kb"

Dodałem mój tester RAMu w DSK. Obczaja rozszerzenia do 512K. Teoretycznie zmienna t zmieniona z 31 na 255 powinna badać nawet 4MB, ale w testach na niektórych emulatorach głupieje i bywa że każde dodatkowe 16K liczy jako 128K. Nie jestem pewien czy coś poknociłem w programie czy to te emulatory w rzeczywistości dodają tyle ile wykazuje mój program. Trzeba by to sprawdzić na prawdziwym. ;)

System wspiera tylko max 576kb - wynika to z prostego przeliczenia: 8 stron po 64kb + 64kb podstawowej pamieci. Wszystkie rozwiazania obslugi pamieci powyzej tej wartosci sa rozwiazaniami poszczegolnych producentow i oczywiscie nie sa ze soba w pelni kompatybilne. Zreszta chyba sa tylko 2 lub 3 takie karty

 

stRing (michomis)

  • ***
  • Wiadomości: 102
  • Miejsce pobytu:
    Banino
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #41 dnia: 2016.02.25, 11:08:39 »
No ja za swoje 3 tyg temu dalem ponad 500 PLN ;) Warto by zajrzec do srodka bo niektore wersje sie latwo przerabialo na 256 kb. Ja mam akurat wersje SMD i z nia jest troche gorzej. Ale stresu nie ma bo swoje juz zreversowalem, schemat mam zrysowany, zabezpieczonego gala zlamanego.pewnie lada dzien puszcze prototyp do fabryki. :D

http://allegro.pl/dk-tronics-64k-memory-dla-amstrad-cpc-464-664-i5982032338.html

Na dole nowe obrazki, jak widać jest to wersja z montażem THT.
aim.atariscene.pl

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #42 dnia: 2016.02.25, 11:11:25 »
Wiesz Piotr, super fajnie wytłumaczyłeś te bity, chyba nawet na CPCwiki nie mają takich szczegółowych informacji. Jeszcze to kiedyś na spokojnie przeanalizuję.

Ale twój programik prawidłowo rozpoznaje jedynie 64K oraz 64K+256K SiliconDisk, natomiast wszystkie pozostałe rozpoznaje jako 576K,w tym także 64K+64K.

Nawiasem mówiąc mój tester (ten skrócony w jednej linijce), jedynie taką konfigurację 64K+256K SilDisk rozpoznaje błędnie jako 576K ale już zwykłe 256K oraz każde inne (prócz tych paromegowych) już dobrze. Ale ten mój wcześniejszy dłuższy na DSK prawidłowo obczaja także sam Silicon Disk. Gdybym uwzględnił w tym krótkim tą rzadką Siloconową opcję to musiałbym dodać IF-a i nie zmieściłoby mi się w jednej linijce. ;)

W praktyce jeśli przełączasz na bank którego nie masz, ale masz jakikolwiek bank o mniejszym numerze niż testowany to przełączy się na niego. Stąd twój tester "widzi" nawet te bloki których nie ma. Więc trzeba najpierw powpisywać POKE-i do wszystkich banków i to do każdego inną wartość, i najlepiej zaczynając od największego nr. Bo inaczej to obojętnie z którego banku odczytamy PEEK-a to wszędzie będzie największy nr i to nawet jeśli takiego banku nie mamy. Przerabiałem to parę dni temu jak pisałem ten tester.
No chyba że emulatory mnie robią w ciula bo pamiętam że półtora roku temu jak pierwszy raz takie coś pisałem to umiało odróżnić po samych bankach pamięci 464+64K od 6128. A teraz mam nowsze wersje emulatorów i się nie da. Przydałby się ktoś kto by przetestował to na prawdziwym.

Gdyby 64K Dk'tron. działały identycznie jak 6128 to po podłączeniu go do 6128 nadal by widział tylko 128K a nie więcej. W 256K Dk'tron  64K działa tak jak 6128, dlatego po jego podłączeniu do 6128 mamy 320K a nie 384K.

We wolnej chwili podejrzę jak przełącza bloki to demko z teledyskiem AHA i dowiem się jak testować 4MB. :)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Dr Piotr

  • ***
  • Wiadomości: 196
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #43 dnia: 2016.03.01, 22:29:19 »
No ja za swoje 3 tyg temu dalem ponad 500 PLN ;) Warto by zajrzec do srodka bo niektore wersje sie latwo przerabialo na 256 kb. Ja mam akurat wersje SMD i z nia jest troche gorzej. Ale stresu nie ma bo swoje juz zreversowalem, schemat mam zrysowany, zabezpieczonego gala zlamanego.pewnie lada dzien puszcze prototyp do fabryki. :D

http://allegro.pl/dk-tronics-64k-memory-dla-amstrad-cpc-464-664-i5982032338.html

Na dole nowe obrazki, jak widać jest to wersja z montażem THT.
Heh, no I poszlo za 622 pln... zadziwiajace....

Dr Piotr

  • ***
  • Wiadomości: 196
Odp: Rozszerzenie pamięci do CPC 464 - pytania laika
« Odpowiedź #44 dnia: 2016.03.02, 01:40:58 »
Wiesz Piotr, super fajnie wytłumaczyłeś te bity, chyba nawet na CPCwiki nie mają takich szczegółowych informacji. Jeszcze to kiedyś na spokojnie przeanalizuję.

Ale twój programik prawidłowo rozpoznaje jedynie 64K oraz 64K+256K SiliconDisk, natomiast wszystkie pozostałe rozpoznaje jako 576K,w tym także 64K+64K.

Pisalem go z pamieci - wiec ma prawo nie dzialac :)

W praktyce jeśli przełączasz na bank którego nie masz, ale masz jakikolwiek bank o mniejszym numerze niż testowany to przełączy się na niego. Stąd twój tester "widzi" nawet te bloki których nie ma. Więc trzeba najpierw powpisywać POKE-i do wszystkich banków i to do każdego inną wartość, i najlepiej zaczynając od największego nr. Bo inaczej to obojętnie z którego banku odczytamy PEEK-a to wszędzie będzie największy nr i to nawet jeśli takiego banku nie mamy. Przerabiałem to parę dni temu jak pisałem ten tester.
Nie do konca tak jest - problem polega na tym, ze bity 5-3 sa w 6128 ignorowane (ustawiane przez zewnetrzne urzadzenia np silicon disk). Jesli emulator dodaje dodatkowa pamiec, to polega to na rozpoczeciu interpretowania ktoregos z tych bitow. Pozostale dalej sa ignorowane! I tu lezy problem: zakladajac, ze emulator dodaje dodatkowe 128kb (interpretuje bit 4)
out#7f00,#c4 - wlacza strone 0, bank 0 (drugie 64k ze 128 pamieci podstawowej)
out$7f00,#e4 - wlacza strone 6, bank 0. ale poniewaz bit 5 wciaz jest ignorowany, out jest faktycznie interpretowany jako out #7f00,#c4 i wlaczana jest strona 0. W efekcie program na 6128 zawsze bedzie wykrywal 512kb (chyba ze rozszerzeniem bedzie to silicon disk).
c4 = 11000100
e4 = 11100100
Testowanie pamieci musi byc troche bardziej zlozone np. najpierw testowanie czy jest strona 0 i jej banki
 (if poke(strona 0,bank 0-3)<>peek(basemem) to jest dodatkowa pamiec)
 a pozniej sprawdzenie pozostalych stron
(if poke (strona 1-7, bank 0-3 <>peek(strona 0, bank 0-3) to jest dodatkowa pamiec.)

albo cos w tym rodzaju :)

Gdyby 64K Dk'tron. działały identycznie jak 6128 to po podłączeniu go do 6128 nadal by widział tylko 128K a nie więcej. W 256K Dk'tron  64K działa tak jak 6128, dlatego po jego podłączeniu do 6128 mamy 320K a nie 384K.
Dktronics 64 po podlaczeniu do 6128 wg mnie nie daje w sumie 192kb tylko 128 ale nie mam tego jak sprawdzic.
We wolnej chwili podejrzę jak przełącza bloki to demko z teledyskiem AHA i dowiem się jak testować 4MB. :)
Zdaje sie, ze 4MB rozszerzenie dziala poprzez mapowanie kolejnych 512kb za pomoca adresow #7f00, #7e00, #7d00 itp. Kazdy z tych adresow odpowiada za 512kb i jest analogicznie interpretowany. W ten sposob rozszerzenie jest kompatybilne z 512kb amstrada (#7f00) i dodatkowa pamiecia w blokach po 512kb (#7e00, #7d00, #7c00, #7b00, #7a00,#7900, #7800