[CA80][Podzespoły] Wyświetlacz LCD.

Kącik dla elektroniki retro - układy, urządzenia, podzespoły, literatura itp.
Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

[CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » niedziela 21 lis 2021, 21:53

Kolega @Nadolic zaproponował wyświetlanie nazw programów zapisanych w przystawce "Flash" do CA80. Do tego celu zastosował wyświetlacz LCD ze sterownikiem HD44780. Napisał procedury zarówno dla połączenia równoległego jak i I2C. Obydwa sposoby używają port systemowy 8255. Można użyć dodatkowy port, ale czy nie da się prościej? Sterowanie wyświetlaczem przypomina obsługę urządzenia wejścia/wyjścia, jednak sygnały sterujące nie są "przyjazne". W "polskim Internecie" niewiele znalazłem na ten temat. Po angielsku nieco więcej, np. https://bread80.com/2020/07/01/connecti ... lue-chips/
albo: https://forum.allaboutcircuits.com/thre ... z80.56896/
Poczytałem, pomyślałem i zrobiłem prototyp... Jako R/W i RS użyłem A0 i A1, bo linie adresowe Z80 są ustawiane najwcześniej i ich stany trwają najdłużej. Dzięki temu sygnał E znajdzie się w odpowiednim miejscu (IORQ jest ustawiane dopiero w drugim takcie).
IMG_20210716_142725.jpg
Z80-IO-Timing-Diagram.png

Działał, więc przygotowałem płytkę. Szkoda byłoby użyć strobów systemowych, więc dołożyłem dekoder adresów. Przy okazji rozwiązałem problem transmisji danych "ZX Spectrum" (MIK6 str. 227), którym już od jakiegoś czasu się zajmuję.
CA80_LCD_direct.pdf
CA80_LCD_direct.png

Zmontowałem płytkę, uruchomiłem...
... i schowałem do szuflady.

Dzisiaj wziąłem się za kod. Przerobiłem przykład kolegi @Nadolic. Może to niezbyt ambitne, ale od czegoś trzeba zacząć...
IMG_20211121_201731.jpg
IMG_20211121_201633.jpg
IMG_20211121_201236.jpg
LCD_DIR.zip
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » poniedziałek 22 lis 2021, 21:23

Zapomniałem dodać, że taśma łącząca LCD z płytką pochodzi "Z PC-towego śmietnika". :lol:
To nic, że ma 2 razy 17 żył. Wykorzystane jest szesnaście, a o to przecież chodzi. Flopp-ów pewnie już nie będę używał...
Ale nigdy nie mów nigdy!
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: gaweł » wtorek 23 lis 2021, 09:44

Zegar pisze:Zapomniałem dodać, że taśma łącząca LCD z płytką pochodzi "Z PC-towego śmietnika". :lol:


To ważne, robić odzysk elementów nadających się do użycia i nie zaśmiecać środowiska. Sam mam jeszcze jakieś 30 taśm do dysków twardych, z tym, że ja (jak mówił Smoleń w kabarecie) tnę duże i przerabiam na mniejsze.

A tak przy okazji, jaką rolę pełni przerzutnik D w konstrukcji?

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » wtorek 23 lis 2021, 13:58

gaweł pisze:A tak przy okazji, jaką rolę pełni przerzutnik D w konstrukcji?

Transmisja_szeregowa..png

Skoro miałem dekoder adresów, to "przy okazji" dorobiłem resztę, żeby CA80 mógł wystąpić w roli ZX-a. Robię rekonstrukcję wszystkiego, co się da. :-)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: gaweł » wtorek 23 lis 2021, 15:50

Aaaa, rozumiem wszystko. To taki "inny" wariant SPI, tylko macha się adresami. No ciekawe rozwiązanie.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

tapy
User
User
Posty: 119
Rejestracja: niedziela 14 kwie 2019, 17:09
Kontaktowanie:

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: tapy » środa 24 lis 2021, 00:27

Zegar pisze: Flopp-ów pewnie już nie będę używał...
Ale nigdy nie mów nigdy!


Też tak mówiłem i mam obecnie trzy działające w komputerach z Z80 i Z180 :) Prawdą jest "nigdy nie mów nigdy" :D

Awatar użytkownika
phill2k
User
User
Posty: 272
Rejestracja: niedziela 18 paź 2015, 00:12

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: phill2k » piątek 26 lis 2021, 21:24

Sprzęt rośnie w "siłę", że tak napiszę, super.

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » piątek 26 lis 2021, 21:46

