Autor Wątek: Timmy  (Przeczytany 38439 razy)

KWF

  • Moderator
  • *****
  • 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: Timmy
« Odpowiedź #105 dnia: 2021.02.18, 08:20:30 »
Część 6 - 80K na pokładzie

Ze swojej strony mógłbym zakończyć opis klona na tym etapie i zapomnieć o leżącej odłogiem połowie pojemności układów górnej pamięci.  Projektując Timmy'ego postanowiłem te dodatkowe 32K RAM jakoś zagospodarować, a historia ma swój początek we wczesnych latach 90-tych. Będąc nastolatkiem, i po ukazaniu się artykułów w Bajtku o rozbudowie ZX Spectrum do 80K oraz kilka miesięcy poźniej po przeczytaniu drugiej części o łatwym rozszerzeniu Timexa o dodatkowe 32K, zacząłem kompletować części. W owym czasie miałem już PCta, więc zabawa w przeróbki przestarzałego i leżącego na dnie szafy komputera wydawała się dziecinnie prosta. W myśl hasła: "Mam lutownicę i nie zawaham się jej użyć" dokonałem dzieła zniszczenia. Owa zabawa skończyła się źle dla mojego TC2048, który umarł i został porzucony przez mnie na strychu na ponad dwie dekady (https://www.speccy.pl/forum/index.php?topic=2803.msg40211).

Projektując i budując Timmy'ego wróciły szczenięca marzenia. Skoro teraz mam chęci i odrobinę umiejętności, to dlaczego nie mam ich spełnić. Odkopałem Bajtka, po raz n-ty przeczytałem oba artykuły i przeniosłem logikę na schemat Timmy'iego. Faktycznie proste i w tym rozszerzeniu pokładałem jakieś niesprecyzowane nadzieje.

Dla dociekliwych rozbudowa ZX Spectrum do 80K była opisana na łamach Bajtka nr 9-10/90. W numerze 11-12/90 Bajtka zajdnduje się opis przeróbki Timexa. Autorem obu artykułów był p. Stanisław Winiecki (STAVI). Muszę dodać, rozbudowa zaproponowana przez STAVI nie jest jedyną a jedną z kilku. W okolicy roku 1983, w Wielkiej Brytanii firma East London Robotics sprzedawała przystawki 80K do ZX Spectrum Issue 1 o nazwie SP80.

Od strony sprzętowej aby uruchomić dodatkowe 32K należy:
  • usunąć wcześniej wykonaną zworkę pomiędzy pomiędzy sygnałami A0 i BNK,
  • zamontować wszystkie brakujące elementy z serii 200 (prawy dolny róg płytki),
  • zworkę JP200 pozostawić w pozycji otwartej.
Po montażu sprawdzamy czy nie popełniliśmy błędu lub zwarcia i włączamy komputer. Jedyną zmianą do stanu poprzedniego jest świecąca się dioda BK0. Uruchamiając ROM diagnostyczny, zostanie on wykonany tak samo jak poprzednio, ponieważ nie obsługuje stronnicowania bloków 32K na porcie 255 (0xFF). Pozostaje nam samodzielne przetestowanie tę funkcjonalność wykonując poniższy progam w BASICu:

10 CLEAR 32767
20 POKE 50000,121
30 OUT 255,32
40 POKE 50000,212
50 OUT 255,0
60 PRINT PEEK 50000
70 OUT 255,32
80 PRINT PEEK 50000
90 OUT 255,0

Po jego wykonaniu na ekranie powinniśmy zobaczyć dwie liczby: 121 i 212, które zostały zapisane i następnie odczytane z komórki pamięci o adresie 50000. Każda z tych liczb jest przechowywana pod tym samym adresem w oddzielnym banku pamięci. Dokładny opis działania programu jest w Bajtku, więc nie będę wnikał w szczegóły.

