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:
powiększony fragment nagrania (kilkadziesiąt próbek):
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:
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:
Powiększony fragment (kilkadziesiąt próbek), zauważ iż żadna nie przekracza progu -1dB:
Powiększony fragment zawierający kilka rekordów nagrania (loader Speeder-Tape):
I teraz widmo sygnału tonu pilotującego, jeszcze nie idealne
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ę:
Plik do pobrania tutaj: Bank Danych
Plik do pobrania tutaj: Magic Painter
Plik do pobrania tutaj: Dancing Feats <--- to chyba coś w stylu dema, datowane na 1983 rok ;)
Plik do pobrania tutaj: Monitor/TV Test Patterns
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