Jakiś czas temu kupiłem kasety, okazało się że są w turbo SPEEDER 1400 i co ciekawe, ten system nie wymaga przeróbki magnetofonu.
Chciałem się coś dowiedzieć więcej o tym systemie ale nie znalazłem nawet wzmianki na jego temat :(

ATARI 800xl, CA-2001, XCA12 mnóstwo kaset i dyskietek :)

2

Sebana trza by było spytać (ale więcej było takich "turb").

wszystkie trzy strony świata

3 Ostatnio edytowany przez seban (2011-08-01 18:17:52)

Hej!

No było kilka takich systemów co potrafiły zapisać powyżej 600bd na taśmie. Ale jakość magnetofonów XC12 i klonów była na tyle kiepska iż prędkość zapisu przy standardowej modulacji FSK (domyślnie 600bodów) mogła zostać podniesiona programowo do około 900bodów. Zapis powyżej tej prędkości był bardzo niepewny i ryzykowny.  Może na 1010 czy XC11 dawało się uzyskać stabilny zapis powyżej 900bd jednak większość XC12 miała problem powyżej 900bd. Były systemy które próbowały oprócz podniesienia prędkości zapisu także zmienić format zapisu. Przykładem takich systemów było np, Turbo2600 firmy "Szok" ze Świebodzina (http://atariki.krap.pl/index.php/Turbo_2600) lub CASA Turbo Tape (http://atariki.krap.pl/index.php/CASA_Turbo_Tape). Jak wygląda speeder 1400? nie wiem, trzeba by posłuchać czy tylko podnosili baud-rate czy zmienili również format zapisu.

Warto byłoby zgrać te kasety aby zachować i opisać kolejne ciekawe rozwiązanie z tamtych czasów :) Dali jakieś narzędzia na tych kasetach? Czy tylko gry + loader przed grą?

pozdrawiam
Seban

4

Napisze jak to wygląda, mam kilka magnetofonów XC12,XCA12,CA12 i na nich wszystkich  kasety w tym turbo wczytują się beż zarzutu.
Wczytywanie zaczyna się od kilku standardowych rekordów a po nich jest jeden bardzo długi.
Z narzędzi mam tylko kopier nagrany w tym systemie.
Kasety mogę spróbować zgrać i podesłać i okładki zeskanuje.

ATARI 800xl, CA-2001, XCA12 mnóstwo kaset i dyskietek :)

5

Hej!

No czyli pewnie jest tak iż 1400bd liczą w ten sposób iż liczą średnią z całej transmisji. Pozbyli się przerw między blokami :) zgraj jak możesz te kasety do jakiśch plików WAV, FLAC. A ten kopier do zapisu programów właśnie w tym systemie?

pozdrawiam
Seban

6

Z tego kopiera nie korzystałem, ale wydaje mi się że jest do zapisu właśnie w tym systemie.
Po ciężkich bojach udało mi się zgrać waśnie ten kopier, ale nie wiem czy poprawnie go z przegrałem dlatego podeśle Ci link do pobrania na PW.
Jak sprawdzisz i będzie wszystko ok to zgram resztę.

ATARI 800xl, CA-2001, XCA12 mnóstwo kaset i dyskietek :)

7 Ostatnio edytowany przez seban (2017-04-21 21:47:27)

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.

8

O mój program :). Nawet nie bardzo pamiętam jak działał.
Chyba faktycznie likwidował przerwy i podnosił transmisję do 900 bodów (coś jak ten CASA Turbo Tape).

9

Świetnie że Ci się udało z tego nagrania odzyskać ten program.
Zgrałem resztę programów z tej kasety (str A) ciszej  i mam nadzieję że tym razem nie będzie przesterowane. Link jak ostatnio na PW.
I ja Ci dziękuje za zainteresowanie, zaangażowanie, bo bez tego nic by nie wyszło.

ATARI 800xl, CA-2001, XCA12 mnóstwo kaset i dyskietek :)

10 Ostatnio edytowany przez seban (2017-04-21 22:11:17)

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

11

o wlasnie w tym turbo mialem nagrane international karate!
czy kopier robil przerwe w miejscu inita? czy rekordy byly zmiennej dlugosci?

http://atari.pl/hsc/ad.php?i=1.

12

@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 ;)

13

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ć?

14

robi wrazenie, mam nadzieje rgr wlaczy sie do dyskusji i opowie conieco

http://atari.pl/hsc/ad.php?i=1.

15 Ostatnio edytowany przez seban (2011-08-05 12:40:16)

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

16

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.
Trafiłem poprzez Atariki.

No właśnie tu był problem z tą konkretną grą. A czy Blizzard zatrzymywał taśmę to nie pamiętam.
U Delego Logo już zgrane.

17 Ostatnio edytowany przez rgr (2011-09-07 14:24:43)

seban napisał/a:

Hejka!

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ć):

Nie znalazłbym się tutaj, gdyby znajomy nie podesłał mi linka (jest tu na forum, ale nie znam nicka). :)
Te rozkazy sam musiałem odkryć przy okazji łamiania ULTIMY RATIO (takie zabezp. kaset przed przegraniem stosowane ówczas). Nie mogłem zrozumieć jak to działa, jak nic nie widać :). Złamanie udało się zrobić jakimś wcięciem w kod oryginalnego loadera bez znajomości nieudokumentowanych komend. Początek odkrywania nielegalnych komend był trudny, ale po rozpisaniu rozkazów w siatkę 16x16 połowę dało się zgadnąć, bo ładnie uzupełniały się ze znanymi instrukcjami, trzeba było tylko śledzić A,X,Y, ew. komórkę pamięci i odkrywać co rozkaz zmienia.
Pamiętam, że istotnym elementem było odkrycie, że BRK (chyba kod 00) w istocie jest dwubajtowy, podczas gdy używane narzędzia (programowałem bezpośrednio w kodzie maszynowym) pokazywało jako 1-bajtowy (czy jakoś tak, nie pamiętam już). Można było w ten sposób trochę poukrywać kod.

1990 rok... piękne czasy, miałem wtedy naście lat :D.

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.

Wiedza to głównie własne doświadczenia, no i analiza innych programów. Zanim pisałem na Turbo 7500 to trochę "przyspieszałem" normalne magnetofony.


Pozdrawiam serdecznie również :)

18 Ostatnio edytowany przez rgr (2011-08-05 14:28:09)

xxl napisał/a:

o wlasnie w tym turbo mialem nagrane international karate!
czy kopier robil przerwe w miejscu inita? czy rekordy byly zmiennej dlugosci?

Nie pamiętam już dokładnie, ale loader wczytywał się normalnie, a potem wczytywał resztę zapisaną jako 1 długi rekord.
W tym przypadku chyba nie było takiego problemu jak przy Turbo 7500, że musiałem liczyć cykle dla wykonywanych rozkazów, aby prawidłowo rozpoznać długość bitu z magnetofonu. :D

PS. AFAIR była tam jeszcze kompresja RLE.

19 Ostatnio edytowany przez seban (2011-08-05 14:55:22)

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

20

Więc albo długi rekord był dla jednego ciągłego bloku pamięci, albo umożliwiał uruchomienie części programu przed wczytaniem całości.

21 Ostatnio edytowany przez Krótki (2011-08-05 18:45:47)

No więc spędziłem dziś poranek nad analizą procedury odczytującej, niestety jest tak powikłana ;-) że nie udało mi się tego skończyć. A8CAS nie daje sobie rady, ale tylko dlatego że gdzieś-tam zrobiłem błąd - teoretycznie A8CAS powinien poprawnie przekonwertować każdą taśmę w normalu, nawet gdy nie rozpozna rodzaju bloku. Działa za to konwersja do formatu "FSK" (opcja -ff) - taki plik poprawnie wczytuje się w emulatorze.

Seban, czy mógłbyś udostępnić gdzieś oryginalne WAV-y sprzed oczyszczania? Przydadzą się do testów.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

22 Ostatnio edytowany przez seban (2011-08-05 20:20:43)

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

23 Ostatnio edytowany przez Grzegorz_29_ (2011-08-05 20:22:01)

Seban - dzięki za wyjaśnienie z tym przegrywaniem, choć nie wszystko łapie, to mam nadzieje ze tym razem nie będziesz miał tyle problemów z tym nagraniem.
Pod tym linkiem można pobrać WAV-a udostępniam oryginał bo Krótki chciał też do testów.
Pozdrawiam Grzegorz.

ATARI 800xl, CA-2001, XCA12 mnóstwo kaset i dyskietek :)

24

@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.

25

Rzeczywiście coś musiałem pokręcić z tym linkiem, podam jeszcze raz: http://www.megaupload.com/?d=1C5B895Z

ATARI 800xl, CA-2001, XCA12 mnóstwo kaset i dyskietek :)