Od strony wizualnej po wydaniu komendy OUT 255,32 dioda BK0 zgaśnie, a zaświeci się BK1, wskazując drugi bank 32K jako aktywny. Fajny bajer? I tak, i nie, ponieważ wykorzystanie portu 255 (0xFF) do przełączania banków jest niefortunnym rozwiązaniem w przypadku Timexa. Koliduje ono z przełączaniem trybów graficznych. Dowolne demo, które przełącza tryby graficzne Timexa oraz wystawia 1 na szóstym bicie na szynie danych (D5=1) spowoduje zawieszenie komputera przy włączonych 80K. Aby wyłączyć całe rozszerzenie, wystarczy włożyć zworkę JP200 i Timmy zachowuje się normalnie, tak jak przystało na komputer z 48K RAM.

Po chwilowym zauroczeniu znajomością z 80K, mogę stwierdzić, że jest i działa, ale jest one zupełnie nieprzydatne. Może 30 lat temu, miało ono sens. Współcześnie na rynku są dostępne klony 128K i nie kosztują równowartości dwóch rocznych pensji. To rozszerzenie jest echem przeszłości i ciekawostką przyrodniczą.



Na tym kończę powieść w odcinkach, a wznowienia oraz sezonu drugiego nie planuję.

"To już jest koniec, nie ma już nic
Jesteśmy wolni, możemy iść ..."
« Ostatnia zmiana: 2021.02.18, 08:44:00 wysłana przez Klaud »
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

jack_świdnik

  • *****
  • Wiadomości: 1641
  • Miejsce pobytu:
    Świdnik / Lublin
Odp: Timmy
« Odpowiedź #106 dnia: 2021.02.18, 21:50:11 »
dzięki za te opisy, to jest niezły materiał na artykuł

klony 128k są ale nie ma żadnego z 80k !
a jesteś pierwszy co zrobił klona Timexa 2048 i w dodatku 80k  :D
tylko pogratulować
moje marzenie: Timex 2048 128K

KWF

  • Moderator
  • *****
  • 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: Timmy
« Odpowiedź #107 dnia: 2021.02.19, 22:17:13 »
@Jacek: dzięki. Na pewno kilka rzeczy można poprawić w tym klonie albo zrobić inaczej.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

damik

  • Fresh rosin sniffer ;)
  • *****
  • Wiadomości: 2426
  • Miejsce pobytu:
    Generalnie Polska, głównie Bytom czasem Bielsko-Biała oraz okolice
  • ZX'owy i nie tylko...
Odp: Timmy
« Odpowiedź #108 dnia: 2021.02.20, 00:29:54 »
Gratuluję wytrwałości... to bardzo ciekawy kawałek hardware jaki wypełnia pewną lukę wśród konstrukcji ZX'owych.
Moją fantazją jest powstanie konstrukcji bazującej na TC2048, jego obudowie i dodatkowych trybach graficznych ale z adresowaniem 128KB zgodnym z ZX Spectrum 128. Najlepiej bez dedykowanego układu PAL  :)
Wszystkiego po trochu: Schwarz, mydło i powidło... konsole, stare i nieco nowsze komputery oraz akcesoria i duperele.

KrisZX

  • *****
  • Wiadomości: 788
  • Miejsce pobytu:
    Wodzisław Śl
Odp: Timmy
« Odpowiedź #109 dnia: 2021.03.13, 14:22:21 »
Płytki już u mnie. Zamówiłem 5 sztuk ze złoceniem. Tak jak myślałem przycisk RESET wypadł w trochę niefortunnym miejscu. Gdy się włoży w złącze TIof TTL w obudowie to blokuje on RESET. Więcej miejsca jest przy porcie Composite. Powoli trzeba będzie zabrać się za składanie.
Timex 2048, TI of TTL FDD35, Timex 2068, Chrome 128, Harlequin, Just Speccy 128

