Autor Wątek: Timingi 48K, 128K i klonów  (Przeczytany 14470 razy)

gorgh

  • ***
  • Wiadomości: 128
  • Miejsce pobytu:
    Wyszków
Timingi 48K, 128K i klonów
« dnia: 2018.08.06, 16:13:11 »
a tak przy okazji mam pytanie:
Ile cykli ULA zabiera Z80 przy rysowaniu ekranu?
ANTIC potrafi zabrać do 30% cykli 6502 :O

Dalthon

  • ****
  • Wiadomości: 428
  • Miejsce pobytu:
    TriCity
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #1 dnia: 2018.08.08, 12:00:21 »
Ile cykli ULA zabiera Z80 przy rysowaniu ekranu?
ze mnie żaden teoretyk ino praktyk, co to robi coś bo tak trzeba a do końca nie wie dlaczego (pozostałości z lat 88-91 gdy nie miałem dostępu do żadnej literatury - a teraz tak mi zostało:P)
ale samo wyświetlanie obrazu jest stałe i ilość dostępnych cykli na ramkę jest stała i zależy od modelu:
48kB - 69888 T
128kB/+2/+2A/+3 - 70908 T
No chyba że coś namieszałem ale pewnie mnie wtedy mądrzejsi ode mnie poprawią :)

Najprostszym sprawdzaniem czy się efekt "wyrabia w ramce" jest puszczenie tego w pętli:

time:
      xor a ; czyli ld a,0 - black
      out (254),a

      call efekt

      ld a,2 ; red
      out (254),a
      halt
      jp time

Na borderze widać ile czasu w ramce zabiera efekt.
ZX Spectrum +2 Grey | Just Speccy 128 | ZX Spectrum Next | ZX-Uno 2MB |  Murmulator | Amstrad 6128 | MSX2 Philips VG-8235 | Commodore 64 | Commodore +4 | Atari 520 STF | Amiga 1200

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #2 dnia: 2018.08.08, 12:21:48 »
@Dalthon oczywiście masz rację. I oczywiście w czasach braku dokumentacji też się kombinowało na oko, żeby się spasować i zmieścić gdzie trzeba ;)

Dokumentacja ułatwia liczenie taktów jak chcesz zrobić coś bardzo precyzyjnego - jakiś multicolor albo efekty na borderze. Kiedyś była to żmudna praca metodą prób i błędów, teraz jest to żmudne liczenie taktów i sprawdzanie z dokumentacją ;) Ale przynajmniej teraz wiem jak to działa i dlaczego tak się dzieje :D

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #3 dnia: 2018.08.08, 12:22:40 »
48kB - 69888 T
128kB/+2/+2A/+3 - 70908 T
No chyba że coś namieszałem ale pewnie mnie wtedy mądrzejsi ode mnie poprawią :)

Z tego co wiem, jest dokładnie tak, jak napisałeś.
• W 48K linia ma 224T, co po przemnożeniu przez 312 linii = 69888T (T = 1/3,500000MHz = około 285,7ns).
Zatem linia zajmuje 285,7ns * 224T = około 64 mikrosekundy.
Cały obraz zajmuje 285,7ns * 69888T = około 19,97 milisekundy, czyli częstotliwość odświeżania = 1/19,97ms = około 50,07Hz.

• W 128K linia ma 228T, co po przemnożeniu przez 311 linii = 70908T (T = 1/3,546900MHz = około 282ns).
Zatem linia zajmuje 282ns * 228T = około 64,3 mikrosekundy.
Cały obraz zajmuje 282ns * 70908T = około 19,99 milisekundy, czyli częstotliwość odświeżania = 1/19,99ms = około 50,02Hz.

