Autor Wątek: Tryb gigascreen  (Przeczytany 122835 razy)

matofesi

  • *****
  • Wiadomości: 2073
  • Miejsce pobytu:
    Toruń/Poland
Odp: Tryb gigascreen
« Odpowiedź #90 dnia: 2012.03.19, 23:05:00 »
....A to, co popełniłem teraz ukaże się dopiero za parę dni.......
forever?

Owszem. Szału nie ma - moje w Dizzzruptorze jest intro ze skaczącą kulką. Ale wydaje mi się, że po tylu latach jak na pierwszą robótkę wyszło nie najgorzej ;)

YERZMYEY/HOOY-PROGRAM

  • *****
  • Wiadomości: 1187
  • Miejsce pobytu:
    Rubber Planet
  • AY RIDERS
    • ZX Spectrum demos/games
Odp: Tryb gigascreen
« Odpowiedź #91 dnia: 2012.03.19, 23:11:02 »
MAT:

> Szału nie ma
-------------------
Nieprawda, właśnie, że zajebiste intro, już 505 zachwalał na jakimś forum, że bardzo klimatyczne itp. :)

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Tryb gigascreen
« Odpowiedź #92 dnia: 2013.02.09, 00:45:09 »
Ja tylko chciałem powiedzieć, że ten żółwik na początku wątku jest, jest yyy eeee WOW !! taki jest. :)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Tryb gigascreen
« Odpowiedź #93 dnia: 2018.03.25, 09:16:22 »
Czy na ZX 128 możliwe jest przełączanie 3 lub więcej ekranów? Jeśli tak, to jakie wartości OUT 32765,x można jeszcze wykorzystać?
I do którego banku ładować na starcie?
Ja standardowo dla przełączania dwóch ekranów w programie używam x=16 i 24.
W loaderze jest POKE 23388,y. Dla dwóch screenów pierwszy ładuje sie pod 49152 ustawiając y=21, dla drugiego adres ten sam, y=23.
Później przez POKE 23388,16 wracam do standardowego RAMu i tam ładuję swój kod.
Wiele razy widziałem mapę banków ZX 128, ale na żadnej nie znalazłem jaka wartość OUT czy POKE który z nich aktywuje.

AY Music, ULA plus.

trojacek

  • *****
  • Wiadomości: 6941
  • Miejsce pobytu:
    Warszawa
Odp: Tryb gigascreen
« Odpowiedź #94 dnia: 2018.03.25, 10:32:11 »
Z tego co wiem, to tylko dwa - z banków 5 i 7. Sama ULA nie współpracuje z mechanizmem bankowania RAM, a ma jedynie dodatkowy sygnał wejściowy (podłączony do rejestru 174), nakazujący ULA ustawienie A15 w stanie niskim (ekran standardowy, od 16384) lub wysokim (drugi ekran, od 49152).
4 ekrany to tylko na Timeksie przerobionym na 128K :)

Dalthon

  • ****
  • Wiadomości: 431
  • Miejsce pobytu:
    TriCity
Odp: Tryb gigascreen
« Odpowiedź #95 dnia: 2018.03.25, 12:20:03 »
Tutaj masz fajnie opisane jak wygląda "bankowanie" na 128:
https://neuro.me.uk/projects/wos/sinclairfaq.dev/dev/reference/128kreference.htm

FFFFh +--------+--------+--------+--------+--------+--------+--------+--------+
      | Bank 0 | Bank 1 | Bank 2 | Bank 3 | Bank 4 | Bank 5 | Bank 6 | Bank 7 |
      |        |        |(also at|        |        |(also at|        |        |
      |        |        | 8000h) |        |        | 4000h) |        |        |
      |        |        |        |        |        | screen |        | screen |
C000h +--------+--------+--------+--------+--------+--------+--------+--------+
      | Bank 2 |        Any one of these pages may be switched in.
      |        |
      |        |
      |        |
8000h +--------+
      | Bank 5 |
      |        |
      |        |
      | screen |
4000h +--------+--------+
      | ROM 0  | ROM 1  | Either ROM may be switched in.
      |        |        |
      |        |        |
      |        |        |
0000h +--------+--------+


A co do samych wartości to zapomnij o POKE 23388 - to działa tylko w BASIC'u. W kodzie procka przełączanie banków jest prosta:

ld a,x
ld bc,32765
out (c),a

gdzie za x  podajesz:

16 - bank 0 i wyświetla grafikę z 16384 (bank 5)
17 - bank 1 i wyświetla grafikę z 16384 (bank 5)
18 - bank 2 i wyświetla grafikę z 16384 (bank 5)
19 - bank 3 i wyświetla grafikę z 16384 (bank 5)
20 - bank 4 i wyświetla grafikę z 16384 (bank 5)
21 - bank 5 i wyświetla grafikę z 16384 (bank 5)
22 - bank 6 i wyświetla grafikę z 16384 (bank 5)
23 - bank 7 i wyświetla grafikę z 16384 (bank 5)

