Tajemnice ATARI

ATARI INACZEJ : SAMPLER

   
W TA 3/92 ukazał się program do digitalizacji dźwięku w oparciu o magnetofon z TURBO 2000. Ci, którzy nie mają TURBO mogą małym kosztem wykonać własny digitalizer.


    Konieczne będzie zdobycie dwóch kabelków od joysticka (jeden z przewodem zasilającym, od takiego z autofire) i krajowego układu UL 1980.

    Na początku należy znaleźć odpowiednie przewody w kabelku od joystick-a.

   1. Pomocny będzie program
10 ?STICK(0):G.10
   2. Najpierw określamy przewód - masę. Zwieramy wszystkie przewody (oprócz +5V) i oddzielamy jeden. Powtarzamy tę czynność, dopóki nie pojawi się wartość 15, co oznacza, że ten ostatni - to masa.

   3. Korzystamy z krzyża wartości


    Zwierając teraz resztę przewodów z masą, odczytujemy wartości i lutujemy z odpowiednią nóżką układu scalonego (np. 7=lewol=nóżka 9, 13=dółl=nóżka 10)

    Ze względu na brak wzmacniacza wstępnego sygnał bierzemy z głośnika magnetofonu lub gniazda słuchawkowego. Ma to swoje zalety (niski koszt, możliwość użycia korektora graficznego, jeśli takowy posiadamy w zestawie) i wadę (galwaniczne połączenie sprzętu audio z komputerem.)

    UWAGA: Digitalizer podłączamy równolegle do głośnika (słuchawki). Jeżeli obciążeniem wzmacniacza będzie jedynie sampler, należy zamiast głośnika podłączyć rezystor z zakresu 100-2000 omów.

    Lecz interfejs to nie wszystko, potrzebny jest także program go obsługujący.
10 DIM A$(26)
15 A=1536:MIN=52:POKE 106,MIN:POCZ=MIN
*256:KON=0:GRAPHICS 0
16 REM WATROSC MIN ZALEZY OD ZAINSTALO
WANEGO SYSTEMU (DLA DOS 2.5+CP MIN=52)
20 TRAP 100:READ A$:I=1:TRAP 20
30 B=ASC(A$(I))-48:B=B-(B>9)*7
40 C=ASC(A$(I+1))-48:C=C-(C>9)*7
50 I=I+2:POKE A,B*16+C:A=A+1:GOTO 30
100 POKE 764,255:? "  START-DIGITALIZA
CJA":? "  SELECT-ODTWARZANIE":? "  OPT
ION-POWTARZANIE"
110 B=PEEK(53279):A=(B=6)+(B=5 OR B=3)
*94
120 IF A=0 THEN 110
130 TRAP 130:? "SZYBKOSC":INPUT SZYB
140 I=USR(1536+A-1,POCZ,KON,SZYB)
150 IF B=3 AND PEEK(53769)<>28 THEN 14
0
160 GOTO 100
1000 REM ------DIGI.OBJ------------
1010 DATA 68A000BEBF06B9C8069D0004CA
1020 DATA D0FAC8C009D0EF8D0004A20568
1030 DATA 95CBCA10FA20B006204906AD09
1040 DATA D2C91CF05FC921D0F220490629
1050 DATA 0F91CF2049060A0A0A0A11CF91
1060 DATA CF209706D0E9F042AE00D3BD00
1070 DATA 0409108D01D28D1AD0A6CBCAD0
1080 DATA FD6068A2056895CBCA10FA20B0
1090 DATA 06A000B1CF204F06B1CFB1CF4A
1100 DATA 4A4A4A204F06B1CFA5CFAE09D2
1110 DATA E01CF005209706D0DEA9FD8D01
1120 DATA D3A9FF8D0ED45860E6CFD002E6
1130 DATA D0A5D0C9D0D004A9D885D0C5CE
1140 DATA D004A5CFC5CD6078A9008D0ED4
1150 DATA 8D00D4A9FE8D01D360FFFEFDFB
1160 DATA F7EFDFBF7F0001020304050607
1170 DATA 08
    Start - próbkowanie

    Mamy możliwość doregulowania głośności, barwy tonów i po korekcie klawisz SPACJA - rozpoczęcie digitalizacji

    ESC - rezygnacja i wyjście

    Select - odtworzenie sampla

ciekawe efekty przy zmianie parametru szybkość.

    Dane zapisywane są także w RAM pod BASICem i OS ROM.

    Jeśli podczas przetwarzania występują duże trzaski, świadczy to o błędnym podłączeniu przewodów z układem lub zamiany wtyków joysticka w portach.

    Jeżeli czytelnicy chcieliby napisać własne procedurki, to powinni pamiętać, że konieczne jest dokładne odmierzanie czasu. Uzyskujemy to poprzez:

• wyłączenie przerwań i ekranu
• przy włączonym ekranie synchronizujemy się z komórką $d40b($d40a)
• używamy przerwań liczników POKEY (możliwe jest nawet uzyskanie dwóch sampli (np. program DIGI DRUM).

* Listing zrodlowy DIGI.OBJ
* (przyklad wykorzystania
* zawarto w DIGI.BAS)

LIST   EQU %11
PAM    EQU %10000
EKR    EQU %100
DOS    EQU %100000

       OPT LIST+DOS

ZMIEN  EQU $400 
OPOZ   EQU $CB 
KON    EQU OPOZ+2
POCZ   EQU OPOZ+4

*---ADRESY W OS 
KBCODE EQU $D209 
NMIEN  EQU $D40E 
PORTB  EQU $D301 
DMACT  EQU $D400

       org $600
DIGI   PLA
       LDY #0       Korzystamy z portu
SKOK1  LDX KOD,Y    PIA i potrzebne sa
       LDA KOD+9,Y  odpowiednie prze-
SKOK2  STA ZMIEN,X  liczenia na wartosc
       DEX          glosnosci.
       BNE SKOK2    Tworzymy tabele
       INY          kodow i odwolujemy
       CPY #9       się do niej
       BNE SKOK1    w procedurze WAR.
       STA ZMIEN

* Wlasciwa procedura digitalizacji
* Wywolanie I=USR(1536,POCZ,KON,SZYB)
* pocz - poczatek pamieci na kod
* kon  - koniec    -//-   -//-
* szyb - 0..255 (1=najwierniej),
* optymalnie 40 (trzeba pogodzic ilosc
* zajetej pamieci z jakoscia dzwieku)

       LDX #5

SKOK   PLA         PRZEPISZ PARAMETRY
       STA OPOZ,X
       DEX
       BPL SKOK
       JSR ZABLK

SKOK3  JSR WAR 
       LDA KBCODE 
       CMP #28     ESC=PRZERWANIE
       BEQ ODBLK
       CMP #$21    SPACJA=POCZATEK
       BNE SKOK3    PRZETWARZANIA
SKOK4  JSR WAR
       AND #$0F
       STA (POCZ),Y
       JSR WAR
       ASL @       wykorzystujemy 
       ASL @       drugą 
       ASL @       polowke 
       ASL @       komorki.
       ORA (POCZ),Y
       STA (POCZ),Y
       JSR WZROS
       BNE SKOK4
       BEQ ODBLK

WAR    LDX $D300
       LDA ZMIEN,X
WAR1   ORA #$10  USTAW BIT 4 AUDIFREQ
       STA $D201
       STA $D01A
       LDX OPOZ
SKOK5  DEX
       BNE SKOK5
       RTS

*PROC. ODTWARZANIA
*I=USR(1629,POCZ,KON,OPOZ)

GRAJ   PLA
       LDX #5 
SKOK6  PLA
       STA OPOZ,X
       DEX
       BPL SKOK6
       JSR ZABLK

PLAY   LDY #0
       LDA (POCZ),Y
       JSR WAR1
* DODATKOWE CYKLE,ABY CZASY WYKONYWA-
* NIA PLAY I GRAJ BYLY ROWNE.
       LDA (POCZ),Y
* KONIEC
       LDA (POCZ),Y
       LSR @
       LSR @
       LSR @
       LSR  @
       JSR WAR1
* CYKLE
       LDA (POCZ),Y 
       LDA POCZ
* KONIEC
       LDX KBCODE
       CPX #$1C   ESC=PRZERWIJ 
       BEQ ODBLK 
       JSR WZROS 
       BNE PLAY 
ODBLK  LDA #253 
       STA PORTB
       LDA #$FF 
       STA NMIEN 
       CLI 
       RTS

WZROS  INC POCZ
       BNE SK1
       INC POCZ+1 
SK1    LDA POCZ+1
       CMP #$D0
       BNE SK2
       LDA #$D8   omin blok ukladow I/O
       STA POCZ+1 
SK2    CMP KON+1
       BNE SK3
       LDA POCZ
       CMP KON 
SK3    RTS

ZABLK  SEI        zablokuj przerwania 
       LDA #$00   i podlacz RAM pod
       STA NMIEN  BASIC-em i OS ROM.
       STA DMACT  wylacza ekran w celu
       LDA #254   dokladnego odliczania
       STA PORTB  czasu.
       RTS

kod    dta a($feff)
       dta a($fbfd)
       dta a($eff7)
       dta a($bfdf)
       dta a($7f)
       dta a($0201)
       dta a($0403)
       dta b(5)
       dta b(6)
       dta b(7)
       dta b(8)
 
       END


Tomasz Bech



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2002