Autor Wątek: ZX Max 128  (Przeczytany 23584 razy)

trojacek

  • *****
  • Wiadomości: 5705
  • Miejsce pobytu:
    Warszawa
Odp: ZX Max 128
« Odpowiedź #120 dnia: 2018.08.02, 06:04:01 »
Nie mam ZX Max 128, ale mam pewną teorię :)
Dodanie do Altery obsługi portu mapowania pamięci #7FFD zapoczątkowało problemy z wyświetlaniem czystego obrazu, na co remedium okazało się dodanie zewnętrznego rejestru portu 74xx174 (czyli dokładnie, jak w toastracku i szaraku, gdzie '174 znajduje się poza ULA), "chwytającego" dane wprost z CPU, czyli niezależnie od cyklu wyświetlania obrazu.
W 128K i szarym +2, wszystkie parzyste porty są contended, czyli jak w 48K.
Porty #xxFD (przełączanie RAM, ROM, obsługa AY) są nieparzyste, ale też są contended.
Podejrzewam, że błędem implementacyjnym wkładów 128K do Altery jest zrobienie portów #xxFD jako not contended. W takim przypadku kolizja dostępu do portu #7FFD (który jest zaimplementowany w Alterze) z cyklem odczytu pamięci ekranu wygeneruje jakąś niepożądaną wartość do zapisu w porcie, na dodatek mogą się wyświetlić jakieś śmieci.

Jeśli demo korzysta z wartości odczytywanych z portu AY do zrobienia np. VU-metra i dostanie jakąś wartość spoza zakresu, to pewnie może się zwiesić. Choć raczej w losowych momentach, albo na samym początku próby wyświetlenia wskaźników.
- sam AY jest widoczny jako rejestry niezależne od Altery, więc moje rozumowanie odnośnie potencjalnego wieszania się dem było nieprawidłowe. Myślę dalej :)
« Ostatnia zmiana: 2018.08.02, 08:19:04 wysłana przez trojacek »

Klaud

  • *****
  • Wiadomości: 5369
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: ZX Max 128
« Odpowiedź #121 dnia: 2018.08.02, 07:48:03 »
Dekoder AYka w implementacji dla ZX Maxa (48K i 1280K) zawiera sygnały: A15, A14, A1, A0, /IORQ i /WR. Czyli brak odczytu z portu AYka.
KL
-----
R Tape loading error 0:1

trojacek

  • *****
  • Wiadomości: 5705
  • Miejsce pobytu:
    Warszawa
Odp: ZX Max 128
« Odpowiedź #122 dnia: 2018.08.02, 08:09:27 »
Tym gorzej!
Prawdę mówiąc nie rozumiem, po co dłubać coś, co nie jest zgodne z oryginałem. Strata czasu i nerwów, gdy coś nie działa jak powinno.

Klaud

  • *****
  • Wiadomości: 5369
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: ZX Max 128
« Odpowiedź #123 dnia: 2018.08.02, 08:33:38 »
Masz wiedzę, to zamiast peplac po próżnicy i marnować czas na bezsensowne komentarze, napisz dekoder AYka w Verilogu, a dokleje ten "ulepszony" kawałek do tej implementacji.
KL
-----
R Tape loading error 0:1

trojacek

  • *****
  • Wiadomości: 5705
  • Miejsce pobytu:
    Warszawa
Odp: ZX Max 128
« Odpowiedź #124 dnia: 2018.08.02, 08:41:44 »
Nie znam Veriloga, mogę Ci jedynie schemat narysować.

Klaud

  • *****
  • Wiadomości: 5369
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: ZX Max 128
« Odpowiedź #125 dnia: 2018.08.02, 08:46:06 »
Schemat mogę sobie narysować sam :) A nawet przepuścić go przez symulator układów logicznych :P. A grzebać w Verilogu nie chce mi się i już.
KL
-----
R Tape loading error 0:1

skoti

  • *****
  • Wiadomości: 507
  • Miejsce pobytu:
    Polska
