[CA80]System plików.

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]System plików.

Postautor: Zegar » poniedziałek 08 lut 2021, 12:54

Od dawna myślę o pamięci masowej do CA80. Procedury obsługi magnetofonu już są, więc po co? Z wielu powodów. Trudno dziś o sprawny magnetofon. Czas przesyłania danych jest zbyt długi... Można stworzyć jakiś system plików, żeby nie zawracać sobie głowy adresami czy długościami bloków. Może Intel Hex? Jest dobry, niezawodny ale pliki są trochę "ciężkie". Z kilobajta robią się trzy... Ale przecież Pan Gardynik opracował format danych! Po co to zmieniać. "FDE2" i jedziemy. No ale gdzie to zapisywać? Po przemyśleniu tematu, doszedłem do wniosku, że najlepszym "magnetofonem" dla CA80 jest CA80. Jak pomyślałem, tak zrobiłem. Oto efekt:

https://youtu.be/E_cK-b_avXM


Zapętliłem krótki programik, który odczytuje pliki. FMAG to zmodyfikowana procedura systemowa OMAG. Kiedy nazwa się zgadza zapisuje do RAM. W myśl hasła: "...żeby było tak, jak było..."

Kod: Zaznacz cały

.loop
        ld B,7EH  ;Numer sektora
        call FMAG
        ld B,0FEH  ;Numer sektora
        call FMAG
        jr .loop
"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]System plików.

Postautor: Zegar » poniedziałek 08 lut 2021, 21:41

Na starym sprzęcie też działa! Trochę gimnastyki z podłączeniem A13 i gotowe.
IMG_20210208_175758.jpg


Krasnal MIK już wdeptał Arduino w ziemię, więc czas na objaśnienia. Tym razem żadnych mikrokontrolerów i innych czarów nie będzie. Tylko Z80 i trochę kodu. W asemblerze oczywiście. Napisałem coś w rodzaju monitora na wzór CA80. Uruchamia się przez *80 zgodnie z zaleceniami Pana Gardynika. Do obsługi dołączyłem klawisz [G], tak jak w CA88. Procedury obsługi magnetofonu przerobiłem z oryginału, a do wysyłania danych przez wyjście magnetofonowe wykorzystałem oryginalne (wywołuję je bezpośrednio kiedy trzeba).

Tak wygląda tablica rozejść programu:

Kod: Zaznacz cały

CTBLX:
        .dw Z0             ;Czy wolny sektor
        .dw Z1             ;Szukaj wolny sektor (jeszcze brak)
        .dw Z2             ;Kasuj sektor
        .dw Z3             ;Ustaw adres bufora(kasuj bufor)
        .dw Z4             ;Zapisz RAM do bufora
        .dw Z5             ;Zapisz EOF do bufora
        .dw Z6             ;Czytaj sektor do RAM
        .dw Z7             ;Zapisz bufor do sektora
        .dw Z8             ;Czytaj z wejscia magn. do bufora (jeszcze brak)
        .dw Z9             ;Weryfikuj we. magn. z buforem (jeszcze brak)
        .dw ZA             ;Wyslij sektor przez wy. magnet.
        .dw ZB             ;Ustaw 3,5 kHz na wy. magnet.
        .dw ZC             ;Kopiuj dane do EEPROM W U11
        .dw ZD             ;Disable SDP (np. MK28C64) W U11
        .dw ZE             ;Enable SDP (lub np. AT28C64) W U11
        .dw 0FFFFH         ;Rezerwa       
LCTX    .eq $-CTBLX/2


