Zapomniane hasło?   Poproś o członkostwo
|
||
0-9 | A | B | C | D |
E | F | G | H | I |
J | K | L | M | N |
O | P | Q | R | S |
T | U | V | W | X |
Y | Z | inne |
Archiwizowanie dyskietek |
Jakub Husak napisał: Niegdyś wpadłem na pomysł (inspirowany listem atarowca, który chciał zgrać sobie dyskietki i ma stację, ale nie miał kabelka) aby stworzyć możliwość przeniesienia atarowskiej dyskietki na PC. Zadałem pytanie na forum. A na konkurencyjnym portalu rozwalił mnie xxl, który mniej więcej napisał tak: Co się pytasz, chcesz, to napisz! Pomysł polegał na utworzeniu czegoś w rodzaju manetofonowego turbo. Jednak zwolniony z dekodowania w locie oraz korzystając z możliwości uzyskania sygnału bardzo dobrej jakości mogłem uzyskać znacznie większe prędkości transmisji. Problem jajka i kury został rozwiązany tak: napisać króciutki programik w Basicu ze wstawką maszynową, który zamieni dyskietkę w dźwięk :). Zacząłem bawić się tym tematem. Najpierw przetestowałem różne metody zapisu kilku bitów na raz, ale to jednak ślepa uliczka - kondensatory robią swoje, a i program miał być możliwie krótki. Powróciłem więc do starej sprawdzonej metody - długości impulsu. Ta metoda przypomina w wielkim uproszczeniu radiowe FM. Zero logiczne to impuls długości trwania jednej linii ekranu (sta WSYNC), jedynka logiczna - 2 linie ekranu - trudno się pomylić przy dekodowaniu. Nie jest problemem wygenerowanie na Atari takich sygnałów, trzeba tylko wyłączyć wszelkie przerwania: CLI + zablokować NMI w ANTIC oraz wyłączyć ekran. W rezultacie powstał możliwie jak najkrótszy programik w Basic i łatwo przepisywalny. Programik disk2snd.bas:
Programik pobiera 3 liczby i uruchamia w pętli procedurkę czytającą sektor dyskietki oraz kodującą go na dźwięk (zgrzyty i piski). Osiągnięta prędkość przesyłu danych wewnątrz sektora to średnio 1.4 kB/sek (od 1kB/sek gdy są same FF, do 2 kB/sek, gdy same zera). Z ciekawostek - każdy zakodowany sektor ma sygnał pilotujący - 8 zboczy długości 3 linii ekranu. Dlaczego 3? Aby nie interferował się z odczytem z dyskietki pustych bajtów, których bity startu i stopu generują falę o długości niemal równej czterem liniom obrazu (w standardowej prędkości transmisji) - podszedłem do tematu zapobiegawczo, aczkolwiek w praktyce wyszło, że nie ma to znaczenia, ponieważ głośność sygnału właściwego jest dużo większa. Dla ciekawskich zawartość linii data w formacie mads assembler (145 bajtów!):
Na początku były 192 bajty, potem 179 (już news miał być opublikowany) i teraz 145 :) Mam nadzieję, bo nie testowałem, że będzie działał na innych SO, niż oryginalny, ponieważ wykorzystuje wartości w rejestrach po powrocie z SIOV. Jest pole do popisu:) a zatem... Konkurs! Za każde 2 bajty ukręcone powyższemu kodowi w asemblerze, przy zachowaniu pełnej funckjonalności, daję jedną gwiazdkę SZACUNU! Warunek: nie przenosimy nic do Basica. Zakodowana dyskietka SD zajmuje czas około 2 minut, DD około 4,5 minuty. Można zapisać taką falę jako WAV mono 8 bitów, po zzipowaniu będzie miał 1-2 MB, można to wysłać komuś pocztą :). Uwaga! WAV może być mono lub stereo, 8 lub 16 bitów, bez kompresji (PCM), ale musi mieć 44.1 KHz. Po stronie PC powstał programik - dekoder - nazywa się AuDecoder. Napisany we FreePascalu, działa pod MacOS X, Windows, a może też i pod Linuksem (nie pokusiłem się jeszcze o skompilowanie). Zawsze można uruchomić AuDecoder pod Wine :). Dołożyłem wszelkich starań, aby WAV wrzucony do AuDecoder mógł mieć dowolną głośność. Taki rezultat osiągnąłem - jeśli ktoś utworzy obraz dyskietki, który nie wchodzi do AuDecoder, to proszę o przysłanie mi go do testów. Program jest typu freeware. Można go sobie ściągnąć stąd. Uwaga! Wersja PC na razie jest bez podpisu, więc antywirusowe oprogramowanie może różne cuda z tym wyczyniać (włącznie z usuwaniem aplikacji z dysku :). Miłego użytkowania! 2012-07-22 22:46 by Jakub Husak
komentarzy: 0 |
«« nowsze | starsze »» |
1. Biuro |
2. Grafika |
3. Muzyka |
4. Programowanie |
5. Magnetofon |
6. Stacja dyskietek |
7. DOS-y |
8. ROM-y |
9. Rozne |
A. Schematy |
B. Emulatory |
C. Edukacyjne |
D. Komunikacja |
E. Diagnostyczne |
F. Archiwizowanie i kompresowanie |
!info |
Z. Inne platformy |
«« nowsze | starsze »» |