KrisZX

  • *****
  • Wiadomości: 788
  • Miejsce pobytu:
    Wodzisław Śl
Odp: Timmy
« Odpowiedź #110 dnia: 2021.03.14, 10:59:54 »
Temat zasilania ogarnięty. Użyłem fabrycznego zasilacza Timexa 2048.
Timex 2048, TI of TTL FDD35, Timex 2068, Chrome 128, Harlequin, Just Speccy 128

jack_świdnik

  • *****
  • Wiadomości: 1641
  • Miejsce pobytu:
    Świdnik / Lublin
Odp: Timmy
« Odpowiedź #111 dnia: 2021.03.17, 15:40:03 »
ja też wystartowałem i składam
u mnie też świeci  :)
moje marzenie: Timex 2048 128K

KrisZX

  • *****
  • Wiadomości: 788
  • Miejsce pobytu:
    Wodzisław Śl
Odp: Timmy
« Odpowiedź #112 dnia: 2021.03.17, 17:51:19 »
Upewnij się czy płyta zamknie się w obudowie jeśli w dolnym rzędzie wlutujesz podstawki precyzyjne (tam gdzie jest  RAM i logika 80kB). Raczej powinny być zwykłe.
Timex 2048, TI of TTL FDD35, Timex 2068, Chrome 128, Harlequin, Just Speccy 128

nietoperz

  • ****
  • Wiadomości: 400
Odp: Timmy
« Odpowiedź #113 dnia: 2021.03.17, 22:01:19 »
Ledwo bo ledwo ale coś tam i u mnie świeci ;)

skoti

  • *****
  • Wiadomości: 749
  • Miejsce pobytu:
    Polska
Odp: Timmy
« Odpowiedź #114 dnia: 2021.03.17, 22:28:00 »
Zamiennik dla SCLD ?  :o

nietoperz

  • ****
  • Wiadomości: 400
Odp: Timmy
« Odpowiedź #115 dnia: 2021.03.17, 23:26:24 »
Nie mam wolnego SCLD wiec kombinuje ;) Nie wiem czy starczy mi samozaparcia, żeby cos sensownego powstało. Póki co polutuje przejsciówke na CPLD i zaczne myśleć jak tu sygnały dla pamięci dynamicznych wygenerować. Opcje są dwie, 74LS31 albo zegar 28MHz

KWF

  • Moderator
  • *****
  • 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: Timmy
« Odpowiedź #116 dnia: 2021.04.12, 09:08:03 »
Dodatek - RAM i co dalej z 80K

Timmy żyje swoim ślamazarnym, angielskim życiem, a mnie dopadło lenistwo, marazm lub według współczesnej diagnozy psychoza maniakalno-depresyjna. W ramach stanów euforycznych i gimnastyki wyprostowanych zwojów mózgowych, naszło mnie kilka myśli, w jaki sposób wykorzystać bezużyteczne 80K na pokładzie. Pierwsza myśl, była "128K tak jak w Toastraku", druga mniej optymistyczna "Po co? Skoro tyle klonów ZX128K żyje na wolności.", a trzecia "Nie ma sensu, bo i tak nie dam rady.". Fakt, nie dałem rady na pełne 128K z przełączanym bankiem drugiego obrazu. Proszę bardzo, można sobie poużywać, śmiać się i przytykać "A nie mówiłem? Wyszło tak jak zawsze.", "Przecież to można było przewidzieć!" albo "Ja dałem rade w Speccy, to jesteś cienki Bolo". Cała para w gwizdek i 128K w Timmym nie będzie.

Dlaczego nie i skąd te trudności? Niby wszystko jest na stronie Yarka, opisy, zdjęcia, ale Timex to nie ZX Spectrum. O ile rozbudowa górnego RAMu do pełnych 64K i jego dowolne szatkowanie na bloki 32K, albo 16K nie stanowi żadnego problemu. O tyle, grzebanie przy dolnym RAMie zaczyna się od różnic w adresowaniu pamięci 4416 i 4464, poprzez sposób multipleksacji adresów od strony procesora, do sposobu wewnętrznej multipleksacji adresów przez SCLD.