Jeżeli ktoś czytał MIK05 i MIK08, na pewno zobaczy podobieństwo. Można nawet śmiało powiedzieć, że popełniłem plagiat. Tak jak pisałem wcześniej, chciałem, "żeby było tak, jak było". Chyba się udało, ale czeka mnie trochę poprawek. Np. ZD i ZE działają "bezobjawowo", to znaczy robią to, co mają robić, ale nie piszą nic na ekranie. Są za szybkie. Dołączyłem je (oraz ZC), żeby przetestowany program wgrać do EEPROM, co już zrobiłem.
Jak to działa? Pomysł wpadł mi do głowy, gdy czytałem notę katalogową SST39SF040. Kość leżała w szufladzie i chciałem coś z nią zrobić. Programuje się ją podobnie do EEPROM-ów. Nawet klucze i adresy są takie same. Różnica jest jednak w zapisie. Odblokowany EEPROM (z zabronionym SDP) możemy zapisywać prawie jak RAM. Trzeba tylko przestrzegać czasów zapisu. Flash natomiast zapisujemy odblokowując każdy bajt oddzielnie, to znaczy przed zapisem musimy wysłać sekwencję rozkazów (nazwałem je kluczami, bo otwierają drzwi). Do tego przed zapisem musimy skasować całą kość lub sektor. (Kasowania całej kości nie użyłem, żeby przypadkiem nie skasować dorobku życia ;-)) I to właśnie naprowadziło mnie na trop. Sektory są czterokilobajtowe. W sam raz. Cała kość mieści 128 takich sektorów. Nazw plików (programów zapisywanych na taśmie) jest 256 ( 0 do 0FFH). Wynika z tego, że adresowanie sektorów będzie siedmiobitowe, czyli np. sektor 7EH będzie widziany również jako FEH. Żeby nie tracić miejsca przewidziałem możliwość zapisu dwóch plików do tego samego sektora, co widać na załączonym wcześniej filmie. Dlatego potrzebny był bufor, do którego najpierw wgrywam program, potem rekord EOF, drugi program z rekordem EOF i na koniec całość zapisuję w wybranym sektorze. Numer sektora musi być zgodny z numerem zapisanego programu, bo tylko wtedy nastąpi zapis do RAM. Muszę się przyznać do małego oszustwa... Operacje na Flash są tak szybkie, że nic nie widać na wyświetlaczu i nie można by było nagrać żadnego filmu. Wstawiłem więc opóźnienie 8 ms do zapisu każdego bajta. Przy czterech milisekundach prawie nie widać migania znaku równości podczas zapisu do RAM.

Tym prostym sposobem zbudowałem wewnętrzną pamięć masową. Z początku myślałem o czymś w rodzaju magnetofonu, jednak koszt zrobienia takiej przystawki to ok. 2 USD plus płytka, więc śmiało można "wyprodukować" dla każdego CA80 po egzemplarzu.

Niestety jestem "w gorącej wodzie kąpany" i trudno mi się powstrzymać przed podejmowaniem pochopnych decyzji. Tym razem szczęście mi nie sprzyjało i "wdepnąłem". Kiedy wymyślałem sterowanie tym ustrojstwem, operacje logiczne zrobiłem na prostych sygnałach i okazało się, że zamiast NAND potrzebny jest NOR. Mały problem - podmienimy kość i po sprawie. Nie tym razem... Gdyby to był OR lub XOR, ale nie NOR! Akurat w nim bramki są odwrotnie i trzeba było ciąć ścieżki. Do tego pierwotnie źle podzieliłem przestrzeń adresową. EEPROM musi być pod 4000H, żeby działało *80. Udało się to osiągnąć przez zanegowanie A13. Wykorzystałem ostatnią bramkę i nie musiałem ciąć wszystkich CeeSów.

Oto schemat:
CA80_FLASH_1.pdf

CA80_FLASH.pdf


Płytka na razie z błędem, więc "gerberów" nie zamieszczam:
Flash_CA80.png

IMG_20210208_204832.jpg

IMG_20210208_205703.jpg

IMG_20210109_194559.jpg


Ledy użyłem, żeby zbędne bramki się nie nudziły, jednak są bez sensu. Czerwona mignie w czasie zapisu sektora, bo tam trochę się dzieje, ale zielona prawie nic nie daje. Może w ciemności byłoby ją widać...

Zamieszczam kod. Źródłem na razie się nie chwalę, bo muszę jeszcze nad nim popracować. Działa nawet bez płytki. Wystarczy wgrać do RAM pod 4000H. W U11 też musi być RAM, bo 8000H - 8FFFH to jest bufor. Będzie dostępny tylko jeden sektor 6000H - 6FFFH. Klucze zapiszą się pod 7555H i 7AAAH. Numer sektora w 5000H. Niestety musi być 16 kilobajtów, bo przy ośmiu zapis sektora skasuje program...
ca80_flash.zip
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony wtorek 09 lut 2021, 15:30 przez Zegar, łącznie zmieniany 1 raz.
"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]System plików.

Postautor: Zegar » poniedziałek 08 lut 2021, 23:03