24 - bank 0 i wyświetla grafikę z 49152 (bank 7)
25 - bank 1 i wyświetla grafikę z 49152 (bank 7)
26 - bank 2 i wyświetla grafikę z 49152 (bank 7)
27 - bank 3 i wyświetla grafikę z 49152 (bank 7)
28 - bank 4 i wyświetla grafikę z 49152 (bank 7)
29 - bank 5 i wyświetla grafikę z 49152 (bank 7)
30 - bank 6 i wyświetla grafikę z 49152 (bank 7)
31 - bank 7 i wyświetla grafikę z 49152 (bank 7)
ZX Spectrum +2 Grey | Just Speccy 128 | ZX Spectrum Next | ZX-Uno 2MB |  Murmulator | Amstrad 6128 | MSX Fenner SPC-800 | MSX2 Philips VG-8235 | Tatung Einstein | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Tryb gigascreen
« Odpowiedź #96 dnia: 2018.03.25, 13:38:32 »
A który bank jest widoczny pod 4000h w chwili gdy 5 jest podłączony pod C000h ?
I  który bank jest widoczny pod 8000h w chwili gdy 2 jest podłączony pod C000h ?
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

trojacek

  • *****
  • Wiadomości: 6941
  • Miejsce pobytu:
    Warszawa
Odp: Tryb gigascreen
« Odpowiedź #97 dnia: 2018.03.25, 15:10:25 »
a) ten sam
b) ten sam

To bardzo prosta logika bankowania. Dopiero w czarnych +2 oraz w +3 jest to nieco bardziej zawiłe.

Dalthon

  • ****
  • Wiadomości: 431
  • Miejsce pobytu:
    TriCity
Odp: Tryb gigascreen
« Odpowiedź #98 dnia: 2018.03.25, 15:11:20 »
A który bank jest widoczny pod 4000h w chwili gdy 5 jest podłączony pod C000h ?
pod 4000h ZAWSZE jest bank 5 (1)
I  który bank jest widoczny pod 8000h w chwili gdy 2 jest podłączony pod C000h ?
pod 8000h ZAWSZE jest bank 2 (2)

Zmieniając banki zmienia się tylko zawartość od C000h - w powyższych przypadkach te same dane są widoczne pod 4000h i C000h (1) i 8000h i C000h (2)

Dopiero w czarnych +2 oraz w +3 jest to nieco bardziej zawiłe.
Uprzedziłeś moją odpowiedź :) A co do special mode, to nie mieszaj chłopakowi i mówimy tutaj o rozwiązaniach kompatybilnych ze wszystkimi modelami 128K :)
ZX Spectrum +2 Grey | Just Speccy 128 | ZX Spectrum Next | ZX-Uno 2MB |  Murmulator | Amstrad 6128 | MSX Fenner SPC-800 | MSX2 Philips VG-8235 | Tatung Einstein | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Tryb gigascreen
« Odpowiedź #99 dnia: 2018.03.25, 15:17:49 »
Ja tu sobie żyję w błogiej nieświadomości a teraz trojacek mi mówi że nie wszystkie 128ki mają tak samo.

Czyli....
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Dalthon

  • ****
  • Wiadomości: 431
  • Miejsce pobytu:
    TriCity
Odp: Tryb gigascreen
« Odpowiedź #100 dnia: 2018.03.25, 15:22:33 »
Czyli... poprzez port 1FFDh można ustawiać dodatkowe kombinacje:

       Bit 2 =0    Bit 2 =0    Bit 2 =1    Bit 2 =1
       Bit 1 =0    Bit 1 =1    Bit 1 =0    Bit 1 =1
 FFFFh+--------+  +--------+  +--------+  +--------+
      | Bank 3 |  | Bank 7 |  | Bank 3 |  | Bank 3 |
      |        |  |        |  |        |  |        |
      |        |  |        |  |        |  |        |
      |        |  | screen |  |        |  |        |
 C000h+--------+  +--------+  +--------+  +--------+
      | Bank 2 |  | Bank 6 |  | Bank 6 |  | Bank 6 |
      |        |  |        |  |        |  |        |
      |        |  |        |  |        |  |        |
      |        |  |        |  |        |  |        |
 8000h+--------+  +--------+  +--------+  +--------+
      | Bank 1 |  | Bank 5 |  | Bank 5 |  | Bank 7 |
      |        |  |        |  |        |  |        |
      |        |  |        |  |        |  |        |
      |        |  | screen |  | screen |  | screen |
 4000h+--------+  +--------+  +--------+  +--------+
      | Bank 0 |  | Bank 4 |  | Bank 4 |  | Bank 4 |
      |        |  |        |  |        |  |        |
      |        |  |        |  |        |  |        |
      |        |  |        |  |        |  |        |
 0000h+--------+  +--------+  +--------+  +--------+


Jest to opisane w linku który podałem trochę wyżej ;)
ZX Spectrum +2 Grey | Just Speccy 128 | ZX Spectrum Next | ZX-Uno 2MB |  Murmulator | Amstrad 6128 | MSX Fenner SPC-800 | MSX2 Philips VG-8235 | Tatung Einstein | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Tryb gigascreen
« Odpowiedź #101 dnia: 2018.03.25, 15:47:19 »
Czy to znaczy, że używając OUT 32765, 16 do 23 mogę załadować 2 screeny do przełączania pod 16384, przełączać tymi samymi wartościami i w ogóle nie przejmować się, że mogą wejść na mój kod?