W Części 2 opisu Timmiego, napisałem:

Cytuj
Dolny RAM (U6 i U7): [...] Zamiast układów 4416 można użyć pamięci 4464 lub 41464. Mają one 4x większą pojemność, ale tylko 16KB będzie wykorzystane.

Moje twierdzenie było tylko częściowo prawdziwe i radzę zostawić 4416 w obszarze dolnego RAM. Tak, Timmy ruszy z pamięciami 4464 w dolnym RAMie, ale tylko połowa obrazu będzie wyświetlana prawidłowo. Nie należy spodziewać się, że górna, lub dolna połowa będzie ze śmietnikiem, lecz dolna połowa każdej tercji. Na ekranie pojawi się 6 pasków, każdy o wysokości 4 znaków, z czego co drugi będzie zawierał poprawny obraz. Takie zachowanie Timmiego, a także każdego innengo Timexa (TC2048, TC2068, czy TS2068) wynika, że pamięci 4416 w dolnym RAMie wymagają adresowania 8 wierszy w 6 kolumnach, a 4464 adresowania 8 wierszy w 8 kolumnach. W ZX Spectrym pamięci 4116 wymagają adresowania 7 wierszy w 7 kolumnach, a 4146  i 4164 8 wierszy w 8 kolumnach. Tak to wygląda w praktyce:
Adres VRAM*ZX Spectrum*Timex (SCLD)*Timex (CPU)
VA0A0 i A7A0 i A7A0 i A0
VA1A1 i A8A1 i A8A1 i A8
...
VA6A6 i A13A6 i A13A6 i A13
VA7-A7 i A7A7R* i A14

* A7R linia adresowa A7 z sygnałem /RFSH

Adresy w kolorze czerwonym są ignorowane przez pamięć typu 4416, ale zaczynają odgrywać istotną rolę, przy ich wymianie na 4464. Adresowanie przez CPU i przez SCLD nie zawsze będzie trafiało do komórek pod ten sam adresem, stąd druga połówka każdej tercji pamięci obrazu skutkuje śmietnikiem na ekranie.

Rozbudowa dolnego RAM w ZX Spectrum nie nastręcza większych trudności, ponieważ linia VA7 jest nieużywana dla układów 4116, multiplekser 'LS157 ma jedną linię wolną i poza detekcją oraz przełączaniem drugiego banku obrazu, nie nastręcza ona większych trudności technicznych. Układy 4146 są tożsame z 4116 dla linii VA0 do VA6, a VA7 możemy sobie wykorzystać według "własnego widzi mi się". Poza tym można żywcem podpatrzeć i skopiować dekoder portu 0x7FFD z Toastracka. Należy dodatkowo rozpoznać, czy jedna z multipleksowanych linii adresowych ULA podaje ustalony stan 0 albo 1, czy też jest w stanie wysokiej impedancji, kiedy pamięci są adresowane przez CPU.

W przypadku Timexa, sprawa komplikuje się. O ile mamy dostęp do sygnału sterowania buforem na multipleksowanych liniach adresowych, o tyle trzeba jeszcze oszukać SCLD i przekrosować odowiedno linie VA0 i VA7, oraz fizycznie rozdzielić je od linii MA0 i MA7 górnego RAM. Ilość układów scalonych potrzebnych do tego zadania, aż prosi o wykorzystanie układu programowalnego, np. CPLD, w tym celu. I tu zatrzymałem się.

Górne 64K RAM - czyli 80KB na pokładzie.