Przepraszam, że od razu nie pomyślałem... Program uruchamiałem normalnie czyli w RAM U12. Gdyby ktoś chciał spróbować, to zamieszczam przeadresowany kod. Wejście do programu 0C020H (docelowo 4020H żeby działało *80).
ca80_flash_C000.zip

Nie będzie problemu z podwójnym adresowaniem, ale 8 kB w U10 musi być.
Dołączam też okrojone źródło, bo to, co wcześniej napisałem, nie wyjaśnia, co trzeba "wklepać" w poszczególnych zleceniach.
CA80_Flash_skrot.zip

Oczekuję konstruktywnej krytyki. Nie tylko z powodu plagiatu. ;-)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony niedziela 14 lut 2021, 22:36 przez Zegar, łącznie zmieniany 2 razy.
"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]System plików.

Postautor: Zegar » wtorek 09 lut 2021, 09:15

Jeszcze mała wskazówka: wbrew regułom dobrego programowania nie należy modyfikować SP w programach wywoływanych z "magnetofonu", bo nie będą wiedziały dokąd wrócić. (Palenie mostów zabronione.)

Wskazówka nr 2: Programy wywoływane z "magnetofonu" muszą używać innego obszaru RAM, żeby nie skasowały programu wywołującego.

Nigdy wcześniej się tak nie bawiłem, więc wpadłem w obie pułapki. :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

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

Re: [CA80]System plików.

Postautor: Zegar » piątek 19 mar 2021, 20:50

Dobry wieczór!

Udoskonaliłem "wynalazek". Postanowiłem zmieścić wszystko w 16 kilobajtach. Żeby nie marnować przestrzeni adresowej dołożyłem dwa komparatory, które dekodują adres LS373. Dzięki temu w obszarze 5000H - 5FFFH umieściłem bufor. Komórka o adresie 5FFDH jest zapisywana jednocześnie z rejestrem 373. Na razie zamiast EPROM-u wstawiłem RAM, żeby łatwiej modyfikować program.
CA80_FLASH.pdf

CA80_FLASHV2_0.png

CA80_FLASH_V2.jpg

Gerber_Flash2.zip

Tym razem bez błędów - ani jednej poprawki.
Program jeszcze niedokończony. Planuję dopisać procedurę przesyłającą dane przez interfejs ZX Spectrum (zlecenie *8E). Podczas oczekiwania na płytkę (prawie miesiąc) przetestowałem transmisję. Działa. Dołożyłem kilka funkcji do obsługi klawiatury dotykowej. Przesłanie pliku .hex z karty SD jest wielokrotnie szybsze niż przez magnetofon.
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]System plików.

Postautor: Zegar » niedziela 28 mar 2021, 20:45

Krótko cieszyłem się "bezbłędnością"...
Czy ktoś zauważył, gdzie jest błąd? Już go zlokalizowałem, ale zajęło mi to trochę czasu. ;-)
"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

SuperGość
Uber Geek
Uber Geek
Posty: 2346
Rejestracja: piątek 04 wrz 2015, 09:03

Re: [CA80]System plików.

Postautor: SuperGość » poniedziałek 29 mar 2021, 16:17

Nie sądzę aby komuś chciało się analizować gerbery :D

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

Re: [CA80]System plików.

Postautor: Zegar » poniedziałek 29 mar 2021, 16:41

wojtek pisze:Nie sądzę aby komuś chciało się analizować gerbery :D

Nawet o tym nie pomyślałem... Ale schemat zamieściłem, a tam widać błąd. :lol:

Kto pierwszy znajdzie, dostanie płytkę (z wysyłką do paczkomatu).
"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

SuperGość
Uber Geek
Uber Geek
Posty: 2346
Rejestracja: piątek 04 wrz 2015, 09:03

Re: [CA80]System plików.

Postautor: SuperGość » poniedziałek 29 mar 2021, 16:53

U6 pozbawiony zasilania? To widziałem nawet się najpierw zdziwiłem czemu w innych uwidaczniasz piny zasilania, a tu jedynie zasygnalizowałeś obecność. Sądziłem że tak ma być, a i tak masz podłączone na płytce.

No ale z drugiej strony napisałeś że uruchomiłeś to czemu miał ktoś doszukiwać się błędu?

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

Re: [CA80]System plików.

Postautor: Zegar » poniedziałek 29 mar 2021, 19:22