Czy bank 0 jest rownoznaczny Main RAM, np. w debuggerze Spin, czy Main RAM, to zawartość tego, co jest akurat aktywne?

Banki mają po 16kB, screen ma niecałe 7. Domyślam się że banki podłączane pod 16384 podmieniają RAM do 32767, w tym zmienne systemu i Basic. Czy tylko sam ekran?

Czy ta ostatnia mapa nad moim postem dotyczy tylko modeli +2 +3?

AY Music, ULA plus.

Dalthon

  • ****
  • Wiadomości: 431
  • Miejsce pobytu:
    TriCity
Odp: Tryb gigascreen
« Odpowiedź #102 dnia: 2018.03.25, 16:13:22 »
Czy to znaczy, że używając OUT 32765, 16 do 23 mogę załadować 2 screeny do przełączania pod 16384, przełączać tymi samymi wartościami i w ogóle nie przejmować się, że mogą wejść na mój kod?
tak - tzn. że możesz przełączać 2 screeny ale pod 16384 jest tylko jeden - ten z bank 5, drugi jest pod adresem 49152 (bank 7). Oczywiście jeśli przełączysz na bank 5, to wyświetlany będzie z 16384 ale dane od 16384-32767 będą identyczne z 49152-65535

Czy bank 0 jest rownoznaczny Main RAM, np. w debuggerze Spin, czy Main RAM, to zawartość tego, co jest akurat aktywne?
nie używam debuggera Spina więc nie potwierdzam ale podejrzewam że raczej bank 0...

Banki mają po 16kB, screen ma niecałe 7. Domyślam się że banki podłączane pod 16384 podmieniają RAM do 32767, w tym zmienne systemu i Basic. Czy tylko sam ekran?
nie... nie... nie... tak jak pisałem zmiana banków dotyczy adresów pamięci 49152-65535 (w standardzie, bo o special mode nie mówimy). W zależności od ustawienie bitu 3 wyświetla się obraz z 16384-23295 lub 49152-56063 (bank7). Zmienne systemowe, BASIC czy bufor drukarki jest na swoim niezmiennym miejscu.

Czy ta ostatnia mapa nad moim postem dotyczy tylko modeli +2 +3?
tylko +2a i +3 - bo już +2 ma standardową mapę 128K
ZX Spectrum +2 Grey | Just Speccy 128 | ZX Spectrum Next | ZX-Uno 2MB |  Murmulator | Amstrad 6128 | MSX Fenner SPC-800 | MSX2 Philips VG-8235 | Tatung Einstein | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

trojacek

  • *****
  • Wiadomości: 6941
  • Miejsce pobytu:
    Warszawa
Odp: Tryb gigascreen
« Odpowiedź #103 dnia: 2018.03.25, 17:47:19 »
Uprzedziłeś moją odpowiedź :) A co do special mode, to nie mieszaj chłopakowi i mówimy tutaj o rozwiązaniach kompatybilnych ze wszystkimi modelami 128K :)

Jak dobrze, że Cię tu mamy na forum :) Mogłem się bez nerwów oddać długiemu spacerowi po Madrycie. No ale teraz... Muszę to napisać. Po prostu muszę.
+2a/b i +3 nie są do końca zgodne z toastrakiem i szarakiem. Dość istotną różnicą - bardziej w przypadku dem niż gier - jest fakt, że inne banki są contended. W toastracku i szaraku contended są 1, 3, 5 i 7. W nowszych - nie pamiętam, ale jest to inna kombinacja. Można sobie wyobrazić, co się zacznie dziać, gdy w pamięci contended odpali się kod robiący jakieś sztuczki na obrazie... Piszę z telefonu, więc nie chce mi się guglać po szczegóły, ale na WoS jest wszystko ładnie opisane.

Dalthon

  • ****
  • Wiadomości: 431
  • Miejsce pobytu:
    TriCity
Odp: Tryb gigascreen
« Odpowiedź #104 dnia: 2018.03.25, 21:41:14 »
No ale teraz... Muszę to napisać. Po prostu muszę.
+2a/b i +3 nie są do końca zgodne z toastrakiem i szarakiem. Dość istotną różnicą - bardziej w przypadku dem niż gier - jest fakt, że inne banki są contended.
ale nikt nie pisał że są zgodne :) mowa była o mapie banków :D Z racji na zróżnicowanie które banki są contended a które nie w konkretnym modelu, nikt kodu "wrażliwego" na ten fakt nie trzyma w innym banku niż 2 czy 0.
ZX Spectrum +2 Grey | Just Speccy 128 | ZX Spectrum Next | ZX-Uno 2MB |  Murmulator | Amstrad 6128 | MSX Fenner SPC-800 | MSX2 Philips VG-8235 | Tatung Einstein | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200