Zostawiam dolny RAM o pojemności 16K, ale nadal górny jest o pojeności 64KB, z 32K wykorzystanymi zgodnie z zamysłami inżynierów Sinclair Research. Drugie 32K jest bankowanie w Timmym, ale jak wspominałem, moim zdaniem bezużyteczne w praktyce. Było kilka innych rozwiązań 80K w ZX Spectrum, każde z nich opierało się o to, że całe 32K jest przełączane, każde z nich wykorzystywało inny port do tego celu i w zasadzie żadne z nich nie było w jakikolwiek sposób zgodne z bankowaniem pamięci z Toastracka, poza jednym: Wonder 80K. Cały opis i schemat tego rozwiązania jest na stronie Yarka. Sprawdziłem w praktyce i działa ono po drobnych korektach w dekoderze adeesu portu. Nie jest to pełne przełączanie tak jak w Toaskracku, a pewna zgodność z tym rozwiązaniem. W zakresie adresów 0xC000 - 0xFFFF są umieszczone 3 banki po 16kB każdy. Banki 1 i 2 są adresowane w miejsce par banków 1-4, 3-6 z bankowania Toastracka. Programy korzystające z tych par i tylko z tych par np. na muzykę do AYka, dostaną nowe życie, którego nie miałyby na 48K z dopiętym AYkiem.

Konkuzja? Raczej w stronę Wonder80K pójdzie zmiana w Timmym.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Timmy
« Odpowiedź #117 dnia: 2021.04.12, 11:24:29 »
Proszę bardzo, można sobie poużywać, śmiać się i przytykać "A nie mówiłem? Wyszło tak jak zawsze.", "Przecież to można było przewidzieć!" albo "Ja dałem rade w Speccy, to jesteś cienki Bolo". Cała para w gwizdek i 128K w Timmym nie będzie.

Wyluuuuuuuzuj :) Chyba, że to objaw tej psychozy, biedaku ;)
Do mnie dotarło, że po prostu gra niewarta świeczki, za dużo logiki trzeba dopakować, i tyle.
Z drugiej strony - szkoda, bo brakuje dobrego, taniego klona (klona! Nie emulatora!) ze 128K i trybami timexowymi.
Ja ze swej strony dziękuję za solidną analizę problemu i podzielenie się szczegółami oraz konkluzjami.

Cytuj
Raczej w stronę Wonder80K pójdzie zmiana w Timmym.

Szkoda, ale co zrobić.
Osobiście nie widzę wielkiego sensu w rozszerzaniu pamięci do 80K, bo jest bardzo mało programów, które z takiego rozszerzenia korzystają.
Pozostaje mi żyć nadzieją, że kiedyś powstanie klon Timexa, pozbawiony jego pierwotnych ograniczeń - analogicznie, jak powstały klony 48K z pamięciami SRAM w miejsce DRAM.

KWF

  • Moderator
  • *****
  • 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: Timmy
« Odpowiedź #118 dnia: 2021.04.12, 11:55:52 »
Dzięki Jacku. No i jestem wyluzowany, prozak z rana i po sprawie :P
Sam SRAM zamiast DRAM to bułka z masłem, o ile ma być klon, który nie będzie oparty o SCLD lub jego potencjalny zamiennik. Wtedy całego Timexa możnaby zamknąć w 6 układach (Z80, ROM, 128K RAM, CPLD/FPGA, AY i AD724).
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Timmy
« Odpowiedź #119 dnia: 2021.04.12, 12:50:18 »
Za 'bajtkowym' 80k przemawia fakt że, przynajmniej ja, spotkałem się z dziesiatkami gier przerobionych tak aby grały muzę w grach. Innych sensownych zastosowań nie było (oprócz jednego kopiara autorstwa Kato, o ile dobrze pamiętam), nawet dema z kolekcją muzyczek tego nie wykorzystywały. Główny powód za tym 80k -- sentyment oraz kilka gier, które gdzieś leżą na kasetach/dyskach i zostały przerobione tak aby działały z tym rozszerzeniem.

Podejrzewam że Wonder80k  ma podobny sens.