[CA80]System plików.

Kącik dla elektroniki retro - układy, urządzenia, podzespoły, literatura itp.
Awatar użytkownika
Zegar
User
User
Posty: 130
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: 130
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: 130
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: 130
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: 130
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: 130
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

Awatar użytkownika
wojtek
Uber Geek
Uber Geek
Posty: 2280
Rejestracja: piątek 04 wrz 2015, 09:03

Re: [CA80]System plików.

Postautor: wojtek » poniedziałek 29 mar 2021, 16:17

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

Awatar użytkownika
Zegar
User
User
Posty: 130
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

Awatar użytkownika
wojtek
Uber Geek
Uber Geek
Posty: 2280
Rejestracja: piątek 04 wrz 2015, 09:03

Re: [CA80]System plików.

Postautor: wojtek » 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?
Wojtek

Awatar użytkownika
Zegar
User
User
Posty: 130
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: 130
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

Awatar użytkownika
wojtek
Uber Geek
Uber Geek
Posty: 2280
Rejestracja: piątek 04 wrz 2015, 09:03

Re: [CA80]System plików.

Postautor: wojtek » wtorek 30 mar 2021, 19:39

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

nadolic
Posty: 1
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: 130
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: 130
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.
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


Wróć do „Retro”

Kto jest online

Użytkownicy przeglądający to forum: Google [Bot] i 2 gości