Po zmontowaniu i podłączeniu działa. Niestety po pewnym czasie (30 minut - dwie godziny) przestaje. Objawy zimnego lutu. Pierwszą zmontowałem z "drabinką", żeby włożyć bezpośrednio do podstawki. Szukanie zimnego lutu nie dało rezultatów, więc polutowałem drugą. Tym razem do łączenia przez taśmę. Dokładnie takie same objawy... Wymieniłem RAM - bez poprawy. Daje się zapisać ale po pewnym czasie pozostaje tylko odczyt albo nic.

Dosyć podpowiedzi. Myślę, że @gaweł od razu zobaczy.
Powodzenia!
"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]System plików.

Postautor: Zegar » wtorek 30 mar 2021, 08:21

wojtek pisze:U6 pozbawiony zasilania?

Symbol SST39SF040 jest tak zdefiniowany. Zasilanie ma wyprowadzone jako wiszące w powietrzu kółka, które znikają po podłączeniu sygnału. Już zapomniałem, że to mnie zdziwiło...
wojtek pisze:No ale z drugiej strony napisałeś że uruchomiłeś to czemu miał ktoś doszukiwać się błędu?

Masz rację. Głupio zrobiłem, rzucając nikomu niepotrzebny problem.

Jednak chwilkę zaczekam, bo jest nagroda, a "kto daje i odbiera..."
"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

SuperGość
Uber Geek
Uber Geek
Posty: 2346
Rejestracja: piątek 04 wrz 2015, 09:03

Re: [CA80]System plików.

Postautor: SuperGość » wtorek 30 mar 2021, 19:39

No nie że głupio , bez przesady, mnie to zaciekawiło :)

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

Re: [CA80]System plików.

Postautor: nadolic » środa 31 mar 2021, 11:17

Witam,
myślałem początkowo, że błąd pamięci RAM 6264 leży w podpięciu pinu 1 - Vpp do +5V /tak na schemacie/jako że to napięcie programowania ale to nie to, gdyż RAM się nie programuje... no i przyszedł czas na datasheets... a tam DWA CS!!! jeden "normalny" - pin 20, wybierany stanem niskim a drugi CS to pin 26, który MUSI być w stanie H aby coś odczytać lub zapisać! Jeśli będzie wisiał w "powietrzu", to różne rzeczy mogą się dziać i tak jest prawdopodobnie w Twoim przypadku. Na schemacie co prawda brak pinu 26 ale datasheets opisuje wszystko dokładnie. Taki krótki mój komentarz do tej pamięci masowej.
Stanisław

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

Re: [CA80]System plików.

Postautor: Zegar » środa 31 mar 2021, 16:09

Mamy zwycięzcę!!!

Błąd wziął się z bezmyślnego kopiowania... Kiedyś kolega @phill2k podpowiedział mi, skąd wziąć symbol RAM. Po prostu zmienić nazwę symbolu EPROM. Kiedy potrzebowałem symbol EEPROM-u 2864, wziąłem 2764. Miałem już na schemacie 27128, ale pomyślałem: "po co mi A13!?". Potem zmieniłem koncepcję i dołożyłem 6264, a tam jest CE2... Jak widać z dobrych rad trzeba umieć korzystać. Naprawa błędu polega na połączeniu pinów 26 i 28.

Gratuluję zwycięzcy i proszę o dane do wysyłki (w prywatnej wiadomości oczywiście).
"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]System plików.

Postautor: Zegar » sobota 03 kwie 2021, 16:48

Dobór układów TTL.

Na schemacie dosyć niefrasobliwie pozostawiłem nazwy symboli, które znalazłem w KiCad-zie. Niestety technologia użytych kości nie jest całkowicie dowolna. W obecnym czasie można kupić prawie wszystko, ale często mamy już coś w szufladzie. Powinniśmy zacząć przegląd od U4 na płycie CA80, do której podłączymy nasz układ. Jeżeli znajdziemy tam LS138 (S405, 8205 czy 74138), to mamy dwa wyjścia: kompletujemy wszystkie układy w technologii LS (lub HCT), albo wymieniamy kość na HC138. Jeżeli U4 jest HC, to możemy użyć cokolwiek znajdziemy. Oczywiście najlepiej w tej samej technologii. Mieszanie jest dozwolone wg. poniższej tabelki:
CA80_FLASH_V2_TTL.png

Możemy wstawiać HC dopóki na lewo od dobieranej kości jest HC (wyjątkiem jest U9, który zależy tylko od U1). Jeżeli pojawi się LS, to na prawo od niego wstawiamy LS lub HCT.