Pisząc "linie" miałem na myśli linie obrazu PAL, a nie cokolwiek związanego z rozdzielczością Spectrum. Oczywiście front, porch i sync (pion) to też są "linie", chociaż nie są wyświetlane.
« Ostatnia zmiana: 2018.08.08, 12:44:28 wysłana przez trojacek »

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #4 dnia: 2018.08.08, 14:09:30 »
A ja myślałem że modele 128k oraz szary +2, mają takie same timingi jak w 48k.
Dopiero kolejne wersje +2 i +3 mają to zmienione.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #5 dnia: 2018.08.08, 14:21:17 »
ZbyniuR: właśnie timingi są jedną z głównych różnic pomiędzy 48K a 128K. Możesz sobie rozszerzyć 48K nawet z bankowaniem pamięci, ale zmiana timingów to już inna para kaloszy. Wynikają one z taktowania zegara oraz budowy ULA. Poza tym na 128K efekt "dot crawlingu" nie jest widoczny, a w 48K może doprowadzić do szewskiej pasji.

Timingi oraz proces generowania syngalu w ZX Spectrum zostal opisany tu: http://www.zxdesign.info/horiztiming.shtml i tu: http://www.zxdesign.info/portContention3.shtml
« Ostatnia zmiana: 2018.08.08, 14:31:35 wysłana przez Klaud »
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #6 dnia: 2018.08.08, 14:31:18 »
Timingi oraz proces generowania syngalu w ZX Spectrum zostal opisany tu: http://www.zxdesign.info/horiztiming.shtml

A całą książkę można zassać tu: https://drive.google.com/open?id=0ByXfOBO9GGCacDBxUGYtbnl1MEU
(http://www.speccy.pl/forum/index.php?topic=3247.msg47795 tutaj link do wątku dla wyjaśnienia ewentualnych wątpliwości)

To tam dokładnie opisane jest jak ULA działa. I jeśli nawet ktoś nie specjalnie bawi się w programowanie to moim zdaniem warto książkę przeczytać choćby dla ogólnego zapoznania się z tym co w środku bzyczy ;)
 

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #7 dnia: 2018.08.08, 14:35:58 »
... warto książkę przeczytać choćby dla ogólnego zapoznania się z tym co w środku bzyczy ;)

W srodku bzycza nie programy i UrszuLA a … przetwornica :P
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #8 dnia: 2018.08.08, 14:43:57 »
ZbyniuR: właśnie timingi są jedną z głównych różnic pomiędzy 48K a 128K.

Jest jeszcze gorzej. W toastracku/szaraku zmieniono timingi względem 48K, ale potem Amstrad wprowadził kolejną modyfikację w +2A/B i +3. Co prawda przesunął jedynie moment generowania IRQ względem początku ramki, ale to wystarcza, by się rozjeżdżały różne fajne efekty.
W ten sposób, z punktu widzenia koderów, powstały trzy zasadnicze platformy:
• 16K/48K, czyli gumiak i plusik,
• 128K toastrack/szarak,
• 128K Amstrad (+2A/+2B/+3).

Demo, efekt borderowy, multikolor itp. musi być oddzielnie przeliczany dla każdej platformy.
Rosjanie skomplikowali sobie życie jeszcze bardziej, wprowadzając jeszcze inne timingi w Pentagonie i nieco poprawione (ale dalej niezgodne z czymkolwiek) w Scorpionie.

Do tego dochodzą Timexy TC2xx8 z timingami "niemal" gumiakowymi (niestety rysowanie ekranu zaczyna się nieco wcześniej...) oraz wszelkie odmiany Sinclair/Timex działające w systemach 60Hz, tu już się nic nie zgadza z "normą" :D

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #9 dnia: 2018.08.08, 14:51:28 »
Aby calosc byla w jednym miejscu zestawienie:

Maker           Spectrum    Spectrum    Spectrum    Timex        Timex
  Version         16K/48K/+   128/+2      +2A/+3      TC2048/2068  TS2068
  CPU Osc         14.000MHz   17.73447MHz ?           ?            14.112MHz
  Color Osc       4.4336MHz   CPU Osc/4   CPU Osc/n   ?            3.579545MHz
  CPU Clock       3.500000MHz 3.54690MHz  3.54690MHz  3.50000MHz   3.52800MHz
  PSG Clock       N/A         1.7734MHz   1.7734MHz   ? (if any)   1.764(75)?
  HorizontalTotal 224 clks    228 clks    228 clks    ?            224 clks
  HorizontalDraw  128 clks    128 clks    128 clks    128 clks     128 clks
  HorizontalBlank 96 clks     100 clks    100 clks    ?            ?
  Vertical Total  312 lines   311 lines   ?           ?            262 lines
  Screen          192 lines   192 lines   192 lines   192 lines    192 lines
  Upper Border    64 lines    63 lines    ?           ?            ?
  Lower Border    56 lines    56 lines    ?           ?            ?
  Frame Rate      50.08Hz/PAL 50.01Hz/PAL 50.?Hz/PAL  50.?Hz/PAL   60.11Hz/NTSC
  Flash Rate      50/32=1.6Hz 50/32=1.6Hz 50/32=1.6Hz 50/32=1.6Hz  60/32=1.9Hz
  First Delay at  14335 clks  ?           14361 clks  ?            ?
  Delay Pattern   6..1,0,0    ?           1,0,7..2    ?            ?
  Port FEh Delay  Yes         Yes         No          Yes          Yes
  VRAM Delay at   4000h-7FFFh RAM1,3,5,7  RAM4,5,6,7  4000h-7FFFh  4000h-7FFFh
  Snow Effect     Yes         Yes/Crash   ?           No?          Yes/No?

Oraz

Cytuj
Some Clones
The Russian Scorpion seems to have same timings as Spectrum 48K. The russian Pentagon has 320 lines total (64+192+48+16), and, it generates INT at begin of its 16-lines Vsync period (all other computers have INT at end of Vsync, aka begin of upper border). Horizontal total is 224 clks on both Pentagon and Scorpion, but hsync position is slightly different on each. Both Scorpion and Pentagon do not have slow (contended) memory.

zrodlo: http://problemkaputt.de/zxdocs.htm
 
Timingi w Pentagonie i Scorpionie sa opisane tu: http://www.worldofspectrum.org/rusfaq/#2
« Ostatnia zmiana: 2018.08.08, 20:40:14 wysłana przez trojacek »
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #10 dnia: 2018.08.08, 18:10:25 »
zestawienie:

Niestety w tej tabelce wiele brakuje, na dodatek są błędy. Specjalnie bym na niej nie polegał.
« Ostatnia zmiana: 2018.08.08, 20:40:37 wysłana przez trojacek »

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #11 dnia: 2018.08.08, 18:48:10 »
A czy w Samie timingi są do czegoś podobne, czy jeszcze inne?

Bo już myślałem że gorzej niż w CPC z rodzajami timingów (CRTC) to nigdzie nie mają.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #12 dnia: 2018.08.08, 19:16:31 »
A czy Sam Coupe potrafi ustawić CPU w tryb 3,5MHz? Bo jeśli nie, to timingi nie mają większego znaczenia.

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #13 dnia: 2018.08.08, 20:59:30 »
Nie miałem tego w rękach, ale podobno potrafi się przełączać na 3.5MHz, po podłączeniu jakiegoś ekstra ROMu, w trybie emulacji 48K.

Ta kompatybilność była jednym z ważniejszych haseł reklamowych tej maszyny.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Timingi 48K, 128K i klonów
« Odpowiedź #14 dnia: 2018.08.08, 21:38:22 »
Może któryś z lokalnych speców od Sama wie coś więcej, ja tylko słyszałem o emulatorze, który programowo spowalnia procesor, by dopasować szybkość wykonywanego kodu do ZX Spectrum. A ROM 48K to trzeba sobie samemu załatwić i dograć do emulatora.
Co by oznaczało, że można zapomnieć o oglądaniu spectrumowych demek na tym sprzęcie. Pozostaje oczywiście soft tworzony specjalnie dla Sama.