Pamięć masowa czyli magnetofon.

  Kilka lat temu opracowałem przystawkę zastępującą magnetofon. Pierwsza wersja była podłączana do gniazda pamięci U9 za pomocą wtyku emulacyjnego lub wstawiana bezpośrednio do podstawki. Rozwiązanie to pasowało do obu oryginalnych wersji CA80 oraz do klonów np. "CA80-mini".

Tape recorder emulator
Jedna z pierwszych wersji "magnetofonu".


Wersja dla RCBus musiała zostać zmodyfikowana z powodu ograniczonego rozmiaru standardowego modułu. Standard dopuszcza większe płytki, jednak postanowiłem, że wszystkie moduły będą tej samej wysokości. Ze schematu usunąłem EPROM z oprogramowaniem. Moduł CA80-boot umożliwia łatwe załadowanie do RAM dowolnych programów, więc ta modyfikacja w niczym nie przeszkadza.

Flash for RCBus
Różne wersje CA80-flash RCBus.


Moduł rozruchowy z mikrokontrolerem jest bardzo wygodny, ale nie wszystkim się podoba. AVR pomimo obudowy DIP40 jest ciałem obcym w kultowym CA80. Dlatego opracowałem nową wersję MIK89 z generatorem i dzielnikiem wykorzystującym Z80 CTC do tworzenia sygnału NMI. Utrata możliwości ładowania programów do RAM w czasie rozruchu komputera uniemożliwiła wykorzystanie CAFL...

User ports CA80 on RCBus
Nowy MIK89 na RCBus.


Okazało się, że bez żadnych sprzętowych poprawek można to zmienić. Flash jest trudny do zapisania, ale jego odczyt jest zwyczajny, więc bez trudu możemy przepisać zawartość dowolnego sektora do RAM. Bez zastanowienia poświęciłem sektor "00" i wgrałem do niego cztery kilobajty (4000H - 4FFFH), w których rezyduje CAFL. Po przemyśleniu, chciałem zmodyfikować procedurę FLASH_FORMAT, ale okazało się, że nie ma takiej potrzeby.

Erasing all sectors of flash
Procedura kasująca (nie)wszystkie sektory.


Zlecenie *2 z parametrem FF kasuje wszystkie niezapisane i niesformatowane sektory... oprócz zerowego! 😎 Przez niedopatrzenie program zapisany w sektorze "00" jest bezpieczny. Oczywiście użycie [2][0][=] wykasuje ten sektor, ale trzeba zrobić to świadomie. FLASH_FORMAT nie skasuje również sektorów, których pierwszy bajt ma wartość 0FFH lub 0FDH. Niesformatowana kość może przypadkiem zawierać takie sektory, więc czasem trzeba użyć *2 z numerem sektora.


Po włączeniu komputera należy zleceniem *D (CA80) wybrać sektor zerowy [D] [5FFD][0][=], a następnie przepisać program do RAM [B][6000][6FFF][4000][=]. Od tej pory CAFL włączamy przez [80].  Dobrej zabawy!

Komentarze

Popularne posty z tego bloga

Uruchamiamy CA80 na RCbus.

Magnetofon CA80.