phill2k pisze:Sprzęt rośnie w "siłę", że tak napiszę, super.

Dzięki. Uczę się...
Zapomniałem o "kwiatkach".
GERBER_LCD_DIR.zip
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: gaweł » piątek 26 lis 2021, 22:36

Zegar pisze:Dzięki. Uczę się...


To bezcenne ;)

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » sobota 11 gru 2021, 23:14

Dopracowałem "bibliotekę" LCD. Działa bez zarzutu. Trudno dostrzec okiem chwilę pojawiania się nowego komunikatu. Nic nie miga i nie "zamula", jak np. w Arduino z I2C. Zostawiłem nieużywaną procedurę sprawdzania "busy", którą można użyć do wykrywania, czy LCD jest podłączony. W przypadku braku połączenia program zawiesi się na sprawdzaniu flagi...Pętla DJNZ była przerywana zwykle na wartości 0FEh, czasem 0FFh i bardzo rzadko 0FDh. To oznacza, że przynajmniej raz się wykonała (zaczynałem od B = 0). Zastanowiło mnie skąd te różnice... Dopiero po dłuższej chwili przypomniałem sobie o NMI!

Policzmy takty zegara.
Przed pętlą:

Kod: Zaznacz cały

RET     10
CALL    17
PUSH    11
PUSH    11
LD      07
============
        56


Pętla:

Kod: Zaznacz cały

IN       11
AND      07
JR       12 ; raz 7 i raz 12
DJNZ     08 ; raz 13 i raz 8
============
         38


Razem 56+(2*38)=132 takty zegara 0.25 us każdy, więc wyszło ok. 33us. Nota katalogowa podaje 37us, więc chyba dobrze policzyłem. Jeżeli trafimy na NMI, to na nic nasze obliczenia. ;)
IMG_20211211_231951.jpg
lcd_demo2_2.zip
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

maniekw23
Posty: 5
Rejestracja: wtorek 13 wrz 2022, 21:06

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: maniekw23 » wtorek 13 wrz 2022, 21:35

Witam wszystkich
Zakupiłem niedawno na aukcji CA80.
Przyszedł do mnie z dołączonym wyświetlaczem LCD 1x40 lub 2x40.
Na jednym z Epromów jest naklejka z napisem MCA80 LCD na drugim LrZ80.
Sprzęt pochodzi z któregoś Technikum.
Sprzedawca miał wszystkie z tymi wyświetlaczami.
Czy ktokolwiek wie coś na temat tej modyfikacji.
Jak wywołać procedurę uruchomienia tego LCD-ka.
Pozdrawiam
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » środa 14 wrz 2022, 06:12

Piękny okaz Ci się trafił! :like:
Nie znam żadnej oficjalnej ("firmowej" - jak pisał pan Gardynik) aplikacji takiego wyświetlacza. Jeżeli nie mam żadnych wskazówek w postaci schematu i listingu oprogramowania czy chociaż opisu, pozostaje reverse engineering. Najlepiej zacząć od odtworzenia schematu i znalezienia noty katalogowej wyświetlacza. Potem zająć się deasemblacją zawartości EPROM-ów. O ile pierwszy etap jest dosyć łatwy, to drugi może zająć sporo czasu. Nie wiemy, co autor miał na myśli...
Jest też możliwość testowania na chybił - trafił. Jeżeli autor stosował się do zaleceń z MIK-ów, jest szansa, że wyświetlacz sam się odezwie (oczywiście gdy będzie poprawnie podłączony do złącza). Należy spróbować systemowego wywołania *80, czyli wejścia do programów z EPROM-u w U10. Do U11 też jest skrót, ale go w tej chwili nie pamiętam.

Do odważnych świat należy. Proszę próbować. :D
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

maniekw23
Posty: 5
Rejestracja: wtorek 13 wrz 2022, 21:06

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: maniekw23 » środa 14 wrz 2022, 11:01

Witam
Wyświetlacz i jego wyprowadzenia to są standardowe czyli na układach HD Hitachi co do Epromów to zrobiłem odczyty.
Pozdrawiam
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » czwartek 15 wrz 2022, 12:32

