1,926

(37 odpowiedzi, napisanych Fabryka - 8bit)

No właśnie zrozumiałem że w zależności od DeltaX lub DeltaY jest określona częstotliwość licznika (timera) i na tej podstawie w ciągu głównym się rysuje X lub Y jest na IRQ zwiększany. Ale nie wiem czy to może być wystarczająco precyzyjne. Ale pomysł ciekawy :) Przyznaję iż zupełnie bym w ten sposób nie pomyślał :) Czy jest to do zrealizowania nie wiem. Nie miałbym chyba cierpliwości aby próbować :)

1,927

(37 odpowiedzi, napisanych Fabryka - 8bit)

nie wiem co jest w pakiecie MADS, ale nie wydaje mi się możliwe aby coś ze zgłaszaniem IRQ mogło być szybsze niż zoptymalizowana procedura wykonana w ciągu głównym bez użycia przerwań.

1,928

(37 odpowiedzi, napisanych Fabryka - 8bit)

prawdę mówiąc nie mam pojącia kiedy się wykona IRQ po CLI jeżeli było przerwanie od timer-a pokey. Nie bardzo również rozumiem twoją koncepcję i po co wywoływać IRQ dla jednego DEX, bardzo dużo cykli tracisz na taką całą skomplikowaną procedurę :) Być może po prostu nie pojmuję koncepcji i pomysłu co chcesz zrobić.. to ma być jakieś dziwne drawto?

1,929

(37 odpowiedzi, napisanych Fabryka - 8bit)

znaczy nie bardzo rozumiem co chcesz osiągnąć w taki sposób :) tzn. nie bardzo rozumiem sens tego cli/sei i dodatkowo zatrudnienie licznika POKEY ;) Nie patrzyłem dokładnie w twój kod ale nie zachowujesz wartości rejestrów procesora które zmieniasz podczas przerwania. Po powrocie z przerwania rejestry które zmieniłeś podczas procedury przerwania, będą miały wartość którą pozostawiła procedura przerwania. Jeżeli w tzw. "ciągu głównym" wykorzystujesz którykolwiek ze zmienianych rejestrów wyjdzie totalny chaos :) Jeżeli to celowe działanie z jakiegoś powodu to OK, zaznaczam to tylko abyś był tego świadom :)

1,930

(37 odpowiedzi, napisanych Fabryka - 8bit)

mono napisał/a:

Rozpoczęcie odliczania następuje po wpisaniu dowolnej wartości do STIMER ($D209).

No własnie w/g mnie nie trzeba wcale STIMER ustawiać :) Nigdy tego nie robiłem i zawsze działało :) STIMER jedynie inicjuje liczniki POKEY-a wartościami wpisanymi do AUDFx. Pokey i tak przeładowuje sam liczniki gdy doliczy do zera. Nie widzę sensu/potrzeby używania STIMER.

1,931

(37 odpowiedzi, napisanych Fabryka - 8bit)

Hej!

to może ja się wtrącę... przykładowy kod działający na real Atari i pod Altirrą :) (brzydki i nieładnie napisany ,ale działa ;] chodzi tylko o przykład jak może wyglądać działająca procedura obsługi POKEY-owego timera)

        opt    h+
        org    $a000
    
st      sei                 ; disable IRQ
        inc    $d40e        ; disable NMI
        lda    $d40b        ; wait for vertical sync
        bne    *-3
        sta    $d400        ; turn off screen!

        lda    #$fe        ; turn off OS-ROM!
        sta    $d301

        ldx    <irq        ; set new IRQ vector
        ldy    >irq
        stx    $fffe
        sty    $ffff
    
        lda    #$03        ; init POKEY
        sta    $d20f
    
        lda    #$00        ; set timer freq
        sta    $d208
    
        lda    #$00        ; set channel #0 volume
        sta    $d201
    
        lda    #$7e        ; set time #0 frequency
        sta    $d200
        
        lda    #$01        ; enabnle TIMER0 IRQ
        sta    $d20e
        sta    $d209       ; reset timers!
    
        cli            ; enable IRQ
        jmp    *        ; loop! :)
    
irq        sta    reg_A+1        ; save A reg.

val        lda    #$08        ; change border color!
        sta    $d01a
        eor    #$38
        sta    val+1
    
        lda    #$00        ; clear IRQ status!
        sta    $d20e        
        lda    #$01        ; enable timer #0 IRQ
        sta    $d20e

reg_A        lda    #$00        ; restore A reg.
        rti            ; return from iterrupt!
    
        run    st        ; RUN vector
        
        
    

1,932

(37 odpowiedzi, napisanych Fabryka - 8bit)

jeżeli dobrze pamiętam po każdym wystąpieniu przerwania IRQ od POKEY-a trzeba skasować bit odpowiadający za wystąpienie przerwania w IRQEN ($d20e) a następnie ustawić bit ponownie. Chodzi o potwierdzenie odebrania przerwania oraz dopuszczenie następnego przerwania.

