Autor Wątek: Jupiter ACE - 96K + AY  (Przeczytany 12563 razy)

Klaud

  • Moderator
  • *****
  • Wiadomości: 5350
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Jupiter ACE - 96K + AY
« Odpowiedź #45 dnia: 2020.03.25, 10:07:37 »
Hej,

Dekoder AYka jest pełnym dekoderem, więc można wysyłać do i odczytywać z niego dane. W Twoim wywołaniu jest błąd i zawsze dostaniesz odpowiedź 32.

Prawidłowe wysłanie do portu i odczyt z niego wygląda następująco:

1 65533 out
10 49149 out
65533 in
.


W załącznikach oba wywołania na replice z zapiętym AYkiem.

W przypadku braku czegokolwiek na porcie 65533 na ekranie będzie sieczka.
« Ostatnia zmiana: 2020.03.25, 10:15:34 wysłana przez Klaud »
KL
-----
R Tape loading error 0:1

matofesi

  • *****
  • Wiadomości: 1814
  • Miejsce pobytu:
    Toruń/Poland
Odp: Jupiter ACE - 96K + AY
« Odpowiedź #46 dnia: 2020.03.25, 10:26:00 »
Aaa... No tak - w eightyone nie ma AY więc nie pomyślałem, że kolejność parametrów dla out jest odwrotna ;)
Ale istotne, że da się wykryć, co oznacza, że mogę zrobić przełączanego playera i testować na emu :)

Klaud

  • Moderator
  • *****
  • Wiadomości: 5350
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Jupiter ACE - 96K + AY
« Odpowiedź #47 dnia: 2020.03.25, 21:05:43 »
Posty o rozwoju i kompilacji Eighty One przeniosłem do nowego wątku w dziale „Emulatory”:
https://www.speccy.pl/forum/index.php?topic=5656.0
KL
-----
R Tape loading error 0:1

Klaud

  • Moderator
  • *****
  • Wiadomości: 5350
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Jupiter ACE - 96K + AY
« Odpowiedź #48 dnia: 2020.03.28, 21:11:37 »
Leżał sobie odłogiem wyświetlacz LCD 16x02, więc go podpiąłem pod port A w AYku.
« Ostatnia zmiana: 2020.03.28, 22:55:21 wysłana przez Klaud »
KL
-----
R Tape loading error 0:1

sajmosia

  • *****
  • Wiadomości: 1264
  • Miejsce pobytu:
    Terra Prime
Odp: Jupiter ACE - 96K + AY
« Odpowiedź #49 dnia: 2020.03.29, 04:34:27 »
Fajna sprawa :)

Czy moglbys to rozbic to na detale ?

Co trzeba zrobic, zeby wyswietlacz byl gotowy, zeby przyjac tekst do wyswietlenia ?

« Ostatnia zmiana: 2020.03.29, 08:35:59 wysłana przez Klaud »

Klaud

  • Moderator
  • *****
  • Wiadomości: 5350
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Jupiter ACE - 96K + AY
« Odpowiedź #50 dnia: 2020.03.29, 10:36:05 »
W sumie nie ma co opisywać, ponieważ wszystko zostało już opisane tu: AMI LCD Screen

A w skrócie, potrzebny jest AY z działającym portem A (AY-3-8910 lub AY-3-8912) wraz dekoderem adresów, takim samym jak dla bzyczka, wyświetlacz LCD z układem zgodnym z HD44780 (czyli prawie dowolny LCD 16x2), potencjometr 10K, kilka przewodów oraz 30 minut wolnego czasu.

LCD pracuje w trybie 4 bitowym, ze znakami w 5x8 pikseli, a 8 znaków można sobie dowolnie zdefiniować, pamiętając, że Jupiter operuje domyślne na liczbach w systemie dziesiętnym.

Te osiem definiowalnych znaków jest umiejscowione od adresu 64 (0x40) kontrolera LCD i każdy zajmuje 8 bajtów. W każdym bajcie zapisana jest wartość każdej linii (na 5 bitach) w znaku. W każdym bicie piksel włączony to logiczna "1", a piksel wygaszony to logiczne "0". Jeśli chcemy zdefiniować nowe "s", takie jak na fotce, definicja wygląda następująco:

Matryca 5 x 8 pikseli:

B4B3B2B1B0Dec
000000
000000
0111115
010008
0111115
000011
0111115
000000

W takim razie,  kod w Forth wygląda następująco:

8 wc     -- wyłącz LCD, ponieważ na ekranie kursor będzie przemieszczał się oraz mogą być wyświetlanie "śmieci"
64 wc    -- wskazanie kolalizacji początku piewszego nowego znaku (adres 0x40 = 64 dziesiętnie)
0 wd     -- wysłanie danych dla pikseli w pierwszej linii pod adresem 0x40
0 wd     -- druga linia (adres 0x41)
15 wd    -- trzecia (0x42)
8 wd     --  (..)
15 wd
1 wd
15 wd    -- (..)
0 wd     -- 8 linia (0x47 = 71 dzisiętnie)
2 wd     -- powrót kursora na początek ekranu, w pierwszej linii
1 wd     -- wyczyść ekran

Nowy znak zdefiniowany i jego wywołanie na ekran w miejscu kursora:

0 wd

Kolejne definiowalne znaki mają początkowe adresy:
0x48 = 72d
0x50 = 80d
0x58 = 88d
0x60 = 96d
0x68 = 104d
0x70 = 112d
0x78 = 120d
« Ostatnia zmiana: 2020.03.29, 13:34:57 wysłana przez Klaud »
KL
-----
R Tape loading error 0:1

Maryjan

  • *****
  • Wiadomości: 5416
  • Miejsce pobytu:
    Skarżysko-Kam.
  • Scotch whiskey and West Highland Terrier
Odp: Jupiter ACE - 96K + AY
« Odpowiedź #51 dnia: 2020.03.31, 11:33:09 »
Hmm, można dołożyć taki wyświetlacz do interface z AY-kiem i wykorzystać go, jako np. wskaźnik widma dla AY.
Tylko trzeba by sobie samemu napisać player-a.
"... podobno są dwie szkoły, Falenicka i Otwocka."

Klaud

  • Moderator
  • *****
  • Wiadomości: 5350
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • KL
Odp: Jupiter ACE - 96K + AY
« Odpowiedź #52 dnia: 2020.03.31, 11:54:43 »
Grajek jest co wyświetla poziomy w 3 kanałach, bo z AYka można odczytywać. Teraz należałoby przeliczyć te 3 kanały na zmiksowane do dwóch wg. standardu ABC lub ACB i wysłać dane do AYka, aby wyrzucił je na LCD :)
KL
-----
R Tape loading error 0:1