Zajrzałem do plików programem HxD. MCA80LCD zaczyna się czterema zerami i dalej tak jak monitor nowego CA80. Nie przeglądałem całego, ale pewnie gdzieś dalej są procedury obsługi LCD. Od 2000H jest jakiś program, który zaczyna się od ustawienia stosu (31 8D FF), więc można spróbować go uruchomić. Drugi plik w drugim bajcie ma 55H, więc można go uruchomić skrótem [8][0]. Oczywiście musi być w podstawce U10. Program zaczyna się od 4020H od ustawienia stosu, więc wszystko zgodnie z zaleceniami MIK. Nie analizowałem programu, ale zawiera on wiele komunikatów typu: "Operacje arytmetyczne i lo.iczne.$Wprowad. dwie 2cyfrowe liczby HEX". Wygląda na pomoc dydaktyczną do nauki programowania. :)
Nie chce mi się odtwarzać schematu ze zdjęć, więc nie będę dalej tym się zajmował.

Proponuję sprawdzić doświadczalnie. Pewnie będzie działać. Powodzenia. :D
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

maniekw23
Posty: 5
Rejestracja: wtorek 13 wrz 2022, 21:06

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: maniekw23 » czwartek 15 wrz 2022, 15:59

Dziękuje za zainteresowanie.
W wolnej chwili rozrysuje schemat podłączenia.
Pozdrawiam

maniekw23
Posty: 5
Rejestracja: wtorek 13 wrz 2022, 21:06

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: maniekw23 » czwartek 15 wrz 2022, 17:40

Witam ponownie
Dziękuje Ci kolego "Zegar" za instrukcję.
Faktycznie po uruchomieniu procedury [8][0] uruchamia się wyświetlacz.
Ale co będę się rozpisywał .Zobaczcie sami.
Jeżeli macie jakieś pytania to piszcie.
Pozdrawiam
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

maniekw23
Posty: 5
Rejestracja: wtorek 13 wrz 2022, 21:06

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: maniekw23 » wtorek 20 wrz 2022, 01:21

Witam wszystkich
Aby zakończyć walkę z wyświetlaczem do CA80 przestawiam dokument z moich działań.
Może się komuś przyda.
Pozdrawiam.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » wtorek 20 wrz 2022, 08:55

maniekw23 pisze:...Aby zakończyć walkę z wyświetlaczem do CA80 ...

Wygląda na to, że nie odkryłem Ameryki. :lol:

Opisany układ działa na tej samej zasadzie, co opisany wcześniej przeze mnie. Ktoś jednak poszedł po linii najmniejszego oporu (albo "najmniejszej linii oporu" ;) ). Jako strob wykorzystał RESI_, który jest używany przez monitor CA80. Pan Gardynik napisał go tak, żeby działał zarówno z Z80 CTC, jak i bez niego. Dlatego w czasie przyjęcia przerwania bez CTC, należy skasować przerzutnik D U17, który co prawda w nowym CA80 nie występuje, jednak monitor go nadal używa (adres 04AFH w nowym monitorze). Bez ingerencji w program (pierwsze 2 kB to świętość i nie należy ich dotykać :!: ) ryzykujemy zakłóceniami. Poza tym nie używamy sygnałów RD_ i WR_, więc kolejne ryzyko występuje w czasie przyjęcia przerwania w trybie IM2. Nie wiemy, co w przyszłości zostanie użyte w naszym komputerze (ciągle są pasjonaci, którzy coś w tym temacie robią :D ). Podczas przyjęcia przerwania (IM2) generowany jest dodatkowy cykl maszynowy, w którym procesor wystawia M1_ wraz z IORQ_. Wtedy na szynę adresową jest wystawiana kombinacja zawartości rejestru I oraz wektora przerwań podanego na szynę danych przez układ peryferyjny (CTC, PIO, SIO itp.). Trzeba przemyśleć, co zrobi wyświetlacz w takiej sytuacji (dlatego w moim schemacie jest M1_ i druga bramka 7402).
IMG_20220919_224555.jpg

Wczoraj zrobiłem "przydaś", który ma pomóc rozpracować MIKSID. Działa z wykorzystaniem mechanizmów zastosowanych przez Pana Gardynika. Napisałem do niego krótki program, który po przeadresowaniu, mógłby przetestować kolega na swoim sprzęcie. Będzie działać bez wymiany żadnego "wsadu" (fuj!!! :? ). W niedalekiej przyszłości opracuję możliwie krótką wersję tego programu, żeby zbyt się nie zmęczyć przy "wklepywaniu" i zamieszczę tutaj. W tym czasie kolega może sam spróbować przeadresować procedury z postu kilka wyżej i wyświetlić coś swojego. Może "walka" zmieni się w zabawę? Powodzenia!
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » środa 21 wrz 2022, 19:42

Trochę mi zeszło... Chciałem doszlifować szczegóły i nie obyło się bez debugowania. :D