nie bardzo rozumiem gdzie masz to SEI i CLI.

STIMER ($D209) nie trzeba zapisywać w procedurze przerwania. Można to zrobić tylko raz po ustawieniu wektorów i IRQEN ($d20e).




pozdrawiam
Seban

1,933

(51 odpowiedzi, napisanych Sprzęt - 8bit)

@Bitman: musiałeś mieć jakiegoś pecha :) te kasety które po latach odczytał Grzegorz w pełni udało się odtworzyć bez jakiegoś specjalnego wysiłku :)

1,934

(56 odpowiedzi, napisanych Zloty)

Ja też seeduje ile się da ode mnie leci 80kB/s.
Download tyle ile łącze moje wyciąga, głównie za sprawą Azbesta który seeduje z szaloną prędkością :D , resztę peerów można pominąć :)

1,935

(51 odpowiedzi, napisanych Sprzęt - 8bit)

@Grzegorz: dzięki za info. Czyli jest szansa że to jest tak nagrane na oryginale, ale pierwszy raz sie spotykam z czymś takim. Chodzi mi o częstotliwości składowe niższe niż dwie częstotliwości występujące w sygnale FSK generowanym przez JIL :) Dzięki raz jeszcze za informacje. Zaraz potnę na kawałki (oddzielne programy) i wrzucę tutaj linki na forum linki.

pozdrawiam
Seban

1,936

(51 odpowiedzi, napisanych Sprzęt - 8bit)

Hej!

@Grzegorz: Dwa ostanie pliki WAVE o niższym poziomie udało się wczytać pod Altirrą również ;) O ile rozumiem mechanizm powstawania wyższych harmonicznych nie wiem skąd się biorą zakłócenia w dolnej części pasma. Mam jedno pytanie zgrywałeś z niższym poziomem czy po zgraniu z wyższym poziomem obniżyłeś amplitudę sygnału już w programie do obróbki sampli?

@Krótki: może warto zainteresować Phareon-a (autora Altirra) twoją biblioteką i wsparciem w tymże emulatorze dla plików A8CAS? ;) To byłoby idealne :)

Krótki napisał/a:

EDIT: Swoją drogą sprytnie to wymyślili. Zapewne wszystkie kasety firmy Atari miały rozbiegówkę nie dłuższą niż 8 sekund oraz sygnał pilotujący nagrany od samego początku taśmy, więc jedyne co użytkownik musiał zrobić to przewinąć taśmę do początku strony aby rozpocząć odczyt. Żadnego wyszukiwania początku sygnału na słuch itp.

Jak już stałem się mistrzem obsługi magnetofonu w normalu to mnie to dobijało :) Ale wpadłem na pewien pomysł. wiedziałem mniej więcej gdzie zaczyna się pierwszy rekord ustawiałem taśmę na sekundę przed nim, potem OPTION+START i zamiast RETURN wciskałem BREAK :) To powodowało iż procedura BOOT pomijała bezczynne czekanie i od razu wykonywała się procedura odczytu :) Nie musiałem czekać koszmarnych 20 sek pilota zanim zacznie się wczytywanie :)

1,937

(51 odpowiedzi, napisanych Sprzęt - 8bit)

To mi pamięć już szwankuje... ubzdurałem sobie iż to jest około 15 sekund. W takim razie nie wiem czemu pod Altirrą działa. Natomiast tak jak pisałem wcześniej nie działają nie odfiltrowane pliki :)

wygląda to tak:
http://dl.dropbox.com/u/44199/spd1400_fail.png

i emulator robi crash :)

1,938

(51 odpowiedzi, napisanych Sprzęt - 8bit)

No właśnie altirra zupełnie nie chciała czytać tych nie oczyszczonych plików, dlatego zacząłem eksperymentować z filtrowaniem. Tak przesterowany sygnał zupełnie nie chciał działać nagrany nawet z niższym poziomem na kasetę, próba wczytania tego na XC12 czy XC11 nie była możliwa.

Co do uszkodzenia tonu pilotującego to się nim nie przejmowałem ponieważ OS atari chyba czeka dobre 15 sek zanim zacznie cokolwiek sprawdzać na SERIN.

pozdrawiam
Seban

1,939

(51 odpowiedzi, napisanych Sprzęt - 8bit)

@Grzegorz: coś chyba nie tak z tym linkiem, u mnie przynajmniej pluje się:

Łącze jest niedostępne.
Oto możliwe przyczyny:
- Nieprawidłowe łącze
- Plik został usunięty z powodu naruszenia Regulaminu.

1,940

(51 odpowiedzi, napisanych Sprzęt - 8bit)

Hej!

Linki do oryginałów posłałem e-mailem przez formularz na forum.

Teraz się zajmują Hard-Turbo z tego wątku: http://atariarea.krap.pl/forum/viewtopic.php?id=9074