Odp: ZX Max 128
« Odpowiedź #126 dnia: 2018.08.02, 09:27:03 »
Czyli nie ma szansy na jakiś fix do tego ? Mam już gotową płytę :(
ZX 48k I2, ZX 48 Spider, ZX 128 Spider, ZX Spectrum +2a, HQ 48k, ZX MAX48 I1 i 2, Timex Computer 2048

Klaud

  • *****
  • Wiadomości: 5369
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: ZX Max 128
« Odpowiedź #127 dnia: 2018.08.02, 10:32:44 »
Szansa jest, ale z moje strony czasu brak na grzebianie w kodzie Veriloga w tym projekcie.

Jeśli ktoś nudzi się i napisze dekoder AYka (z obsługą odczytu i zapisu) w Verilogu, dokleję do reszty, przekompiluję i wrzucę "na pożacie".
« Ostatnia zmiana: 2018.08.02, 11:22:36 wysłana przez Klaud »
KL
-----
R Tape loading error 0:1

trojacek

  • *****
  • Wiadomości: 5705
  • Miejsce pobytu:
    Warszawa
Odp: ZX Max 128
« Odpowiedź #128 dnia: 2018.08.02, 13:03:54 »
To może wrzuć chociaż istniejący fragment kodu obsługi AY?

Klaud

  • *****
  • Wiadomości: 5369
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: ZX Max 128
« Odpowiedź #129 dnia: 2018.08.02, 13:10:17 »
// AY interfacing
assign bdir = (a[15] && aa[1:0]==2'b01 && !iorq_n && !wr_n)? 1'b1 : 1'b0;
assign bc1 = (a[15] && aa[1:0]==2'b01 && a[14] && !iorq_n)? 1'b1 : 1'b0; 

A15, A14, A1 i A0 (wektor aa[1:0]) są brane bezpośrednio z linii adresowej procesora.
KL
-----
R Tape loading error 0:1

trojacek

  • *****
  • Wiadomości: 5705
  • Miejsce pobytu:
    Warszawa
Odp: ZX Max 128
« Odpowiedź #130 dnia: 2018.08.02, 13:17:50 »
Super, dzięki!
Tak na pierwszy rzut oka, to odczyt z AY powinien działać. Co prawda /RD nie jest uwzględniony, ale wystawienie /IORQ bez aktywnego /WR spowoduje, że bdir = 0 oraz bc1 = 1, a dokładnie o to właśnie chodzi.

skoti

  • *****
  • Wiadomości: 507
  • Miejsce pobytu:
    Polska
Odp: ZX Max 128
« Odpowiedź #131 dnia: 2018.08.02, 16:58:18 »
Niestety programowanie CPLD to dla mnie czarna magia. Fajnie gdyby udało się to poprawić. Maszyna byłaby gotowa ;)
ZX 48k I2, ZX 48 Spider, ZX 128 Spider, ZX Spectrum +2a, HQ 48k, ZX MAX48 I1 i 2, Timex Computer 2048

Klaud

  • *****
  • Wiadomości: 5369
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: ZX Max 128
« Odpowiedź #132 dnia: 2018.08.02, 17:18:44 »
 Fajne:) Xilinx i dwie Altery (albo jedna Altera i jeden Atmel) na jednej plycie? W tym roku obrodzilo w uklady CPLD :D

A co siedzi w tym malym CPLD obok ukladow Yamahy? Czyzby kontrola TS?
« Ostatnia zmiana: 2018.08.02, 17:25:01 wysłana przez Klaud »
KL
-----
R Tape loading error 0:1

silenter

  • *****
  • Wiadomości: 1337
  • Miejsce pobytu:
    Warszawa/Radzymin
Odp: ZX Max 128
« Odpowiedź #133 dnia: 2018.08.02, 18:21:44 »
dokładnie - to jest sterowanie   TSFMem
128k +2 UK issue 1, JS128, FDD3000 in restoration, ZAXON MGT +D, PEAR AmpY, Pear ExEar :), PEAR TI-OF-TTL+FDD35, co to tu robi??? => 2xCDTV&A500

https://soundcloud.com/silenter

https://www.youtube.com/channel/UCKZhL7Lq1zUDDnRDTJKhN4A

trojacek

  • *****
  • Wiadomości: 5705
  • Miejsce pobytu:
    Warszawa
Odp: ZX Max 128
« Odpowiedź #134 dnia: 2018.08.02, 18:34:46 »
Czyli Atmel ATF150x pewnie.
Niezła menażeria, każdy CPLD z innej stajni :D