Ponieważ jest to wersja testowa, nie jest zbyt wygodna w użytkowaniu, za co z góry przepraszam. Najpierw należy program wpisać do RAM. Jeżeli ktoś dorobił się jakiegoś "loadera" to gratuluję. Pozostali niestety będą po staremu męczyć klawiaturę, albo sobie odpuszczą... Starałem się uprościć - skrócić wszystko co się dało, a i tak wyszło ponad 300 bajtów. Przetestowałem na wyświetlaczu 4x20, bo 2x40 nie posiadam. Nie wiem, jak tam są adresowane linie, ale sądzę, że podobnie. W LCD 2x16 L1 i L2 mają te same wartości, co w większym. Załączam program adresowany na E=40H i przeadresowany na RESI_ (E=0FCH) dla kolegi, który zademonstrował swój nowy nabytek. Prawdopodobnie w jego EPROM-ach są procedury podobne do moich, ale nie chce mi się ich szukać. Pisanie własnego programu jest łatwiejsze niż analizowanie czyjegoś, zwłaszcza gdy mamy tylko "binarkę".

Po "wklepaniu" kodu należy wykonać procedurę START. [G][F007][=] - prawie jak Bond. ;) Zainicjuje ona wyświetlacz i wpisze adres głównej procedury w miejsce skoków pośrednich w RAM. Dopiero teraz możemy przełączyć PA0 w porcie systemowym na HIGH (podłączyć do +5V) . Dobrze jest wcześniej przygotować się do tej operacji, żeby nie okazało się, że bez lutownicy ani rusz. Najlepiej jakiś zgrabny przełącznik wyprowadzić na zewnątrz. Niestety mam na płytce goldpiny i zworkę, ale jakoś dałem radę. Wcześniej testowałem program, który zmieniał adresy skoków z ROM-u (803H i 806H), więc zworka mogła być od razu w pozycji MIKSID-RTS. Płytka z bootloaderem jest jeszcze w fazie testów, więc trzeba na nią trochę zaczekać.
Rozruch_CA80_BEZ_ROM.png

Nadszedł czas prawdy. Jeżeli nie pomyliliśmy się w czasie pisania, wciśnięcie [M] spowoduje wyświetlenie czegoś takiego:
IMG_20220921_180057.jpg


Oczywiście wartości rejestrów mogą być inne, ale PC, SP i HL to wynik działania procedury START, więc muszą być takie same. Możemy teraz używać CA80 tak jak wcześniej, czyli wpisywać i uruchamiać programy, ustawiać rejestry itd. Praca krokowa niestety nie chce działać, ale muszę sprawdzić bez LCD. Może problem leży gdzie indziej. Nie działa też CA88. Może też z powodu CTC? jeszcze nie wiem, ale gdyby ktoś mógł sprawdzić u siebie - będę wdzięczny za informacje.

W czwartej linii mogłyby być wyświetlone IX i IY, ale celowo je pominąłem. Uczyłem się asemblera w czasach, gdy programowało się ołówkiem na papierze, a potem ręcznie wprowadzało do komputera. Liczył się wtedy każdy bajt, więc rejestry indeksowe lepiej było omijać z daleka. Każdy rozkaz to jeden lub dwa bajty więcej niż w przypadku podstawowych. RAM-u też miałem tylko dwa kilobajty... Dla ostatniej linii przewidziałem ambitniejsze zastosowanie, ale to może na gwiazdkę?
msid-demo-short.zip

MSID-demo-RESI.zip
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

Awatar użytkownika
Zegar
User
User
Posty: 316
Rejestracja: wtorek 02 lip 2019, 14:42

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: Zegar » sobota 24 wrz 2022, 23:40

Ostatnio pochwaliłem się nowym programem. Starałem się, żeby był krótki. Chyba się udało. W asemblerze czasem trudno analizować czyjś kod, więc postanowiłem pokazać jego algorytm.

Kod: Zaznacz cały

uint16_t *regs[6] = {*af, *sp, *bc, *de, *hl, *pc};
char reg_names[6][] = {"A=", "SP=", "BC=", "DE=", "HL=", "PC="};
void show_regs
{
  for (i = 0 ; i <6 ; i++)
  {
    print_reg_name(i);
    uint16_t reg = get_reg_val(i);
    if (i = 0)
    {
      uint8_t A = reg / 256;
      print_byte(A);
      reg = reg%256;
      print_flags(reg);
    }
    else
    {
      if ((i = 2) || (i = 5));
        {
          new_line();
        }
      print_reg_name(i);
      print_word(reg);
      if (i=5)
      {
        for(i = reg; i < reg + 4; reg++)
        {
          print_byte(*reg)
        }
      }
    }
  }
}