Niebawem dumpy taśm. Interface bazuje na AST, format zapisu brzmi podobnie, struktura pliku na ucho brzmi podobnie, jednak loadery AST/UTT/UM nie chcą tego czytać. Tylko oryginalne loadery w dołączone na osobnej kasecie w normalu dają sobie radę z tym formatem.

Krótki napisał/a:

Działa za to konwersja do formatu "FSK" (opcja -ff) - taki plik poprawnie wczytuje się w emulatorze.

A to w takim razie moja niewiedza :) Nawet nie próbowałem opcji FSK ;)

pozdrawiam
Seban

1,941

(51 odpowiedzi, napisanych Sprzęt - 8bit)

lemiel napisał/a:

To może to pomoże na ten niestandardowy format? Bo skoro obsługuje Turbo 2600 to może i to.
http://a8cas.sourceforge.net/
Ew. może kr0tki albo ktoś inny będzie w stanie dorobić obsługę tego.

Próbowałem, niestety efekt jest następujący:

C:\3\a8cas-tools-1.2.0-win32\bin>a8cas-convert.exe file2.wav file2.a8c
new block...
Attempting to recognise data block... succeeded: bit_length=0.001656
Adjusted bit_1_0_diff = 0.000065
End of data block at byte 132, found IRG=0.264163
new block...
Attempting to recognise data block... succeeded: bit_length=0.001663
Adjusted bit_1_0_diff = 0.000074
End of data block at byte 132, found IRG=0.262632
new block...
Attempting to recognise data block... succeeded: bit_length=0.001656
Adjusted bit_1_0_diff = 0.000083
End of data block at byte 132, found IRG=0.263950
new block...
Attempting to recognise data block... succeeded: bit_length=0.001660
Adjusted bit_1_0_diff = 0.000057
End of data block at byte 132, found IRG=0.243664
new block...
Attempting to recognise data block... succeeded: bit_length=0.001652
Adjusted bit_1_0_diff = 0.000083
Ambiguous bit at byte 132, signal 0
Attempting to recognise data block... failed
new block...
Attempting to recognise data block... succeeded: bit_length=0.001417
Ambiguous bit at byte 0, signal 0
new block...
Attempting to recognise data block... succeeded: bit_length=0.001120
Ambiguous bit at byte 0, signal 0
new block...
Attempting to recognise data block... failed

Trzeba się chyba bardziej przyjrzeć formatowi zapisu danych przez Speeder-Tape ;) Byłoby fajnie jakby się a8cas potrafił obsługiwać kolejny format zapisu. Na chwile obecną A8CAS rozpoznaje pierwsze 4 rekordy nagrane w standardzie. Dobrze że Altirra sobie radzi wyśmienicie z wczytaniem takiego pliku WAVE ;) Przyspieszyło to ogromnie testy i doprowadzenie plików do postaci w której się wczytują :)


rgr napisał/a:

Nie pamiętam już dokładnie, ale loader wczytywał się normalnie, a potem wczytywał resztę zapisaną jako 1 długi rekord.

Jeżeli napotka INIT to jednak robi przerwę (IRG) i tworzy kolejny "długi" rekord.

pozdrawiam
Seban

1,942

(51 odpowiedzi, napisanych Sprzęt - 8bit)

lemiel napisał/a:

seban, a czy jest jakaś "opisana" procedura "odszumiania" kaset do *.cas?
Czy wystarczy zgrać z magnetofonu przez kartę dźwiękową do PC jak jest wystarczający poziom i już?
Bo kilka kaset mam, np. w Blizzardzie pamiętam nagrywanie KickStartu z ręcznym wydłużaniem przerwy, pewnie na INIT właśnie.
Mam też oryginalną kasetę z LOGO z muzyką na drugiej ścieżce - czy tu trzeba coś specjalnego robić?

Nie mam jakiejś specjalnej procedury. Do każdego przypadku podchodzę indywidualnie. W przypadku silnie przesterowanego nagrania od Grzegorza obniżyłem poziom sygnału o 6dB, co pozwoliło na dalsza obróbkę sygnału. Później kombinowałem z filtrem low-pass, ale to się okazało nie wystarczające ponieważ pojawiały się zniekształcenia również poniżej pasma działania filtru low pass. Po paru eksperymentach zastosowałem filtr pasmowo przepustowy w działający w przedziale 2KHz-6KHz, potem normalizacja sygnału wraz z usunięciem składowej stałej. I udało się odzyskać.

Generalnie zgranie z poziomem około -1dB do -3dB powinno już wystarczyć reszta zależy od szumu na kasecie i sprzętu przy pomocy którego dokonujemy zgrania materiału. Ja używam decka Technics i zewnętrznej już dość starawej karty firmy Behringer BCA2000.

Dely ma też swój Tape Preservation Project i opisuje swoje doświadczenia tutaj

W przypadku formatu speeder-tape nie udało mi się stworzyć plików CAS :) O ile pierwsze standardowe rekordy (loader) przechodzą konwersje bez problemu to wav2cas nie radzi sobie z późniejszym formatem danych który różni się od standardowego rekordu zapisywanego przez ATARI-OS. Nawet suma kontrolna chyba jest liczona w inny sposób. Ale nie miałem czasu dokładnie się przyjrzeć loaderowi ani tym bardziej na analizę programu kopiującego.

lemiel napisał/a:

Bo kilka kaset mam, np. w Blizzardzie pamiętam nagrywanie KickStartu z ręcznym wydłużaniem przerwy, pewnie na INIT właśnie.

Blizzardem nie zajmowałem się jakoś specjalnie bo dokładnie go Zenon/Dial opisał. Ale sądziłem że Blizzard to powinien być odporny na INIT-y bo chyba zatrzymuje silnik między rekordami które wczytuje, nie? W przypadku KSO2000 czy Turbo2000F po wczytaniu rekordu danych silnik był zatrzymywany, loader robił co trzeba i jak "przetrawił" odczytane dane to włączał silnik i czytał dalej.

W przypadku "normal" też tak się to odbywało jednak ze względu na krótkie przerwy między rekordami, oraz dużą bezwładność silkika w większości magnetofonów w przypadku "normal" trzeba było użyć programu kopiującego, który wydłużał przerwę po rekordzie w którym następował segment INIT.

lemiel napisał/a:

Mam też oryginalną kasetę z LOGO z muzyką na drugiej ścieżce - czy tu trzeba coś specjalnego robić?

Wszystkie magnetofony do ATARI są stereo, demodulator FSK dekoduje dane przychodzące z kanału prawego, natomiast kanał lewy jest podłączony do pinu AUDIO_IN w gnieździe SIO. Magnetofon ATARI przy zapisie danych zapisuje sygnał na obu ścieżkach (lewej i prawej) jednakowo, jednak jeżeli przygotujesz kasetę tak iż na lewym kanale nagrasz muzykę a na prawym dane w formacie FSK efekt będzie taki jaki masz w przypadku LOGO czyli program się normalnie czytuje a ty słyszysz nie dane zmodulowane częstotliwościowo a muzykę z kanału lewego.

pozdrawiam
Seban

1,943

(51 odpowiedzi, napisanych Sprzęt - 8bit)

@xxl: wychodzi na to iż są przerwy w miejscu INIT-ów. Przynajmniej taką sytuację można zaobserwować na przykładzie powyższych programów :) Stream danych wygląda na jeden długi rekord z przerwami w niektórych miejscach. Nie patrzyłem na kod programu kopiującego jednak wygląda na to iż przerwy są po INIT-ach. Jako ciekawostkę można zobaczyć iż loader tego systemu aby zdekodować stream wejściowy nie korzysta z odczytu SERIN, a sam składa bit bo bicie cały stream analizując cały czas 4 bit SKSTAT ;)

1,944

(51 odpowiedzi, napisanych Sprzęt - 8bit)

Hejka!

@Grzegorz: Dzięki za plik :) Wszystko udało się obrobić tak iż się wczytuje. Trochę jeszcze przesterowanie było, ale filtry dały radę wyłuskać dwie składowe częstotliwości FSK z tego sygnału. Już tłumaczę o co mi chodzi dokładniej z tym przesterowaniem. Po zgraniu przez ciebie sygnał wygląda tak jak poniżej...

@rgr: do Ciebie będzie kilka słów na końcu tego postu :)

całe nagranie:
http://seban.pigwa.net/drop/ex1.png

powiększony fragment nagrania (kilkadziesiąt próbek):
http://seban.pigwa.net/drop/ex2.png

Jak widać poziom sygnału mocno przekracza dopuszczalną normę, na drugim rysunku widać przesterowanie i znieształcone próbki, może się wydawać iż dużej szkody to zrobić nie może jednak przy takim przesterowaniu powstają ogromne zniekształcenia harmoniczne, widać to dokładnej jak się przyjrzymy sygnałowi w domenie częstotliwości:

widmo sygnału tonu pilotującego rozpoczynającego nagranie:
http://seban.pigwa.net/drop/ex6.png


Jak widać na tym rysunku można zobaczyć masę harmonicznych, właściwie to powinna występować tylko jedna składowa odpowiadająca tonowi pilotującemu (logicznej "1") czyli 5278 Hz, jak widać występuje tutaj masa niepożądanych harmonicznych. Oprócz harmonicznych na sygnał nakłada się spory szum... ale z tym można sobie poradzić :)

Pokażę może jak to powinno wyglądać, poniższe rysunki pokazują obrobione i wyczyszczone fragmenty nagrań udostępnionych przez Ciebie :)

Całe nagranie już po obróbce:
http://seban.pigwa.net/drop/ex3.png

Powiększony fragment (kilkadziesiąt próbek), zauważ iż żadna nie przekracza progu -1dB:
http://seban.pigwa.net/drop/ex4.png

Powiększony fragment zawierający kilka rekordów nagrania (loader Speeder-Tape):
http://seban.pigwa.net/drop/ex5.png

I teraz widmo sygnału tonu pilotującego, jeszcze nie idealne
http://seban.pigwa.net/drop/ex7.png

Wyżej widać jeszcze szum na poziomie -80dB pozostawiony pomiędzy 2KHz a 6KHz, ale Altirra i Demodulator FSK z XC12 już sobie z tym radzi.  Większości operacji można byłoby uniknąć gdyby udało Ci się zgrać zawartość kaset utrzymując poziom sygnału pomiędzy -3dB a -1dB.

I teraz linki do obrobionych o oczyszczanych plików WAVE, które mogą zostać wczytane pod emulatorem Altirra lub na prawdziwym atari po nagraniu na kasetę:

http://seban.pigwa.net/atari/speeder1400/bank_danych_a.png http://seban.pigwa.net/atari/speeder1400/bank_danych_b.png
Plik do pobrania tutaj: Bank Danych

http://seban.pigwa.net/atari/speeder1400/magic_painter_a.png http://seban.pigwa.net/atari/speeder1400/magic_painter_b.png
Plik do pobrania tutaj: Magic Painter

http://seban.pigwa.net/atari/speeder1400/dancing_feats_a.png http://seban.pigwa.net/atari/speeder1400/dancing_feats_b.png
Plik do pobrania tutaj: Dancing Feats <--- to chyba coś w stylu dema, datowane na 1983 rok ;)

http://seban.pigwa.net/atari/speeder1400/monitor_test_a.png http://seban.pigwa.net/atari/speeder1400/monitor_test_b.png
Plik do pobrania tutaj: Monitor/TV Test Patterns

http://seban.pigwa.net/atari/speeder1400/capital_a.png http://seban.pigwa.net/atari/speeder1400/capital_b.png
Plik do pobrania tutaj: Capital

I teraz jeszcze chciałem parę słów napisać do RGR (Radosława Popławskiego), autora rozwiązania które tu aktualnie omawiamy :) Bardzo rzadko się zdarza iż autor danego rozwiązania odzywa się na forum i włącza się do dyskusji, niezmiernie mi miło iż mogę Cię poznać :) Muszę powiedzieć iż jestem pod wrażeniem kodu loadera który ładował gry zapisane w tym systemie. Były to dość zamierzchłe czasy (z opisu w programie wynika iż było to w 1990 roku :])  Ale podziwiam że chciało się Ci użyć takiej ilości "nieudokumentowanych/nielegalnych" rozkazów 6502 ;) Nie wiem skąd w tamtych czasach dysponowałeś tak obszerną wiedzą na ich temat (nieudokumentowanych rozkazów), ale widzę że chciałeś bardzo chronić albo swój pomysł albo oprogramowanie nagrane w tym systemie :) Aby ludzie znający się na kodzie wiedzieli o czym mówię pozwolę sobie wkleić kod tego loadera (dump z emulatora, więc nie do końca dokładny, trzeba by nad nim jeszcze posiedzieć trochę aby uporządkować i poprawić):

0700: 00 04 00 07 08 07                    ; boot header

; $0004 records to load, $0700 load address, $708 run address

; $0706 init address

0706: 60               RTS
0707: 0A               ASL

; $0708 run  address

0708: A0 07            LDY #$07
070A: BF 26 07         LAX $0726,Y [$07AE] = $E3
070D: 78               SEI
070E: 99 43 00         STA $0043,Y [$00CB] = $00
0711: 88               DEY
0712: 10 F6            BPL $070A
0714: A0 09            LDY #$09
0716: BF 2D 07         LAX $072D,Y [$07B5] = $00
0719: 99 15 00         STA BUFADR,Y [$009D] = $00
071C: 88               DEY
071D: 10 F7            BPL $0716
071F: A7 1B            LAX $1B     [$1B] = $00
0721: 8D 0E D4         STA NMIEN   [$D40E] = $FF
0724: F0 10            BEQ $0736
0726: 5A               NOP
0727: C0 1F            CPY #$1F
0729: D0 0C            BNE $0737
072B: 04 07            NOP $07     [$07] = $00
072D: 40               RTI
072E: 10 F1            BPL $0721
0730: 04 07            NOP $07     [$07] = $00
0732: 02               bad
0733: 00 30            BRK #$30
0735: 18               CLC
0736: 20 EA 08         JSR $08EA   [$08EA] = $A0
0739: 20 4B 07         JSR $074B   [$074B] = $A9
073C: 20 76 07         JSR $0776   [$0776] = $A9
073F: 20 8C 07         JSR $078C   [$078C] = $18
0742: 20 DA 07         JSR $07DA   [$07DA] = $A7
0745: 20 54 07         JSR $0754   [$0754] = $A7
0748: 4C 3F 07         JMP $073F   [$073F] = $20
074B: A9 3C            LDA #$3C
074D: 8D 02 D3         STA PACTL   [$D302] = $34
0750: A0 06            LDY #$06
0752: 18               CLC
0753: 60               RTS
0754: A7 3C            LAX $3C     [$3C] = $00
0756: D0 01            BNE $0759
0758: 60               RTS
0759: 20 6D 07         JSR $076D   [$076D] = $A7
075C: A9 8B            LDA #$8B
075E: 8D E2 02         STA $02E2   [$02E2] = $00
0761: A9 07            LDA #$07
0763: 8D E3 02         STA $02E3   [$02E3] = $00
0766: 78               SEI
0767: A9 00            LDA #$00
0769: 8D 0E D4         STA NMIEN   [$D40E] = $FF
076C: 60               RTS
076D: A7 15            LAX BUFADR  [$15] = $00
076F: 8D 0E D4         STA NMIEN   [$D40E] = $FF
0772: 58               CLI
0773: 6C E2 02         JMP ($02E2) [$0000] = $00
0776: A9 8B            LDA #$8B
0778: 8D E0 02         STA $02E0   [$02E0] = $00
077B: 8D E2 02         STA $02E2   [$02E2] = $00
077E: A9 07            LDA #$07
0780: 8D E1 02         STA $02E1   [$02E1] = $00
0783: 8D E3 02         STA $02E3   [$02E3] = $00
0786: A9 34            LDA #$34
0788: 8D 02 D3         STA PACTL   [$D302] = $34
078B: 60               RTS
078C: 18               CLC
078D: A9 BB            LDA #$BB
078F: 85 32            STA BUFRLO  [$32] = $80
0791: 69 04            ADC #$04
0793: 85 34            STA BFENLO  [$34] = $80
0795: A9 08            LDA #$08
0797: 85 33            STA BUFRHI  [$33] = $04
0799: 69 00            ADC #$00
079B: 85 35            STA BFENHI  [$35] = $04
079D: 20 DA 07         JSR $07DA   [$07DA] = $A7
07A0: 08               PHP
07A1: AF BE 08         LAX $08BE   [$08BE] = $00
07A4: E6 1A            INC $1A     [$1A] = $00
07A6: C7 1A            DCP $1A     [$1A] = $00
07A8: D0 0E            BNE $07B8
07AA: AF BD 08         LAX $08BD   [$08BD] = $00
07AD: C9 E3            CMP #$E3
07AF: D0 07            BNE $07B8
07B1: A2 FF            LDX #$FF
07B3: 8E 3C 00         STX $003C   [$003C] = $00
07B6: D0 05            BNE $07BD
07B8: A2 00            LDX #$00
07BA: 8E 3C 00         STX $003C   [$003C] = $00
07BD: AF BB 08         LAX $08BB   [$08BB] = $00
07C0: 0D BC 08         ORA $08BC   [$08BC] = $00
07C3: F0 12            BEQ $07D7
07C5: A2 03            LDX #$03
07C7: BD BB 08         LDA $08BB,X [$093B] = $00
07CA: 95 32            STA BUFRLO,X [$B2] = $00
07CC: CA               DEX
07CD: 10 F8            BPL $07C7
07CF: E6 34            INC BFENLO  [$34] = $80
07D1: D0 02            BNE $07D5
07D3: E6 35            INC BFENHI  [$35] = $04
07D5: 28               PLP
07D6: 60               RTS
07D7: 20 BF 08         JSR $08BF   [$08BF] = $20
07DA: A7 1B            LAX $1B     [$1B] = $00
07DC: 85 31            STA CHKSUM  [$31] = $A9
07DE: 20 4E 08         JSR $084E   [$084E] = $20
07E1: 60               RTS
07E2: A7 19            LAX $19     [$19] = $00
07E4: 85 39            STA RECVDN  [$39] = $FF
07E6: A7 1B            LAX $1B     [$1B] = $00
07E8: 85 3B            STA CHKSNT  [$3B] = $00
07EA: 20 15 08         JSR $0815   [$0815] = $A7
07ED: E6 1C            INC $1C     [$1C] = $00
07EF: C7 1C            DCP $1C     [$1C] = $00
07F1: B0 58            BCS $084B
07F3: E6 1D            INC $1D     [$1D] = $00
07F5: C7 1D            DCP $1D     [$1D] = $00
07F7: B0 15            BCS $080E
07F9: E6 47            INC $47     [$47] = $00
07FB: C7 47            DCP $47     [$47] = $00
07FD: 66 3B            ROR CHKSNT  [$3B] = $00
07FF: A7 38            LAX BUFRFL  [$38] = $FF
0801: 85 37            STA $37     [$37] = $00
0803: C6 39            DEC RECVDN  [$39] = $FF
0805: 10 E3            BPL $07EA
0807: A7 3B            LAX CHKSNT  [$3B] = $00
0809: 49 02            EOR #$02
080B: 85 1E            STA $1E     [$1E] = $00
080D: 60               RTS
080E: A7 38            LAX BUFRFL  [$38] = $FF
0810: 85 37            STA $37     [$37] = $00
0812: A7 1E            LAX $1E     [$1E] = $00
0814: 60               RTS
0815: A7 48            LAX $48     [$48] = $00
0817: A3 3F            LAX ($3F,X) [$0000] = $00
0819: E6 48            INC $48     [$48] = $00
081B: C7 48            DCP $48     [$48] = $00
081D: D0 2C            BNE $084B
081F: AF 0F D2         LAX SKSTAT  [$D20F] = $FF
0822: 2B 10            ANC #$10
0824: E6 36            INC $36     [$36] = $00
0826: C7 36            DCP $36     [$36] = $00
0828: F0 EB            BEQ $0815
082A: 48               PHA
082B: AF 0B D4         LAX VCOUNT  [$D40B] = $37
082E: 86 38            STX BUFRFL  [$38] = $FF
0830: 68               PLA
0831: 85 36            STA $36     [$36] = $00
0833: 4A               LSR
0834: 8D 1A D0         STA COLBK   [$D01A] = $0F
0837: 49 18            EOR #$18
0839: 8D 01 D2         STA AUDC1   [$D201] = $E4
083C: A7 38            LAX BUFRFL  [$38] = $FF
083E: E6 37            INC $37     [$37] = $00
0840: C7 37            DCP $37     [$37] = $00
0842: B0 03            BCS $0847
0844: 18               CLC
0845: 69 9B            ADC #$9B
0847: 38               SEC
0848: E5 37            SBC $37     [$37] = $00
084A: 60               RTS
084B: 20 BF 08         JSR $08BF   [$08BF] = $20
084E: 20 92 08         JSR $0892   [$0892] = $A9
0851: A7 1B            LAX $1B     [$1B] = $00
0853: 86 1E            STX $1E     [$1E] = $00
0855: 20 E2 07         JSR $07E2   [$07E2] = $A7
0858: A4 1B            LDY $1B     [$1B] = $00
085A: 91 32            STA (BUFRLO),Y [$0508] = $00
085C: 18               CLC
085D: 65 31            ADC CHKSUM  [$31] = $A9
085F: 69 00            ADC #$00
0861: 85 31            STA CHKSUM  [$31] = $A9
0863: E6 32            INC BUFRLO  [$32] = $80
0865: D0 02            BNE $0869
0867: E6 33            INC BUFRHI  [$33] = $04
0869: A7 32            LAX BUFRLO  [$32] = $80
086B: E6 34            INC BFENLO  [$34] = $80
086D: C7 34            DCP BFENLO  [$34] = $80
086F: A7 33            LAX BUFRHI  [$33] = $04
0871: E5 35            SBC BFENHI  [$35] = $04
0873: 90 E0            BCC $0855
0875: A7 31            LAX CHKSUM  [$31] = $A9
0877: 0B 7F            ANC #$7F
0879: 85 31            STA CHKSUM  [$31] = $A9
087B: A9 06            LDA #$06
087D: 85 39            STA RECVDN  [$39] = $FF
087F: 20 E6 07         JSR $07E6   [$07E6] = $A7
0882: 66 3B            ROR CHKSNT  [$3B] = $00
0884: A7 3B            LAX CHKSNT  [$3B] = $00
0886: E6 31            INC CHKSUM  [$31] = $A9
0888: C7 31            DCP CHKSUM  [$31] = $A9
088A: D0 BF            BNE $084B
088C: A0 01            LDY #$01
088E: 84 30            STY STATUS  [$30] = $01
0890: 18               CLC
0891: 60               RTS
0892: A9 01            LDA #$01
0894: 85 39            STA RECVDN  [$39] = $FF
0896: 20 15 08         JSR $0815   [$0815] = $A7
0899: E6 47            INC $47     [$47] = $00
089B: C7 47            DCP $47     [$47] = $00
089D: A7 38            LAX BUFRFL  [$38] = $FF
089F: 85 37            STA $37     [$37] = $00
08A1: B0 EF            BCS $0892
08A3: C6 39            DEC RECVDN  [$39] = $FF
08A5: D0 EF            BNE $0896
08A7: A9 00            LDA #$00
08A9: 85 39            STA RECVDN  [$39] = $FF
08AB: 20 15 08         JSR $0815   [$0815] = $A7
08AE: C9 19            CMP #$19
08B0: A7 38            LAX BUFRFL  [$38] = $FF
08B2: 85 37            STA $37     [$37] = $00
08B4: 90 F1            BCC $08A7
08B6: C6 39            DEC RECVDN  [$39] = $FF
08B8: 10 F1            BPL $08AB
08BA: 60               RTS
08BB: 00 00            BRK #$00
08BD: 00 00            BRK #$00
08BF: 20 4B 07         JSR $074B   [$074B] = $A9
08C2: 13 48            SLO ($48),Y [$0088] = $00
08C4: C8               INY
08C5: D0 FB            BNE $08C2
08C7: 13 18            SLO ($18),Y [$0088] = $00
08C9: C8               INY
08CA: C0 89            CPY #$89
08CC: D0 F9            BNE $08C7
08CE: AF CF C2         LAX $C2CF   [$C2CF] = $FF
08D1: 9A               TXS
08D2: E8               INX
08D3: 8E C0 08         STX $08C0   [$08C0] = $4B
08D6: 8E 44 02         STX COLDST  [$0244] = $FF
08D9: E8               INX
08DA: 86 09            STX $09     [$09] = $00
08DC: A9 4C            LDA #$4C
08DE: 8D B6 08         STA $08B6   [$08B6] = $C6
08E1: 58               CLI
08E2: A7 15            LAX BUFADR  [$15] = $00
08E4: 8D 0E D4         STA NMIEN   [$D40E] = $FF
08E7: 6C E0 02         JMP ($02E0) [$0000] = $00
08EA: A0 38            LDY #$38
08EC: 1B 00 07         SLO $0700,Y [$0788] = $8D
08EF: 88               DEY
08F0: 10 FA            BPL $08EC
08F2: 60               RTS
08F3: 00 00            BRK #$00
08F5: 00 00            BRK #$00
08F7: 00 00            BRK #$00
08F9: 00 00            BRK #$00
08FB: 00 00            BRK #$00
08FD: 00 00            BRK #$00
08FF: 7F

Pamiętasz jeszcze może w jakich okolicznościach powstał ten system i co cię skłoniło do napisania go? Skąd czerpałeś wiedzę o atari i jego systemie? Jeżeli pamiętasz jakieś szczegóły i ciekawostki z tamtych czasów bardzo chętnie je poznamy. To w końcu kawał naszej historii, warty udokumentowania i poruszenia na forum publicznym.

pozdrawiam serdecznie
Seban

1,945

(51 odpowiedzi, napisanych Sprzęt - 8bit)

Hej!


Udało się trochę ten plik odfiltrować i stworzyć nowego wava, już po filtracji i "odszumieniu" udało się go wczytać pod emulatorem. Dla zainteresowanych udostępniam plik WAVE oraz screen-shoty:

http://seban.pigwa.net/atari/speeder1400/speeder-tape3.png
http://seban.pigwa.net/atari/speeder1400/speeder-tape2.png
http://seban.pigwa.net/atari/speeder1400/speeder-tape1.png

plik wave do pobrania tutaj: tutaj.

Wielkie dzięki dla Grzegorza iż udało chciało mu się zgrać to narzędzie i uratować od zapomnienia i wydobyć kolejną ciekawostkę historyczną zamierzchłych czasów :). Jeżeli możesz zgrać to co jeszcze masz w tym systemie będzie super. Tylko tak jak pisałem spróbuj zgrywać z trochę mniejszym poziomem sygnału.

1,946

(17 odpowiedzi, napisanych Sprawy atari.area)

@jell: w pracy mam narzuconą politykę bezpieczeństwa i tam jest dopiero porażka w postaci F-Secure, w domu na szczęście nie pracę z pracy (ale czasami się też zdarza) ale inną pracę muszę czasami wykonać :)

1,947

(17 odpowiedzi, napisanych Sprawy atari.area)

@jell: no ja nie mogę ze względu na to co pisałem wyżej.

1,948

(17 odpowiedzi, napisanych Sprawy atari.area)

Jeżeli pytasz się mnie to...

#1) jak zaczynałem używać KAV-a to nie było jeszcze MSE.
#2) jak dostaję "pendraki" od ludzików z plikami (projekty, dokumentacja) to tam czasami jest masa syfu, połowy z tego MSE nie wykrywa.
#3) MSE jakoś bardziej zabija mój system niż KAV.
#4) KAV-a używam również do ratowania danych z dysków z zasyfionych komputerów (jakoś żaden AV nie był w stanie doprowadzić do porządku większości przypadków)

ps) to tylko moja prywatna opinia i nie traktujcie tego jak reklamy KAV czy coś.

1,949

(17 odpowiedzi, napisanych Sprawy atari.area)

ja niestety muszę mieć Windows. Jakoś firmy produkujące oprogramowanie EDA/ECAD, oraz twórcy wszelakiego oprogramowania (IDE, Production Tools, ICE) dla różnych MCU i CPU nie widzą nic poza Windows :(

1,950

(98 odpowiedzi, napisanych Bałagan)

@adam: jakoś ci nie wierzę :P
@jury: ależ oczywiście że nie jestem, dlatego nie zmuszam innych do używania atari i grania w retro gry ;) mówiłem że ja tak wolę, wiec dlaczego ktoś ma mnie zmuszać do zmian? skoro chce zostać dinozaurem to dlaczego nie? mam do tego prawo, prawda? ;)