Z powyższego wynika, że na zamieszczonym schemacie U2 nie spełnia warunku: jest HC02, a powinien być LS02. Sprawdziłem i rzeczywiście nie ma wtedy zapisu do LS373. Po wymianie U1 (139) i U8 (688) na HC działa. Na wszystkich kościach HC również jest OK.

Errata:W treści postu jest błąd. Zaznaczyłem go żółtym kolorem. Powinno być "U5" tak jak w tabelce. Przepraszam.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony niedziela 16 maja 2021, 10:30 przez Zegar, łącznie zmieniany 1 raz.
"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]System plików.

Postautor: nadolic » sobota 15 maja 2021, 16:07

Witam,
zmontowałem i uruchomiłem płytkę w 1. wersji, działa bez zarzutu. „Instrukcja” obsługi jest w poście powyżej - #1. Dla tych co zbyt szybko czytają /jak ja/, podpowiem, że NAZWA pliku /zlec. *4 i *5/ to NR SEKTORA. Jak pisze Autor, można zapisywać po dwa programy do sektora, pamiętając, że BUFOR ma max 4 kB i do każdych 16 bajtów naszego programu musimy dodać 7 bajtów - tego wymaga zapis do bufora - marker FD E2, nr, adres, itp. Jeśli nazwa pierwszego programu /przy zapisie dwóch programów/, który chcemy zapisać do BUFORA jest równa np. 5Ch, to nazwa drugiego programu musi być DCh /negujemy najstarszy bit nazwy pierwszego programu/.
Zastanawiam się nad ułatwieniem znajdowania-wyszukiwania zapisanych programów we FLASH: można zapisane sektory /1-7F/ umieścić w sektorze 0, przypisać im tytuły /np. /"5B SKANER I2C"/ i wyświetlić np. na LCD 4x20 znaków; następnie wybierzemy nr interesującego nas programu i wczytamy go do RAM zlec. *6. Mam podobny program do wyszukiwania numerów, po przeróbce umieszczę go w tym wątku.
Gdyby były jakieś sugestie, proszę o takowe.
Pozdrawiam
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony niedziela 16 maja 2021, 09:22 przez nadolic, łącznie zmieniany 2 razy.

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

Re: [CA80]System plików.

Postautor: Zegar » niedziela 16 maja 2021, 02:12

nadolic pisze:można zapisywać po dwa programy do sektora, pamiętając, że BUFOR ma max 4 kB i do każdych 16 bajtów naszego programu musimy dodać 7 bajtów - tego wymaga zapis do bufora - marker FD E2, nr, adres, itp.


Jeżeli uda nam się napisać dłuższy program, który nie mieściłby się w sektorze (mało prawdopodobne), łatwo możemy zaoszczędzić kilka bajtów. W czasie zapisu do bufora program koduje rekordy używając systemowego parametru [DLUG], który możemy zmienić zleceniem *7 (opis MIK05 strona 108). Standardowo rekord danych ma szesnaście bajtów (10H). Możemy go wydłużyć np. do 128 bajtów wpisując zleceniem *7 monitora CA80 (nie opisywanego tu CAFL) [7][3580][=]. 35H to standardowa szybkość zapisu na magnetofon[SZYB]. Moglibyśmy ją pominąć, jednak zostałaby ona wyzerowana i gdybyśmy próbowali coś wysłać lub odebrać torem magnetofonowym, moglibyśmy stracić trochę czasu na szukanie usterki... Niestety [SZYB] i [DLUG] ustawiane są jednocześnie i trzeba o tym pamiętać.
nadolic pisze:Zastanawiam się nad ułatwieniem znajdowania-wyszukiwania zapisanych programów we FLASH: można zapisane sektory /1-7F/ umieścić w sektorze 0, przypisać im tytuły /np. /"5B SKANER I2C"/ i wyświetlić np. na LCD 4x20 znaków;

Świetny pomysł! :idea:
"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]System plików.

Postautor: nadolic » czwartek 03 cze 2021, 20:36

Jak obiecałem, przedstawiam mój program do obsługi pamięci FLASH-odczyt nazw programów. Program jest "podpięty" pod zlec. *F programu Autora tego tematu ZEGAR'a. Po uruchomieniu - skok do 4020h /oryginał/- program odczytuje nr sektora, wyświetla go i wyświetla nazwę programu, jeśli uprzednio była wpisana do programu w danym sektorze. Szczegóły opisałem w pliku "opis programu szukania" w załączonym .ZIP-ie. Program działa bardzo szybko / w porównaniu z moim starym, gdzie miałem programy zapisane w pamięci AT24C512", "przeczesuje" FLASH w poszukiwaniu markera nazwy, po znalezieniu wyświetla ją na LCD 4x20 znaków. Podpięcie LCD pod port użytkownika /8255/ CA80. Mam załączone dwie wersje: sterowanie LCD 8-bitowe i poprzez I2C. Jest też plik z końcówką...C000 , który możemy wgrać od C000h i startujemy od C020 - korzyść taka, że jeśli ktoś ma już płytkę wg projektu powyżej /wersja 1/ , nie musi nic wgrywać do U4 -27C64 na tej płytce.
Autorem Gerberów również jest Kolega Zegar.

link do obejrzenia krótkiego filmiku z wyświetlaniem nazw:

https://youtube.com/shorts/zyJZaAOLESU?feature=share

Jeśli ktoś ma w swoim CA80 zamontowaną płytkę MIK 89 /opis MIK 05-R11/ i złącze użytkownika ZU50, może podłączyć LCD wg opisu w pliku ZIP.

Wersja od obsługi wersji FLASH 2 będzie trochę później
Powodzenia!
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony niedziela 20 cze 2021, 16:48 przez nadolic, łącznie zmieniany 7 razy.

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

Re: [CA80]System plików.

Postautor: Zegar » czwartek 03 cze 2021, 21:47

nadolic pisze:Szczegóły opisałem w pliku "opis programu szukania" w załączonym .ZIP-ie.


Niestety pliku . ZIP nie ma w załącznikach. Proszę uzupełnić, bo chciałbym przetestować.
"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]System plików.

Postautor: nadolic » piątek 04 cze 2021, 06:13

już dołączyłem plik z programami szukania, przepraszam za niedopatrzenie.
Zmieniłem też plik ...C000 z I2C, jest teraz najnowsza wersja.

Znalazłem jeszcze jeden błąd /Kolega Zegar robił testy/ i poprawiłem to. Otóż chodzi o to, aby program wpisywany do FLASH nie miał dwóch bajtów AA, jeden po drugim, oprócz przypadku, że po AA AA AA AA będzie nazwa, jeśli mamy LD DE, 0AAAAh, wpiszmy LD D, 0AAh LD E,0AAh
Jeśli macie jakieś uwagi, proszę o info.
Pozdrawiam

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

Re: [CA80]System plików.

Postautor: Zegar » sobota 01 sty 2022, 11:40

Z Nowym Rokiem nowym krokiem!
https://youtu.be/FDMQDgoEjF4
Jeszcze nie wszystko zrobione, ale jest "używalne". :D

W filmie występują dwa CA80. Jeden zajmuje się tylko wyświetlaczem i klawiaturą (można go nazwać terminalem lub konsolą), drugi jest właściwym komputerem. Komunikują się przez UART z szybkością 9600 bodów.

Główny wyposażony jest w przystawki:
1. Pamięć flash 128 sektorów po 4 kB. W każdym sektorze można zapisać dwa programy.
viewtopic.php?f=82&t=2435" target="_blank
2. Sterownik wyświetlacza LCD i nadajnik udający ZX Spectrum.
viewtopic.php?f=82&t=2513" target="_blank
3. Układ emulujący klawiaturę, odczytujący wyświetlacz i UART (ATMega 32)
viewtopic.php?f=82&t=2243

Terminal zamiast Z80 wyposażony jest w Z180. Dzięki temu nie potrzebuje żadnych dodatkowych przystawek i swobodnie mieści się w obudowie kalkulatora ELWRO 144.
"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]System plików.

Postautor: Zegar » środa 12 sty 2022, 14:09

Pisałem już kiedyś, że przyzwyczailiśmy się do przesyłania programów bezpośrednio z komputera do mikrokontrolera... Zaprogramowanie poczciwego CA80 to dzisiaj spore wyzwanie. Trzeba mieć programator EPROM-ów... Czy aby na pewno? Nie da się przesłać danych "po kablu"?
Oczywiście, że się da. Robiłem już wcześniej ładowarkę plików *.HEX z SD. Trzeba było skopiować plik na kartę, zmienić nazwę na CA80.HEX, włożyć kartę do czytnika... Strasznie dużo pracy! Jest jeszcze szybsze rozwiązanie. Wystarczy dowolne Arduino. Podłączamy zasilanie i tylko dwa piny do portu użytkownika.

Kod: Zaznacz cały

/****************************************************************************
      PROGRAM TRANSMISJI PROGRAMU "CAFL"  PRZEZ ZLECENIE *8E
        Arduino zastępuje ZX Spectrum wraz z interfejsem.
            Kod dla CA80 jest zawarty w tym pliku.
       Należy przygotować CA80 z RAM w U10 i EEprom w U11.
            Arduino podłączyć do ZU50 wg opisu dalej.
             Po włączeniu zasilania nacisnąć [8][E].
            Po 10 sekundach rozpocznie się transmisja.
 ****************************************************************************/

/******************************************************
          Definicje stalych i zmiennych interfejsu
 ******************************************************/

const int del = 1;        //1ms
const byte dane = 9;      //wyjscie sygnalu do CA80 PA1 ZU50 PIN2
const byte strob = 8;     //wyjscie sygnalu do CA80 PA0 ZU50 PIN1
const int fileOpenLED = 13;//LED na płytce świeci w czasie transmisji
/******************************************************
     Wykorzystałem fragment programu dla Z80-MBC2
 ******************************************************/



Programujemy arduino. Podłączamy do CA80. Po włączeniu zasilania (mamy na to 10 sekund) wciskamy dwa klawisze: [8][E] i czekamy jakieś pół minuty. Tyle zajmuje wczytanie dwóch kilobajtów do RAM-u zapomnianym zleceniem systemowym. Opis w MIK 06 str. 215 i 227-242. Potrzebujemy tylko "skecz". Właśnie opracowałem taki "samoklonujący" się program. No prawie, bo trzeba mu trochę pomóc.
W CA80 potrzebujemy RAM w U10. Do "sklonowania" wystarczy 2 kB. Do testowania potrzeba 16 kB (połówka HM62256). Jeżeli przygotowaliśmy EEPROM w U11 (KM2864 lub AT2864), to od razu możemy użyć świeżo wgrany program.
[8][0] - uruchomienie programu: komunikat CAFL
[D][=] - odblokowanie zapisu w EEPROM ("D" bo disable software data protection)
[C][4000][.][47FF][.][8000][=] - kopiowanie programu ("C" od copy)
[E][=] - zabezpieczenie przed zapisem. ("E" bo enable software data protection)

[D], [C] i [E] są zleceniami programu CAFL! On już działa chociaż nie mamy nawet płytki. :D
Programowanie EEPROM-ów jest możliwe tylko w U11, ponieważ musimy mieć dostęp do całej przestrzeni adresowej. Tylko wtedy możemy wpisać kody sterujące SDP (software data protection).
CAFL_READY.jpg

CAFL_WAITING.jpg

CAFL_LOADING.jpg

CAFL_LOADED.jpg


Tym sposobem przygotowujemy pamięć programu przystawki udającej magnetofon. Proste?

Program możemy testować bez przystawki - zamiast sektora flash dostępny będzie RAM. Zmiana numeru sektora nie zmieni obszaru dostępnej pamięci, więc wszystkie "sektory" będą miały taką samą zawartość.
CA80_ZX_flash.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

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

Re: [CA80]System plików.

Postautor: nadolic » poniedziałek 07 sie 2023, 14:14

Postanowiłem podzielić się moją wersją pamięci masowej, na bazie płytki MIK 290 wg projektu Kol. @phill2k ([CA80] MIK290 nowe PCB - Strona 2 - microgeek.eu )i zmodyfikowanej płytki pamięci FLASH V 2 - Kol. @zegar (posty powyżej). Modyfikacja polega na dodaniu do płytki FLASH:
- złącza kołkowego szpilki 2x40 – do łączenia z MIK 290 – złącze EXT (JM2-MOD4) na MIK290
- złącza 2x17 – do połączenia z podstawką U 10 w CA80 /ja mam dolutowany przewód <z gniazdem 2x17> od starego napędu dyskietek 1,44 MB, wykorzystane tylko 28 pinów - reszta wolna, lutowanie 1:1, tzn, pin 1 z U10 odpowiada pinowi 1 w gnieździe kabla napędu dyskietek/.
To rozwiązanie dla tych co nie mają płytki MIK 290, tylko starszą wersję CA80, bez złącza EXT
dodatkowo dałem trzy „przełączniki” - jumepry szpilkowe 1x3, do wyboru: programowanie/zapis pamięci FLASH albo EEPROM AT28C256
podstawka U6 to podstawka typu ZIF, łatwiej wkładać i wyjmować pamięci.

Aby nie wyciągać pamięci RAM z podstawki U10 w CA80 /jeśli jest tam włożona/, sygnał /CE, pin 10 na U4-74LS1378, dałem przez „przełącznik” -jumper 1x3, wlutowany na MIK 290: sygnał „idzie”albo do U10/CA80 jako IN albo na zewnątrz jako UOT, do płytki FLASH, przez pin 20 złącza EXT /wcześniej trzeba przeciąć ścieżkę do RESET_na MIIK 290.
Oprogramowanie pozwala zapisywać pamięci typu FLASH SST39SF0xx lub AT28C256/64. Pamięć w U4 /MIK290/ to 27C64 /z okienkiem do kasowania/ UV lub lepsza EEPROM AT28C64, 8kB; zworką J1 na płytce FLASH wybieramy pierwsze 4kB - 0-FFFh lub drugie 4 kB 1000h-1FFFh. Mój program nie przekracza FFF, więc dwa programy mieszczą się w tej kości xxC64.
Pliki *.ASM były kompilowane przy pomocy „Aside” (http://www.theeg.de/aside/index.html), niestety, wersja językowa niemiecka ale służę pomocą jeśli idzie o niemiecki. Program po kompilacji zapisuję w pamięci EEPROM/ I2C i CA80 odczytuje go z tejże pamięci.
Opis moich programów jest w pliku README_FLASH.
Zapis programu do pamięci FLASH z CA80 odbywa się trochę inaczej niż to jest w oryginale programu płytki FLASH 2 Kol. ZEGAR. U mnie program jest zapisywany bezpośrednio do FLASH, wg opisu w pliku README, bez bajtów jak w przypadku zapisu na magnetofon. Wg mnie jest to bardziej czytelne. Bajty po zapisie możemy podejrzeć, jak zleceniem *D w CA , oczywiście nie możemy ich modyfikować. Program do FLASH ma 8 zleceń: kasowanie pamięci lub sektora, przegląd, sumę kontrolną bajtów, zapis programu, szukanie programu /wyświetlanie nazwy tegoż/ i uruchomienie w CA, jeśli wpiszemy nr programu, odczyt obszaru z FLASH do CA, pozycja programu w pamięci FLASH. Uruchamianie od 4000h – zlec. *G 4000.
Program obsługuje wyświetlacz LCD 4x20 znaków, podłączony „bezpośrednio” do CA, wg Kol. ZEGAR
(viewtopic.php?f=82&t=2513) z drobną zmianą: jako „LCD_E” wykorzystałem EME8 – pin 13 U16 w CA80.
Może komuś przyda się taka pamięć na swoje programy. Mam też inną pamięć, AT24C512, na płytce umieszczone jest 6. szt, zapis/odczyt wg I2C: tylko czas szukania programu w stosunku do FLASH jest znacznie dłuższy. Jeśli ktoś jest zainteresowany, podzielę się tym programem.
Pozdrawiam i miłej przygody z CA80!
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

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

Re: [CA80]System plików.

Postautor: nadolic » poniedziałek 07 sie 2023, 16:03

przeglad.jpg
dorzucam jeszcze kilka fotek. Po prawej stronie mojego CA80 pamięć AT24C512/I2c, przy pomocy której przenoszę programy z komputera na CA.
Zapomniałem dodać pliki obsługi EEPROM SST29EE010A, /mam takową ze starego peceta/ i AT28C256, pisałem o niej w README_FLASH
MENU_programu.jpg

EDIT 15.08.2023
Zmieniłem troszkę programy, jak często można przeczytać podczas aktualizacji aplikacji w telefonie, "poprawiono znane błędy". Dodałem też krótki program do zapisu/odczytu pamięci EEPROM AT24C512/256 - I2C, w tym programie też obliczanie sumy kontrolnej bajtów obszaru <od do>.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony wtorek 15 sie 2023, 13:50 przez nadolic, łącznie zmieniany 1 raz.

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

Re: [CA80]System plików.

Postautor: phill2k » czwartek 10 sie 2023, 13:32

Fajnie to wygląda, super projekt, gratulacje.


Wróć do „Retro”

Kto jest online

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