Oczywiście to tylko algorytm zapisany w pseudo C. Funkcje mają opisowe nazwy, żeby było wiadomo, co robią. Nie ma deklaracji funkcji itd. Zrobiłem tak, jak umiałem, więc proszę o wyrozumiałość - nie jestem programistą. Program w asemblerze rzeczywiście robi to, co wynika z algorytmu. Jest jedno ale... :(

Gdy chcemy coś zmierzyć, np. temperaturę, dobieramy metodę pomiaru do obserwowanego obiektu. Nie chodzi oczywiście o sposób prezentacji wyniku, ale o dobór czujnika w sposób ograniczający jego wpływ na obiekt. Najlepiej mierzyć nieinwazyjnie, ale nie zawsze można.
:idea: Trzeba chronić środowisko, przed wpływem naszych działań. Tymczasem mój "termometr" wbiłem w CA80, nie bacząc na konsekwencje! Prawie mi się udało, bo najczęściej używane rejestry (A i HL) były już "zużyte". BC też służył do kasowania pułapek. Niestety przeoczyłem taki fragment:

Kod: Zaznacz cały

;.COMMENT%
;Informacja niesiona przez rej. D jest nastep:
;D=0 - nie bylo pulapki
;D=1 - byla pulapka nr. 2
;D=2 - byla pulapka nr.1
;%

Gdyby program był pisany w języku wyższego rzędu np. w C, kompilator sam zadbałby o ochronę zmiennych. W asemblerze sami musimy to zrobić. Wystarczyły tylko PUSH DE i POP DE, aby wszystko się zgrało.

Żeby wynagrodzić zawiedzionym czytelnikom stracony czas, dopisałem kawałek kodu. Znalazłem też błąd (sprzętowy) blokujący pracę krokową. Teraz wszystko pięknie działa.
IMG_20220924_222106.jpg

Dlaczego używam w nazwie MSid? Czym jest MIKSid (czy MSid, jak kto woli)? Najprościej można porównać go do debugera. Jest to narzędzie pomagające uruchamiać programy. Im dłużej rozgryzam zawiłości monitora CA80, tym większy podziw czuję wobec autora. W dwóch kilobajtach zmieścił tak wiele możliwości. Mimo że Z80 nie ma trybu "nadzorcy" (supervisor), jak na przykład Motorola 68k, pan Gardynik stworzył go programowo. Można odnieść wrażenie, że w tym małym komputerze pracują dwa. Jeden jest użytkownika - czyli nasz, a drugi nad wszystkim czuwa. Niestety czasy były siermiężne, więc całość została ograniczona do ośmiocyfrowego wyświetlacza, ale i tak było to nieocenione narzędzie. Gdybym wtedy (w 1985 roku) miał LCD...

Dołączam poprawiony kod z E=40H. (Algorytm jest trochę nieaktualny). Rozrosła się tablica adresów rejestrów, więc zaczynamy od [G][F009][=]. Dopiero wtedy przełączamy zworkę (PA0 = 1) i od tej pory mamy podgląd rejestrów użytkownika. Aktualizuje się on po każdym kroku pracy krokowej, po naciśnięciu [M], po zatrzymaniu programu na pułapce oraz po rozkazie RST 30H. W czasie pracy programu użytkownika niestety nic nowego się nam nie wyświetli. Jednak możemy też wykorzystać LCD do własnych celów, ale po zatrzymaniu programu, wrócą tam rejestry (chyba że chytrze przełączymy zworkę :lol: ). Miłej zabawy!
MSID-demo-40.zip

P.S. Gdyby ktoś potrzebował przeadresowany, proszę się odezwać. Jutro odpowiem.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."
A. Einstein

nadolic
Posty: 11
Rejestracja: piątek 22 lis 2019, 21:04

Re: [CA80][Podzespoły] Wyświetlacz LCD.

Postautor: nadolic » niedziela 25 wrz 2022, 11:36

Przetestowałem ten program z drobną zmianą (przeniosłem REGS w inne miejsce, też od początku strony), aby START zaczynał się od deklarowanej wartości początku programu: 0F000h, działa! Fajna rzecz podczas uruchamiania programów, mamy podgląd na LCD, nie trzeba korzystać z systemowego klawisza F i klawiszy poszczególnych rejestrów podczas pracy krokowej.


Wróć do „Retro”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości